1. 课程导入与集成工程全景

在一条典型的自动化生产线中,机器视觉负责“看”,PLC 负责“动”,而 MVTec MERLIC 正是把这两者连接起来的关键软件层。很多工程师第一次接触 MERLIC 时,会把它当成一个单纯的视觉软件:拖几个工具、连几条线、跑出一张结果图,任务就算完成。但在生产线集成场景里,MERLIC 的价值不在于单张图像处理得多漂亮,而在于它能否稳定、及时、可追溯地把检测结论交给 PLC,并让 PLC 依据这个结论驱动分拣、剔除、报警或放行。本课程要解决的,正是这条“从相机到执行机构”的完整工程链路。

角色分工:谁看、谁判、谁动

先把三个角色的边界说清楚,后续所有配置和调试都围绕这个分工展开。

  • 相机与光学系统:负责采集图像。它决定了“能看到什么”,包括视野、分辨率、景深、光照均匀性。相机本身不做判断。
  • MERLIC:负责图像处理与结果判定。它把像素变成结构化数据,例如“工件存在/缺失”“孔位坐标 X=312.4 px”“字符识别结果 OK/NG”“测量值 12.03 mm”。MERLIC 的核心输出不是图片,而是可被程序读取的结果变量。
  • PLC:负责时序、逻辑与执行。它接收 MERLIC 的判定结果,结合光电传感器、编码器、气缸位置等信号,决定何时触发拍照、何时动作、何时报警。

一个常见的误区是让 MERLIC 去“等”PLC,或者让 PLC 去“猜”视觉结果。正确的做法是:PLC 在工件到达拍照位时给出触发信号,MERLIC 完成处理并把结果写入约定好的数据区,PLC 读取该数据区并执行后续动作。触发、处理、回传、执行,这四个环节必须有时序约束。

典型集成架构

MERLIC 与 PLC 的集成方式主要有三类,选择哪一类取决于产线节拍、PLC 品牌和现有网络条件。

集成方式 通信介质 典型延迟 适用场景
数字 I/O 硬线 24V 数字量 < 5 ms 只需 OK/NG 或触发信号,节拍快、逻辑简单
PROFINET / EtherNet-IP 工业以太网 5~20 ms 需要传递坐标、测量值、多工位结果
TCP/IP Socket 或 OPC UA 标准以太网 10~50 ms 跨品牌、跨网段、需要与 MES 或上位机共享数据

对于本课程后续的实战案例,我们采用“PROFINET 传递结果 + 数字 I/O 传递触发”的混合方式:触发信号走硬线保证实时性,结果数据走 PROFINET 保证信息量。这样既满足节拍,又避免把大量数据塞进 I/O 点。

MERLIC 与 PLC 生产线集成全景 工业相机 采集图像 MVTec MERLIC 图像处理 · 结果判定 输出:OK/NG、坐标、测量值 通信:PROFINET / I/O / TCP PLC 时序 · 逻辑 · 执行 执行机构 气缸/分拣 图像流 结果数据 控制 触发信号(硬线 I/O) 结果回传(PROFINET) 节拍约束:触发 → 拍照 → 处理 → 回传 → 执行,总时间必须小于工件在拍照位的停留时间。 示例:停留 200 ms,则 MERLIC 处理时间建议 ≤ 120 ms,通信往返 ≤ 30 ms,留 50 ms 余量。

学习路径与实战目标

本课程不是 MERLIC 的菜单说明书,而是一条从“能跑通”到“能上线”的工程路径。整体分为四个阶段。

第一阶段:建立通信底座。 完成 MERLIC 与 PLC 的物理连接和协议配置,能够手动触发一次拍照并把一个布尔结果送到 PLC 的输入映像区。这个阶段的目标是“通”,不追求复杂视觉逻辑。

第二阶段:设计视觉流程。 在 MERLIC 中搭建可复用的检测流程,包括图像采集、预处理、定位、测量或识别、结果判定。重点是把结果整理成 PLC 容易读取的变量,例如把“孔位偏差”从像素值换算成毫米值,并设定上下限。

第三阶段:联调时序与异常。 把触发、处理、回传、执行串成完整节拍,处理超时、通信中断、结果无效等异常情况。这个阶段最容易暴露问题,也是本课程着墨最多的部分。

第四阶段:上线与复盘。 固化参数、记录版本、建立点检表,并针对误判和漏判做数据复盘。

实战目标: 课程结束时,你应当能够独立完成一个“工件到位 → 触发拍照 → MERLIC 检测 → PLC 分拣”的最小闭环,并说清楚每个环节的时间预算、数据格式和异常处理方式。

一个最小闭环的示例参数

为了让后续章节有统一的参照,这里给出一个教学示例。假设传送带速度 0.5 m/s,拍照位停留时间约 200 ms,相机分辨率 2448×2048,镜头视野 100 mm×80 mm,则单像素对应约 0.041 mm。MERLIC 流程包含模板匹配定位和两个圆孔测量,实测处理时间约 85 ms(示例值,实际取决于硬件和流程复杂度)。PLC 侧使用 PROFINET 读取 8 字节结果区,其中第 1 字节为状态码,第 2~3 字节为孔 1 偏差,第 4~5 字节为孔 2 偏差,第 6 字节为 OK/NG 标志。

结果区示例(8 字节):
Byte 0 : 状态码  0x01=有效, 0x00=无效, 0x02=超时
Byte 1-2 : 孔1偏差 (int16, 单位 0.01 mm)
Byte 3-4 : 孔2偏差 (int16, 单位 0.01 mm)
Byte 5 : 判定标志  0x01=OK, 0x00=NG
Byte 6-7 : 保留

PLC 在收到状态码 0x01 后,读取判定标志并执行分拣;若 200 ms 内未收到有效状态码,则按超时处理,输出报警并让工件进入缓存区。这个约定会在后续章节反复使用,你可以把它替换成自己产线的实际格式,但“状态码 + 数据 + 判定标志”的结构是通用的。

常见集成误区

  • 把 MERLIC 当实时控制器用。 MERLIC 的处理时间受图像大小和工具数量影响,不能假设它每次都在固定时刻返回。PLC 必须做超时保护。
  • 只传 OK/NG,不传过程数据。 一旦出现批量误判,没有偏差值就无法复盘。建议至少回传关键测量值。
  • 触发信号用软件轮询代替硬线。 轮询周期不稳定,容易错过拍照窗口。高速产线优先用硬线触发。
  • 忽略坐标系约定。 图像坐标原点在左上角,X 向右、Y 向下;PLC 和机械坐标通常以工件中心或夹具基准为零点。换算关系必须在文档中写清楚,并在 MERLIC 中统一。

理解这张全景图和四个阶段之后,后续每一章都会落在具体的配置、参数或调试动作上。你不需要一次记住所有细节,但需要始终清楚当前工作在哪个环节、输入是什么、输出给谁、时间预算还剩多少。