4. 硬件触发模式详解
在 Basler 相机的同步与触发工程中,触发模式决定了“曝光何时开始”这一根本问题。同一台相机,选择不同的触发源和触发参数,会得到完全不同的时序行为。本节围绕四种最常用的触发模式展开:外触发(硬件触发)、软触发(软件触发)、重叠触发(Overlapped Trigger)以及触发延迟与去抖参数配置。理解它们的差异,是搭建稳定多相机系统的前提。
一、外触发:由外部信号决定曝光起点
外触发是工业视觉中最常见的模式。相机通过 I/O 接口(如 opto-isolated 输入、GPIO、或 GigE Vision 的 Line 信号)接收外部电信号,在信号有效边沿到来时启动一次曝光。Basler 相机通常将触发源配置为 Line1 或 Line2,触发沿可选上升沿或下降沿。
外触发的核心优势是确定性:曝光起点由物理信号决定,不受主机操作系统调度延迟影响。在多相机系统中,只要所有相机共享同一个触发源(例如同一台 PLC 输出的同一路信号,或同一块采集卡的同一路触发输出),各相机的曝光起点就能被对齐到同一个物理时刻。这正是多相机时间同步的基础。
配置外触发时,需要关注几个关键参数:触发源(Trigger Source)、触发沿(Trigger Activation)、触发模式(Trigger Mode = On)。此外,还要注意输入信号的电气特性——Basler 相机的光耦输入通常要求 5~24V 的电压范围,信号上升时间过快或过慢都可能影响触发稳定性。
二、软触发:由主机命令决定曝光起点
软触发通过软件命令(如 pylon API 中的 ExecuteSoftwareTrigger 或 GigE Vision 的 TriggerSoftware 命令)启动曝光。它不需要外部信号线,配置简单,适合单相机调试或对时间精度要求不高的场景。
但软触发的致命弱点是延迟不确定。从主机发出命令,到命令经网络或 USB 传输到相机,再到相机内部解析并启动曝光,这一链路存在毫秒级甚至更大的抖动。在多相机系统中,如果每台相机各自接收软触发命令,曝光起点之间的偏差可能达到数毫秒,无法满足高精度同步需求。因此,软触发通常只用于单相机场景,或作为外触发系统的调试替代方案。
三、重叠触发:让曝光与读出并行
在标准触发模式下,相机完成一次曝光后,需要将图像数据从传感器读出并传输,然后才能接受下一次触发。这个“曝光—读出—传输”的串行过程限制了帧率。重叠触发(Overlapped Trigger)允许相机在上一次曝光的数据仍在读出或传输时,就接受并响应下一次触发,从而让曝光与读出并行进行。
重叠触发的实现依赖于相机的内部缓冲和流水线设计。Basler 的 ace、dart 等系列相机在开启重叠触发后,帧率可以显著提升。但需要注意:重叠触发并不改变曝光时间本身,它只是隐藏了读出时间。如果曝光时间远大于读出时间,重叠触发的收益有限;如果读出时间占主导,收益则非常明显。
配置重叠触发时,通常需要将 TriggerMode 设为 On,并确保 AcquisitionFrameRateEnable 处于合理状态。部分型号还需要设置 OverlapMode 或类似的参数。实际使用中,建议先测量单次“曝光+读出”的总时间,再对比开启重叠后的帧率变化,以判断是否达到预期。
四、触发延迟与去抖:让触发更干净、更可控
触发延迟(Trigger Delay)是指从触发信号有效边沿到曝光实际开始之间的可编程延时。它的作用有两个:一是补偿信号传输路径上的固定延迟,使多相机系统的曝光起点在时间上对齐;二是避开机械振动或电气噪声的敏感窗口。Basler 相机通常以微秒为单位设置触发延迟,例如 TriggerDelay = 100.0 µs。
去抖(Debounce)则是针对触发信号本身的滤波。工业现场中,机械开关、继电器或长线缆可能引入毛刺,导致相机误触发。去抖参数通过设定一个时间窗口,只有信号在该窗口内保持稳定,才被认定为有效触发。Basler 相机的去抖时间通常可配置为几微秒到几毫秒。去抖时间过短,毛刺仍可能通过;过长,则可能漏掉快速连续的触发信号。
五、四种模式的对比与选型
下表从触发源、时间精度、适用场景三个维度对四种模式进行对比,便于快速选型。
| 模式 | 触发源 | 时间精度 | 典型适用场景 |
|---|---|---|---|
| 外触发 | 外部电信号(Line1/Line2) | 高(微秒级) | 多相机同步、运动物体抓拍 |
| 软触发 | 主机软件命令 | 低(毫秒级抖动) | 单相机调试、静态拍摄 |
| 重叠触发 | 外触发或软触发 + 内部流水线 | 取决于触发源 | 高帧率连续采集 |
| 触发延迟 | 附加在外触发/软触发上 | 可编程(微秒级) | 多相机时序对齐、避振 |
| 去抖 | 附加在触发信号路径上 | 可编程(微秒~毫秒) | 抑制电气毛刺、机械抖动 |
六、配置示例与结果判断
以下是一个典型的外触发配置片段(以 pylon API 为例),用于两台 Basler ace 相机共享同一触发源,并设置 50 µs 触发延迟和 10 µs 去抖:
// 相机1 和 相机2 均执行以下配置
camera.TriggerMode.SetValue("On");
camera.TriggerSource.SetValue("Line1");
camera.TriggerActivation.SetValue("RisingEdge");
camera.TriggerDelay.SetValue(50.0); // 单位:微秒
camera.LineDebouncerTime.SetValue(10.0); // 单位:微秒
camera.ExposureTime.SetValue(2000.0); // 曝光 2 ms
camera.AcquisitionStart.Execute();
配置完成后,如何判断是否达到预期?可以从三个层面观察:第一,用示波器同时探测两台相机的 Strobe 输出(曝光有效信号),观察两个脉冲的上升沿是否对齐;第二,在主机端记录每帧图像的时间戳,计算两台相机时间戳的差值分布,若差值稳定在几十微秒以内,说明同步良好;第三,检查是否有丢帧或误触发,若去抖时间设置不当,可能表现为帧数异常或触发频率不稳定。
如果发现两台相机曝光起点仍有固定偏差,可以微调其中一台的 TriggerDelay 来补偿。例如,若相机2比相机1早 30 µs,可将相机2的触发延迟增加 30 µs。这种“延迟补偿”是多相机同步调试中最常用的手段。
从图中可以直观看到:去抖作用于触发信号进入相机之前,延迟作用于有效触发之后、曝光之前,而重叠触发改变的是曝光与读出之间的串行关系。这四个参数各司其职,共同决定了相机在时间轴上的行为。实际调试时,建议先用示波器确认触发信号质量,再逐步调整延迟和去抖,最后验证多相机之间的曝光对齐情况。