各位大神,我最近在用smart200 plc做ModbusTCP通信,发现个现象无法解释,请大神们分析分析
配置说明
smart200 plc做ModbusTCP通信的服务器端,
其他设备做ModbusTCP通信的客户端(目前测试时用的是Modbus Poll软件做客户端)
plc通信编程如下图所示,其中通信地址Hold用的是VB1000开始的地址(下图红圈设置)
VB1000的地址说明下
VB1000---VB1600,是程序中其他地方使用的地址,程序中有各自的用途,
当客户端操作这个地址时,也就直接操作了程序相应的功能,
编译无误,下载,运行无误,
但是,我用Modbus Poll软件测试时,软件提示通信超时错误,无法与plc通信连接,
我又把通信地址Hold分别改成了VB500,VB600.VB700.VB800.VB900等,最后发现这些地址都可以正常通信,唯独Hold地址大于VB990以后就不能通信了,当然,我前面设置的VB1000就属于这个不能通信的范围了,
我把通信地址Hold分别改成了VB500,VB600.VB700.VB800.VB900后,编译,下载进plc,用Modbus Poll软件测试均可以正常连接plc,可以正常读取,写入数据,并且用软件监控plc程序,发现对应地址数据也跟着正常变化,说明通信完全正常。
这就很奇怪了,难道smart200plc做Modbus TCP服务器端通信时,不能把Hold地址设置为大于VB990的地址吗?
各位大神有没有碰到这也的问题呢?
还是**作不正确啊?
那我为什么换个小点的地址就完全可以呢?
听说Hold用来做通信的地址不能在程序中使用,但是我换了个小点的地址做通信时,程序中也完全在用这些小点的地址啊,通信完全正常啊,这咋解释啊,
恳求有明白的大神指导指导,
下图是smart200 做服务器端通信的程序
下图是Modbus Poll软件测试时的情况
下图是简陋的现场工作台