portant; overflow-wrap: break-word !important;">Modbus TCP 轮询
portant; overflow-wrap: break-word !important;"> Modbus TCP 客户端可支持多个连接,最多可达 PLC 允许的开放式用户通信连接的最大数(八个主动(客户端)连接和八个被动(服务器)连接)。多个客户端连接必须具有不同的 IPAddr 或 IP_Port 输入参数。
portant; overflow-wrap: break-word !important;"> 情景1:S7-200 SMART 作为客户端访问多个服务器:
解决方法:确保连接富余,可以建立多个不同的连接发送请求,调用"MBUS_CLIENT",S7-200 SMART CPU内通过设置的不同的远程IP地址、端口号 尝试建立连接。
portant; overflow-wrap: break-word !important;"> 情景2:S7-200 SMART作为客户端,访问同一个服务器,需要进行多次读写操作;
解决方法:借助于同一个连接,考虑客户端做轮询,远程IP地址、端口号一致,分时调用“MBUS_CLIENT”指令,具体参考下方的轮询通信例程。
portant; overflow-wrap: break-word !important;">轮询原则:在任意时间,只能有一个客户机请求处于激活状态,在一个请求完成执行后,下一个请求再开始执行,循环处理。
portant; overflow-wrap: break-word !important;">Modbus TCP 客户端轮询
portant; overflow-wrap: break-word !important;"> 使用done位做轮询,相比于用定时器做轮询,不会因为定时触发时间设置的过小导致两个指令冲突,或者定时触发时间设置过大增加通信时间的问题。
portant; overflow-wrap: break-word !important;">
portant; overflow-wrap: break-word !important;">进行 Modbus TCP 通信寄存器类型数据,数据量大超过120个字如何处理?
portant; overflow-wrap: break-word !important;">答:如果数据量超过120个字,可以进行如下两种方法操作:
A、建立多个连接,不同连接之间,可以并行操作,因为占用的通信资源不同;
B、建立一个连接,进行多个操作,不同操作之间需要进行轮询,同一时刻只有一个操作在进行。
portant; overflow-wrap: break-word !important;">Modbus TCP通信时,如何访问地址范围大于49999 的保持寄存器?
portant; overflow-wrap: break-word !important;">Modbus 保持寄存器地址在 40001 到 49999 这一范围内。该范围足以满足大多数应用的要求,但有些 Modbus 从站设备将数据映射到地址范围更大的保持寄存器中。MBUS_CLIENT 指令允许参数 Addr 的附加范围,以支持 400001 至 465536 的保持寄存器地址的扩
展范围。例如,要访问保持寄存器 16768,请将 MBUS_CLIENT 的 Addr 参数设置为 416768。扩展寻址允许访问 Modbus 协议支持的全部 65536 个可能地址。此扩展寻址仅适用于保持寄存器。