4. Basler相机触发模式与节拍同步

在高速产线成像中,相机“什么时候曝光”比“曝光多久”更决定成败。Basler 相机的三种采集模式——自由运行(Free Run)、软件触发(Software Trigger)、硬件触发(Hardware Trigger)——本质上是在回答同一个问题:曝光起始时刻由谁决定、由什么信号决定、抖动有多大。理解它们的时序差异,才能把图像采集与 PLC 节拍、编码器位置真正对齐到微秒级。

三种模式的时序本质

自由运行模式下,相机按内部设定的帧率连续曝光,曝光起点由相机自己的时钟决定。它的优点是配置最简单、吞吐稳定;缺点是曝光时刻与产线运动完全无关,同一工件在不同帧中的位置会漂移,无法做位置关联。自由运行的实际帧周期 = 曝光时间 + 读出时间 + 传输时间,若曝光设为 200 μs、读出 3 ms,则实际帧率约 312 fps,而不是标称的最大帧率。

软件触发模式下,曝光由上位机通过 API(如 pylon 的 ExecuteSoftwareTrigger())或 GigE Vision 的 TriggerSoftware 命令发起。触发命令要经过应用层、驱动、网卡、相机固件多级传递,典型延迟在数百微秒到数毫秒,且受操作系统调度影响,抖动可达几百微秒。它适合低速、非严格同步的场合,例如手动抽检、静态工位拍照,但无法满足高速产线的位置一致性要求。

硬件触发模式下,曝光由外部电信号(光电传感器、PLC 输出、编码器分频脉冲)直接驱动相机的触发输入引脚。信号从引脚到传感器开始曝光只经过相机内部极短的电路路径,延迟通常在微秒级(Basler ace 系列典型触发延迟约 1~5 μs),抖动在亚微秒到微秒量级。这是高速产线唯一能实现微秒级同步的模式。

三种触发模式的时序对比(同一工件通过视场) t=0 时间 → 自由运行 内部时钟 曝光 读出+传输 曝光 读出+传输 曝光 读出+传输 曝光时刻与工件位置无关,位置漂移 软件触发 API 命令 命令 驱动/网络 曝光 读出+传输 命令 驱动/网络 曝光 读出+传输 延迟数百 μs~ms,抖动大 硬件触发 外部脉冲 ↑ 曝光 读出+传输 ↑ 曝光 读出+传输 ↑ 曝光 读出+传输 延迟 1~5 μs,抖动亚 μs 级 关键时序参数(以 Basler ace 2 为例,示例值) • 触发延迟(Trigger Delay):外部信号上升沿到传感器开始曝光,典型 1~5 μs • 触发抖动(Trigger Jitter):硬件触发 < 1 μs;软件触发 100 μs~1 ms • 曝光时间(Exposure Time):由 ExposureTime 参数设定,与触发模式独立 • 帧周期 = 曝光 + 读出 + 传输;触发模式下帧周期必须小于触发间隔,否则丢帧

硬件触发的接线与信号链

硬件触发要真正落地,需要把“谁产生脉冲、脉冲怎么送到相机、相机怎么响应”这条信号链理清。典型高速产线有三种触发源:

  • 光电传感器直接触发:工件遮挡光电开关,传感器输出 PNP/NPN 脉冲直接接入相机 Trigger In。延迟最小,但只能检测“到达”事件,无法反映位置。
  • PLC 输出触发:PLC 在程序扫描周期中判断条件后置位输出点,驱动相机触发。PLC 扫描周期通常 1~10 ms,会引入扫描抖动,适合节拍较慢的工位。
  • 编码器分频触发:编码器 A/B 相脉冲经分频器或 PLC 高速计数模块,每行进固定距离输出一个脉冲触发相机。这是高速产线位置一致性最好的方案,曝光位置与工件位移严格对应。

接线时要注意电平匹配:Basler 相机 Trigger In 通常为光耦隔离输入,支持 5~24 V,但需确认具体型号的输入阈值。若传感器为 24 V PNP,可直接接入;若为 5 V TTL,需确认相机是否支持或加电平转换。触发信号线应使用屏蔽双绞线,屏蔽层单端接地,避免与电机动力线并行走线,否则高频干扰会造成误触发。

与 PLC、编码器实现微秒级同步的配置要点

要做到微秒级同步,光有硬件触发还不够,还需要在相机参数和产线时序上做精细配置。以下以 Basler pylon 环境为例说明关键参数:

# 设置硬件触发模式(pylon API 示例)
camera.TriggerMode.SetValue("On")
camera.TriggerSource.SetValue("Line1")        # 触发输入引脚
camera.TriggerActivation.SetValue("RisingEdge") # 上升沿触发
camera.TriggerDelay.SetValue(0.0)             # 触发延迟,单位 μs
camera.ExposureTime.SetValue(200.0)           # 曝光 200 μs
camera.AcquisitionFrameRateEnable.SetValue(False) # 触发模式下关闭帧率限制

# 编码器分频触发场景:每 0.5 mm 一个脉冲
# 编码器分辨率 5000 ppr,丝杠导程 10 mm
# 每脉冲位移 = 10 mm / 5000 = 0.002 mm
# 分频系数 = 0.5 mm / 0.002 mm = 250
# 即每 250 个编码器脉冲输出 1 个触发脉冲

几个容易踩坑的点:

  1. 触发延迟补偿:若相机安装位置与触发传感器之间有固定距离,可通过 TriggerDelay 补偿。例如传感器到相机视场中心距离 50 mm,产线速度 1 m/s,则延迟 50 ms 后工件才到视场中心,但 50 ms 远超相机触发延迟范围,实际应通过调整传感器安装位置或使用编码器位置触发来解决。
  2. 曝光时间与运动模糊:曝光 200 μs、速度 1 m/s 时,工件在曝光期间移动 0.2 mm。若要求模糊小于 1 个像素,需根据视场和分辨率反算允许曝光时间。例如视场 100 mm、分辨率 5000 像素,单像素对应 0.02 mm,则曝光时间需小于 20 μs,此时需提高光源亮度或增益。
  3. 触发间隔与帧周期:触发模式下,若触发脉冲间隔小于帧周期(曝光+读出+传输),相机会忽略部分触发或报错。必须保证触发间隔大于帧周期,并留 10%~20% 余量。
  4. PLC 扫描周期与触发抖动:若用 PLC 普通输出点触发,抖动等于扫描周期。应使用 PLC 的高速输出模块或运动控制模块的硬件比较输出(如西门子 TM 模块、倍福 EL2xxx 系列),抖动可降至微秒级。
编码器分频触发时,建议将分频器输出同时接入相机 Trigger In 和 PLC 高速计数输入,PLC 记录每个触发脉冲对应的编码器计数值,这样图像与位置信息可以一一对应,便于后续追溯和剔除。

模式选择与节拍匹配的判断依据

实际选型时,可按以下逻辑判断:若产线速度低于 0.1 m/s 且对位置一致性要求不高,自由运行或软件触发即可;若速度在 0.1~1 m/s 且需要位置关联,优先编码器分频硬件触发;若速度超过 1 m/s 或要求微秒级同步,必须使用硬件触发并配合高速输出模块,同时核算曝光时间与运动模糊的约束。触发模式不是孤立的参数,它和曝光、增益、光源、镜头、传输带宽共同决定最终图像质量和节拍上限。

硬件触发接线前务必确认相机输入引脚的电平范围和最大电压,误接 24 V 到 5 V 输入可能损坏相机输入电路。建议先用示波器测量触发信号波形,确认上升沿干净、无振铃后再接入相机。