凌晨一点,产线电话打过来:"检测系统又开始丢图了。"
这种电话我接过太多次。赶过去一看,操作工说相机坏了要换,电工说软件卡了要重启,等真把图像序列调出来——第37行图像莫名消失,后一张图上缺陷位置凭空挪了十几毫米。高速薄膜产线(BOPET、隔膜、光学膜这类卷材)上,"丢图"两个字背后往往不是相机单点故障,而是信号控制器、相机、光源三者之间的硬件时序没有真正协同起来。
这篇文章就围绕这个主题展开。我会把丢图的现象拆开讲清楚,说明高速产线为什么特别容易踩坑,再给出一套"信号控制器+相机+光源"协同设计的思路和现场排查链路。做机器视觉系统集成、卷材产线设备维护、或者刚从普通项目转到高速产线项目的朋友,应该都能从里面找到能直接拿去用的东西。
1. 丢图的"现场画像":三种现象、三种代价
先统一口径。我发现很多项目会议上说的"丢图",根本不是同一个问题。不把现象分清楚就去查,十有八九白忙一整晚。
1.1 现象一:触发计数对不上,序列里少了一段
最典型的表现:检测软件里图像序号跳变。比如前一张是第2173帧,下一张直接跳到第2178帧,中间5帧凭空消失;或者图像本身没少,但某一段的缺陷在物理位置上发生偏移,明明横向划伤应该在三号工位出现,实际到了四号工位才被算法标出来。
这通常意味着触发链路出了问题。要么编码器在某个时刻丢了脉冲,要么触发信号在传输途中被吃掉一个边沿。线速度越快,单位距离内的脉冲数越多,单个脉冲的周期越短,被干扰吞掉的概率就越大。
1.2 现象二:帧计数满,但图像里"行距"不均
第二种情况更隐蔽。软件统计上帧数一张没少,但画面中同一段缺陷在不同图像里的纵向位置对不上,或者复卷后同一缺陷被重复计数。
问题出在触发脉冲的抖动——每个脉冲之间的时间间隔不均匀。物料一直以恒定速度走,触发行距应该完全均匀,现在忽长忽短,图像拼接后自然会扭曲。低速产线里几微秒的抖动根本看不出来,高速产线里同样几微秒的抖动,反映在几百米每分钟的料面上就是几个毫米的偏差。
1.3 现象三:图像亮度忽明忽暗,暗图被判无效
第三种我见得最多的"伪丢图":图像一张不少,但亮度忽高忽低,暗到一定程度后检测软件按无效图直接丢弃,最后统计出来也是"丢图"。
这种十有八九是光源频闪窗口与相机曝光窗口错位。LED光源从收到触发电平到真正达到峰值亮度,中间有驱动电路和LED自身的响应延迟。曝光窗口开得太早,光源还没亮起来;开得太晚,光源已经衰减了。错位程度受温度、电流、老化影响,不是固定值,所以表现为"时好时坏、忽亮忽暗"。
1.4 丢图的代价不只是"漏检"
很多人觉得丢图的代价就是漏检一个缺陷,其实不止。
漏检本身意味着不良品流向后道工序,这是最直接的损失。但更头疼的是误报——系统因为图像序列不完整,频繁把正常产品判成异常,触发停机或复卷,整条线白跑几十分钟。最隐蔽的是坐标错乱:检测到了缺陷,但位置信息不对,后道分切、剔除设备按错误坐标动作,把好产品切了,这才是真正意义上的"赔了夫人又折兵"。
所以,先给丢图定性分类,永远比动手拆设备重要。
2. 为什么高速产线特别容易丢图:三条问题主线
很多人一开始的思路是"相机帧率不够,换更贵的相机"。但在高速薄膜产线上,更换高速相机之后依然丢图的项目我见过不止一个。问题往往出在另外三条主线上。
2.1 主线一:编码器和触发链路,信号在源头就没给够增量式编码器是高速产线最常用的测速/定长器件。低速时,编码器每转输出几百上千个脉冲,每个脉冲周期有充足的边沿余量;速度提上去后,脉冲频率从几百赫兹跳到几十千赫兹,单个脉冲周期被压缩到几十微秒甚至更短。
在这个尺度下,几个风险同时放大:
- 联轴器轻微打滑或磨损,导致脉冲间歇性丢失
- 码盘表面污染、轴承晃动,让波形产生毛刺
- 长距离传输线的分布电容把信号边沿磨钝,接收端无法正确判读
- 变频器或伺服驱动器产生的共模干扰叠加在信号线上
任何一个因素都会表现为"该有的触发没来"。而相机是忠实执行者——没收到触发就不曝光,自然就没有这帧图。
2.2 主线二:软件环节介入微秒级时序,本身就是隐患
再强调一遍这个观点:微秒级时序事件,绝对不能经过软件中转。
PLC和上位机的IO刷新周期是按毫秒甚至几十毫秒计算的。你用PLC的输出点去触发相机,先不说扫描周期的不确定性,单是输出刷新那一刻的抖动,就足以让高速产线上的触发间隔面目全非。
有人觉得"我用软件触发,程序写精一点就行"。这个思路在30米/分钟的产线上可能没问题,在300米/分钟以上的产线上就是给自己埋雷。我在现场用示波器测过,软件触发的时间误差能达到几十毫秒,这个量级的抖动对于行频要求四万赫兹的视觉系统来说,完全是灾难性的。
2.3 主线三:相机带宽与光源亮度,硬件能力被逼到临界
就算触发信号干干净净到了相机,第二道坎在相机本身的数据带宽。线扫相机行频达到几十千赫兹时,每秒数据量动辄上百MB甚至数百MB。如果选的是千兆网口相机(GigE),理论带宽只有125MB/s,实际有效带宽还要打折,一旦数据吞吐超过上限,相机内部缓存溢出,帧就丢了。
另一道坎是光源亮度。高速产线要求极短的曝光时间,曝光越短,光源必须在更短时间内提供足够的光能量。普通常亮光源在短曝光下根本喂不饱相机,图像发暗、信噪比下降,算法识别率跟着崩。
2.4 先记住一个原则:把触发链路做成纯硬件闭环
针对上面三条主线,做高速产线视觉检测的第一原则就一句话:
编码器→信号控制器→相机和光源控制器,整条触发链路必须全部走硬件信号,中间不经过任何软件轮询。
软件只负责事后统计和逻辑判断,比如"这个产品跑完了没有""计数对不对",不负责"哪个微秒触发一下相机"。把这个原则立住,再谈后面的参数配置,丢图问题至少解决一半。
3. 信号控制器的真实职责:时基整形、分频分配与电平转换
既然不能靠软件,也不能直接靠PLC,中间就得有专门的硬件把编码器信号变成多路精确的触发信号。这就是信号控制器在这套架构里不可替代的原因。
3.1 输入侧:先解决"信号脏"的问题
信号控制器接在编码器和相机/光源之间,第一件事是整形。它接收编码器的差分A/B/Z信号或单端脉冲,内部经过硬件滤波和施密特整形,把边沿变缓、幅度不足、带毛刺的波形重新恢复成标准的方波。
我见过很多次"丢脉冲"其实是接收端判读问题,不是编码器真的没输出。脉冲经过几十米线缆衰减后幅度下降、边沿变缓,直接接相机IO口的时候,相机端TTL电平阈值判不定,一个脉冲就被漏掉了。信号控制器在这里相当于一个"中继放大器",把信号质量恢复到干净状态。
另外,控制器内部可以对脉冲宽度做最小时长过滤。比如设定低于2微秒的毛刺一律忽略,能有效筛掉变频器启动瞬间的干扰噪声,但前提是这个时长必须小于正常触发周期的一半,否则会把有效脉冲一起滤掉。
3.2 输出侧:分频、多路分配、脉宽与延时可调
信号控制器真正值钱的是输出侧能力。
多路同步分配很关键。一条产线上往往不止一台相机,可能有上表面相机、下表面相机、左右边部相机,三四路甚至更多。信号控制器把一路编码器输入同时分配给所有相机,每路的触发时刻必须严格对齐,否则同一物理位置在不同相机图像里会错位。
分频/倍频是另一项核心功能。编码器的脉冲当量(每脉冲对应多少毫米)和目标触发间隔(比如每0.2mm触发一次)往往不是整数比。信号控制器可以按N/M比例做任意分频:输入4096个脉冲期间,按设定规律输出特定数量的触发,本质上是PLL锁相环加可编程计数器在工作。
脉宽和延时可调也很重要。不同相机制造商对最小触发脉宽有要求,有的2微秒,有的需要5微秒以上,输出脉宽必须能灵活设定。各路输出延时独立可调,是为了补偿光源响应时间和相机触发延迟,这部分到第4章详细说。
3.3 电平转换:把PLC的24V和相机的5V放在一起
现场设备电平混乱是常态:PLC输出大概率是24V,相机触发输入一般接受5V TTL或RS422差分,光源控制器可能又是另一个规格。信号控制器通常提供多种输入电平选项,输出侧也可以配置为TTL、差分或开集电极,把"乱七八糟的信号家族"统一到一套时序体系里。
这个点虽然不起眼,但项目集成阶段省不少事。没有它,你得自己做电平转换电路,还得考虑隔离、浪涌、反向保护,调试周期大幅拉长。
3.4 选型看哪几个指标
我选信号控制器时主要看四个指标:
| 指标 | 为什么关键 |
|---|---|
| 输入信号类型 | 必须支持RS422差分、24V、NPN/PNP、TTL中至少两种,最好全部支持 |
| 输出通道数 | 按最终相机+光源数量规划,至少留1-2路备用 |
| 脉宽/延时分辨率 | 分辨率至少到微秒级,纳秒级更好,50ns和1us的实际效果差很远 |
| 分频能力 | 要支持任意比例N/M分频,纯整数分频在很多场景下不够用 |
另外建议选带LED状态指示或通讯诊断口的型号,方便现场快速确认"触发信号到底有没有到控制器、有没有输出出去"。这个功能看着小,排查问题时的效率提升是数量级的。
4. 相机与光源怎么协同:硬件触发、频闪时序与"三方握手"
信号控制器把触发信号分发出去之后,真正的"临门一脚"在相机和光源的配合上。这一章讲细一点。
4.1 相机端:触发模式、曝光窗口和行频是三个台阶
触发模式必须用硬件外触发。Basler、海康、华睿这些工业相机通常都有Line0/Line1输入,配置为Trigger Source(外部触发源)、Trigger Mode(On)之后,只要有外部脉冲进来就曝光,绝对不靠软件指令。这一步没有任何妥协余地。
曝光时间要按运动模糊反推。运动模糊量等于线速度乘以曝光时间。按500米/分钟算,线速度是8333毫米/秒,曝光20微秒时,物料在曝光期间移动了约0.167毫米。你横向分辨率如果按0.2-0.25毫米/像素算,这个模糊量接近一个像素,对边缘检测类缺陷影响明显。想控制在1/3像素以内,曝光就得压到8-10微秒级别。
注意:曝光越短,对光源要求越高,两者必须放在一起决策,不能单独拍脑袋定。
行频要匹配触发频率。线扫相机的行频(line rate)必须大于实际触发频率。比如算出来触发频率是41.7kHz,相机行频上限只有34kHz,那必然有脉冲来了但相机还没准备好,触发直接丢失。选型时留20%-30%的余量比较稳妥。
带宽是另一个硬指标。单台4096像素线扫相机在41.7kHz行频下,数据量是4096×41700≈1.71亿像素/秒,8bit灰度就是约171MB/s,千兆网口GigE的125MB/s理论带宽根本扛不住。两台相机拼接就是342MB/s,必须选CameraLink Full/HS、10GigE或CoaXPress接口。很多项目在选型阶段没算这笔账,现场"丢图"丢到怀疑人生,其实数据链路从一开始就是堵死的。
4.2 光源端:频闪不是为了省电,是为了短曝光下的亮度
高速产线一定会用频闪模式(Strobe)。频闪光源平时以很低的待机电流维持,收到频闪触发信号后,驱动电路在极短时间内输出几安培甚至十几安培的峰值电流,把LED瞬时亮度推到额定值的10倍以上。
这背后是能量守恒:到达传感器的光能量 = 光照度 × 曝光时间。曝光从500微秒压到20微秒,缩短了25倍,要保持图像灰度不变,光源瞬时亮度就必须提高25倍。普通常亮光源只能提供1倍亮度,而频闪光源通过过载驱动能提供10-20倍。配合0.2%左右的占空比(频闪持续几十微秒,周期几十微秒),LED的平均发热其实不大,所以能长期稳定工作。
这里有个坑需要特别留意:LED从触发到真正亮起来有响应延迟。驱动电路的开关时间和LED结电容的充放电时间叠加后,通常在几十纳秒到几微秒之间。大功率光源、多路并联光源延迟更大。这个延迟必须在信号控制器里用输出延时参数补偿掉。
4.3 "三方握手"的正确时序
所谓"信号控制器+相机+光源"协同,核心就是把三者的时序对齐成下面这个顺序:
- 编码器输出物理位置脉冲,信号控制器收到后立即整形、分频
- 控制器给光源控制器发频闪触发,光源开始建立亮度(提前发光)
- 控制器给相机发触发脉冲,相机开始曝光
- 曝光窗口结束前,光源始终维持高亮度;曝光结束后光源熄灭或回到待机状
用一张表格表达这个时序关系:
| 事件 | 触发时序 | 目的 |
|---|---|---|
| 信号控制器收到编码器脉冲 | T0 | 系统参考零点 |
| 光源频闪触发输出 | T0 + 延时1 | 提前点亮,覆盖LED响应延迟 |
| 相机触发输出 | T0 + 延时2 | 曝光窗口落在光源稳定区间 |
| 光源熄灭 | 曝光结束+余量 | 避免拖尾影响下一行 |
注意延时1和延时2的差值,就是光源建立稳定亮度的时间。现场调这个参数时,最直观的现象是:调小了,图像整体偏暗且边缘有拖影;调合适了,图像亮度稳定、边界锐利。我个人的经验是先用大延时把光源对到"稳得不能再稳",再逐步缩减,观察图像亮度开始明显下降的那个临界点,往回调20%-30%作为工作点。
4.4 面阵与线扫:什么场景用哪种
高速薄膜产线的主流是线扫相机,因为连续幅面扫描、横向大幅宽、纵向分辨率靠行频堆叠,效率最高。面阵相机+频闪灯的方案更适合固定点位检测、小视野高精度测量,比如定位打标、螺母有无、字符检测这类场景。
这块容易出问题的反而是选型思维:有人拿面阵相机的"帧率"去套线扫相机的"行频",觉得行频几十千赫兹一定够,忽略了同一帧内不同行之间存在时间差,图像畸变在高速运动下会被放大。记住:薄膜产线连测带检,优先线扫;点位拍照,才考虑面阵。
5. 从症状到根因:一套可复现的现场排查链路
就算做好了协同设计,现场还是会遇到问题。下面这套排查链路是我这几年跑现场总结出来的顺序,照着走,绝大多数丢图能在半小时内定位。
5.1 先做"分诊":这台设备丢的到底是哪种图
别急着拿示波器,先看检测软件和相机自带的统计信息,回答三个问题:
- 相机侧统计的触发计数和软件收到的图像帧数一致吗?不一致,问题在相机之后的链路(带宽、缓存、采集卡)。
- 触发计数本身连续吗?有没有某个区间的计数直接跳变?有,问题在触发源(编码器、信号控制器之前)。
- 图像都在,但亮度忽高忽低?问题在光源频闪与相机曝光的对齐。
这三个问题能直接帮你把排查范围砍掉一大半。
5.2 示波器伺候:从编码器到控制器输出逐级测
工具上,示波器必须至少两通道,最好四通道,加一支电流探头。差分编码器信号要用差分探头或同时测A+和A-两路。
排查顺序从上游往下游走:
第一步,示波器探头夹在信号控制器输入端,观察编码器原始波形。看三件事:脉冲幅度是否达标、边沿是否陡峭、有没有连续时间段内脉冲缺失。这一步能直接判定编码器本身和传输线路质量。
第二步,探头移到信号控制器输出端,看整形后的触发脉冲。这里重点看脉宽是否一致、频率是否符合设定、有没有间歇性缺脉冲。如果输入端波形干干净净但输出端缺脉冲,说明控制器参数配置有问题(滤波门槛过高、分频系数计算错误)。
5.3 相机诊断工具与日志:区分"没触发"和"没传完"
相机厂商SDK一般都带诊断界面,能看到触发电平的计数、实际采集的帧数、丢帧统计。Basler有pylon Viewer,海康有MVS,用起来都不复杂。
方法很简单:设定一个固定触发次数,比如手动给1000个触发脉冲,然后看相机统计"收到触发1000次、实际输出图像997幅"。差3幅,说明相机在"接收触发"和"输出图像"之间丢了帧,问题不在信号控制器,而在相机行频上限或带宽不足。
反过来,统计显示"收到触发997次"——说明触发链路上游已经有3个触发没送到,问题往编码器和控制器方向查。
5.4 双通道对时:看触发和频闪是否真正错位
如果触发计数全对、图像也不缺,但亮度不稳定,大概率是光源时序错位。用示波器两个通道分别接相机触发信号和光源频闪控制信号(有电流探头更好,直接看LED实际电流波形),重叠显示,对比边沿位置。
重点看两点:光源电流从开始上升到峰值的这段建亮时间是多少;相机触发边沿落在光源波形的哪个位置。正确状态是相机曝光窗口完全被光源高电平区间覆盖,且两边都留有余量。
这个检查为什么要做?因为LED的光输出会随温度漂移。产线刚启动时机箱是冷的,跑两小时后温度上来了,LED响应变慢,原本对齐的时序会悄悄错位。所以我每次调完时序,都会让产线满载跑一小时,再复查一遍波形。
5.5 一张速查表:常见故障、原因与动作
| 症状 | 可能原因 | 快速动作 |
|---|---|---|
| 图像行距突变、缺陷位置偏移 | 编码器丢脉冲、联轴器打滑 | 检查机械连接、示波器看编码器波形 |
| 触发计数跳变 | 传输线屏蔽不良、控制器滤波过强 | 检查线缆屏蔽接地、调低滤波门槛 |
| 相机收到触发但图像帧数少 | 行频上限不够、带宽不足 | 核对行频与接口带宽,降行频或换接口 |
| 图像暗、亮度不稳定 | 光源频闪与曝光错位 | 调信号控制器延时参数 |
| 多相机同一缺陷坐标不一致 | 各路输出延时不一致 | 检查控制器各路延时配置并校准 |
| 变频器启动瞬间丢图 | 电磁干扰 | 改用RS422差分传输、加强屏蔽接地 |
排查中我有个习惯:一次只改一个变量。调了光源延时,就不要再动控制器分频比;验证编码器波形时,不要把光源参数也一起调了。同时改两个参数,就算问题解决了,你也不知道是哪个起的作用,将来再出问题还得重新查一遍。
6. 用一条500米/分钟的产线实例,把参数算清楚
理论说了不少,拿一条典型的BOPET薄膜产线走一遍完整计算,这套方法才真正落地。假设条件是:车速500米/分钟,幅宽2米,最小缺陷要求0.5mm,横向分辨率按0.2mm/像素设计。
6.1 触发频率与编码器分频的计算
先换算线速度:
500米/分钟 = 8333毫米/秒
按0.2mm触发一次的节奏,触发频率:
8333 ÷ 0.2 = 41667Hz ≈ 41.7kHz
这就是信号控制器输出触发的目标频率,也是相机行频的下限。
再看编码器。如果现场测量轮直径100mm,周长314.16mm,编码器4096线/转,那么每脉冲对应的距离是:
314.16 ÷ 4096 ≈ 0.0767mm
要让输出间隔变成0.2mm,需要大约2.61个输入脉冲产生一个触发,这个比例用整数分频做不到,得靠控制器的N/M任意分频功能来凑。如果测量轮还没做,我会直接把参数设计成干净比例:测量轮周长做成204.8mm,编码器配2048线/转,每脉冲正好0.1mm,两个脉冲输出一个触发就是0.2mm,触发频率正好41667Hz。
所以在项目前期,先算好这些比例再去定测轮和编码器,能给后面省大量调试时间。
6.2 相机行频、曝光与接口带宽怎么选
横向0.2mm精度在2米幅宽上意味着需要10000像素。目前主流4K线扫相机是4096像素,所以通常会选2台4K相机拼接,每台覆盖1米幅宽,每像素对应0.244mm(1000mm÷4096)。
行频要求是41.7kHz以上,选相机时就要找行频上限60kHz以上的型号,留出30%余量。曝光时间按运动模糊要求来:0.244mm像素尺寸如果按1/3像素控制模糊量,曝光要压到:
0.244 ÷ (3×8333) ≈ 9.8微秒
实际项目里常常取12-20微秒,配合频闪光源把模糊控制在0.5-0.7像素以内,对大多数检测算法够用。这个平衡要靠现场试验确认,但计算过程就是这个路子。
带宽这块前面算过:单台4K相机在41.7kHz下行频时,数据量约171MB/s,两台就是342MB/s。GigE接口直接排除,建议CoaXPress或CameraLink HS,或者10GigE加采集卡。这一步是选型红线,谁都绕不过去。
6.3 光源亮度:从500us曝光改到20us,能量去哪补
如果方案原本按500微秒曝光设计,光源选的是常亮LED,现在迫于运动模糊要压到20微秒曝光,亮度需求就提高了25倍。
LED频闪的典型做法是把350mA额定电流的LED在频闪窗口内驱动到3-6A,能获得10-17倍的瞬时亮度提升。算一下:20微秒曝光、41.7kHz触发频率,频闪窗口如果按50微秒算,占空比只有:
50微秒 ÷ 24微秒周期 ≈ 0.2%
这个占空比对应的平均功耗不高,散热压力可控,所以大电流过载是可持续的。如果10-17倍还不够25倍的目标,就需要增加光源长度、换成更高光密度的光源类型,或者把曝光时间放宽到25微秒左右来平衡。
实际调光时,不要直接盯着流明值算,就以图像灰度均值为准:把相机对准产线中间区域,目标是灰度均值稳定在180-220之间,同时看同一位置连续几百帧的灰度标准差。标准差大,说明频闪时序还有微调空间。
6.4 信号控制器的落地配置
把上面算好的参数落到信号控制器上,一份典型配置长这样:
| 配置项 | 设定值 | 备注 |
|---|---|---|
| 输入信号 | RS422差分A/B/Z | 编码器侧 |
| 分频模式 | N/M任意分频 | 按编码器与目标间隔换算 |
| 输出通道1 | 相机触发,上升沿,脉宽20微秒 | 覆盖相机最小触发脉宽需求 |
| 输出通道2 | 光源频闪,脉宽40微秒,比通道1提前5微秒 | 补偿LED建亮时间 |
| 输出延时精度 | 纳秒级 | 便于细调 |
注意这里的"提前量"不是一次就能定死的。第一次上电先用大提前量确认图像不暗,再逐步减小,直到亮度和边缘质量出现劣化趋势,留出余量作为最终值。这一步就是前面说的"三方握手"在参数层面的落地。
6.5 实操体会:预防丢图比补救丢图重要
最后说一点个人体会。
以上所有计算和配置,都是为了一个目标:让整条触发链路从编码器到相机曝光窗口,每个环节都留有余量。编码器分辨率留余量、控制器输出通道留余量、相机行频留余量、带宽留余量、光源亮度留余量,五层余量叠起来,产线才算真正稳了。
我自己的习惯是:项目验收前,主动把车速从零到最大来回拉几次,在每个速度段停留几分钟,同步盯着触发计数和图像帧数的差值,记录"哪个速度点开始出现计数偏差"。这个数据比任何测试报告都值钱,它能直接告诉你系统在哪个工况下开始逼近临界点,方便提前调整而不是等客户那边半夜打电话。
另外一个小技巧:尽量在信号控制器或多相机采集方案里加上"触发计数校验"机制,比如每收到指定数量的触发,就向检测软件上报一次心跳值。软件只要发现实际计数和预期计数对不上,立刻报警。这样丢图就能从"事后查记录"变成"事中发现",处理成本低得多。
说到底,高速产线视觉检测这个事,相机的像素和算法固然重要,但真正决定系统稳不稳的,往往是那些没人爱讲的基础时序。把"信号控制器+相机+光源"当成一根完整的链条去设计,别让任何一个环节拖后腿,丢图这种半夜电话,才能真的少起来。