『7x24小时有问必答』
西门子 S7-1200 的  Modbus TCP 通信  是工业自动化中常见的以太网通信方式,用于实现 PLC 与第三方设备(如 HMI、变频器、仪表、其他品牌 PLC 等)之间的数据交换。下面将从协议原理、硬件/软件要求、客户端与服务器配置、寄存器映射、常见问题等角度进行系统性详解。

---

一、Modbus TCP 协议基础

基于 TCP/IP:运行在以太网之上,默认端口为  502主从结构:客户端(Client / Master):主动发起请求(读/写)。服务器(Server / Slave):被动响应请求。数据模型
(4类寄存器):
1.png
注意:S7-1200 仅支持 4xxxx(保持寄存器)和 0xxxx(线圈)的完整读写,3xxxx 和 1xxxx 需通过程序逻辑间接实现。

---

二、软硬件要求

项目
要求
PLC 型号
S7-1200 全系列(如 CPU 1214C, 1215C 等)
固件版本
≥ V4.1(推荐 V4.6 或更高)
编程软件
TIA Portal(博途)V13 SP1 及以上(V18/V19 推荐)
指令库
内置  MB_CLIENT  和  MB_SERVER  指令块(无需额外安装)

---

三、S7-1200 作为  Modbus TCP 服务器(Server)

1. 创建数据区(保持寄存器)

2.png

2. 调用  MB_SERVER  指令(在 OB1 中)

3.png

3. 配置连接参数(TCON_IP_v4 类型)

创建全局 DB(如  Server_Conn),数据类型为  TCON_IP_v4
4.png
  关键点LocalPort  必须设为  502ActiveEstablished = FALSE

---

四、S7-1200 作为  Modbus TCP 客户端(Client)

1. 创建发送/接收缓冲区

DB_Send: ARRAY[0..9] OF INT   // 要写入的数据

DB_Recv: ARRAY[0..9] OF INT   // 接收读取的数据

2. 调用  MB_CLIENT  指令

5.png

3. 客户端连接参数(TCON_IP_v4)

6.png
  关键点ActiveEstablished = TRUERemotePort = 502

---

五、寄存器地址映射详解

Modbus 地址 40001 → S7-1200 中  MB_HOLD_REG  指向的第一个字

1、若  MB_HOLD_REG := PM100.0 WORD 10
        MyArray[0] → 40001
        MyArray[1] → 40002
        ...
2、若使用优化 DB 数组DB1.MyArray[0]
            MW100 → 40001
            MW102 → 40002
            ...
注意:Modbus 地址是 1 起始,而 S7-1200 数组是 0 起始需注意偏移。

---

六、常见问题与排查

7.png

---

七、实战建议

先做服务器再做客户端:调试时先让 S7-1200 作为服务器,用 Modbus Poll 工具测试。使用非优化 DB:便于指针寻址(P# 方式)。监控状态字:通过  STATUS  查看详细错误代码(参考西门子文档)。避免频繁读写:Modbus TCP 不适合高速通信(周期 ≥ 100ms)。

---

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码