在西门子 S7-1200 的以太网通讯中,ConNECT 参数的核心用法是:先创建并配置 “连接结构体”(存储通信链路信息),再将该结构体赋值给 TSEND_C/TRCV_C/TCON 等功能块的 ConNECT 引脚,实现通信链路的绑定。以下是分场景的详细操作步骤(含 TCP 客户端 / 服务器、UDP,基于 TIA Portal 软件),新手可直接照搬:
硬件:S7-1200 PLC(需带以太网口,如 1214C)、电脑(安装 TIA Portal)、交换机 / 网线(连接 PLC 与通信伙伴);
软件:TIA Portal(推荐 V16 及以上,需安装 S7-1200 固件对应的 GSD 文件);
明确通信需求:
ConNECT 参数的数据类型固定为 TCON_IP_V4(IPv4 通信),需先在数据块中定义该类型变量,再配置其属性(协议、IP、端口等)。
在 TIA Portal 项目树中,右键「PLC_1」→「添加新块」→ 选择「数据块」,命名为「DB_Connection」(自定义,如 “连接配置 DB”);
数据块属性设置:「块类型」选「全局数据块」,「访问权限」设为「完全访问」,勾选「优化的块访问」(默认勾选,无需修改);
点击「确定」,打开 DB_Connection 数据块的编辑界面。
在数据块的「名称」列输入变量名(如 “TCP_Client_Conn”,对应 TCP 客户端连接);
「数据类型」列手动输入 TCON_IP_V4(或在下拉列表中搜索选择);
按同样方法,可定义多个变量(如 TCP 服务器、UDP 连接,分别命名为 “TCP_Server_Conn”“UDP_Conn”);
点击「保存」,完成变量定义(此时变量下方会显示黄色感叹号,需后续配置属性)。
双击数据块中 TCON_IP_V4 类型变量的「属性」列(或右键→「属性」),打开配置界面,按通信场景填写参数:
| 通信场景 | 核心配置项(TCON_IP_V4 属性) |
|---|
| TCP 客户端 | 1. 「协议」:TCP;2. 「主动建立连接」:是(客户端主动发起连接);3. 「本地端口」:自定义(如 2000,需与伙伴端口不同);4. 「远程地址」:伙伴设备 IP(如 192.168.0.100);5. 「远程端口」:伙伴设备监听端口(如 3000);6. 其他默认(超时时间可设 1000ms)。 |
| TCP 服务器 | 1. 「协议」:TCP;2. 「主动建立连接」:否(等待客户端连接);3. 「本地端口」:自定义(如 3000,需告知客户端);4. 「远程地址 / 端口」:留空(无需指定,允许任意客户端连接);5. 其他默认。 |
| UDP(无连接) | 1. 「协议」:UDP;2. 「本地端口」:自定义(如 4000);3. 「远程地址」:伙伴设备 IP(如 192.168.0.200);4. 「远程端口」:伙伴设备本地端口(如 4000);5. 「主动建立连接」:自动灰显(UDP 无需连接)。 |
✅ 配置技巧:
创建好配置好的 TCON_IP_V4 变量后,需在 OB1(主程序)中调用对应的通信功能块,将变量赋值给 ConNECT 参数,实现链路绑定。
需求:S7-1200(IP:192.168.0.1)作为 TCP 客户端,连接服务器(IP:192.168.0.100,端口 3000),发送 / 接收数据。
打开 OB1,在指令库中搜索「TCON」,拖拽至程序段 1;
配置 TCON 的输入输出参数:
| TCON 参数 | 赋值内容(示例) | 说明 |
|---|
| EN | TRUE(或由按钮控制,如 I0.0) | 使能连接指令 |
| CONNECT | DB_Connection.TCP_Client_Conn | 绑定之前配置的 TCP 客户端连接结构体 |
| REQ | TRUE(或脉冲信号,如 R_TRIG (I0.0).Q) | 触发连接请求(脉冲信号避免重复连接) |
| DISC | FALSE(或由按钮控制,如 I0.1) | 断开连接(默认关闭) |
| DONE | M0.0(自定义中间变量) | 连接建立成功标志(TRUE = 连接成功) |
| ERROR | M0.1(自定义中间变量) | 连接错误标志(TRUE = 连接失败) |
| STATUS | MW10(自定义字变量) | 错误代码(如 8000 = 未连接,0 = 正常) |
搜索「TSEND_C」,拖拽至程序段 2(需在 TCON 连接成功后使能);
配置 TSEND_C 参数:
| TSEND_C 参数 | 赋值内容(示例) | 说明 |
|---|
| EN | M0.0(TCON 的 DONE 信号,连接成功才发送) | 使能发送指令 |
| CONNECT | DB_Connection.TCP_Client_Conn | 绑定同一连接结构体(与 TCON 一致) |
| DATA | P#DB_Send.DBX0.0 BYTE 10(自定义发送 DB) | 发送数据缓冲区(如 10 字节数据) |
| LEN | 10(发送数据长度,与 DATA 一致) | 字节数(最大不超过 PLC 通信缓冲区限制) |
| REQ | TRUE(持续发送,或脉冲控制发送频率) | 发送请求(TRUE = 持续发送) |
| DONE | M0.2(发送成功标志) | TRUE = 单次发送完成 |
| ERROR | M0.3(发送错误标志) | TRUE = 发送失败 |
| STATUS | MW12(发送状态代码) | 如 0 = 正常,8001 = 连接未建立 |
搜索「TRCV_C」,拖拽至程序段 3(与 TSEND_C 并行);
配置 TRCV_C 参数:
| TRCV_C 参数 | 赋值内容(示例) | 说明 |
|---|
| EN | M0.0(连接成功才接收) | 使能接收指令 |
| CONNECT | DB_Connection.TCP_Client_Conn | 绑定同一连接结构体 |
| DATA | P#DB_Receive.DBX0.0 BYTE 10(自定义接收 DB) | 接收数据缓冲区(与发送端长度一致) |
| LEN | 10(接收数据长度) | 需与发送端 LEN 匹配 |
| NDR | M0.4(新数据接收标志) | TRUE = 接收到新数据(脉冲信号) |
| ERROR | M0.5(接收错误标志) | TRUE = 接收失败 |
| STATUS | MW14(接收状态代码) | 如 0 = 正常,8002 = 缓冲区溢出 |
需求:S7-1200(IP:192.168.0.1,本地端口 3000)作为 TCP 服务器,等待客户端连接后收发数据。
配置与 TCP 客户端类似,仅 ConNECT 参数绑定「TCP_Server_Conn」(之前配置的服务器结构体);
REQ 设为 TRUE(持续使能,服务器一直监听端口);
DONE=TRUE 时,说明服务器端口已开放,等待客户端连接。
需求:S7-1200(IP:192.168.0.1,本地端口 4000)与伙伴(IP:192.168.0.200,端口 4000)通过 UDP 收发数据。
UDP 无需建立连接,直接绑定 UDP 配置的结构体即可:
TSEND_C 的 ConNECT 参数赋值为「DB_Connection.UDP_Conn」;
EN 设为 TRUE(持续使能),DATA/LEN 配置与 TCP 一致;
TRCV_C 的 ConNECT 参数同样赋值为「DB_Connection.UDP_Conn」,DATA/LEN 与发送端匹配;
关键:UDP 的 NDR(接收标志)触发时,需及时读取 DATA 缓冲区数据,避免被新数据覆盖。
连接结构体与功能块必须匹配:
端口与 IP 配置禁忌:
状态代码排查:
若 STATUS=8000(TCON):未建立连接,检查 IP / 端口是否正确、伙伴设备是否在线;
若 STATUS=8001(TSEND_C):连接未建立,等待 TCON 的 DONE=TRUE 再使能发送;
若 STATUS=8002(TRCV_C):接收缓冲区溢出,增大缓冲区长度(LEN)或加快数据读取频率。
数据块与缓冲区配置:
下载程序到 S7-1200 PLC,启动 PLC(RUN 模式);
确保 PLC 与通信伙伴(如另一台 PLC、电脑上位机)网络连通(ping 测试 IP 是否可达);
若为 TCP 客户端:触发 TCON 的 REQ 信号(如按下 I0.0),观察 M0.0(DONE)是否为 TRUE,STATUS 是否为 0(连接成功);
连接成功后,观察 TSEND_C 的 DONE(M0.2)和 TRCV_C 的 NDR(M0.4),若频繁触发,说明数据收发正常;
若失败,通过 STATUS 代码(如 MW10、MW12)查询故障原因,针对性排查 IP、端口、链路绑定是否正确。
通过以上步骤,即可完成 ConNECT 参数的配置与使用。核心逻辑是 “先定义配置结构体,再绑定功能块”,无论 TCP 还是 UDP,都遵循这个流程,仅需调整结构体的协议和地址参数即可。如果需要具体的程序截图或某一步的详细操作,可以进一步说明!