西门子 S7-200 PLC(如 CPU 226)与第三方设备(如变频器、仪表、触摸屏、传感器等)通信时,需根据第三方设备支持的通信协议(如 Modbus、自由口协议、Profibus 等)选择对应的通信方式。以下是最常用的两种通信方案及实现步骤:
一、Modbus RTU 通信(最常用,适用于串口设备)
S7-200 PLC(CPU 226)自带RS485 通信口(PORT 0 或 PORT 1),支持通过 Modbus RTU 协议与第三方设备(如支持 Modbus RTU 的变频器、仪表)通信。
1. 硬件连接
2. PLC 端配置(使用 Modbus 库指令)
S7-200 通过Modbus RTU 从站库(MBUS_SLAVE) 或主站库(MBUS_MASTER) 实现通信:
3. 第三方设备配置
4. 程序示例(PLC 为主站,读取第三方仪表)
awl
// 初始化Modbus主站(仅首次扫描执行) LD SM0.1 CALL MBUS_INIT:SBR30 EN:=TRUE, BAUD:=9600, // 波特率9600 PARITY:=0, // 无校验 PORT:=0, // 使用PORT 0 TIMEOUT:=1000 // 超时时间1000ms DONE=>M0.0, // 初始化完成标志 ERROR=>MB10 // 错误码 // 周期性读取第三方仪表(从站地址1,寄存器0x0000,1个寄存器) LD SM0.0 CALL MBUS_MASTER:SBR31 EN:=M0.0, // 初始化完成后执行 MODE:=1, // 读取 ADDR:=1, // 从站地址1 START:=0, // 起始寄存器0 COUNT:=1, // 读取1个寄存器 DATAPTR:=&VB100, // 数据存于VB100 PORT:=0, DONE=>M0.1, // 读取完成 ERROR=>MB11 // 错误码
二、自由口通信(适用于自定义协议设备)
若第三方设备不支持 Modbus,可通过 S7-200 的自由口模式(Free Port Mode) 自定义通信协议(如 ASCII 码协议、十六进制协议)。
1. 配置自由口模式
2. 编程实现数据收发
使用自由口专用指令:
3. 程序示例(发送指令控制第三方设备)
假设第三方设备接收指令格式为:#地址+指令+校验+结束符(如#01RUN*表示启动从站 1):
awl
// 发送启动指令 "#01RUN*" LD I0.0 // 启动按钮按下 MOVB 35, VB200 // "#"(ASCII码35) MOVB 48, VB201 // "0" MOVB 49, VB202 // "1" MOVB 82, VB203 // "R" MOVB 85, VB204 // "U" MOVB 78, VB205 // "N" MOVB 42, VB206 // "*" MOVB 7, VB199 // 发送长度7字节 CALL XMT:SB4 TBL:=VB199, // 发送缓冲区起始地址 PORT:=0 // 使用PORT 0 DONE=>M1.0 // 发送完成
三、其他通信方式
四、常见问题排查
总结
S7-200 PLC 与第三方设备通信的核心是匹配通信协议:优先使用 Modbus RTU(兼容性强,编程简单),无标准协议时采用自由口模式自定义协议。硬件上确保接线正确、抗干扰措施到位,软件上通过库指令或自由口指令实现数据交互,可满足绝大多数工业场景需求。



