实现西门子S7-1200与三菱PLC(如 Q 系列、L 系列、FX5U 等)之间的Modbus TCP通信,是跨品牌设备集成的典型场景。由于两者均支持标准 Modbus TCP 协议,可通过“一主一从”架构实现数据交换。
核心原则:一台作为 Modbus TCP 客户端(Master/Client),另一台作为服务器(Slave/Server)。通常建议 S7-1200 作为客户端主动读写三菱 PLC(服务器),因其编程更灵活、诊断更完善。 ---
一、通信架构选择
推荐方案:S7-1200(Client) ↔ 三菱 PLC(Server)
优点:西门子 MB_CLIENT 指令功能强大,支持错误重试、连接管理
三菱 PLC 配置 Modbus Server 更简单(尤其 FX5U/QnUD)
符合“上位控制下位”的逻辑(S7-1200 主控,三菱执行)
备选方案:S7-1200(Server) ← 三菱 PLC(Client)
适用于三菱为主站的系统,但三菱的 Modbus Client 编程较复杂(需 GX Works3 + Socket 编程)
本文以推荐方案为准。
---
二、三菱 PLC 端配置(作为 Modbus TCP Server)
1. 确认型号与固件支持
本文以 FX5U 为例(最常见)。
2. GX Works3 配置步骤
步骤 1:设置 IP 地址
在GX Works3→参数→以太网端口→设置IP(如 192.168.3.10)
步骤 2:启用 Modbus TCP Server
路径:参数 → 以太网端口 → 应用设置 → Modbus/TCP 设置
勾选: 启用 Modbus/TCP 服务器功能 允许远程访问软元件 步骤 3:映射软元件到 Modbus 地址
在 “Modbus/TCP 设置” 中配置地址映射表:
关键规则:
D0 = Modbus 40001M0 = Modbus 00001写入 D 寄存器用 FC06/FC16,读取用 FC03
步骤 4:下载参数并重启
下载整个参数到 PLC
断电重启(部分 FX5U 需重启生效)---
三、西门子 S7-1200 端配置(作为 Modbus TCP Client)
1. TIA Portal 编程(调用 MB_CLIENT)
步骤 1:创建数据块(用于存储读写数据)
新建DB块(如 DB_Mitsubishi),无需关闭优化访问(因是客户端)
定义变量:ReadData : Array[0..9] of INT; // 读取三菱 D0~D9WriteData : INT; // 写入三菱 D100 步骤 2:在 OB1 中调用 MB_CLIENT 指令
指令路径:通信 > MODBUS TCP > MB_CLIENT
配置参数:
地址转换规则:
要读 D0~D9 → Modbus 地址 = 40001~40010
协议地址 = 40001 - 1 = 0所以 MB_DATA_ADDR = 0
步骤 3:编写读写逻辑(示例)
---
四、地址映射对照表(核心!)
公式:MB_CLIENT 地址 = Modbus 地址 - 1 ---
五、网络与硬件要求
六、常见问题排查
1. 连接失败(STATUS ≠ 0)
检查项:三菱是否启用了 Modbus Server?(GX Works3 参数)
IP 是否能 ping 通?
三菱是否断电重启过?
2. 读到全 0 或错误值
原因:地址偏移错误解决:确认 MB_DATA_ADDR = Modbus地址 - 13. 写入无效
原因:三菱 D 寄存器被程序覆盖
写操作未使用 上升沿 触发(REQ 必须为脉冲)
解决:在三菱程序中保护目标 D 寄存器(如 D100~D199 专用于通信)4. 通信时断时续
原因:REQ 信号持续为 TRUE解决:务必用 定时器 + 上升沿 触发,例如:T1S(Timer);REQ := Timer.Q AND NOT Last_Q;Last_Q := Timer.Q;---
七、高级技巧
1. 错误重试机制
IF MB_CLIENT.STATUS <> 0 THEN ErrorCount := ErrorCount + 1; IF ErrorCount > 3 THEN // 触发报警或切换备用链路 END_IF;END_IF;2. 批量读写提升效率
一次读取 D0~D99(100 个字),比 100 次单读快 10 倍
3. 与 HMI 联动
将 DB_Mitsubishi.ReadData 绑定到 WinCC 画面,实时显示三菱数据
---
总结:成功要点清单
三菱端:
GX Works3 启用 Modbus/TCP Server
明确 D/M 寄存器与 Modbus 地址映射
断电重启 生效 西门子端:
使用 MB_CLIENT 指令
REQ 用上升沿触发地址 = Modbus地址 - 1
一句话口诀:“三菱开服务,西门子当主;地址减一算,脉冲来触发。” 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!