视觉系统的通信集成,本质是让视觉系统成为产线上的一个“标准节点”,既能接收指令,也能上报结果。它需要同时对接三类对象:PLC(控制层)、MES(管理层)、以及相机/光源等设备(采集层)。
对上:与 PLC 的通信
PLC 是视觉系统最直接的“指挥者”。视觉系统通常作为从站,等待 PLC 的触发信号,完成检测后把结果写回 PLC。
西门子 S7:用 S7.NetPlus 或 HSL。S7-1200/1500 需注意取消目标 DB 块的“优化的块访问”,否则无法按绝对地址读写。
三菱 MC 协议:用 McProtocolNext,支持异步和结构体批量读写。
欧姆龙 FINS:用 SNet.Omron,支持 FINS/TCP、FINS/UDP、HostLink 三种协议。
Modbus TCP:用 NModbus,通用性最强,适合汇川、台达等品牌。
握手协议是灵魂。视觉系统写结果到 DB 块后置 ResultsValid=1,PLC 读取后回写 InspectionAck=1,视觉系统清零 ResultsValid。这个状态机确保数据不会丢失或重复。
对中:与 MES 的通信
MES 负责工单管理、质量追溯、数据归档。视觉系统通过 HTTP 与 MES 交互。
GET 用来“问”:查询工单信息、前序工序状态、当前配方。
POST 用来“报”:上报检测结果、NG 详情、设备状态。
关键工程约束:超时设短(5-10 秒),失败入本地队列补传,POST 携带幂等键防止重复上报。
对下:与相机/光源的通信
相机通信:GigE Vision 和 USB3 Vision 是主流。C# 通过厂商 SDK(海康 MVS、Basler pylon)或 Halcon 的采集接口调用。回调里只做拷贝入队,算法在独立线程处理。
光源控制:部分场景需要动态调整光源亮度或切换光源通道。通过光源控制器的串口或 IO 模块,用 C# 发送指令。
触发同步:硬触发是工业标准——光电传感器给相机 IO 口一个电平信号,相机立即曝光。软触发适合节拍慢的场景。
三种通信的时序关系
一次完整的检测周期,通信按以下顺序发生:
① PLC 发出触发信号(硬触发或 Modbus 写寄存器)
↓
② 视觉系统接收触发,相机曝光采图
↓
③ 算法处理,输出 OK/NG + 测量值
↓
④ 视觉系统写结果到 PLC(含握手位)
↓
⑤ PLC 读取结果,回写确认位
↓
⑥ 视觉系统 POST 结果到 MES(异步,不阻塞产线)
↓
⑦ MES 返回确认,视觉系统更新本地状态
关键设计:步骤 ⑥ 必须异步。MES 响应慢时,不能阻塞 PLC 的检测节拍。视觉系统先把结果写入 PLC,让产线继续运行,MES 上传放在后台队列中处理。
通信集成的工程要点
统一抽象接口。定义 IPlcClient、IMesClient、ICamera 接口,不同品牌实现不同类。换品牌时只改实现,业务层不动。
断线重连是标配。网络抖动、设备重启都会导致连接断开。每个通信客户端都要有自动重连机制,重连成功后恢复状态。
超时和重试要区分场景。PLC 通信超时应该立即报警,因为产线在等;MES 通信超时可以入队补传,不阻塞产线。
日志要完整。每次通信的请求内容、响应内容、耗时、结果都要记录。出问题时这是唯一的追溯依据。
一句话总结
视觉系统的通信集成,是**“对上握手、对中上报、对下采集”的三线并行。PLC 通信要求确定性和实时性**,MES 通信要求可靠性和不阻塞,相机通信要求高吞吐和不丢帧。三者的共同底线是:统一抽象、自动重连、完整日志。

