主要测试设备的哪些寄存器地址有值,正确的数值是多少,打包长度是多少,在安装路径下的Driver文件夹中修改modbusmaster.ini配置文件中设置PackLen的值,在组态王的数据词典中根据寄存器地址定义变量。
需要注意的是,当设定的打包长度是60,必须将第一个和最后一个寄存器在组态王里定义出来才能通讯上。
Modbus协议介绍及解析
组态王与Modbus协议的地址对应规则
对于LONG或FLOAT型的双字的数据,按照间隔地址方式定义,因为Modbus协议所对应的参数地址一般按照字为基本单位进行分地址排序的。
组态王读取FLOAT和LONG类型的数据时,没有使用SwapF和SwapL寄存器来调整FLOAT型和LONG型数据的字节顺序,有时候会出现数值很大,或者为0的情况。
组态王中Modbus字节顺序的调整
某些使用Modbus协议通讯的设备的数据地址是从0开始的,而组态王Modbus协议驱动寄存器地址是从1开始的,所以遇到此种情况时在组态王中定义变量时,寄存器地址要进行加1处理。
数据词典中最大原始值和最大值定义不当,做了线性转换;比如最大原始值和最大值不一样会导致画面看到的数据和实际设备不一致。
在同一个com口下,有部分断电或者通讯不上的设备,会导致该com口下本来通讯正常的设备通讯失败,需要把通讯不上的设备移到其他的com口下,保证其他设备能够通讯正常。
使用modbusRTU和组态王通讯,一台设备可以正常通讯,当一个com口下挂了多个设备时,数据就不正确,或者读取不到数据,此时就需要加发帧延时。比如设备地址是1,加上发帧延时后就是1:500:500,如下图所示。每个设备加上不同的发帧延时。
信息窗口会提示:无效的设备地址,无效的变量,这两种报错都会导致通讯失败。
对于无效的设备地址,重新定义一下设备链路;对于无效的变量,可以将其改为内存变量或者删除。
变量的采集频率默认是1000ms,如果想要采集加快,可以设到200、300ms,不建议再小了,否则会出现采集失败,采集变慢的情况。
Swaps Register is WRITE_ONLY?
SwapS变量,只写类型,将采集频率设为0。
modbus驱动文件及调试工具下载
版权说明:如非注明,本站文章均为 扬州驻场服务-网络设备调试-监控维修-南京泽同信息科技有限公司 原创,转载请注明出处和附带本文链接。
请在这里放置你的在线分享代码