地址映射说明:
Modbus 地址 40001 → VW100(即 VB100 和 VB101)
40002 → VW102,依此类推。
若需读取 10 个字(20 字节),则占用 VW100 ~ VW118。
2. 设置以太网 IP 地址
进入 “系统块” → “以太网端口”
配置静态 IP:
子网掩码:255.255.255.0
端口固定为 502(不可更改) 每台 S7-200 SMART 最多支持 8 个 Modbus TCP 客户端连接,本方案仅 1 个(S7-1200),完全满足。
---
三、S7-1200 配置(TIA Portal,固件 ≥ V4.0)
S7-1200 使用内置 MB_CLIENT 指令实现 Modbus TCP 客户端功能。
1. 创建连接参数 DB(非优化访问)
新建 DB,命名为 DB_Conn_Params,取消“优化的块访问”。
定义结构体数组或独立变量:
Conn_Slave1 : TCON_IP_v4;Conn_Slave2 : TCON_IP_v4;Conn_Slave3 : TCON_IP_v4;分别初始化(可在“初始值”列填写):
ID 必须唯一(1~16),用于内部连接管理。
---
2. 创建数据缓冲区 DB
新建 DB,如 DB_Modbus_Data(非优化):
---
3. 编写轮询状态机(推荐在 OB1 或专用 FB 中)
定义控制变量(可在 M 区或专用 DB):
变量 | 类型 | 说明 |
Poll_State | INT | 0=空闲, 1=读1, 2=读2, 3=读3 |
MB_REQ_1/2/3 | BOOL | 各从站请求触发 |
MB_BUSY_1/2/3 | BOOL | 各从站忙标志 |
MB_DONE_1/2/3 | BOOL | 各从站完成标志 |
MB_ERROR_1/2/3 | BOOL | 错误标志 |
MB_STATUS_1/2/3 | WORD | 详细状态码 |
轮询逻辑(OB1 中):
优势:顺序执行,避免同时请求导致资源冲突。
---
4. 调用三个 MB_CLIENT 指令
在 OB1 中分别调用:
从站1:
从站2 和 从站3:类似,仅替换连接和数据指针。
---
四、关键注意事项
五、调试与验证步骤
1. 单独测试每台 S7-200 SMART
使用 Modbus Poll(第三方工具)连接各 IP:502
读取 40001,确认返回值与 V 区一致
2. S7-1200 在线监控
在 TIA Portal 中监控:
MB_BUSY_x 是否短暂置位MB_DONE_x 是否在 100~300ms 内触发DB_Modbus_Data 中数据是否更新3. 网络连通性
在 S7-1200 的“在线和诊断” → “通信”中查看 TCP 连接状态
用电脑 Ping 各 IP,确保网络通畅
---
六、增强建议(可选)
增加超时保护为每个请求添加 TON 定时器(如 2s),若超时则强制跳过,防止卡死。 封装为 FB 功能块将 MB_CLIENT + 连接参数 + 缓冲区封装为可复用 FB,传入 IP 和数据指针,便于扩展到 N 台设备。 写操作支持若需向 S7-200 SMART 写数据,设置 MODE := 1,并确保目标 V 区未被程序频繁覆盖。 心跳检测定期读取一个固定寄存器(如 VW0),判断从站是否在线。 ---
七、总结
通过 Modbus TCP 协议 + 分时轮询机制,S7-1200 可高效、稳定地与 3 台(甚至更多)S7-200 SMART 通信。此方案:
成本低(无需额外模块)
配置简单(S7-200 SMART 内置 Server)
兼容性强(标准 Modbus TCP)
易于维护和扩展
最终效果:S7-1200 每秒可完成一轮对 3 台设备的数据采集,满足绝大多数工业控制需求。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!