工业通信

S7 & PLC 通信 / TIA Portal 配置教程

TIA Portal 数据类型、S7 PUT/GET、跨 VLAN/NAT 通信和 PLC EtherNet/IP LCCF 配置。

基于 03_S7_TIA.md 中 3 条对话内容整理 对话涵盖:博图数据类型更改与常见问题、S7通信概述、西门子PLC LCCF配置


一、TIA Portal 数据类型常见问题#

1. 数据类型已更改#

现象:编译时提示"数据类型已更改"

排查顺序

  1. 编译 PLC → 右键 PLC → 编译 → 软件全部重建,定位具体变动的变量
  2. 更新数据块 → 如 DB 变量类型改了(如 Bool→Int),所有引用处同步修改
  3. HMI 变量同步 → 去 HMI 变量表重新绑定 PLC 变量,或点"同步/更新 HMI 变量"
  4. 检查优化块访问 → 比赛期间不建议切换此设置
  5. 重新下载 → PLC 和 HMI 均重新编译后分别下载

2. LSNMP_GetBulk 接口已更改#

现象:调用 LSNMP_GetBulk 时提示接口版本已更改

处理步骤

  1. 更新块调用 → 右键块调用,执行"更新块调用"
  2. 删除旧实例 DB → 删除旧实例 DB,重新编译生成
  3. 检查库版本 → 确认 Siemens 通信库/LSNMP 库的版本一致性
  4. 重新编译全部 → 右键 PLC → 编译 → 软件全部重建
  5. 重新分配参数 → 重点检查 REQ、ID、DONE、BUSY、ERROR、STATUS 等管脚

二、S7 通信配置#

1. S7 协议基础#

特性 说明
基础协议 ISO-on-TCP(TCP 102 端口)
主要指令 PUT(写入)、GET(读取)
通信方式 单边连接(PUT/GET)、双边连接(USEND/URCV)
连接资源 S7-1200 支持最多 16 个连接

2. S7-1200 PUT/GET 配置步骤#

Step 1:启用 PUT/GET 权限

PLC 属性 → 保护与安全 → 编译
  勾选"Permit access with PUT/GET communication from remote partner"

Step 2:配置 S7 连接(主动侧)

打开网络视图 → 新建 S7 连接
  连接类型: S7 连接
  伙伴: 未指定伙伴(Unspecified Partner)
  本地 TSAP: 03.xx(S7-1200 资源 03)
  远程 TSAP: 03.xx

Step 3:使用 PUT/GET 指令

PUT 指令参数:
  REQ        : 触发上升沿
  ID         : 连接 ID
  ADDR_1     : 伙伴 PLC 地址 + DB 号
  SD_1       : 本地要发送的数据

GET 指令参数:
  REQ        : 触发上升沿
  ID         : 连接 ID
  ADDR_1     : 伙伴 PLC 地址 + DB 号
  RD_1       : 本地接收数据的区域

3. S7 与 PROFINET、Modbus 的区别#

特性 S7 (PUT/GET) PROFINET IO Modbus TCP
角色 客户端/服务器 IO 控制器/设备 客户端/服务器
端到端 ✗(仅控制器-设备)
编程需要 需要编程 组态即用 需要编程块
典型端口 TCP 102 UDP/DCP TCP 502
实时性 一般 高(RT/IRT) 一般

4. 跨 VLAN/NAT S7 通信要点#

  • 确保 PLC 设置正确的默认网关
  • NAT 场景下目标 IP 填转换后地址
  • 推荐使用单边连接(未指定伙伴)
  • 防火墙需放行 TCP 102 端口

三、西门子 PLC LCCF(EtherNet/IP)配置#

1. LCCF 功能块简介#

功能块 角色 说明
LCCF_EnetScanner 主站(Scanner) S7-1215 作为 EtherNet/IP 主站,主动读写第三方设备
LCCF_EnetAdapter 从站(Adapter) S7-1215 作为 EtherNet/IP 从站,被其他设备访问

2. LCCF_EnetScanner 配置步骤#

Step 1:导入库文件

从西门子官方 EtherNet/IP 示例库导入 LCCF 相关块

注意:与 PROFINET 不同,EtherNet/IP 不能在"设备与网络"中图形化组态,而是通过全局 DB 中的 Adapter 描述数组来配置。

Step 2:配置 Scanner

LCCF_EnetScanner 参数:
  xEn          : 使能位
  stAdapter    : 本机适配器描述(接口、IP、MAC 等)
  stScanner    : Scanner 描述(Vendor ID、Product Type、Product Code 等)
  stConnection : EDS 文件中定义的连接参数
  stInputData  : 输入数据区域(来自 Adapter)
  stOutputData : 输出数据区域(发往 Adapter)

Step 3:OB 调用位置

建议在循环中断 OB(Cyclic Interrupt OB)中调用,保证周期稳定性

3. 关键参数说明#

参数 说明 来源
Vendor ID 制造商 ID EDS 文件
Product Type 设备类型 EDS 文件
Product Code 产品代码 EDS 文件
Revision Major/Minor 主/次版本号 EDS 文件
Assembly Instance 组装实例号 EDS 文件
Connection Point 输入/输出/配置连接点 EDS 文件
RPI 请求包间隔(ms) 用户配置

4. 常见错误代码#

状态码 含义
16#72xx 连接建立相关错误
16#76xx I/O 数据交换错误
16#82xx 配置/参数不一致错误
EDS 文件匹配 Vendor ID/Product Type/Product Code 不一致
RPI 超时 目标设备响应超时

5. 注意事项#

  • 跨 VLAN 通信需确保路由和防火墙放行(TCP 44818、UDP 2222)
  • MRP+RSTP 拓扑切换可能导致 EtherNet/IP 会话偶发中断
  • EtherNet/IP 对拓扑变化比普通 TCP 通信更敏感(I/O 超时时间内无法恢复)