4. Basler相机与PLC集成的通信协议选型
在把 Basler 相机接入 PLC 生产线时,最容易混淆的一点是:GigE Vision 和 GenICam 并不是与 PROFINET、EtherNet/IP、Modbus TCP 同一层面的“竞争协议”。前者解决的是“相机图像与相机参数如何被上位机或视觉控制器访问”,后者解决的是“视觉结果如何进入 PLC 的控制与联锁逻辑”。选型时如果把它们放在同一张对比表里比“谁更快”,往往会得出错误结论。
先厘清分层关系。Basler 工业相机通常通过 GigE Vision 传输图像流,底层是标准千兆以太网,使用 GVCP 控制通道和 GVSP 流通道;GenICam 则提供统一的相机功能描述文件(XML),让不同厂商的相机都能用同一套 API 访问曝光、增益、触发、ROI 等参数。也就是说,GigE Vision 负责“传图”,GenICam 负责“描述和访问相机功能”。而 PLC 侧真正需要的是“合格/不合格、坐标、角度、条码字符串”这类小数据量结果,通常由 PROFINET、EtherNet/IP 或 Modbus TCP 承载。
从图中可以看到,GigE Vision 与 GenICam 位于视觉层,PROFINET、EtherNet/IP、Modbus TCP 位于控制层,中间由视觉处理单元完成“图像→结果”的转换。选型的核心不是比较这五者谁更快,而是先确定图像在哪里处理、结果以什么形式进入 PLC。
一、GigE Vision 与 GenICam:相机侧的标准组合
GigE Vision 基于标准以太网,使用 UDP/IP 传输图像,单相机在千兆网下理论带宽约 120 MB/s。以 Basler acA1920-40gc 为例,1920×1200 分辨率、8 bit 灰度,单帧约 2.3 MB,40 fps 时数据率约 92 MB/s,已接近千兆网实际上限。若产线需要更高帧率或更高分辨率,应改用万兆网、CoaXPress 或 Camera Link,而不是试图用 PROFINET 传图。
GenICam 的价值在于“一次开发、多机兼容”。相机内部有一份 XML 描述文件,列出所有可访问功能节点,例如 ExposureTime、Gain、TriggerMode、Width、Height。上位机通过 GenApi 按名称读写,无需为每款相机写不同驱动。实际配置时,常用 pylon API 设置:
camera.TriggerMode.SetValue("On");
camera.TriggerSource.SetValue("Line1");
camera.ExposureTime.SetValue(5000.0); // 单位 μs
camera.Gain.SetValue(6.0); // 单位 dB
camera.Width.SetValue(1280);
camera.Height.SetValue(960);
这些参数通过 GVCP 控制通道下发,图像通过 GVSP 流通道回传。需要强调的是,GenICam 本身不传图像,也不参与 PLC 周期控制,它只是让相机功能可被统一访问。
二、PROFINET:西门子产线的主流选择
如果 PLC 是西门子 S7-1200/1500,PROFINET 通常是最自然的选择。它支持 RT(实时)和 IRT(等时实时),RT 周期可做到 1 ms~10 ms,满足绝大多数视觉引导抓取、分拣和防错场景。视觉结果通常映射为 PLC 的输入过程映像区,例如 16 字节输入:
| 字节偏移 | 内容 | 示例值 |
|---|---|---|
| 0 | 结果状态 | 1=OK,2=NG,0=无结果 |
| 1 | 相机就绪 | 1=就绪 |
| 2-3 | X 坐标(INT) | 1024 |
| 4-5 | Y 坐标(INT) | 768 |
| 6-7 | 角度(0.1°) | 905 表示 90.5° |
| 8-11 | 测量值(REAL) | 12.34 mm |
| 12-15 | 保留 / 计数器 | 递增 |
PLC 侧通过 TRCV 或直接过程映像读取,配合 OB1 中的握手位完成“触发—拍照—结果—分拣”闭环。PROFINET 的优势是与西门子生态无缝集成、诊断信息完整、支持拓扑规划;缺点是跨品牌兼容性不如 EtherNet/IP 和 Modbus TCP。
三、EtherNet/IP:罗克韦尔生态的首选
当 PLC 为 Allen-Bradley ControlLogix 或 CompactLogix 时,EtherNet/IP 是更合适的选择。它基于 CIP 协议,支持隐式 I/O 和显式消息。视觉结果通常以标签形式映射,例如 Vision_Result.OK、Vision_Result.X、Vision_Result.Angle。隐式 I/O 周期可配置为 2 ms~20 ms,实际取决于 RPI(Requested Packet Interval)设置。
EtherNet/IP 的典型配置步骤是:在 Studio 5000 中添加通用以太网模块,设置 IP 和输入/输出实例号,然后在梯形图中用 GSV 或直接标签读取。与 PROFINET 相比,EtherNet/IP 在北美汽车和包装产线中更常见,但需要额外注意 CIP 连接数和网络负载。
四、Modbus TCP:简单低速场景的补充
Modbus TCP 结构最简单,功能码少,适合视觉结果数据量小、实时性要求不高的场合,例如条码上传、简单 OK/NG 判断、温度或计数上传。它采用轮询方式,典型周期 10 ms~100 ms,不适合高速分拣或闭环运动控制。
实际使用中,视觉控制器作为 Modbus TCP 服务器,PLC 作为客户端,通过功能码 03 读保持寄存器、06 写单寄存器。例如读取 40001~40004 四个寄存器,分别对应状态、X 坐标、Y 坐标、角度。由于 Modbus 没有标准设备描述,寄存器地址和数据类型必须由双方约定并写入文档,否则后期维护容易出错。
五、选型判断:先分层,再定协议
综合来看,选型可以按以下顺序判断:
- 图像传输:优先 GigE Vision;高帧率或高分辨率再考虑万兆网、CoaXPress。
- 相机参数访问:统一用 GenICam,避免为不同品牌写多套驱动。
- PLC 控制层:西门子选 PROFINET,罗克韦尔选 EtherNet/IP,简单低速或第三方设备选 Modbus TCP。
- 实时性要求:周期小于 10 ms 选 PROFINET RT/IRT 或 EtherNet/IP 隐式 I/O;大于 20 ms 可考虑 Modbus TCP。
- 数据量:只传结果和坐标,不传原始图像;原始图像留在视觉层或单独走 GigE 通道。
最后给出一个可参考的选型对照:若产线为西门子 S7-1500 + Basler 面阵相机 + 视觉引导抓取,推荐 GigE Vision + GenICam + PROFINET;若为罗克韦尔 PLC + 读码应用,推荐 GigE Vision + GenICam + EtherNet/IP;若为简单计数或条码上传,且 PLC 品牌混杂,可考虑 Modbus TCP。协议选型没有绝对优劣,关键是让每一层做它最擅长的事。