技巧:可加入超时判断(如 2 秒未响应则跳过),避免卡死。
4. 使用 TSEND_C / TRCV_C?不!这里用 MB_CLIENT
注意:Modbus TCP 必须使用 MB_CLIENT 和 MB_SERVER 指令,不能用通用 TCP 指令(除非自己封装 Modbus 报文,不推荐)。
---
六、地址映射说明(重要!)
Modbus 地址(设备文档) | S7-1200 中 MB_DATA_ADDR |
40001 | 0 |
40002 | 1 |
40100 | 99 |
规则:Modbus 地址减 1 即为程序中的地址值
---
七、常见问题与排查
八、性能建议
轮询周期建议 ≥ 100ms/台(3台共 300ms+)
每次读取数据量不宜过大(≤ 120 字节较安全)
可为每台 Server 设置独立的错误计数器,连续失败 N 次后报警
---
九、扩展建议
若需 写数据到 Server,设置 MB_MODE := 4(写多个寄存器),并准备发送缓冲区
可将轮询逻辑封装为 FB 函数块,传入不同连接参数,提高复用性
使用 HMI 或 SCADA 时,也可让 HMI 作为 Client 直接读取各 Server,减轻主 PLC 负担
---
十、总结
S7-1200 作为 Modbus TCP Client 轮询多台 Server 完全可行 关键在于:分时轮询 + 标准DB + 正确地址映射 + 状态机控制 避免同时激活多个 MB_CLIENT 实例(会冲突) ---
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!