3. 机器视觉基础与TwinCAT集成视角

在TwinCAT自动化系统中集成机器视觉,并不是简单地把相机接到工控机上再调用一个视觉库。真正决定系统稳定性的,是“光—镜头—相机—接口—处理—PLC协同”这条链路上每一环的参数匹配与数据时序。本节从TwinCAT工程师的视角,把这条链路拆开讲清楚:每个环节选什么、怎么配、数据如何流动,以及视觉结果怎样可靠地进入PLC控制逻辑。

一、成像链路的物理基础:光源与镜头

视觉系统的第一道门槛是“能不能拍到一张可处理的图”。这取决于光源与镜头的配合,而不是相机像素越高越好。

光源的核心作用是制造对比度。常见方式包括:环形光用于均匀照亮平面字符或标记;条形光用于突出边缘和划痕;背光用于测量轮廓和尺寸,因为背光下工件呈黑色剪影,边缘对比度最高;同轴光用于高反光金属表面的缺陷检测。选择光源时先问三个问题:被测特征是什么(边缘、颜色、纹理、高度)?背景是否干扰?工件表面是镜面还是漫反射?例如检测金属轴承端面字符,若用普通环形光会因反光导致字符淹没,改用低角度暗场光或同轴光后字符与背景的灰度差可从约20提升到80以上,二值化阈值就稳定得多。

镜头决定视野(FOV)、工作距离(WD)和分辨率。基本关系为:

FOV = 传感器尺寸 × WD / 焦距
像素分辨率 = FOV / 相机像素数

假设使用1/1.8英寸传感器(约7.2mm×5.4mm)、500万像素(2448×2048)相机,要检测30mm宽的工件,若选16mm焦距镜头,则水平FOV≈7.2×WD/16。若WD设为200mm,FOV≈90mm,单像素约0.037mm,可分辨约0.1mm的缺陷;若想FOV缩到40mm,则需WD≈89mm或换更长焦距。工程上还要注意景深:光圈越小景深越大,但进光量下降,需与光源亮度平衡。远心镜头用于高精度尺寸测量,能消除透视误差,但成本高、视野小,适合精密装配定位。

二、相机接口与TwinCAT接入方式

相机接口决定数据如何进入TwinCAT。常见类型对比如下:

接口典型带宽线缆长度TwinCAT接入方式
GigE Vision1Gbps≤100mTF7000 GigE Vision,标准网卡即可
USB3 Vision5Gbps≤5m需专用驱动,适合短距离高帧率
Camera Link2~6Gbps≤10m需采集卡,实时性高
CoaXPress6~25Gbps≤40m需专用采集卡,高端检测

在TwinCAT中,GigE Vision是最常用的选择,因为可直接使用标准以太网口,配合TF7000功能库通过GenICam标准读取相机参数。配置时先在TwinCAT XAE中安装TF7000,然后在I/O树下扫描GigE相机,设置IP同网段、开启巨帧(Jumbo Frame)以减少丢包。相机触发模式建议设为硬件触发或PLC软件触发,而不是自由运行,这样才能与产线节拍同步。

三、视觉处理流程与PLC协同数据流

视觉处理在TwinCAT中通常有两种落地方式:一是用TF7000直接采集图像,再调用Halcon或OpenCV库在PLC任务中处理;二是用独立视觉软件处理,通过ADS或TCP把结果传给PLC。无论哪种方式,关键数据流都可以归纳为“触发—采集—处理—结果—动作”五个阶段。

下面这张图展示了从PLC触发到执行机构动作的完整数据流,包含图像采集、视觉处理、结果判定和PLC协同的关键节点:

PLC触发 M0.0 上升沿 相机采集 GigE Vision 曝光 图像传输 TF7000 缓冲区 视觉处理 定位/测量/判定 触发信号 图像数据 像素流 结果输出 OK/NG + 坐标 判定 PLC读取 ADS / 变量映射 结果数据 执行动作 分拣/剔除/记录 控制指令 节拍反馈 / 状态监控 关键时序约束: 1. 触发到曝光延迟通常 < 1ms(硬件触发);2. 图像传输时间取决于分辨率与带宽,500万像素@1GigE约40ms; 3. 视觉处理时间需小于产线节拍,否则需多相机并行或降低分辨率;4. PLC读取结果建议用ADS通知或周期任务,避免轮询延迟。

图中左侧是PLC触发,中间经过相机采集、图像传输、视觉处理,右侧输出OK/NG和坐标结果,再回到PLC读取并驱动执行机构。底部标注了关键时序约束,这些数字直接决定系统能否跟上产线节拍。

四、实际配置中的关键参数与判断依据

以GigE相机在TwinCAT中的配置为例,几个必须设置的参数包括:曝光时间(通常50~5000μs,运动工件需短曝光配合强光源)、增益(尽量低以减少噪声,优先增加光源亮度)、触发模式(设为硬触发或PLC软触发)、像素格式(Mono8用于灰度处理,BayerRG8用于彩色)。在TF7000中,这些参数通过GenICam节点访问,例如设置曝光可用fbGigE.ExposureTime,触发源用fbGigE.TriggerSource。

视觉处理结果如何进入PLC?常见做法是在TwinCAT中定义一个结构体变量,例如:

TYPE ST_VisionResult :
STRUCT
    bTrigger    : BOOL;      // PLC触发视觉
    bDone       : BOOL;      // 视觉处理完成
    bOK         : BOOL;      // 判定结果
    rX          : REAL;      // 工件X坐标(mm)
    rY          : REAL;      // 工件Y坐标(mm)
    rAngle      : REAL;      // 角度(°)
    nErrorCode  : DINT;      // 错误码
END_STRUCT
END_TYPE

视觉任务处理完后置位bDone并写入bOK和坐标,PLC主任务检测到bDone上升沿后读取结果,再复位bTrigger开始下一轮。这种握手方式比单纯轮询更可靠,能避免读到半更新数据。

判断视觉系统是否达标,不要只看“能不能识别”,而要看三个指标:重复精度(同一工件多次测量的标准差)、节拍余量(处理时间占节拍的比例,建议低于60%)、误判率(OK判NG和NG判OK的比例,需分别统计)。

五、常见问题与排查方向

实际调试中,图像模糊先查镜头对焦和景深,再查曝光是否过长导致运动拖影;图像过暗先查光源亮度和曝光,再查增益是否被误调低;通信丢包先查网线质量和巨帧设置,再查相机带宽是否超过网卡上限;PLC读不到结果先查ADS路由和变量映射,再查握手信号是否被覆盖。把这条链路按“光—镜—机—口—算—控”顺序逐段隔离,比盲目换相机更有效。