我用S7-200的modbus从站指令库与主机通讯,用modscan进行测试,主机能够采集到input status,但是采集不到holding register和input register,请问,这是怎么回事?怎么解决?
最佳答案
注意:由子程序参数HoldStart和MaxHold指定的保持寄存器区,是在S7-200 CPU的V数据存储区中分配,此数据区不能和库指令数据区有任何重叠,否则在运行时会产生错误,不能正常通信。注意modbus 中的保持寄存器区按“字”寻址,即MaxHold规定的是VW而不是VB的个数。
例如,规定了 modbus 保持寄存器区从 VB0 开始(HoldStart = VB0),并且保持寄存器为1000个字(MaxHold=1000),因保持寄存器以字(两个字节)为单位,实际上这个通信缓冲区占用了VB0~VB1999共2000个字节。因此分配库指令保留数据区时至少要从VB2000开始。当然保持区不一定要从VB0开始。
注意:你选用的CPU的V存储区大小!CPU型号不同V数据存储区大小不同。应根据需要选择modbus保持寄存器区域的大小。
详见:
《西门子 S7-200·LOGO!·SITOP 参考》V0.92版(更新版)(2008.02.15) ,其中通信中的modbus。下载:
http://www.ad.siemens.com.cn/download/searchResult.aspx?searchText=A0136
提问者对于答案的评价:
3q
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc349433.html