西门子 S7-1200 Modbus TCP 官网标准案例包含服务器(MB_SERVER)与客户端(MB_CLIENT)两种角色,以下是基于西门子工业支持中心官方文档的详细实现步骤,涵盖 TIA Portal 配置、程序编写与通讯测试西门子工业支持中心。
一、案例核心信息
| 项目 | 服务器(Server) | 客户端(Client) |
|---|---|---|
| CPU 型号 | CPU 1215C(6ES7 215-1AG40-0XB0 V4.1) | CPU 1212C(6ES7 212-1AE40-0XB0 V4.1) |
| IP 地址 | 192.168.0.4 | 192.168.0.6 |
| 端口号 | 502(默认) | 0(自动分配) |
| 硬件标识符 | 64 | 64 |
| 指令 | MB_SERVER | MB_CLIENT |
| 软件版本 | STEP 7 Professional V13 SP1 Update 5 | STEP 7 Professional V13 SP1 Update 5 |
二、服务器(MB_SERVER)配置步骤
硬件与网络设置
打开 TIA Portal,添加 S7-1200 CPU,配置 PN 接口 IP 地址(如 192.168.0.4),记录硬件标识符(默认 64)。
启用 “PROFINET 接口”,确保网络参数正确。
创建连接参数 DB 块
新建 DB 块(如 DB_Conn_Server),添加 “TCON_IP_V4” 类型变量,自动生成连接结构,参数如下:
参数 值 说明 Connection Type 16#0B TCP 连接 ActiveEstablished TRUE 主动建立连接 RemotePort 502 服务器端口 RemoteAddr 192.168.0.4 服务器 IP LocalPort 0 自动分配本地端口 创建保持寄存器 DB 块
新建 DB 块(如 DB_HoldReg),添加 “Array [0..9] of Word” 类型变量,用于映射 Modbus 保持寄存器(地址 40001-40010)。
调用 MB_SERVER 指令
CONNECT:P#DB_Conn_Server.DBX0.0(指向 TCON_IP_V4 结构)
MB_HOLD_REG:P#DB_HoldReg.DBX0.0(指向保持寄存器区域)
MB_SLAVE_ID:1(从站地址,默认 1)
EN:TRUE(使能指令)
在 OB1 中拖拽 MB_SERVER 指令,背景 DB 自动生成(如 DB_MB_Server)。
连接参数:
编译下载,CPU 切换至 RUN 模式。
三、客户端(MB_CLIENT)配置步骤
硬件与网络设置
同服务器,配置客户端 IP 为 192.168.0.6,硬件标识符 64。
创建连接参数 DB 块
新建 DB 块(如 DB_Conn_Client),添加 “TCON_IP_V4” 类型变量,参数如下:
参数 值 说明 Connection Type 16#0B TCP 连接 ActiveEstablished TRUE 主动建立连接 RemotePort 502 服务器端口 RemoteAddr 192.168.0.4 服务器 IP LocalPort 0 自动分配本地端口 创建数据缓冲区 DB 块
新建 DB 块(如 DB_DataBuffer),添加 “Array [0..1] of Word” 类型变量,用于存储读写数据。
调用 MB_CLIENT 指令
CONNECT:P#DB_Conn_Client.DBX0.0
MB_MODE:0(读保持寄存器,FC03)
MB_ADR:0(起始地址 40001)
MB_LEN:2(读取 2 个寄存器)
MB_DATA:P#DB_DataBuffer.DBX0.0(数据缓冲区指针)
MB_SLAVE_ID:1(服务器从站地址)
EN:M0.0(触发信号,上升沿有效)
在 OB1 中拖拽 MB_CLIENT 指令,背景 DB 自动生成(如 DB_MB_Client)。
连接参数:
编译下载,CPU 切换至 RUN 模式。
四、通讯测试
服务器数据写入:在 DB_HoldReg 中手动修改数值,客户端通过 FC03 读取。
客户端数据写入:通过 MB_CLIENT 的 MB_MODE=1(写保持寄存器,FC10),修改服务器 DB_HoldReg 数据。
工具测试:使用 Modbus Poll(客户端)或 Modbus Slave(服务器)软件,设置 IP、端口、功能码,验证数据交互。
五、关键注意事项
连接结构:TCON_IP_V4 必须自动生成,不可手动编辑,否则会导致通信失败。
保持寄存器映射:MB_HOLD_REG 需指向连续的 Word 数组,地址对应关系为:数组索引 0 对应 40001,索引 1 对应 40002,以此类推。
功能码支持:MB_SERVER 支持 FC01(读线圈)、FC02(读离散输入)、FC03(读保持寄存器)、FC04(读输入寄存器)、FC05(写单线圈)、FC06(写单寄存器)、FC10(写多个寄存器)、FC15(写多个线圈)。
错误诊断:通过 MB_SERVER/MB_CLIENT 的 “STATUS” 引脚查看通信状态,常见错误码:
8081:连接未建立
8090:超时
80A0:无效功能码
六、官方资源链接
S7-1200 Modbus TCP Server 官方指南:https://www.ad.siemens.com.cn/productportal/prods/s7-1200_plc_easy_plus/11-Comm/01-Ethernet/04-Modbus_TCP/01-Modbus_TCP_V4/02-Server.html西门子工业支持中心
S7-1200 Modbus TCP Client 官方指南:https://www.ad.siemens.com.cn/productportal/prods/s7-1200_plc_easy_plus/11-Comm/01-Ethernet/04-Modbus_TCP/01-Modbus_TCP_V4/03-Client.html西门子工业支持中心
TIA Portal Modbus TCP 快速入门:https://support.industry.siemens.com/cs/cn/en/view/73600209西门子工业支持中心
七、常见问题排查
连接失败:检查 IP 地址、端口号、子网掩码是否正确,确保网络可达(ping 测试)。
数据读写异常:确认保持寄存器 DB 块地址映射正确,功能码与 MB_MODE 匹配。
指令报错:查看 STATUS 引脚值,参考西门子错误码手册排查。





