组态王与mobus通讯调试总结

  • Post author:
  • Post category:其他




本文主要梳理了组态王与Modbus协议通讯问题的调试思路及排查方法。



1.用Modscan32测试

主要测试设备的哪些寄存器地址有值,正确的数值是多少,打包长度是多少,在安装路径下的Driver文件夹中修改modbusmaster.ini配置文件中设置PackLen的值,在组态王的数据词典中根据寄存器地址定义变量。

在这里插入图片描述

在这里插入图片描述



使用modscan的时候,要在显示选项中选择一下数据的类型,和设备中的数据类型一致。

在这里插入图片描述

需要注意的是,当设定的打包长度是60,必须将第一个和最后一个寄存器在组态王里定义出来才能通讯上。


Modbus协议介绍及解析



组态王与Modbus协议的地址对应规则



2.按照间隔地址方式定义

对于LONG或FLOAT型的双字的数据,按照间隔地址方式定义,因为Modbus协议所对应的参数地址一般按照字为基本单位进行分地址排序的。



3.字节顺序调整

组态王读取FLOAT和LONG类型的数据时,没有使用SwapF和SwapL寄存器来调整FLOAT型和LONG型数据的字节顺序,有时候会出现数值很大,或者为0的情况。


组态王中Modbus字节顺序的调整



4.地址偏移

某些使用Modbus协议通讯的设备的数据地址是从0开始的,而组态王Modbus协议驱动寄存器地址是从1开始的,所以遇到此种情况时在组态王中定义变量时,寄存器地址要进行加1处理。



5.线性转换

数据词典中最大原始值和最大值定义不当,做了线性转换;比如最大原始值和最大值不一样会导致画面看到的数据和实际设备不一致。

在这里插入图片描述



6.移除通讯不上的设备

在同一个com口下,有部分断电或者通讯不上的设备,会导致该com口下本来通讯正常的设备通讯失败,需要把通讯不上的设备移到其他的com口下,保证其他设备能够通讯正常。



7.加发帧延时

使用modbusRTU和组态王通讯,一台设备可以正常通讯,当一个com口下挂了多个设备时,数据就不正确,或者读取不到数据,此时就需要加发帧延时。比如设备地址是1,加上发帧延时后就是1:500:500,如下图所示。每个设备加上不同的发帧延时。

在这里插入图片描述



8.当画面数据不刷新时,取消设备动态优化勾选。

在这里插入图片描述



9.奇偶校验等参数设置错误,需要修改。

在这里插入图片描述



10.多定义了不存在的设备,导致通讯失败,删除后正常。

信息窗口会提示:无效的设备地址,无效的变量,这两种报错都会导致通讯失败。

对于无效的设备地址,重新定义一下设备链路;对于无效的变量,可以将其改为内存变量或者删除。



11.调整采集频率

变量的采集频率默认是1000ms,如果想要采集加快,可以设到200、300ms,不建议再小了,否则会出现采集失败,采集变慢的情况。

在这里插入图片描述



12.只写变量,采集频率必须设为0

Swaps Register is WRITE_ONLY?

SwapS变量,只写类型,将采集频率设为0。

在这里插入图片描述


modbus驱动文件及调试工具下载



版权声明:本文为qinkaiword原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。