基于乐高积木原理的触发机制
我们对乐高积木都十分熟悉。这些彩色塑料积木上具有专利凸点,可形成接合系统,任您发挥无穷想象力,随意组合积木。乐高积木原理既简单又具独创性,而事实证明成功的秘诀即在于此。机器视觉则充分利用了这一原理。
背景
GenICam 是用于机器视觉领域的泛型编程接口,可将机器视觉相机的每个功能标准化和抽象化。标准功能命名约定 (SFNC) 为实现相机功能提供多种规则,因此,它为大量的机器视觉应用环境搭建了一个“彩色的积木系统”。丰富多样的连接方式为至今鲜为人涉足的机器视觉标准化实现增值。尤其是在触发图像采集方面,仍有许多可能性尚待挖掘。因此,IDS 相机上支持绝大部分标准触发功能,让用户尽情发挥想象力。
尚待挖掘的可能性
如今,相机触发信号的种类不止局限于硬件触发。在硬件触发模式下,只需数微秒的时间,触发信号即可在相机固件中启动图像采集。得益于 GenICam 和 SFNC,触发信号已演变为带有一个指定行为的抽象化的信号定义,具有很多优势。启动触发的信号(软件)与支持触发设备的输入信号(硬件)分开,从而使触发信号的应用类型更加丰富多样。此外,图
在发布的 Vision Firmware V1.5 中,IDS 相机为触发配置新增了许多功能,以此为触发源提供多种连接方式。
触发使用案例
定时器、计数器、PWM 或 UserOutput 等功能块也可以灵活互连。这为相机的图像采集控制提供了无限的可能性。以下使用案例演示了如何使用 IDS 视觉相机实现各种触发方式(截至 Vision Firmware V1.5)。您可在 IDS Vision Cockpit 中直接使用 GenICam 节点树重新构建这些触发方式。
非周期性图像采集
在传送带上传送着不同类型的部件。当传送带上的部件经过光栅时,触发图像采集,以读出部件条形码,从而对部件进行识别。
特征
- 触发信号包括软件触发信号和硬件触发信号。
- 当检测到不同的部件和距离时,会产生非周期性触发信号。
- 收到触发信号后,相机会立即曝光并采集图像。
-
要捕捉清晰的图像,需要预先根据照明条件和传送带速度设置曝光时间。
- 每收到一个触发信号,相机会捕捉一张图像。
- 在采集图像和读出的过程中,相机不再接收触发信号。
参数设置
AcquisitionMode = Continuous
ExposureTime = 15000
TriggerSelector = ExposureStart
TriggerMode = On
TriggerSource = Line0
AcquisitionStart 命令用于使系统准备好接收触发信号:
开始采集
Execute AcquisitionStart
如果将“Line0”设置为 TriggerSource,外部硬件触发源可以通过光栅或按钮等发出的信号立即启动曝光。
如果“Software”为 TriggerSource,则使用软件触发命令:
采集
TriggerSource = Software
Execute TriggerSoftware
AcquisitionStop 命令用于结束采集模式:
停止采集
Execute AcquisitionStop
在执行 AcquisitionStop 命令之后,对于已开始采集的图像,相机会继续完成曝光并传输图像。
信号/时间图
图像采集延迟
在传送带系统中,如果由于结构方面的原因,触发传感器无法安设于相机旁边,则必须延迟图像采集。延迟时间取决于传送带速度。
特征
- 触发信号包括软件触发信号和硬件触发信号。
- 对于触发信号,相机会根据设定的延迟时间 (TriggerDelay) 以指定曝光时间开始图像采集。
- 可对 TriggerDelay 的时间进行配置(范围为 0 至约 16 秒,以毫秒为单位)
- 每接收一个触发信号,相机会捕捉一张图像。
- 个别触发信号可能呈现非周期性特征。
- 在 TriggerDelay 和采集过程中,相机不再接收触发信号。
参数设置
AcquisitionMode = Continuous
ExposureTime = 15000
TriggerSelector = ExposureStart
TriggerMode = On
TriggerSource = Line0
TriggerDelay = 500
采用以上触发设置时,仅当 Line0 触发信号发出 500 µs 后,相机才会启动曝光。
TriggerDelay 可与任何其他 TriggerSelector 或 TriggerSource 结合使用。
通过执行 AcquisitionStart 命令,使系统准备好接收触发信号。
开始采集
Execute AcquisitionStart
如果将“Line0”设置为 TriggerSource,外部硬件触发源可以通过光栅或按钮等发出的信号立即启动曝光。
AcquisitionStop 命令用于结束采集模式:
停止采集
Execute AcquisitionStop
在执行 AcquisitionStop 命令之后,对于已开始采集的图像,相机会继续完成曝光并传输图像。
信号/时间图
扩展触发
IDS 相机在线阵扫描模式下捕捉打印卷筒的图像。编码器可指定采集周期,以便于使图像采集与设备速度保持同步,并确保像素大小相同。但是编码器频率与线扫描频率并不相同,这意味着必须使用触发预分频器来缩短采集周期。
特征
- 相机通过软件或硬件触发接收输入信号。
- 对于每次图像采集,触发信号会启动相机以指定的曝光时间来曝光。
- 每接收一个触发信号,相机会捕捉一张图像。
- 每第 x 次触发信号可由 TriggerDivider 进行处理。
为 ExposureStart 配置开始信号,以便相机每接收到第四个信号时仅在 Line0 处捕捉一张图像。
参数设置
AcquisitionMode = Continuous
ExposureTime = 15000
TriggerSelector = ExposureStart
TriggerMode = On
TriggerSource = Line0
TriggerDivider = 4
若手动启动采集,系统即准备好接收触发信号。
开始采集
Execute AcquisitionStart
如果将“Line0”设置为 TriggerSource,则外部硬件触发源(例如:打印卷筒编码器)可以启动曝光。
AcquisitionStop 命令用于结束采集模式:
停止采集
Execute AcquisitionStop
在执行 AcquisitionStop 命令之后,对于已开始采集的图像,相机会继续完成曝光并传输图像。
信号/时间图
触发采集周期
使用案例:观察水滴滴落的过程。水滴在进入图像采集区时会被光栅检测到,此时相机会开始图像采集,捕捉图像,记录水滴在下落的过程中表面的运动情况。当水滴离开图像采集区时,位于底部边缘的光栅会立即结束采集过程。
特征
- 在触发信号的活跃相位,相机会持续捕捉图像。
- 帧率和曝光时间是固定的。
- 捕捉图像的数量取决于信号活跃相位的持续时间和设置的帧率。
采集配置
AcquisitionMode = Continuous
AcquisitionFrameRate = 30
ExposureTime = 1000
TriggerSelector = AcquisitionStart
TriggerMode = On
TriggerSource = Line0
TriggerActiviation = RisingEdge
TriggerSelector = AcquisitionStop
TriggerMode = On
TriggerSource = Line0
TriggerActiviation = FallingEdge
通过执行 AcquisitionStart 命令,使系统准备好接收触发信号。
开始采集
Execute AcquisitionStart
如果将“Line0”设置为 TriggerSource(上升沿),则开始进行连续采集。如果触发信号的边缘在“Line0”上,则停止连续采集。
在执行 AcquisitionStop 命令之后,对于已开始采集的图像,相机会继续完成曝光并传输图像。
信号/时间图
周期性触发
使用案例:该功能可以用于通过延时图像采集的方式记录某个物体的运动过程。将曝光时间设置为指定时长。
特征
- 使用定时器或 PWM(脉冲宽度调制)信号可生成周期性触发信号。
- 对于高频信号(最高 100 kHz),最好使用 PWM 信号。
- 对于低频信号(如 1 帧/分钟),则使用带有可选触发信号的定时器。
- 可以使用额外的可调信号强度(如 UserOutput)按照固定时间间隔重新启动定时器。
- 对于每次图像采集,触发信号会启动相机以指定的曝光时间来曝光。
- 每接收一个触发信号,相机会捕捉一张图像。
参数设置
AcquisitionMode = Continuous
ExposureTime = 15000
TriggerSelector = ExposureStart
TriggerMode = On
TriggerSource = Timer0Start
TriggerDivider = 6
将 Timer0 设为 10 秒 (10,000,000 µs)。如果 UserOutput0 的信号电平设置为“LevelHigh”,则 Timer0 会不断地重新启动。与分频器触发结合使用时,定时器仅会在第六次启动时触发图像采集。
定时器设置
TimerSelector = Timer0
TimerDuration = 10000000
TimerTriggerSource = UserOutput0
TimerTriggerActivation = LevelHigh
若手动启动采集,系统即准备好接收触发信号。但在定时器开始运行前,相机不会开始采集图像。
开始采集
Execute AcquisitionStart
如果将 UserOutput0 设置为 True (=LevelHigh),则定时器会启动,且相机会立即捕捉第一帧图像。建议首先执行 TimerReset 命令,以确保即使是第一个时间间隔也可以重置为完整时长。
停止采集
TimerSelector = Timer0
Execute TimerReset
UserOutput0 = True
使用以上设置,相机会每分钟捕捉一张图像,直到执行 AcquisitionStop 命令或将 UserOutput0 设置为False (=LevelLow) 为止。
停止采集
UserOutput0 = False
Execute AcquisitionStop
在执行 AcquisitionStop 命令之后,对于已开始采集的图像,相机会继续完成曝光并传输图像。
信号/时间图
触发曝光时间
使用案例: 相机发送经直接处理和评估的图像。还可确定图像是否曝光过度或曝光不足。可使用脉冲发生器动态调整下次图像采集的曝光时间,而无需更改相机参数。
这种图像采集类型也称为“电平控制曝光”或“Bulb 模式”。
特征
- 触发脉冲宽度决定了曝光时间。
- 触发信号产生后,相机会立即开始曝光(此案例中:Line0 为上升沿)。
- 曝光持续时间等于触发信号设置的时间。
- 曝光持续时间不短于 TriggerControlledExposureTimeMin 设置的时间。
- 曝光最迟在 TriggerControlledExposureTimeMax 之后结束。
- 每接收一个触发信号,相机会捕捉一张图像。
采集配置
AcquisitionMode = Continuous
TriggerSelector = ExposureStart
TriggerMode = On
TriggerSource = Line0
TriggerActivation = RisingEdge
TriggerSelector = ExposureEnd
TriggerMode = On
TriggerSource = Line0
TriggerActivation = FallingEdge
TriggerControlledExposureTimeMin = 500
TriggerControlledExposureTimeMax = 1000000
可根据具体的应用场景,通过 TriggerControlledExposureTimeMin 或 TriggerControlledExposureTimeMax 参数将曝光时间限制在合适的范围内,从而避免曝光时间过短或过长。
通过执行 AcquisitionStart 命令,使系统准备好接收触发信号。
开始采集
Execute AcquisitionStart
如果将“Line0”设置为 TriggerSource,则外部脉冲发生器可用于控制图像采集的曝光时间。
AcquisitionStop 命令用于结束采集模式:
停止采集
Execute AcquisitionStop
执行 AcquisitionStop 命令之后,相机仍会传输所有已启动的采集。
隔行扫描图像采集
触发信号控制的曝光时间也可以是“交错的”(隔行扫描图像采集),具体取决于相机所用的传感器型号。在读出期间,传感器启动为下次采集做好准备,如此可实现最大帧率。TriggerControlledExposureTimeMin 参数也决定了隔行扫描的程度。其规律如下:
- TriggerControlledExposureTimeMin 值越高,允许的隔行扫描次数越多。
- 如果 TriggerControlledExposureTimeMin 值大于读出时间,则隔行扫描范围不会增加。
信号/时间图
以最快速度获取计数图像序列
使用案例:相机捕捉传送带上送检零部件的图像。由于技术原因,无法使光源保持稳定,通常是以不同的曝光时间快速连续捕捉三张图像。系统会对曝光最好的图像进行分析。
特征
- 每接收一个触发信号,相机会快速连续捕捉多张图像(“脉冲串”)。
- 触发信号包括软件触发信号和硬件触发信号。
- 曝光时间是预先设定的。
- 以传感器支持的最快速度捕捉图像序列。
- 计数器用来对采集的图像系列进行计数,当图像达到所需数量后会自动终止采集。
- 当计数器处于启用状态时,不会处理触发信号。
配置采集参数,使相机在计数器正在计数(即“启用”)时捕捉图像。必须预先设置曝光时间!
参数设置
AcquisitionMode = Continuous
ExposureTime = 15000
TriggerSelector = ExposureStart
TriggerMode = On
TriggerSource = Counter0Active
TriggerActivation = LevelHigh
通过外部硬件信号 (Line0) 触发计数器。其终止值 (Duration) 设置为需要采集的图像数量。计数器基于 ExposureStart 事件进行计数。开始信号 (CounterTrigger) 同时还会重置计数器。(计数器重置)。
参数设置
CounterSelector = Counter0
CounterTriggerSource = Line0
CounterResetSource = CounterTrigger
CounterEventSource = ExposureStart
CounterDuration = 3
可通过手动启用采集使系统做好准备。然而,在计数器处于启用状态时,相机不会开始图像采集。
开始采集
Execute AcquisitionStart
可使用硬件触发信号 (Line0) 捕捉图像序列。当计数器达到预设的终止值时,采集会自动停止。
AcquisitionStop 命令用于结束采集模式:
停止采集
Execute AcquisitionStop
在执行 AcquisitionStop 命令之后,对于已开始采集的图像,相机会继续完成曝光并传输图像。
信号/时间图
以固定帧率采集指定数量的图像序列
使用案例:在交通信号灯处,使用相机记录司机在红灯亮起时越过停止线的行为。通过以合适的帧率采集一系列图像,我们可对车速、刹车行为或换向进行判断。这样就可以区分哪些司机不慎越过停止线并停车,而哪些是违章行驶。
特征
- 每接收一个触发信号,相机会捕捉固定数量的图像。
- 触发信号包括软件触发信号和硬件触发信号。
- 曝光时间是预先设定的。
- 相机以指定帧率捕捉图像序列。
- 计数器用来对采集的图像系列进行计数,当图像达到所需数量后会自动终止采集。
- 当计数器处于启用状态时,不会处理触发信号。
配置采集参数,使相机在计数器正在计数(即“启用”)时捕捉图像。必须预先设置曝光时间和帧率。
通过硬件触发 (Line0) 启动记录图像序列。当 Counter0 达到终止值时,此过程会自动终止。
参数设置
AcquisitionMode = Continuous
AcquisitionFrameRate = 30
ExposureTime = 30000
TriggerSelector = AcquisitionStart
TriggerMode = On
TriggerSource = Line0
TriggerSelector = AcquisitionStop
TriggerMode = On
TriggerSource = Counter0End
计数器终止值 (Duration) 设置为所需的图像序列数。计算器基于 FrameStart 事件进行计数。开始信号 (CounterTrigger) 同时还会重置计数器。(计数器重置)。
参数设置
CounterSelector = Counter0
CounterTriggerSource = AcquisitionStart
CounterResetSource = CounterTrigger
CounterEventSource = FrameStart
CounterDuration = 3
可通过手动启用采集使系统做好准备。
开始采集
Execute AcquisitionStart
通过硬件触发 (Line0) 开始采集图像序列。
AcquisitionStop 命令用于结束采集模式:
停止采集
Execute AcquisitionStop
在执行 AcquisitionStop 命令之后,对于已开始采集的图像,相机会继续完成曝光并传输图像。
信号/时间图
以最快速度定时捕捉图像序列
使用案例:想要观察液体滴在不同物体表面的效果?要实现这一目标,必须在液体进入图像采集区时便触发图像采集。在该案例中,相机需在一定时间内以最大帧率持续采集图像,以便记录整个效果发生过程。
特征
- 每接收一个触发信号,相机会快速连续捕捉多张图像(“脉冲串”)。
- 触发信号包括软件触发信号和硬件触发信号。
- 曝光时间是预先设定的。
- 以传感器支持的最快速度捕捉图像序列。
- 定时器用于对图像采集进行定时,可在设定的时间结束后自动停止采集图像。
- 当定时器处于启用状态时,相机不再处理触发信号。
传输速率可能会超过数据接口的最大带宽,具体取决于“脉冲串”的速度和数据量!因此,需要检查相机能否保持传输该种脉冲串,若可以保持,确认保持时长以及两个脉冲串之间需要时间间隔。
配置采集参数,使相机在 Timer0 运行(即处于“启用”状态)时开始捕捉图像。也就是说,采集完毕后,只要传感器再次准备就绪,相机便立即开始下一轮采集。
采集配置
AcquisitionMode = Continuous
ExposureTime = 15000
TriggerSelector = ExposureStart
TriggerMode = On
TriggerSource = Timer0Active
TriggerActivation = LevelHigh
定时器由外部硬件信号的上升沿触发 (Line0)。其持续时间 (TimerDuration) 精确至秒 (1 s = 1000000 µs)。
定时器配置
TimerSelector = Timer0
TimerDuration = 1000000
TimerTriggerSource = Line0
TimerTriggerActivation = RisingEdge
若手动启动采集,系统即准备好接收触发信号。
停止采集
Execute AcquisitionStart
可使用硬件触发信号 (Line0) 捕捉图像序列。当定时器的预设时间结束时,图像采集自动停止。
AcquisitionStop 命令用于结束采集模式:
停止采集
Execute AcquisitionStop
在执行 AcquisitionStop 命令之后,对于已开始采集的图像,相机会继续完成曝光并传输图像。
信号/时间图
受时间控制且帧率固定的图像序列
使用案例:发生特定事件时,要对测试物体的反应(如反应时间、行为、决策)进行分析和测试。要实现这一目标,相机必须在收到外部触发信号时便立即启动图像采集。在预定的时间段内,按照合适的帧率捕捉图像,以便记录反应情况。
特征
- 在设定时间内相机会捕捉几张图像。
- 触发信号包括软件触发信号和硬件触发信号。
- 曝光时间是预先设定的。
- 相机以指定帧率捕捉图像序列。
- 定时器用于对图像采集进行定时,可在设定的时间结束后自动停止采集图像。
- 当定时器处于启用状态时,相机不再处理触发信号。
相机接收到外部触发信号 (Line0) 时,会开始持续进行图像采集(10 帧/秒),并在 Timer0 结束后停止进行图像采集。
采集配置
AcquisitionMode = Continuous
ExposureTime = 15000
AcquisitionFrameRate = 10
TriggerSelector = AcquisitionStart
TriggerMode = On
TriggerSource = Line0
TriggerActivation = RisingEdge
TriggerSelector = AcquisitionEnd
TriggerMode = On
TriggerSource = Timer0End
TriggerActivation = RisingEdge
当图像采集启动 (AcquisitionStart) 时,相机会触发定时器并将其设置为 1 秒(1 s = 1000000 µs)。
定时器配置
TimerSelector = Timer0
TimerDuration = 1000000
TimerTriggerSource = AcquisitionStart
TimerTriggerActivation = RisingEdge
若手动启动采集,系统即准备好接收触发信号。
停止采集
Execute AcquisitionStart
可使用硬件触发信号 (Line0) 捕捉图像序列。当定时器的预设时间结束时,图像采集自动停止。相机每次收到硬件触发信号时,都会启动采集新的图像序列。
AcquisitionStop 命令用于结束采集模式:
停止采集
Execute AcquisitionStop
在执行 AcquisitionStop 命令之后,对于已开始采集的图像,相机会继续完成曝光并传输图像。
信号/时间图
触发技巧
下列技巧和说明可帮助您避免错误并更好地了解触发功能的行为:
- 可能会多次出现缩进参数,而且各父节点的值可能不尽相同。
- 必须将不需要使用的触发源设为停用 (“OFF”)。
- 对于已开始采集的图像,相机始终会继续完成曝光并传输图像,即使控制信号已停止。
- 要配置触发参数,必须停止图像采集 (AcquisitionStop)!之后如果需要使用配置的触发,则必须重新启动图像采集 (AcquisitionStart)!
- 若触发模式已启用 (TriggerMode = ON),AcquisitionStart 命令只用于将图像采集设为“就绪”状态。对于已配置的 TriggerSource,只有在收到指定的触发信号时,相机才会启动图像采集。
- 如果要连续触发图像采集,通常情况下,可以将 AcquisitionMode 设为 Continuous。否则,相机会在捕捉一张图像 (Single Frame) 或 X 张图像 (Multi Frame) 后自动停止图像采集。
- 您可以使用“UserOutputs”轻松模拟外部触发信号。
模拟外部触发信号
如果想要测试复杂的触发应用程序却苦于无任何可用的硬件信号,您可以使用模拟外部触发信号功能。要使用这一功能,将 UserOutput 设置在(硬件输入)线路,并将其设置为输出。然后就可使用 UserOutput 启用或禁用该线路,就如同存在硬件信号一样。
示例:在 Line2 上模拟硬件触发
将 ExposureStart 触发设置在 Line2 上:
采集配置
TriggerSource = Line2
将 UserOutput0 设置为信号源,将 Line2 设置为输出线路:
线路配置
LineSelector = Line2
LineMode = Output
LineSource = UserOutput0
一启动图像采集,系统即准备好接收触发信号:
开始采集
Execute AcquisitionStart
现在可通过开启和关闭 UserOutput0 在 Line2 上启用触发信号并触发您的应用程序。启用 UserOutputValue 后会立即产生信号。
开始采集
UserOutputSelector = UserOutput0
UserOutputValue = true
UserOutputValue = false
总结
在 IDS GigE Vision Firmware V1.5 中,IDS 添加了 GenICam 标准功能命名约定提供的许多标准功能,极大地改进了 IDS 相机。IDS 还借助 IDS Vision Cockpit 为您提供理想的演示工具,供您用于重新构建并全面测试本文所述的所有触发案例。
更多信息和IDS Vision固件下载,请访问我们网站,参阅下载页面上的。
如果您已经安装了 IDS Vision Suite 1.1,您也可以双击相关固件文件 (*.guf) 轻松升级 IDS GigE Vision 相机的固件。