恭喜,你发布的帖子
发布于 2022-09-30 09:26:53
5楼
你的理解有误。这是Modbus_TCP通讯
不同的连接ID代表了占用的不同连接资源。
REQ在这里是启动连接,当状态字为7002时,建立连接完成。
然后它将连续地将你定义的缓冲区数据向服务器 读/写操作。你只需要在Done=1时,完成报文数据移动、修改。即便物理链路断开,(网线插拔),它也会自动再连接。(不用重新REQ)
对一个服务器同时读/写,用两个客户端,分别使用两个连接(固定)ID。分别REQ后,它会一直维持这两个连接;直到DISCONNECT。(当断开DONE之后,释放这个连接ID)
对一个服务器分时读/写,用一个客户端,使用一个连接ID;每次只能读或写。
你可以使用多个客户端,分别连接不同的服务器IP。直到连接资源用光。
若连接资源不够用、或网络负载太大。那么就需要使用DISCONNECT,通讯完成,断开(释放)连接。更换服务器(或暂停)数据。让别的客户端使用这个连接ID。
谢谢y版的细心描述并且一步步引导。非常感谢!
也就是说,两个客户端分别采用两个连接ID 去读取同一个IP的服务器,并且服务器端又分开502与503端口分别对应两个客户端的读写,也就是MB CLIENT 1 连接ID1 读取MB服务器端口502的数据 ,MB CLIENT 2 连接ID2写入到MB服务器端口503的数据 那么在这个过程中两个MB_CLIENT 的REQ直接直接TRUE即可是这样吧。我可以理解为这个REQ只是触发ID连接的作用吗?也就是数据的读写在连接成功以后MB_CLIENT在内部是自动进行工作的与REQ的触发频率无关是这样吗?
请填写推广理由:
分享
只看
楼主