用串口服务器与200plc,modbus rtu通信 ,PLC做从站, 发送报文03 03 02 26 00 01 65 9B或03 03 02 26 00 08 A5 9D明明读取的vw1100,plc只回复03 83 02 61 31,修改VW1100数据也没用,直接电脑串口和plc通信也一样。
问题补充:
如图
图片说明:
最佳答案
第一建议用modbus调试助手小工具,这样功能码至少不会有问题。
第二03 03 02 26 00 01意思是3号从站 03功能码 02 26 转换为地址是多少啊?地址长度是1,但是你图片中MaxHold可设置的是100,你读的地址已经超出了100
最大保持寄存器区:参与通信的V存储区字(VW)
http://www.ad.siemens.com.cn/service/article/S7-200/S7-200modbus/Default.aspx
注意:由子程序参数HoldStart和MaxHold指定的保持寄存器区,是在S7-200 CPU的V数据存储区中分配,此数据区不能和库指令数据区有任何重叠,否则在运行时会产生错误,不能正常通信。注意Modbus 中的保持寄存器区按“字”寻址,即MaxHold规定的是VW而不是VB的个数。
在图2的例子中,规定了 Modbus 保持寄存器区从 VB0 开始(HoldStart = VB0),并且保持寄存器为1000个字(MaxHold=1000),因保持寄存器以字(两个字节)为单位,实际上这个通信缓冲区占用了VB0~VB1999共2000个字节。因此分配库指令保留数据区时至少要从VB2000开始。当然保持区不一定要从VB0开始。
注意:你选用的CPU的V存储区大小!CPU型号不同V数据存储区大小不同。应根据需要选择Modbus保持寄存器区域的大小。
包含 Modbus RTU 从站指令库的项目编译、下载到CPU中后,在编程计算机(PG/PC)上运行一些 Modbus 测试软件可以检验S7-200的Modbus RTU通信是否正常,这对查找故障点很有用。测试软件通过计算机串口(RS-232)和PC/PPI电缆连接CPU。如果必要,须将PC/PPI电缆设置在自由口通信方式。
可到一些软件下载网站寻找类似软件,如 ModScan32 等。
提问者对于答案的评价:
软件很好用,问题确实因为地址的问题,感谢帮助
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc360948.html