3. MERLIC核心概念与数据流
MERLIC 的图形化编程模型可以概括为一句话:用工具(Tool)作为最小处理单元,用工具链(Tool Chain)把工具按数据依赖串起来,用配方(Recipe)保存一组可切换的参数与配置,用状态机(State Machine)驱动整条链在“就绪—执行—完成—复位”之间循环。理解这四者的关系,是后续搭建产线缺陷检测系统的前提。
一、工具:最小可执行单元
在 MERLIC 中,工具不是一段需要自己写的代码,而是一个封装好的视觉算子,例如图像采集(Acquire Image)、灰度化(Convert Color)、模板匹配(Match Template)、Blob 分析(Analyze Blob)、测量(Measure)、OCR、条码识别等。每个工具都有明确的输入端口和输出端口:输入通常是图像、ROI、阈值、模板等;输出通常是图像、区域、坐标、角度、分数、字符串等结果数据。
工具的关键特性是“数据驱动”:工具不会自己决定何时运行,而是当它的所有输入都有效时,才被工具链调度执行。例如一个“Blob 分析”工具,只有当上游传入图像和 ROI 后,才会输出连通域的数量、面积、质心等结果。因此,工具之间的连接本质上就是数据依赖关系,而不是简单的先后顺序。
二、工具链:数据在工具间的传递方式
工具链是 MERLIC 图形化编程的核心。把多个工具拖入工作区,用连线把上游工具的输出端口连到下游工具的输入端口,就形成了一条工具链。数据传递遵循三条规则:
- 图像数据流:图像从采集工具出发,经过预处理、分割、匹配等工具逐级传递,每一步都可能产生新的图像或区域。
- 结果数据流:坐标、角度、分数、面积、字符串等结果数据,可以同时被多个下游工具引用,也可以输出到外部接口(如 PLC、机器人、数据库)。
- 控制数据流:某些工具的输出可以作为下游工具的参数,例如模板匹配输出的角度,可以作为测量工具的旋转补偿量。
需要特别注意的是,MERLIC 的工具链不是“顺序执行”的脚本,而是按依赖关系求值的图。一个工具可能被多个下游工具共享,MERLIC 会自动保证它只执行一次,并把结果分发给所有需要它的工具。这种机制避免了重复计算,也让工具链的结构更接近真实的视觉处理流程。
三、配方:让同一工具链适配不同产品
产线检测往往需要面对多种产品型号。如果每换一个型号就重新搭建工具链,维护成本会非常高。MERLIC 的配方机制允许把工具链中所有可调参数(阈值、ROI 坐标、模板图像、曝光时间、匹配分数下限等)保存为一组“配方数据”。切换配方时,工具链结构不变,只是参数被整体替换。
例如,检测金属表面划痕时,配方 A 使用阈值 35、ROI 为 (120, 80, 400, 300)、模板为“划痕模板_A”;配方 B 针对另一种产品,阈值改为 50、ROI 改为 (200, 100, 350, 280)、模板改为“划痕模板_B”。操作员只需在 HMI 上选择配方名称,MERLIC 就会自动加载对应参数并重新执行工具链。配方与工具链是“一对多”关系:一条工具链可以挂多个配方,但同一时刻只有一个配方生效。
四、状态机:驱动工具链运行的节拍
MERLIC 运行时并不是“点一次按钮执行一次”,而是由状态机持续驱动。典型状态包括:
- Ready(就绪):工具链已加载,等待触发信号。
- Running(执行):收到触发后,按数据依赖顺序执行工具,采集图像并计算所有结果。
- Done(完成):结果已输出,等待下游确认或下一周期触发。
- Reset(复位):清除上一周期结果,回到 Ready 状态。
状态机的意义在于把“视觉处理”和“产线节拍”解耦。PLC 发出触发信号后,MERLIC 进入 Running;处理完成后进入 Done,并把结果写入输出端口;PLC 读取结果后发出复位信号,MERLIC 回到 Ready,准备下一件产品。如果处理超时或图像采集失败,状态机会进入错误分支,此时需要检查触发信号、相机连接和工具链中的错误处理配置。
五、图形化编程模型的实际含义
把上述概念合起来看,MERLIC 的图形化编程模型可以理解为:工具链定义“怎么算”,配方定义“用什么参数算”,状态机定义“什么时候算”。三者分工明确,又通过数据流紧密耦合。
在实际搭建一条划痕检测工具链时,可以按以下顺序推进:
- 拖入 Acquire Image,配置相机或图像源,确认能稳定取到图像。
- 拖入 Convert Color,把彩色图转为灰度图,减少后续计算量。
- 拖入 Match Template,用标准件图像建立模板,输出产品位置和角度。
- 拖入 Analyze Blob,在匹配到的 ROI 内做阈值分割,统计缺陷区域面积和数量。
- 把 Area 和 Count 连接到结果输出端口,并设置判定条件,例如 Area > 120 像素² 或 Count ≥ 1 时判为 NG。
- 把阈值、ROI、模板、判定下限保存为配方,针对不同产品建立多个配方。
- 在状态机中配置触发源(如 PLC 信号或软触发),并设置超时时间,例如 2000 ms。
完成上述配置后,可以通过 MERLIC 的“单次执行”观察每个工具的输出:Match Template 的 Score 应接近 1.0,Angle 应在 ±5° 以内;Analyze Blob 的 Area 和 Count 应能区分 OK 与 NG 样品。若 Score 偏低,优先检查模板质量和光照一致性;若 Area 波动大,优先检查阈值和 ROI 是否覆盖了划痕区域。这些观察点,正是后续调试和优化的依据。