恭喜,你发布的帖子
发布于 2025-06-26 14:52:37
3楼
楼主我几点疑问。
通过公共的连接发送多个请求,“MB_CLIENT”功能块多次调用,但是需要使用相同的背景数据块,连接 ID 号,IP 地址和端口号,根据需要修改模式、地址、长度、指针等。(你上面4个指令连接的参数是不是一样,看程序是一样。但是没有看到你4个指令的关联的错误地址和状态显示这些地址健康截图)
在任意时间,只能有一个 MB_CLIENT 请求处于激活状态,在一个请求完成执行后,下一个请求再开始执行,轮询处理。(这是我看的西门子网站上面你的介绍,这个1,2点都是复制里面的介绍内容)
Modbus TCP 通信多请求处理:
https://www.ad.siemens.com.cn/download/materialaggregation_1338.html
Modbus_TCP_V4 客户端:
https://www.ad.siemens.com.cn/download/materialaggregation_1335.html
上面两个链接都说了有下面这段话
方法二:通过公共的连接发送多个请求
这个方法适合 CPU 访问一个 Modbus TCP 服务器,但是有多个作业的情况,例如有读也有写,或者读多个区域等。
通过公共的连接发送多个请求,“MB_CLIENT”功能块多次调用,但是需要使用相同的背景数据块,连接 ID 号,IP 地址和端口号,根据需要修改模式、地址、长度、指针等。
在任意时间,只能有一个 MB_CLIENT 请求处于激活状态,在一个请求完成执行后,下一个请求再开始执行,轮询处理。
还有,楼主你的测试只是同时激活了4个指令,不是有轮训,假如报错,也可以将数据同时发送到服务器端,读写都可以,只要不超过这个PLC同一时间允许发送读取的最大数据量就可实现不轮训通讯。同时读取多个指令地址进行数据交换。你可以尝试改变这些地址里面的数据,去不断测试看有什么不一样的结果。
你4个指令的错误地址,和状态码都截图出来对比一下。
请填写推广理由:
分享
只看
楼主