两台西门子 S7-1200 通过 Modbus TCP 通信 (一、读写保持寄存器)
什么是 Modbus TCP?其实就是 Modbus 报文格式;用 TCP 协议打包在网际间传输。
PLC_1 配置(客户端)
- IP 地址:192.168.0.1
- RemoteAddress = 192.168.0.2(这里写服务器端 PLC 的 IP 地址)
- ActiveEstablished = 1
- RemotePort = 502
- 本地端口:0(意思是本地使用随机端口)
- 硬件标志符:64
PLC_1 程序一、检查 Modbus TCP 连接状态,连接建立后复位 MB_CLIENT 指令控制位 & 状态位
- MB_CLIENT 背景数据块中静态变量 "Connected" 用于指示 TCP 连接是否建立
- TCP 连接成功建立后,复位 MB_CLIENT 指令控制位和状态位
- 触发第一个 MB_CLIENT 指令的 REQ
PLC_1 程序二、读取服务器端数据
- 读取 Modbus TCP 服务器侧 Modbus 地址 40001~40008 的 8 个字节存储到本地 CPU 的 DB20 中
- MB_DATA_LEN 数据长度: 数据访问的 位或字 的个数。具体参见表 4。
- MB_DATA_PTR 指向 Modbus 数据寄存器的指针。
PLC_1 程序三、第二步触发
- 第一个 MB_CLIENT 指令的 DONE 或 ERROR 复位本指令的 REQ
- 同时触发第二个 MB_CLIENT 指令的 REQ
PLC_1 程序四、向服务器写入数据
- 将本地 CPU 的 DB10 中的 8 个字节写入 Modbus TCP 服务器侧 Modbus 地址 40009~40016
PLC_1 程序五、回到第一步
- 第二个 MB_CLIENT 指令的 DONE 或 ERROR 复位本指令的 REQ
- 同时触发第一个 MB_CLIENT 指令的 REQ
PLC_2 配置(服务器端)
- IP 地址:192.168.0.2
- LocalPort = 502
- 硬件标志符:64
PLC_2 程序一、调用 MB_SERVER 指令,使能 Modbus TCP 服务器功能
- 服务器端 40001-40100 数据映射
- DB100.DBW0 对应 40001
- DB100.DBW2 对应 40002
- 以此类推...