S7-300 PLC 与其他设备(如 HMI、其他 PLC、传感器、变频器等)的通信需根据通信协议和硬件配置分步骤实施,常见的核心是 “硬件连接→参数配置→程序调用→测试验证”。以下以最常用的Profibus DP、S7 协议(以太网) 和Modbus TCP为例,详解具体步骤:
一、通用前提:硬件准备与基础配置
二、通过 Profibus DP 通信(与从站设备,如变频器)
Profibus DP 是工业现场总线,适用于 S7-300 与远程 I/O、变频器、仪表等设备的高速通信。
步骤 1:硬件连接
步骤 2:组态 Profibus 网络(STEP 7 中)
步骤 3:编写通信程序(读写从站数据)
使用系统功能 SFC14(读从站数据)和 SFC15(写从站数据):
stl
// 读取Profibus从站数据(如MM440状态) CALL "DPRD_DAT" // 读DP数据 LADDR :=W#16#100 // 从站输入地址(IW256 = 16#100) RECORD :=P#DB10.DBX0.0 BYTE 2 // 数据存储区(DB10的前2字节) RET_VAL:=MW10 // 返回值(0=成功) // 向Profibus从站写入数据(如控制变频器启动) CALL "DPWR_DAT" // 写DP数据 LADDR :=W#16#102 // 从站输出地址(QW256 = 16#102) RECORD :=P#DB10.DBX2.0 BYTE 2 // 待写入数据(DB10的2-3字节) RET_VAL:=MW12 // 返回值(0=成功)
步骤 4:从站设备参数设置
步骤 5:测试通信
三、通过 S7 协议(以太网)与其他 PLC 通信(如 S7-1200/400)
S7 协议是西门子 PLC 之间的专用以太网协议,通过 CP 343-1 模块实现,支持跨 CPU 读写数据。
步骤 1:硬件连接与 IP 配置
步骤 2:组态网络(可选,用于在线监控)
步骤 3:编写通信程序(读写远程 PLC 数据)
使用系统功能 SFC67(X_GET,读远程数据)和 SFC68(X_PUT,写远程数据):
stl
// 读取S7-1200的数据(如DB1.DBW0) CALL "X_GET" // 从远程CPU读数据 REQ :=TRUE // 启动请求(可接脉冲信号) DEST_ID:=W#16#1 // 远程PLC的MPI地址(或以太网地址,需配合路由) // 远程地址:S7-1200的DB1.DBW0(语法:DB号, 起始字节, 长度) DBNUM :=1 // 远程DB块号 DBADD :=0 // 远程DB起始字节 LEN :=2 // 读取长度(2字节) // 本地存储地址:DB20.DBW0 RET_VAL:=MW20 // 返回值(0=成功) BUSY :=M0.0 // 忙标志 DATA :=P#DB20.DBX0.0 BYTE 2 // 向S7-1200写入数据(如DB1.DBW2) CALL "X_PUT" // 向远程CPU写数据 REQ :=TRUE // 启动请求 DEST_ID:=W#16#1 // 远程PLC地址 DBNUM :=1 // 远程DB块号 DBADD :=2 // 远程DB起始字节 LEN :=2 // 写入长度 RET_VAL:=MW22 // 返回值 BUSY :=M0.1 // 忙标志 DATA :=P#DB20.DBX2.0 BYTE 2 // 本地数据地址
步骤 4:测试通信
四、通过 Modbus TCP 与第三方设备通信(如仪表、HMI)
Modbus TCP 是通用协议,适用于 S7-300 与第三方设备(非西门子)通信,需通过 CP 343-1 模块 + Modbus 库实现。
步骤 1:安装 Modbus 库
步骤 2:硬件组态与 IP 配置
步骤 3:调用 Modbus 功能块
以 “读保持寄存器” 为例,使用库中的 FB65(MB_CLIENT):





