2、PLC通信基础:常见PLC型号、通信协议(Modbus、Profinet、EtherNet/IP)概述

在AI视觉识别结果需要写入PLC的场景中,通信协议是连接智能相机/工控机与PLC的“语言规则”。不同品牌、不同年代的PLC支持的协议差异极大,选错协议或配置错误,轻则通信超时,重则数据错位甚至损坏设备寄存器。本章从PLC硬件型号入手,梳理主流通信协议的技术特征、适用场景和工程选型方法,为后续章节的地址映射与状态位设计打下基础。

AI视觉系统 智能相机/工控机 识别结果+坐标+质量码 通信协议层 Modbus TCP/RTU Profinet IO EtherNet/IP 网关/协议转换器可选 PLC 西门子/三菱/罗克韦尔 离散信号+寄存器+状态位 三大协议核心参数对比 协议 传输层 典型PLC 实时性 Modbus TCP TCP/IP 几乎所有品牌 10-50ms Profinet IO 以太网+RT 西门子S7系列 1-10ms EtherNet/IP TCP/UDP+封装 罗克韦尔/AB 5-20ms 实际选型需结合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
核心判断原则:优先使用PLC原生协议,避免协议转换带来的延迟和故障点。例如西门子S7-1500与AI系统对接时,Profinet IO的实时性远优于Modbus TCP;而三菱FX5U则原生支持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
工程经验:Modbus TCP的寄存器地址在PLC侧通常从40001开始(对应协议地址0),但在AI系统中直接使用协议地址(0-65535)更简洁。务必在程序中明确地址偏移,避免差一错误。

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的两种方式:

  1. 原生Profinet设备:智能相机(如基恩士、康耐视部分型号)直接支持Profinet IO,配置GSDML文件即可。
  2. 网关转换:普通工控机通过Profinet网关(如Anybus、Hilscher)将数据映射到PLC的IO地址。
注意:Profinet的IO数据是周期性刷新的,AI系统必须按照PLC组态的周期(如8ms)持续更新输出数据。如果AI系统出现卡顿或停止刷新,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的要点:

  1. 确认PLC的扫描周期和RPI(Requested Packet Interval)设置,通常5-20ms。
  2. AI系统作为目标设备(Target),需要配置输入Assembly(AI→PLC)和输出Assembly(PLC→AI)。
  3. 数据格式支持BOOL、SINT、INT、DINT、REAL等,需与PLC标签类型严格匹配。
选型决策:如果现场PLC是罗克韦尔,优先使用EtherNet/IP;如果是西门子,优先Profinet;如果是三菱或混合品牌,Modbus TCP是最稳妥的通用方案。

2.5 协议选型实战:一个视觉引导装配站的通信设计

某汽车零部件装配线需要AI视觉系统识别工件型号和位置,并将结果发送给PLC控制机器人抓取。现场PLC为西门子S7-1500,视觉系统为工控机+工业相机。

初始方案:使用Modbus TCP,因为开发简单。但实际测试发现,PLC扫描周期为5ms,Modbus TCP的响应时间在10-30ms波动,导致机器人等待时间过长,节拍无法满足。

优化方案:改用Profinet IO,将视觉系统配置为IO设备。具体步骤:

  1. 在TIA Portal中安装视觉系统的GSDML文件。
  2. 组态槽位:Slot 1输入16字节(4个REAL坐标+状态字),输出4字节(触发信号+控制字)。
  3. 设置IO周期为4ms,与PLC扫描周期匹配。
  4. 在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使用旧数据。

风险提示:在AI系统写入PLC时,务必设计心跳信号(Heartbeat)。PLC侧检测到心跳超时(如500ms未更新),应自动将输出置为安全状态(如停止机器人),防止AI系统死机导致设备失控。