Modbus通讯注意事项及测试 糖耐量测试 注意事项

经常看到有很多同学在做Modbus通讯时,不知道如何设置参数,同时,如果通讯失败后,如何判断失败原因。本文将重点介绍Modbus通讯的几个常见注意事项、通讯超时时间计算及常用的Modbus通讯测试工具。很多同学在做Modbus通讯时,需要连续读取多个现场设备的数据,虽然也编写了Modbus轮询的程序,但是有时还是无法正常通讯。有时虽然能够保证通讯,但是所有现场设备的轮询周期很长。本文将从MBUS_CTRL的超时时间参数设置来说明超时时间设置的重要性。一、通讯地址设定

利用Modbus协议可以实现设备间的数据交换。Modbus通讯理论上支持4种ModiconPLC地址,即0*、1*、3*和4*四种,分别表示开出(中间线圈)、开入、模入、模出(中间寄存器)等数据地址。与西门子或其它设备中的开入、开出、模入、模出地址完全不对应。可以理解为0*和1*对应位地址的读写操作,3*和4*字地址的读写操作。

此处0*、1*、3*和4*表示长度有的为5位数字、有的为6位,其实和Modbus通讯无关,只是和软件的表示方式有关。

按照Modbus通讯时最常用的是RTU读请求格式:

从站地址(1个字节)、功能代码(1个字节)、从站数据起始地址(2个字节)、读数据长度(2个字节)、CRC校验(2个字节)

可见,只需设置起始从站数据区起始地址和通讯长度即可。

特别注意,Modbus地址遵从IEC1的地址标准(最小地址为*1),西门子遵从IEC0的标准(最小地址为0,如M0.0)。因此,不同标准的地址做通讯时需要做地址变换,即加1的操作。

二、通讯故障诊断

在做Modbus通讯时经常会出现通讯失败的现象,如果判断是程序问题还是别的问题,其实完全可以利用常见的Modbus测试软件来判断。常见的Modbus测试软件有Modscan和Modsim。也可以使用常见的串口调试工具软件,如SSCOM42等。

其中Modscan软件可以读取Modbus从站的数据,如果利用Modscan软件可以建立连接,但是设备间直连后无法通讯,问题可以在RS485极化、主站上。同样,Modsim软件可以仿真一个Modbus的从站,如果编写了Modbus主站程序,希望测试一下程序是否正常,可以运行Modsim软件,如果能否建立连接,说明没有任何问题。

如果使用串口调试工具进行测试时,需要按照Modbus通讯协议的格式收发相应的报文,并判断通讯是否正常。

Modbus通讯报文格式,可以参考我以前写的《Modbus通讯说明》http://www.ad.siemens.com.cn/club/bbs/post.aspx?b_id=3

三、超时时间设置

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。

因此,可以看出正确的超时时间设置可缩短整个轮询周期,不正确的设置,将导致通讯出错或整个通讯周期过长。

  

爱华网本文地址 » http://www.aihuau.com/a/25101012/130937.html

更多阅读

usb鼠标驱动注解及测试 win7键盘鼠标驱动usb

鼠标驱动可分为几个部分:驱动加载部分、probe部分、open部分、urb回调函数处理部分。  下文阴影部分为注解。  一、驱动加载部分  STatic int __init usb_mouse_init(void)  {  int retval = usb_register(&usb_mo

网线的制作及测试 网线制作测试仪

一、实验目的1. 掌握RJ-45的制作。2. 掌握双绞线连通性测试方法。二、实验内容及要求1. 制作直通线双绞线一根(大概0.3至0.6米长)。2. 制作交叉线双绞线一根(大概0.3至0.6米长)。

声明:《Modbus通讯注意事项及测试 糖耐量测试 注意事项》为网友蓝眼泪分享!如侵犯到您的合法权益请联系我们删除