Twido及MicroModbus多子站通讯程序及方法.docVIP

Twido及MicroModbus多子站通讯程序及方法.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Twido及MicroModbus多子站通讯程序及方法

1.概述   Modbus通讯协议是施耐德电气开发并对外完全公布其细节的开放式通讯协议,得到众多厂商的广泛支持,从而有大量的第三方设备支持Modbus通讯,目前Modbus协议已经成为事实上的工业通讯标准,并被我国列为国标之一。   在目前工业控制中使用Modbus协议越来越普遍的情况下,一台PLC与多台支持Modbus协议的设备进行通讯的应用也成为目前的一种趋势,在这种应用中通过一条或数条Modbus总线,连接多个设备,替代老式设备中的模拟量加数字量的控制方式,既能更加灵活地完成控制要求,又能节约大量的模拟量加数字量,从而降低设备的成本。   虽然在PLC中对Modbus通讯编程非常简单,但如果在Modbus总线上有多个子站需要通讯时,PLC中程序的篇幅会非常长,并占用很多PLC的内部寄存器资源。 2 在施耐德电气的PLC编程软件中的更好的实现方法   在这里以施耐德电气的Twido系列PLC为例进行介绍。基于编程语言的相似性,以下程序实现方法在施耐德电气的Micro及Premium系列PLC(PL7 Pro平台下)很容易移植。 先看一下在Twido中实现与一个Modbus子站(以施耐德电气的ATV31变频器为例)通讯的程序段:   在上面的示范程序中,主要为Modbus通讯所需的数据区填写相应的内容,详细说明请参考Twido的手册或其帮助文件。 数据区准备完成后需要用下面指令将该数据区发送出去: ?   如果与多个Modbus子站通讯时,就要编写多个与上述程序段长度相同而内容略有不同的程序段。在重复做这部分程序时,使程序的篇幅大大加长,占用大量的内部资源(如内部字MW),并使得PLC的扫描周期加长,这样一来,使编程者需要考虑如何优化这类的程序,使之更加简洁高效。 分析上面的通讯程序,会得到几个提示: 1、?不同子站Modbus通讯的数据区除子站地址部分外是完全一样的; 2、?数据区发送出去的交换指令格式是完全一样的 3、?在某一时刻,PLC只能做一条读或写操作(广播方式除外) 4、?读操作读回的数据在数据区起始位置的偏移量为6处开始 (请参考相应资料)   从上面几点分析着手,完全可以将与多个Modbus子站通讯优化,只要处理好在某一时刻将要与之通讯的子站地址填写好,在通讯数据区用交换指令发送出去之后,及时将读回来的数据取出并保存好即可。   下面对实现这一功能的程序的部分程序段做一说明,在这个程序中以读施耐德电气的3台ATV31变频器的状态及输出频率,并通过通讯控制ATV31的运行频率。为减小本文的长度,在这个程序ATV31的启停及正反转控制用端子实现,在实际应用中,用通讯完成变频器的启停及正反转控制也是完全没有问题的。 与每一个子站通讯的时间长度控制,其中M2由系统时钟位S5产生: 在程序中需要使用一个计数器来控制PLC与某一台ATV31的具体的通讯: ? 此计数器的作用在后面的程序中可以体现出来。   填写通讯数据区中每个子站不相同的部分,这部分数据必须存放两个连续的数据区中,以使后面的数据取出程序能使用间接寻址的方式,这也是优化程序的一个比较关键之处。 在这一例子程序中,将变频器的输出频率值的控制简化了,使3台变频器的速度全部为30Hz,实际使用时,可能参考后面的读操作返回数据的保存方式,运用间接寻址方式编写出相应的代码: ? ? 根据调度计数器的当前值,将与之对应的子站数据调入(使用了间接寻址): ? 通讯数据区中相同部分的填写(注意其中MW202及MW232由上面程序完成了): ? 将通讯数据区用交换指令发送出去,MW481用来控制读或写操作: ?   下面是比较关键的一步,将通讯读回的数据保存起来,如1号变频器的状态及输出频率分别放在MW301及MW331中,2号变频器数据放入MW302及MW332,3号变频器数据放入MW303及MW333。 ?   程序中%MW2060处用来指定读操作有正确返回数据时,才将相应数据保存起来;%MW481=1的处理是为防止与前一子站通讯的数据影响与下一子站的通讯数据,同时配合%MW2060处的指令,使下一次与同一站点的通讯能地在有正确的返回数据后才被保存。 下面为本程序的指令表,将之复制到一文本文件中,导入到Twidosoft新建的程序中,并将通讯端口配置好就可以正常使用。   在我编写的一个由Twido PLC实现将22台TeSysU马达控制器的状态及电流等数据上传到上一级网络的程序中,使用本文介绍的方法,可以使程序减小到用常规方式编写的程序的二十分之一,并使程序中使用的MW字的使用量减少为可以使程序减小到用常规方式编写的程序的二十分之一,同时使程序长度大为减小,增加程序的可读性,加快PLC的扫描周期,效果非常明显。 (* 初始化,0.1秒

文档评论(0)

liwenhua00 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档