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. 数据类型已更改#
现象:编译时提示"数据类型已更改"
排查顺序:
- 编译 PLC → 右键 PLC → 编译 → 软件全部重建,定位具体变动的变量
- 更新数据块 → 如 DB 变量类型改了(如 Bool→Int),所有引用处同步修改
- HMI 变量同步 → 去 HMI 变量表重新绑定 PLC 变量,或点"同步/更新 HMI 变量"
- 检查优化块访问 → 比赛期间不建议切换此设置
- 重新下载 → PLC 和 HMI 均重新编译后分别下载
2. LSNMP_GetBulk 接口已更改#
现象:调用 LSNMP_GetBulk 时提示接口版本已更改
处理步骤:
- 更新块调用 → 右键块调用,执行"更新块调用"
- 删除旧实例 DB → 删除旧实例 DB,重新编译生成
- 检查库版本 → 确认 Siemens 通信库/LSNMP 库的版本一致性
- 重新编译全部 → 右键 PLC → 编译 → 软件全部重建
- 重新分配参数 → 重点检查 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 超时时间内无法恢复)