西门子 S7-1500 的 ISO-on-TCP (RFC 1006) 通信协议是工业自动化领域的“通用语言”之一。它基于 TCP/IP,但在应用层增加了特定的头部(TPKT 和 COTP),主要用于确保数据包的完整性和兼容旧式工业设备。理论上,任何支持 RFC 1006 标准且开放了 102 端口(或自定义端口)的设备都可以与 S7-1500 进行 ISO-on-TCP 通信。以下是具体的设备分类及典型应用场景:
一、核心兼容设备列表
1. 西门子家族内部设备 (最经典场景)
这是 ISO-on-TCP 最主要的应用领域,用于新旧 PLC 之间的互操作。
S7-300 / S7-400 PLC:场景:S7-1500 作为新主控,读取老产线 S7-300/400 的数据,或反之。特点:S7-300/400 的开放式通信通常只支持 ISO-on-TCP,不支持原生 TCP。必须配置正确的 TSAP (如 S7-300 通常为 02.00)。S7-200 SMART (部分固件/配置):虽然主要用 PPI 或 Modbus,但在某些通过 CP 模块扩展的场景下可能涉及。
S5 PLC (需 CP 通信处理器):极老旧系统,通过 CP544/CP543 等模块支持 ISO-on-TCP。
西门子 HMI (TP/MP 系列):老款面板与新型 PLC 通信时,底层可能使用此协议。
西门子 CNC (840D sl 等):数控系统与 PLC 之间的高速数据交换。
2. 工业识别与追溯设备 (高频场景)
许多工业级 RFID 和条码扫描器默认采用 ISO-on-TCP,因为该协议能很好地处理不定长的数据包。
RFID 读写器:品牌:西门子 (MOBY 系列), 欧姆龙 (V700/V800 系列), 图尔克 (BL67), 罗克韦尔 (Allen-Bradley)。用途:PLC 发送读/写命令,读写器返回标签数据。工业条码/二维码扫描枪:品牌:SICK (CLV/CLS 系列), Keyence, Cognex (DataMan 系列), Datalogic。用途:触发扫描,接收扫码结果字符串。注意:许多扫码枪默认端口为 102,且需要配置 TSAP (通常手册会给出,如 01.00 或 00.01)。3. 驱动与运动控制设备
变频器与伺服驱动器:品牌:西门子 (SINAMICS G120/S120 - 通过 CB 通信板), 丹佛斯 (Danfoss), 施耐德 (Altivar)。用途:参数读写、状态监控、故障诊断。相比 Modbus TCP,ISO-on-TCP 在某些西门子驱动中配置更原生。机器人控制器:部分欧洲品牌机器人控制器支持 ISO-on-TCP 作为外部接口,用于接收轨迹指令或发送状态。
4. 第三方智能仪表与传感器
电力监测仪:部分高端电表支持 RFC 1006。温控器/过程控制器:如欧陆 (Eurotherm)、霍尼韦尔的部分型号。称重仪表:高精度称重变送器。5. IT 系统与上位机软件 (需特定库支持)
虽然现代 IT 系统多用原生 TCP 或 OPC UA,但以下情况会用到 ISO-on-TCP:
SCADA/MES 系统:WinCC (Classic/Professional):内置原生支持,可直接组态 ISO-on-TCP 驱动连接 S7-300/400 或第三方设备。Ignition, Wonderware, iFix:通常需要安装专门的 RFC 1006 驱动插件 或通过脚本调用支持 RFC 1006 的库 (如 Python 的 python-snap7 底层部分逻辑,或 Java 的 snap7 库)。自研上位机 (C#/C++/Python):如果开发者使用了 Snap7、Libnodave 或 S7CommPlus 等开源库,这些库底层封装了 ISO-on-TCP 协议,常用于模拟 S7 通信或读取支持该协议的第三方设备。
---
二、为什么选择 ISO-on-TCP 而不是原生 TCP?
如果你的目标设备在列表中,通常是因为以下原因迫使你必须使用 ISO-on-TCP:
设备“只认”这个协议:很多老式西门子 PLC (S7-300/400) 和工业扫码枪的固件里,只写死了 ISO-on-TCP 协议栈,根本不开启原生 TCP 端口。你没法选,只能用这个。
端口固化:ISO-on-TCP 的标准端口是 102。很多设备不允许修改此端口。而原生 TCP 通常允许自定义端口。
数据包边界明确:原生 TCP 是“流式”的,容易发生粘包/拆包,应用层需要自己计算长度。
ISO-on-TCP 在协议头中包含了数据长度信息,接收方可以精确知道一个完整报文在哪里结束,非常适合传输变长数据(如长短不一的条码字符串、RFID 多标签数据)。
连接确认机制:在 TCP 三次握手之后,ISO-on-TCP 还有一层 COTP 连接请求/确认。这提供了额外的应用层连接状态确认,比纯 TCP 更稳健。
---
三、对接关键参数检查清单
在与上述设备通信前,必须向设备厂家确认以下三个核心参数,否则无法连通:
参数 | 说明 | 典型值/获取方式 |
| IP 地址 | 设备的网络地址 | 现场分配 |
| 端口号 (Port) | ISO-on-TCP 监听端口 | 固定为 102 (绝大多数情况) |
| TSAP (本地/远程) | 传输服务访问点,类似“子端口” | 最关键!• S7-300: 远程 TSAP 通常为 02.00 (十六进制)• S7-400: 远程 TSAP 通常为 03.00• 扫码枪/RFID: 查阅手册,常见 01.00, 00.01, 02.00。• S7-1500: 本地 TSAP 通常自动或设为 03.00 |
警告:如果 TSAP 配错,TCON 指令会直接报错(常见错误代码 160081 或 1600E4),即使 Ping 是通的也无法建立连接。 ---
四、典型应用场景举例
产线改造 (新老共存):
场景:工厂引入 S7-1500 作为新主站,但保留原有的 S7-300 从站和 MOBY RFID 站点。方案:S7-1500 通过 ISO-on-TCP 分别连接 S7-300 (TSAP 02.00) 和 RFID 读写器 (TSAP 01.00),实现数据无缝集成。物流分拣系统:
场景:输送线上安装了 20 个 SICK 扫码枪。方案:S7-1500 作为服务器 (被动连接) 或客户端,通过 ISO-on-TCP 接收每个扫码枪上传的包裹条码。利用 ISO-on-TCP 的变长特性,轻松处理不同长度的条码数据。数据采集网关:
场景:需要将车间内各种品牌的仪表数据上传到 MES。方案:S7-1500 采集支持 ISO-on-TCP 的仪表数据,转换后通过 OPC UA 发送给 MES。五、总结
S7-1500 可以与以下设备进行 ISO-on-TCP 通信:
必选场景:所有 S7-300/400 PLC、大多数 工业 RFID/扫码枪 (SICK, Omron, Keyence 等)、部分 西门子驱动器。
可选场景:支持 RFC 1006 标准的第三方仪表、配置了 RFC 1006 库的上位机软件。
不适用:仅支持 Modbus TCP、原生 Socket TCP 且未实现 RFC 1006 栈的简易 IoT 设备、纯 IT 服务器 (除非专门部署了适配层)。
一句话建议:如果你要连的是老西门子 PLC或者工业扫码/RFID 设备,且手册里提到了 Port 102 或 TSAP,那么 ISO-on-TCP 就是你唯一的选择。