4. AI视觉核心

在工业视觉AI联动PLC的系统中,视觉算法是“眼睛”和“大脑”,PLC是“手”和“脚”。要让PLC在正确的时间执行正确的动作,前提是视觉算法能够稳定输出结构化、可判定的结果。工业现场常见的深度学习视觉任务可以归纳为四类:图像分类、目标检测、图像分割和异常检测。它们并不是互相替代的关系,而是对应不同的判定粒度和输出形式,最终都要映射为PLC可读的信号。

一、四类核心任务的本质区别

图像分类回答的是“这张图整体是什么”,输出一个类别标签和置信度;目标检测回答的是“图里有什么、在哪里”,输出多个边界框、类别和置信度;图像分割回答的是“每个像素属于什么”,输出像素级掩膜,适合测量面积、轮廓和缺陷边界;异常检测回答的是“这张图是否偏离正常”,通常只需要正常样本即可训练,适合缺陷样本稀少、形态多变的场景。

从与PLC联动的角度看,分类和异常检测通常输出一个布尔量或等级量,检测输出目标数量与位置,分割输出面积、宽度、角度等几何量。理解这一点,才能在设计通信点位时不至于把“检测框坐标”直接塞进PLC寄存器却无法使用。

工业视觉四类任务 → PLC信号映射关系 工业相机图像 灰度 / RGB / 深度 图像分类 整图 → 类别标签 输出:OK / NG / 等级 适用:表面等级、材质区分 目标检测 框出目标 + 类别 输出:数量 / 坐标 / 置信度 适用:装配计数、定位抓取 图像分割 像素级掩膜 输出:面积 / 轮廓 / 宽度 适用:缺陷测量、涂胶轨迹 异常检测 仅正常样本训练 输出:异常分数 / 热力图 结果映射层 阈值判定 坐标转换 单位换算 防抖滤波 结果缓存 握手信号 统一为PLC可读格式 PLC BOOL:OK/NG INT:数量/坐标 REAL:面积/角度 触发执行机构

二、方法流程:从图像到PLC信号

无论使用哪类算法,工业落地流程基本一致,可以概括为“采集—预处理—推理—后处理—映射—通信”六步。其中后处理和映射是视觉工程师与PLC工程师最容易产生分歧的环节,必须提前约定。

  1. 采集:确定触发方式(硬触发/软触发)、曝光时间、光源频闪同步。硬触发通常由PLC或编码器给出,能保证图像与工件位置严格对应。
  2. 预处理:ROI裁剪、去噪、归一化、尺寸缩放。工业上常把ROI缩小到工件区域,既提速又减少干扰。
  3. 推理:在GPU或边缘AI盒子上运行模型,输出原始张量。需关注单帧耗时是否满足节拍。
  4. 后处理:NMS去重、置信度过滤、掩膜面积计算、坐标反变换回原图。
  5. 映射:把结果转成PLC可读的BOOL、INT、REAL,并做阈值判定和防抖。
  6. 通信:通过Profinet、EtherNet/IP、Modbus TCP或IO信号完成握手,PLC据此驱动气缸、伺服或剔除机构。

三、典型工业场景与参数示例

不同任务在产线上的参数关注点差异很大。下表给出常见场景的对照,便于选型和调试时快速定位。

任务类型 典型场景 关键输出 PLC信号形式 常见节拍要求
图像分类 表面等级判定、材质区分 类别 + 置信度 BOOL / INT等级 30~80 ms
目标检测 装配计数、抓取定位 框坐标 + 类别 + 数量 INT坐标 + BOOL到位 50~150 ms
图像分割 缺陷面积测量、涂胶轨迹 掩膜面积、轮廓宽度 REAL面积 / 角度 80~200 ms
异常检测 稀有缺陷、纹理异常 异常分数 + 热力图 BOOL + REAL分数 40~120 ms

四、与PLC联动的配置示例

以下是一个典型的检测结果映射配置片段,视觉侧把结果写入共享寄存器,PLC侧按约定地址读取。实际项目中地址需与PLC工程师共同确认。

# 视觉结果 → PLC 寄存器映射(示例)
vision.result.ok        -> DB100.DBX0.0   # BOOL  OK/NG
vision.result.count     -> DB100.DBW2     # INT   目标数量
vision.result.x_mm      -> DB100.DBD4     # REAL  X坐标(mm)
vision.result.y_mm      -> DB100.DBD8     # REAL  Y坐标(mm)
vision.result.area_mm2  -> DB100.DBD12    # REAL  缺陷面积(mm²)
vision.result.score     -> DB100.DBD16    # REAL  异常分数
vision.heartbeat        -> DB100.DBX20.0  # BOOL  心跳
plc.trigger.capture     -> DB100.DBX21.0  # BOOL  拍照触发
plc.ack.done            -> DB100.DBX21.1  # BOOL  结果已取走
调试建议:先用手动触发验证单帧结果,再接入PLC自动节拍。重点观察“拍照触发—结果写入—PLC取走—允许下一次拍照”的握手时序,避免图像覆盖或结果错位。

五、常见误区与复盘

  • 误区一:用分类模型做定位。分类只能给出整图标签,无法输出坐标,强行用于抓取会导致PLC无法计算偏移量。
  • 误区二:忽略后处理耗时。模型推理很快,但NMS、掩膜面积计算和坐标反变换可能占用大量时间,导致总节拍超标。
  • 误区三:异常检测当万能。异常检测对“未见过”的缺陷敏感,但对缺陷类型无法细分,若PLC需要按缺陷类型分流,仍需分类或检测配合。
  • 误区四:不做防抖。连续帧结果抖动会让PLC频繁动作,必须加入连续N帧确认或滑动平均。
  • 误区五:通信无握手。视觉写、PLC读若无确认信号,容易出现旧结果被重复使用,造成误剔除或漏剔除。
核心结论:分类、检测、分割、异常检测分别对应“整体判定、位置数量、像素几何、偏离正常”四种输出粒度。工业落地的关键不是选最先进的模型,而是让输出稳定、可量化、可握手地进入PLC。先明确PLC需要什么信号,再反推视觉任务和参数,才能让AI视觉真正成为产线可用的执行环节。