您的位置 首页 培训

Modbus通讯注意事项及测验

很多同学在做Modbus通讯时,需要连续读取多个现场设备的数据,虽然也编写了Modbus轮询的程序,但是有时还是无法正常通讯。有时虽然能够保证…

许多同学在做Modbus通讯时,需求接连读取多个现场设备的数据,尽管也编写了Modbus轮询的程序,可是有时仍是无法正常通讯。有时尽管能够确保通讯,可是一切现场设备的轮询周期很长。本文将从MBUS_CTRL的超时时刻参数设置来阐明超时时刻设置的重要性。
答:Modbus通讯协议是单主多从的通讯协议,假如需求读取多个现场Modbus从站设备的数据时,许多PLC不支持对Modbus通讯功能块的主动排序,需求自己编写Modbus轮询程序来完成,轮询时每次只能激活一个Modbus的读写功能块。
以常见的主站读取从站的寄存器为例,主站宣布恳求需求8个字节,从站回来呼应为52*n个字节。其间n为寄存器个数。
假如通讯速率为9600时,依照惯例的ModbusRTU,8个数据位、1个中止位、偶校验方法,每传输1个字节数据需求的时刻为:
(811)/9600=1.04ms/Byte
因而,主站宣布呼应到从站回来数据的时刻周期为:
(852*n)*1.04T1T2,其间n为寄存器个数,T1为从站的呼应时刻(假如是PLC,则为PLC的扫描时刻),T2为通讯余量,一般为20~50ms。
假如读取10个字的数据,从站呼应时刻为50ms,则整个周期为:
(852*10)*1.045050=134.32ms。
因而,超时时刻有必要大于134.32ms,能够设置为150ms以上。
假如超时时刻太短,呼应不能彻底回来,通讯会报错。
假如超时时刻设置太长,依照上述比如,总共10个从站,每个从站读取10个字的数据,超时时刻设置为1s。假如有1个从站呈现毛病,则整个轮询周期为:10009*134.32=2208.88ms。
同理,假如超时时刻设为150ms,则整个轮询周期为:1509*134.32=1358.88ms。
因而,能够看出正确的超时时刻设置可缩短整个轮询周期,不正确的设置,将导致通讯犯错或整个通讯周期过长。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/peixun/235760.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部