当前位置: 主页 > PLC控制

配置CP343-1进行modbus通信的参数问题

用的CPU是315-2PN/DP,通过cp343-1与在一个网段内的三个设备进行MODBUStcp通讯,在这里西门子的CP模块做的是客户端来接受次三个设备的modbus数据,在编程配置的过程中有几个疑问如下:问题1.我看了modbus与西门子数据的对应关系是40002对应的寄存器1,寄存器1又对应的是相应DB块中的从0.0开始到1.7的一个16位的字,那么请问在三个网内其他modbus设备发送数据的时候,比如1#设备发送的数据地址是40010,2#设备还能否发送这个地址的数据?亦或是能够发送说明了1#、2#设备分别有自己的一套完整的数据地址重叠也无所谓?问题2.程序配置的时候LENGTH这个参数应该为CP一次工作周期所接受的网内一个设备的数据长度设置,我把这些数据存放在DB1中,如果此时DB1开辟的空间比我接受的LENGTH个数据长度小的话是否可行?问题3.手册中这样写道modbuSTcp每个数据包最大的只能发送125个寄存器,那么请问这个125个寄存器是对网内三个设备分别限制还是三个设备加起来在网内一共只能有125个以内?谢谢!

ASs='html_titleimg_p' style='text-align:center;'>

问题补充:
CP在这里是server分别从三个站接受数据而不是主站轮询三个从站

最佳答案

1、设备发送的地址是一样的,比如都是40010,你在编程时需要对3个设备的数据分配3个不同的DB块就可以了。1#设备的数据放到DB1中,2#设备的数据放到DB2中,3#设备的数据放到DB3中。在编程时调用对应的DB块地址即可。
2、如果接受的数据长度比你DB块长度小这样还可以,比你的DB块长度大的话,就会丢掉超出部分的数据,可能会影响你的使用。
3、对应一个设备的。

提问者对于答案的评价:
谢谢您的答案,还有几个问题,1.DB数据块我给它分配的长度如果小于我要接受的数据长度的话仅仅只会造成后面的数据没办法接受到,还是会造成数据的错乱或者其他比如通信中断之类故障?2.那么来自于每个网段内的IP设备都可有它完整的40001—40100(只需要这部分的数据)?3.我在配置程序的过程中遇见了例程中这段STL语句,感觉有点非常规,不太理解,请大师帮着理解下。
1#
OM51.2
S"CONTROLDAT1".ENQ_ENR

O"CONTROLDAT1".DONE_NDR
O"CONTROLDAT1".ERROR

"CONTROLDAT1".ENQ_ENR这个位的置位是在M51.2的rlo为1时吗?那岂不是应该是AM51.2更合适?

最佳答案作者回复:
1、会造成后面的数据没办法接受到,不会影响通讯。
2、你的程序需要哪些地址数据,就可以读取这些。每个设备的相同地址可能内容不同,互不影响。
3、是。如果没有其他变量的话,AM51.2也是可以的。是不是有其他变量和此变量有“或”关系,共同控制着"CONTROLDAT1".ENQ_ENR

  • 关注微信

猜你喜欢

微信公众号