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 Vision | 1Gbps | ≤100m | TF7000 GigE Vision,标准网卡即可 |
| USB3 Vision | 5Gbps | ≤5m | 需专用驱动,适合短距离高帧率 |
| Camera Link | 2~6Gbps | ≤10m | 需采集卡,实时性高 |
| CoaXPress | 6~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触发,中间经过相机采集、图像传输、视觉处理,右侧输出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开始下一轮。这种握手方式比单纯轮询更可靠,能避免读到半更新数据。
五、常见问题与排查方向
实际调试中,图像模糊先查镜头对焦和景深,再查曝光是否过长导致运动拖影;图像过暗先查光源亮度和曝光,再查增益是否被误调低;通信丢包先查网线质量和巨帧设置,再查相机带宽是否超过网卡上限;PLC读不到结果先查ADS路由和变量映射,再查握手信号是否被覆盖。把这条链路按“光—镜—机—口—算—控”顺序逐段隔离,比盲目换相机更有效。