2、PLC通信基础:常见PLC型号、通信协议(Modbus、Profinet、EtherNet/IP)概述
在AI视觉识别结果需要写入PLC的场景中,通信协议是连接智能相机/工控机与PLC的“语言规则”。不同品牌、不同年代的PLC支持的协议差异极大,选错协议或配置错误,轻则通信超时,重则数据错位甚至损坏设备寄存器。本章从PLC硬件型号入手,梳理主流通信协议的技术特征、适用场景和工程选型方法,为后续章节的地址映射与状态位设计打下基础。
2.1 主流PLC型号与通信能力分级
PLC品牌和型号决定了其原生支持的通信协议。以工业现场最常见的三大品牌为例:西门子S7系列(S7-1200/1500/300/400)、三菱FX/Q系列、罗克韦尔ControlLogix/CompactLogix系列。不同型号的通信能力差异显著,直接影响了AI系统对接时的协议选择。
| 品牌 | 典型型号 | 原生协议 | 扩展能力 | AI对接建议 |
|---|---|---|---|---|
| 西门子 | S7-1200/1500 | Profinet, Modbus TCP(库函数) | 支持TCP/IP自由口 | 优先Profinet,其次Modbus TCP |
| 西门子 | S7-300/400 | Profinet, Profibus DP | 需CP模块扩展以太网 | Modbus TCP需额外网关 |
| 三菱 | FX5U/FX3U | 内置以太网(FX5U) | 支持SLMP、Modbus TCP | Modbus TCP最便捷 |
| 三菱 | Q系列 | 以太网模块 | 支持SLMP、Modbus | Modbus TCP或SLMP |
| 罗克韦尔 | ControlLogix | EtherNet/IP | 支持Modbus TCP(需配置) | EtherNet/IP原生对接 |
| 罗克韦尔 | CompactLogix | EtherNet/IP | 支持Socket服务 | EtherNet/IP或Modbus TCP |
2.2 Modbus协议:通用性与实现细节
Modbus是工业领域应用最广泛的通信协议,分为Modbus RTU(串口)和Modbus TCP(以太网)两种形态。对于AI视觉系统而言,Modbus TCP是首选,因为它基于标准以太网,无需额外串口硬件,且几乎所有PLC都支持。
Modbus TCP的核心机制:
- 功能码:读取线圈(01H)、读取离散输入(02H)、读取保持寄存器(03H)、读取输入寄存器(04H)、写单线圈(05H)、写单寄存器(06H)、写多寄存器(10H)等。
- 数据模型:离散输入(只读位)、线圈(可读写位)、输入寄存器(只读字)、保持寄存器(可读写字)。
- 地址映射:AI系统写入PLC时,通常使用保持寄存器(03H/06H/10H)存储整数或浮点数,使用线圈(05H/0FH)存储布尔状态。
- 报文结构:事务标识符(2字节)+协议标识符(2字节)+长度(2字节)+单元标识符(1字节)+功能码(1字节)+数据。
// Modbus TCP 写单个保持寄存器示例(写入地址40001,值100)
事务ID: 0x0001
协议ID: 0x0000
长度: 0x0006
单元ID: 0x01
功能码: 0x06
起始地址: 0x0000
数据: 0x0064
2.3 Profinet协议:西门子生态的实时通信
Profinet是西门子主导的工业以太网协议,基于标准以太网,但通过实时通道(RT)和等时同步(IRT)实现高实时性。对于AI视觉系统与西门子PLC的对接,Profinet IO是性能最优的方案。
Profinet IO的关键概念:
- IO控制器(IO Controller):通常是PLC,负责建立连接、交换数据。
- IO设备(IO Device):AI视觉系统作为Profinet设备,需要提供GSDML文件描述其通信能力。
- 槽位/子槽位:数据通过槽位(Slot)和子槽位(Subslot)组织,每个槽位可配置输入/输出数据长度。
- 实时性等级:RT(实时)典型周期1-10ms,IRT(等时同步)可达1ms以下,但需要专用硬件。
AI系统接入Profinet的两种方式:
- 原生Profinet设备:智能相机(如基恩士、康耐视部分型号)直接支持Profinet IO,配置GSDML文件即可。
- 网关转换:普通工控机通过Profinet网关(如Anybus、Hilscher)将数据映射到PLC的IO地址。
2.4 EtherNet/IP协议:罗克韦尔生态的CIP协议
EtherNet/IP由罗克韦尔自动化主导,基于CIP(Common Industrial Protocol)协议,使用TCP/UDP封装。在北美汽车、半导体行业应用广泛。与Profinet不同,EtherNet/IP采用隐式/显式消息两种通信方式。
EtherNet/IP的核心机制:
- 隐式消息(I/O消息):基于UDP,周期性交换实时数据,类似Profinet的IO数据。
- 显式消息:基于TCP,用于非实时读写,类似Modbus的请求/响应。
- 对象模型:CIP协议使用对象(Object)组织数据,AI系统需要实现Assembly对象来映射输入/输出数据。
- EDS文件:类似GSDML,描述设备通信能力。
AI系统对接EtherNet/IP的要点:
- 确认PLC的扫描周期和RPI(Requested Packet Interval)设置,通常5-20ms。
- AI系统作为目标设备(Target),需要配置输入Assembly(AI→PLC)和输出Assembly(PLC→AI)。
- 数据格式支持BOOL、SINT、INT、DINT、REAL等,需与PLC标签类型严格匹配。
2.5 协议选型实战:一个视觉引导装配站的通信设计
某汽车零部件装配线需要AI视觉系统识别工件型号和位置,并将结果发送给PLC控制机器人抓取。现场PLC为西门子S7-1500,视觉系统为工控机+工业相机。
初始方案:使用Modbus TCP,因为开发简单。但实际测试发现,PLC扫描周期为5ms,Modbus TCP的响应时间在10-30ms波动,导致机器人等待时间过长,节拍无法满足。
优化方案:改用Profinet IO,将视觉系统配置为IO设备。具体步骤:
- 在TIA Portal中安装视觉系统的GSDML文件。
- 组态槽位:Slot 1输入16字节(4个REAL坐标+状态字),输出4字节(触发信号+控制字)。
- 设置IO周期为4ms,与PLC扫描周期匹配。
- 在PLC程序中直接访问IO地址(如IW64、QW80),无需调用通信函数。
结果对比:
| 指标 | Modbus TCP | Profinet IO |
|---|---|---|
| 平均响应时间 | 18ms | 4ms |
| 抖动 | ±8ms | ±1ms |
| PLC编程复杂度 | 需调用MB_CLIENT | 直接IO访问 |
| CPU负载 | 中等 | 低 |
复盘经验:对于高速装配场景,协议实时性直接决定产线节拍。Modbus TCP适合低速监控或数据采集,Profinet/EtherNet/IP适合实时控制。选型前务必确认PLC扫描周期和AI系统的处理延迟。
2.6 常见误区与总结
误区一:所有PLC都支持Modbus TCP。实际上,部分老型号PLC(如西门子S7-200)需要额外模块或网关才能支持。
误区二:协议转换网关可以解决所有问题。网关会增加延迟(通常1-5ms),且可能成为单点故障,不适合高实时性场景。
误区三:数据格式不匹配。Modbus寄存器是16位,写入32位浮点数需要占用两个寄存器,且字节序(Big-Endian/Little-Endian)需与PLC侧一致,否则数据完全错误。
误区四:忽略通信超时和重试机制。AI系统应设置合理的超时时间(如100ms)和重试次数(如3次),并在连续失败时触发报警,避免PLC使用旧数据。