西门子 S7-1200 PLC 通过以太网向指定 IP 地址发送数据(如与第三方设备、上位机或其他 PLC 通讯),可通过TCP 客户端或UDP 协议实现,具体步骤如下(以 TIA Portal V16 为例):
硬件:
S7-1200 PLC(如 1214C DC/DC/DC,需带 PROFINET 以太网接口)
以太网交换机 / 网线(连接 PLC 与目标设备,确保网络互通)
目标设备(如 PC、HMI、其他 PLC,需配置固定 IP,且与 PLC 同网段)
软件:
设置 S7-1200 的 IP 地址:
验证网络连通性:
S7-1200 作为 TCP 客户端,主动连接目标 IP 的指定端口,发送数据。
在 TIA Portal 的 PLC 程序中,添加 “指令库”→“通讯”→“TCP” 相关指令(如TSEND_C
用于持续发送)。
定义通讯相关变量(在 “PLC 数据类型” 或 “全局 DB” 中创建):
plaintext
// 全局DB1:TCP通讯变量
DB1.DBX0.0:连接使能(CONNECT_EN,BOOL)
DB1.DBX0.1:连接状态(CONNECTED,BOOL)
DB1.DBX0.2:发送请求(SEND_REQ,BOOL)
DB1.DBX0.3:发送完成(SEND_DONE,BOOL)
DB1.DBX0.4:发送错误(SEND_ERROR,BOOL)
DB1.DBW2:错误代码(ERROR_CODE,INT)
DB1.DBB4:发送数据长度(DATA_LEN,BYTE)
DB1.DBB5 至 DB1.DBB204:发送数据缓冲区(DATA,ARRAY[1..200] OF BYTE)
建立 TCP 连接:使用TCON
指令连接目标 IP 和端口(如目标 IP192.168.0.100
,端口1024
):
ladder
// TCON指令参数
REQ:DB1.CONNECT_EN(上升沿触发)
ACTIVE:TRUE(客户端模式)
REM_ADDR:"192.168.0.100"(目标IP)
REM_PORT:1024(目标端口)
LOCAL_PORT:2000(PLC本地端口,可自定义)
ID:1(连接ID,唯一标识)
DONE:DB1.CONNECTED(连接成功标志)
ERROR:DB1.CONNECT_ERROR(连接错误标志)
发送数据:连接成功后,用TSEND_C
指令循环发送数据(如发送字符串 “Hello from S7-1200”):
ladder
// 当连接成功(DB1.ConNECTED=TRUE)时,触发发送
A DB1.ConNECTED
FP M0.0
= DB1.SEND_REQ(发送请求,上升沿)
// TSEND_C指令参数
REQ:DB1.SEND_REQ
ID:1(与TCON的ID一致)
DATA:DB1.DATA(发送缓冲区起始地址)
LEN:DB1.DATA_LEN(发送数据长度,如16字节)
DONE:DB1.SEND_DONE(发送完成)
ERROR:DB1.SEND_ERROR(发送错误)
STATUS:DB1.ERROR_CODE(错误代码)
填充发送数据:在发送前,将数据写入缓冲区(如字符串转字节):
ladder
// 示例:发送字符串“Hello”(ASCII码:48 65 6C 6C 6F)
L 16#48
T DB1.DBB5
L 16#65
T DB1.DBB6
L 16#6C
T DB1.DBB7
L 16#6C
T DB1.DBB8
L 16#6F
T DB1.DBB9
L 5
T DB1.DATA_LEN(长度=5)
若无需建立连接(如广播数据),可使用 UDP 协议,步骤类似:
使用UDPSEND
指令,无需TCON
连接,直接指定目标 IP 和端口。
变量定义与 TCP 类似,需指定目标 IP、端口和发送数据。
示例程序:
ladder
// UDPSEND指令参数
REQ:M0.0(发送请求)
DEST_IP:"192.168.0.100"(目标IP)
DEST_PORT:1025(目标端口)
DATA:DB2.DATA(发送缓冲区)
LEN:DB2.DATA_LEN(数据长度)
DONE:M0.1(发送完成)
ERROR:M0.2(发送错误)
连接失败(TCON 错误):
检查目标 IP 和端口是否正确(目标设备需监听对应端口)。
确认 PLC 与目标设备是否同网段,防火墙是否阻断端口(如关闭 PC 防火墙)。
错误代码8070
表示目标不可达,8090
表示端口未开放。
发送无响应(TSEND_C 无 DONE):
数据乱码:
S7-1200 通过以太网发送数据的核心是:配置网络参数→用 TCP/UDP 指令建立通讯→填充数据并触发发送。TCP 适用于可靠传输(如控制指令),UDP 适用于高速、无连接场景(如实时数据)。调试时建议先用网络助手验证,再逐步整合到实际设备中。