4. SICK视觉传感器与PLC的通信协议

SICK视觉传感器(如Inspector、P系列、Lector、IVC等)与PLC之间的数据交互,本质上是在工业以太网之上运行某种应用层协议。理解协议的分层关系,是正确选型和配置的前提。物理层与数据链路层通常由标准以太网PHY和交换机完成,网络层使用IP寻址与路由,传输层在TCP或UDP之上承载应用层报文。SICK视觉设备常见的应用层协议包括:面向通用Socket通信的TCP/IP、面向Rockwell体系的EtherNet/IP、面向西门子体系的PROFINET、以及面向通用寄存器访问的Modbus TCP。它们并非互相替代,而是对应不同PLC生态与集成深度。

从数据语义看,这些协议可分为三类:面向连接的原始字节流(TCP/IP Socket)、面向对象与标签的工业协议(EtherNet/IP、PROFINET)、面向寄存器地址的轮询协议(Modbus TCP)。选择哪一种,取决于PLC品牌、实时性要求、是否需要设备描述文件(EDS/GSDML)以及是否需要与视觉结果做位级映射。

SICK视觉传感器 ↔ PLC 通信协议分层与数据映射 SICK 视觉传感器 Inspector / P / Lector 系列 图像采集与算法处理 定位 / 测量 / 读码 / 检测 结果数据封装 状态字 / 坐标 / 字符串 协议栈选择 TCP / EIP / PN / Modbus 以太网物理接口 RJ45 / M12 D-code 触发与同步 硬触发 / 软触发 / 编码器 工业以太网协议通道 TCP/IP Socket(原始字节流) 端口可配,如 2111 / 5000;ASCII 或二进制 PLC 侧用开放式通信指令收发 EtherNet/IP(CIP over TCP/UDP) EDS 文件描述对象;隐式 I/O + 显式报文 适合 Rockwell / AB PLC 标签映射 PROFINET(RT / IRT) GSDML 文件描述设备;循环 I/O 数据 适合西门子 S7-1200/1500 集成 Modbus TCP(寄存器轮询) 功能码 03/04/06/16;保持/输入寄存器 端口 502;主从问答式 共同基础:以太网 II 帧 + IPv4 + TCP/UDP PLC 控制器 S7 / ControlLogix / 第三方 通信指令 / 功能块 TSEND/TRCV、MSG、MB_CLIENT 数据缓冲区 DB / 标签 / 寄存器区 结果解析与逻辑 OK/NG 判断、坐标提取 执行机构输出 分拣 / 剔除 / 报警 触发信号输出 DO 或网络触发命令 结果 数据 触发 触发

TCP/IP Socket:最通用的原始通道

TCP/IP Socket 是SICK视觉传感器最基础的通信方式。传感器作为TCP服务器或客户端,在指定端口(常见如2111、5000、3000等,具体以设备手册为准)上监听或主动连接。PLC侧通过开放式通信指令建立连接,例如西门子S7-1200/1500使用 TCON、TSEND、TRCV,三菱使用 OPEN、SEND、RECV,欧姆龙使用 SktTCP 系列指令。

配置要点包括:确认传感器IP与PLC同网段;设置正确的端口号;约定报文格式(ASCII字符串或二进制结构体);处理粘包与分包。例如,传感器输出一条读码结果 "OK,CODE123456,0.85\r\n",PLC接收缓冲区可能一次收到多条或半条,需要在程序中按分隔符 \r\n 切分。TCP/IP的优点是跨品牌通用、调试直观(可用网络调试助手验证);缺点是PLC侧需自行解析字节流,实时性依赖轮询周期。

EtherNet/IP:面向Rockwell生态的CIP协议

EtherNet/IP 由ODVA维护,基于CIP(Common Industrial Protocol)在TCP/UDP之上运行。SICK提供EDS文件,导入Studio 5000后即可在I/O配置树中组态。通信分为两类:隐式报文用于周期性I/O数据交换,通过UDP实现,适合实时性要求高的场景;显式报文用于参数读写和诊断,通过TCP实现。

配置时,先在Studio 5000中安装EDS,添加设备并设置IP;然后定义输入/输出数据长度。例如,输入32字节包含状态字、X/Y坐标、角度、读码字符串;输出4字节包含触发位、参数切换位。PLC侧通过 MSG 指令或直接访问 Local:1:I.Data[0] 等标签读取。RPI(Requested Packet Interval)建议设为4~10ms,过小会增加网络负载,过大则影响响应。

PROFINET:西门子体系的循环I/O集成

PROFINET 是西门子主推的工业以太网标准,SICK设备提供GSDML文件。在TIA Portal中安装GSDML后,将设备拖入网络视图,分配设备名称和IP地址。PROFINET RT使用标准以太网,循环周期通常为1~10ms;IRT支持等时同步,适合运动控制场景,但视觉传感器一般使用RT即可。

配置要点:设备名称必须与GSDML中定义一致,否则无法建立连接;I/O模块的输入/输出地址需与PLC程序中的地址对应。例如,输入地址 IW100 开始,占用16个字,其中 IW100 为状态字,IW102 为X坐标(INT),IW104 为Y坐标,后续为角度和保留字。PLC通过 MOVE 指令将 IW100 映射到DB块,再进行逻辑判断。PROFINET的优势是集成度高、诊断信息丰富(如设备状态、通道故障),但需要西门子生态支持。

Modbus TCP:简单通用的寄存器访问

Modbus TCP 是施耐德主导的开放协议,端口502,采用主从问答模式。SICK视觉传感器作为Modbus服务器,PLC作为客户端,通过功能码读取或写入寄存器。常用功能码:03 读保持寄存器、04 读输入寄存器、06 写单个寄存器、16 写多个寄存器。

配置时,需查阅SICK设备手册的Modbus寄存器映射表。例如,寄存器40001(对应地址0)为控制字,写入1触发;40002为状态字,读取1表示结果就绪;40003~40004为X坐标(32位浮点或两个16位整数);40005~40006为Y坐标。PLC侧使用 MB_CLIENT(西门子)或 ModbusTCP 功能块,设置IP、端口、从站地址、功能码、起始地址和长度。注意字节序:Modbus默认大端,而部分PLC内部为小端,需用 SWAP 指令调整。

协议选型与配置检查清单

协议 适用PLC 设备描述文件 实时性 配置关键点
TCP/IP Socket 任意品牌 无 中(轮询) 端口、报文格式、粘包处理
EtherNet/IP Rockwell / AB EDS 高(隐式I/O) RPI、输入输出长度、标签映射
PROFINET 西门子 GSDML 高(RT) 设备名称、I/O地址、循环周期
Modbus TCP 任意品牌 无 中(轮询) 寄存器映射、功能码、字节序
调试建议:无论使用哪种协议,先用PC工具(如Wireshark、Modbus Poll、EtherNet/IP测试工具)验证传感器侧数据是否正常发出,再接入PLC。这样可将问题定位在“传感器配置”还是“PLC程序”两个层面,避免盲目修改。
常见陷阱:PROFINET设备名称区分大小写且不能含特殊字符;EtherNet/IP的RPI过小可能导致通信超时;Modbus TCP的寄存器地址有“0基”和“1基”两种表示法,手册中40001通常对应地址0,编程时需确认。

实际项目中,若PLC为西门子S7-1500且视觉传感器支持PROFINET,优先选PROFINET,因为循环I/O集成最简洁、诊断最完善;若为AB ControlLogix,选EtherNet/IP;若为多品牌混合或老旧PLC,TCP/IP Socket或Modbus TCP更灵活。配置完成后,务必用在线监控或变量表观察数据变化,确认触发、结果、状态字三者时序正确,再投入生产运行。