S7-300 与 S7-1200 均支持 Modbus-TCP 通信,但在指令使用、配置方式和功能特性上存在差异,以下从硬件要求、指令调用、典型配置步骤三方面对比说明:
一、硬件与软件环境
项目 | S7-300 | S7-1200 |
---|---|---|
通信模块 | 需配备 CP343-1(如 CP343-1 Lean)或集成 PN 口的 CPU(如 CPU 317-2PN/DP) | CPU 自带 PN 口(如 CPU 1214C DC/DC/DC),无需额外模块 |
编程软件 | STEP 7 V5.5 及以上(需安装 Modbus-TCP 库) | TIA Portal V13 及以上(指令集成在固件中) |
协议支持 | 需通过西门子官方 Modbus-TCP 库(如 SIMATIC_NET)实现 | 固件内置 Modbus-TCP 指令(MB_CLIENT/MB_SERVER) |
二、Modbus-TCP 指令差异
1. S7-300:依赖库指令(以客户端为例)
S7-300 需安装 Modbus-TCP 库(如MODBUS_TCP_IP_V3
),通过功能块调用实现通信:
关键参数:
调用示例(读取服务器保持寄存器):
plaintext
// 调用MB_CLIENT读取保持寄存器(40001-40004) CALL "MB_CLIENT" , DB10 MB_MODE := 3 // 读保持寄存器 IP_ADDR := "192.168.0.2" // S7-1200服务器IP REM_PORT := 502 // Modbus-TCP默认端口 DATA_ADDR := 0 // 40001对应地址0 DATA_LEN := 4 // 读取4个寄存器 DATA_PTR := P#DB20.DBX0.0 BYTE 8 // 数据存储到DB20 CONNECT := TRUE // 建立连接 DONE := M10.0 // 完成标志 ERROR := M10.1 // 错误标志 STATUS := MW12 // 状态码(0=成功)
2. S7-1200:内置指令(TIA Portal 集成)
S7-1200 的 Modbus-TCP 指令直接集成在固件中,无需额外库,支持客户端和服务器模式:
关键参数:
调用示例(写入服务器保持寄存器):
st
// S7-1200作为客户端,写入服务器40005-40006寄存器 "MB_CLIENT".Request := FALSE; IF "Write_Trigger" THEN "MB_CLIENT".Mode := 16; // 写多个寄存器 "MB_CLIENT".Server := '192.168.0.3:502'; // S7-300服务器IP "MB_CLIENT".Address := 4; // 40005对应地址4 "MB_CLIENT".Count := 2; // 写入2个寄存器 "MB_CLIENT".Data := #WriteBuffer; // 数据缓冲区(DB块) "MB_CLIENT".Request := TRUE; // 触发写入 "Write_Trigger" := FALSE; END_IF;
三、配置步骤对比
1. S7-300 配置(STEP 7)
2. S7-1200 配置(TIA Portal)
四、关键注意事项
五、S7-300 与 S7-1200 互通信示例
场景:S7-1200(客户端)读取 S7-300(服务器)的保持寄存器 40001-40002。
通过以上配置,两者可实现稳定的 Modbus-TCP 通信。实际应用中需根据数据量调整通信周期(建议≥100ms),并通过状态码及时排查连接超时、地址错误等问题。