SFNC —— 采集控制(四)(上):https://developer.aliyun.com/article/1598541
5. 采集控制功能(Acquisition Control features)
本节详细描述了所有与采集相关的特性。
(1)采集控制(AcquisitionControl)
用于采集和触发控制特性的类别。
(2)采集模式(AcquisitionMode)
设置设备的采集模式。它主要定义了在采集过程中要捕获的帧数以及采集停止的方式。可能的值是:
- 单帧(SingleFrame):捕获一帧。
- 多帧(MultiFrame):捕获由采集帧计数(AcquisitionFrameCount)所指定的帧数。
- 连续(Continuous):连续捕获帧,直到使用采集停止(AcquisitionStop)命令停止。
这一特性对于大多数传输层的发射机和收发器通常是必须具备的。
<Enumeration NameSpace="Standard" Name="AcquisitionMode"> <ToolTip>Sets the acquisition mode of the device.</ToolTip> <Description>Sets the acquisition mode of the device.</Description> <DisplayName>Acquisition Mode</DisplayName> <Visibility>Expert</Visibility> <Streamable>Yes</Streamable> <EnumEntry NameSpace="Standard" Name="Continuous"> <pIsImplemented>AcqModeContinuousInq_Bit</pIsImplemented> <Value>2</Value> </EnumEntry> <EnumEntry NameSpace="Standard" Name="SingleFrame"> <pIsImplemented>AcqModeSingleFrameInq_Bit</pIsImplemented> <Value>0</Value> </EnumEntry> <EnumEntry NameSpace="Standard" Name="MultiFrame"> <pIsImplemented>AcqModeMultiFrameInq_Bit</pIsImplemented> <Value>1</Value> </EnumEntry> <pValue>AcquisitionMode_Reg</pValue> </Enumeration>
(3)开始采集(AcquisitionStart)
开始采集该设备。捕获的帧数由采集模式(AcquisitionMode)指定。
采集可能受到各种触发器的制约(参见触发器(Trigger)…特性)。在与采集相关的触发器生效之前,必须向设备发送采集启动命令。
请注意,除非 AcquisitionArm 自上次特性更改后执行,否则在 AcquisitionStart 之前必须验证所有当前特性的一致性。除非设备中的特性被更改,否则不会在随后的采集中重复此验证。
如果 AcquisitionStart 功能当前不可写(锁定),应用程序不能启动采集,并且必须避免使用该特性,直到功能再次成为可写。
这一特性对于大多数传输层的发射机和收发器通常是必须具备的。
<Command NameSpace="Standard" Name="AcquisitionStart"> <ToolTip>Starts the Acquisition of the device.</ToolTip> <Description>Starts the Acquisition of the device.</Description> <DisplayName>Acquisition Start</DisplayName> <Visibility>Expert</Visibility> <pIsLocked>NOT_TLParamsLocked</pIsLocked> <ImposedAccessMode>WO</ImposedAccessMode> <pValue>AcquisitionStart_Reg</pValue> <CommandValue>1</CommandValue> </Command> <MaskedIntReg NameSpace="Custom" Name="AcquisitionStart_Reg"> <pAddress>AcquisitionStart_RegAddr</pAddress> <Length>4</Length> <AccessMode>RW</AccessMode> <pPort>Device</pPort> <Bit>0</Bit> <Sign>Unsigned</Sign> <Endianess>BigEndian</Endianess> </MaskedIntReg>
(4)采集停止(AcquisitionStop)
在当前帧的末端停止设备的采集。它主要用于连续采集模式,但可用于任何采集模式。
如果相机正在等待触发器,待定的帧将被取消。如果没有正在进行的采集,则会忽略该命令。
这一特性对于大多数传输层的发射机和收发器通常是必须具备的。
<Command NameSpace="Custom" Name="AcquisitionStop"> <ToolTip>Stops the acquisition of the device at the end of the current frame.</ToolTip> <Description>Stops the acquisition of the device at the end of the current frame.</Description> <DisplayName>Acquisition Stop</DisplayName> <Visibility>Expert</Visibility> <ImposedAccessMode>WO</ImposedAccessMode> <pValue>AcquisitionStop_Reg</pValue> <CommandValue>0</CommandValue> </Command> <MaskedIntReg NameSpace="Custom" Name="AcquisitionStop_Reg"> <pAddress>AcquisitionStop_RegAddr</pAddress> <Length>4</Length> <AccessMode>RW</AccessMode> <pPort>Device</pPort> <Bit>0</Bit> <Sign>Unsigned</Sign> <Endianess>BigEndian</Endianess> </MaskedIntReg>
(5)采集停止模式(AcquisitionStopMode)
Name(名称) | AcquisitionStopMode |
Category(分类) | AcquisitionControl |
Level(级别) | Optional |
Interface(接口) | IEnum |
Access(访问) | Read/Write |
Unit (单位) | - |
Visibility(可见性) | Expert |
Values | Complete Immediate(立即) ImmediateWithPadding |
控制采集停止(AcquisitionStop)命令和采集如何停止使用触发器(例如采集活动(AcquisitionActive)、帧突发活动(FrameBurstActive)、帧活动(FrameActive)或帧结束(FrameEnd)触发器),结束正在进行的帧。该特性主要用于线性扫描(Linescan)设备,其中一帧中的每一行都是按顺序采集的。
完成(Complete):在帧期间停止时,设备将继续采集行,直到达到指定的高度,以提供完整的默认大小帧。请注意,如果每行都从外部源触发,并且此行触发停止,则不交付帧,并且需要采集中止。
立即(Immediate):即使在一帧期间,采集也会立即停止,只有在当时采集的线路才会被交付。
立即填充(ImmediateWithPadding):即使在一帧内,采集也会立即停止,但帧的其余部分将被数据填充起来,以提供一个完整的默认高度帧。注意:接收方如何知道哪些数据是有效的,这超出了此特性的范围,例如,它可以使用块信息来完成。
(6)采集中止(AcquisitionAbort)
(7)AcquisitionArm
(8)采集帧计数(AcquisitionFrameCount)
在多帧采集模式下要采集的帧数。
<Integer NameSpace="Standard" Name="AcquisitionFrameCount"> <ToolTip>Number of frames to acquire in multi-frame acquisition mode.</ToolTip> <Description>Number of frames to acquire in multi-frame acquisition mode.</Description> <DisplayName>Acquisition Frame Count</DisplayName> <Visibility>Expert</Visibility> <pIsImplemented>AcqModeMultiFrameInq_Bit</pIsImplemented> <pIsAvailable>AcquisitionFrameCountAvailableInq_Int</pIsAvailable> <pIsLocked>TLParamsLocked</pIsLocked> <Streamable>Yes</Streamable> <pValue>AcquisitionFrameCount_Reg</pValue> <pMin>AcqFrameCountMinInq_Reg</pMin> <pMax>AcqFrameCountMaxInq_Reg</pMax> <Inc>1</Inc> </Integer> <IntReg NameSpace="Custom" Name="AcquisitionFrameCount_Reg"> <pAddress>AcquisitionFrameCount_RegAddr</pAddress> <Length>4</Length> <AccessMode>RW</AccessMode> <pPort>Device</pPort> <pInvalidator>UserSetLoad_Reg</pInvalidator> <Sign>Unsigned</Sign> <Endianess>BigEndian</Endianess> </IntReg> <IntReg NameSpace="Custom" Name="AcqFrameCountMinInq_Reg"> <pAddress>AcqFrameCountMinInq_RegAddr</pAddress> <Length>4</Length> <AccessMode>RO</AccessMode> <pPort>Device</pPort> <Sign>Unsigned</Sign> <Endianess>BigEndian</Endianess> </IntReg> <IntReg NameSpace="Custom" Name="AcqFrameCountMaxInq_Reg"> <pAddress>AcqFrameCountMaxInq_RegAddr</pAddress> <Length>4</Length> <AccessMode>RO</AccessMode> <pPort>Device</pPort> <Sign>Unsigned</Sign> <Endianess>BigEndian</Endianess> </IntReg>
(9)AcquisitionBurstFrameCount
为每个 FrameBurstStart 触发器要采集的帧数。
只有在启用 FrameBurstStart 触发器并禁用 FrameBurstEnd 触发器时,才使用此功能。请注意,如果采集模式为多帧,则捕获的帧总数也受采集帧数的限制,如果采集模式为单帧,则忽略。
<Integer NameSpace="Standard" Name="AcquisitionBurstFrameCount"> <ToolTip>Number of frames to acquire for each FrameBurstStart trigger.</ToolTip> <Description>Number of frames to acquire for each FrameBurstStart trigger.</Description> <DisplayName>Acquisition Burst Frame Count</DisplayName> <Visibility>Expert</Visibility> <pIsAvailable>AcquisitionBurstFrameCountAvailableInq_Int</pIsAvailable> <pIsLocked>TLParamsLocked</pIsLocked> <Streamable>Yes</Streamable> <pValue>AcquisitionBurstFrameCount_Reg</pValue> <pMin>AcqBurstFrameCountMinInq_Reg</pMin> <pMax>AcqBurstFrameCountMaxInq_Reg</pMax> <Inc>1</Inc> </Integer> <IntReg NameSpace="Custom" Name="AcquisitionBurstFrameCount_Reg"> <pAddress>AcquisitionBurstFrameCount_RegAddr</pAddress> <Length>4</Length> <AccessMode>RW</AccessMode> <pPort>Device</pPort> <pInvalidator>UserSetLoad_Reg</pInvalidator> <Sign>Unsigned</Sign> <Endianess>BigEndian</Endianess> </IntReg> <IntReg NameSpace="Custom" Name="AcqBurstFrameCountMinInq_Reg"> <pAddress>AcqBurstFrameCountMinInq_RegAddr</pAddress> <Length>4</Length> <AccessMode>RO</AccessMode> <pPort>Device</pPort> <Sign>Unsigned</Sign> <Endianess>BigEndian</Endianess> </IntReg> <IntReg NameSpace="Custom" Name="AcqBurstFrameCountMaxInq_Reg"> <pAddress>AcqBurstFrameCountMaxInq_RegAddr</pAddress> <Length>4</Length> <AccessMode>RO</AccessMode> <pPort>Device</pPort> <Sign>Unsigned</Sign> <Endianess>BigEndian</Endianess> </IntReg>
(10)AcquisitionFrameRate(采集帧速率)
控制捕获帧时的采集速率(以赫兹为单位)。
帧触发器的触发模式(TriggerMode)必须关闭。
11)AcquisitionFrameRateEnable(采集帧速率启用)
控制采集帧速率特性是否可写并用于控制采集速率。否则,采集率是由其他功能的组合,如曝光时间等。
<Boolean Name="AcquisitionFrameRateEnable"> <ToolTip>Enables manual control of the camera frame rate.</ToolTip> <Description>Enables manual control of the camera frame rate.</Description> <DisplayName>Acquisition Frame Rate Control Enable</DisplayName> <Visibility>Beginner</Visibility> <pIsImplemented>AcqFrameRateEnInq_Bit</pIsImplemented> <Streamable>Yes</Streamable> <pValue>AcqFrameRateEnCtrlVal_Reg</pValue> <OnValue>1</OnValue> <OffValue>0</OffValue> </Boolean>
(12)AcquisitionLineRate(采集线路速率)
Name(名称) | AcquisitionLineRate |
Category(分类) | AcquisitionControl |
Level(级别) | Recommended |
Interface(接口) | IFloat |
Access(访问) | Read/Write |
Unit (单位) | Hz |
Visibility(可见性) | Beginner |
Values | Device-specific |
控制捕获一帧中的线的速率(单位为赫兹)。
线路触发器(Line trigger)的触发模式(TriggerMode)必须已关闭。这通常只适用于线扫描相机。
(13)AcquisitionLineRateEnable(采集线路速率启用)
控制采集线速率特性是否可写并用于控制采集速率。否则,采集率是由其他功能的组合,如曝光时间等。
(14)AcquisitionStatusSelector(采集状态选择器)
Name(名称) | AcquisitionStatusSelector |
Category(分类) | AcquisitionControl |
Level(级别) | Recommended |
Interface(接口) | IEnumeration |
Access(访问) | Read/Write |
Unit (单位) | - |
Visibility(可见性) | Expert |
选择使用采集状态来读取的内部采集信号。具体情况见图 5-1 和图 5-3 。可能的值包括:
- 采集触发器等待(AcquisitionTriggerWait):设备目前正在等待捕获一个或多个帧的触发器。
- 采集活动(AcquisitionActive ):设备目前正在采集一个或多个帧。
- 采集传输(AcquisitionTransfer):设备目前正在传输一个或多个帧的采集。
- 帧触发器等待(FrameTriggerWait):设备当前正在等待帧启动触发器。
- 帧活动(FrameActive):设备当前正在捕获一个帧。
- 曝光活动(ExposureActive):设备正在曝光一个帧。
- 帧传输(不用):请参见传输状态。
(15)AcquisitionStatus(采集状态)
读取使用 AcquisitionStatusSelector 所选择的内部采集信号的状态。
6. 触发控制功能(Trigger Control features)
触发器控制部分描述了使用触发器(s)与图像采集相关的所有特征。
可以使用一个或多个触发器(Triggers)来控制采集(Acquisition)(图 5-1) 、突发帧爆发(Burst of Frames)(图 5-2) 、单个帧(图 5-3 ) 或设备每一行帧(Line of a Frame)(图5-4) 的开始。触发器还可以用于控制在帧开始时的曝光持续时间。
TriggerSelector 用于选择要配置的触发器类型。标准触发类型是:AcquisitionStart, AcquisitionEnd, AcquisitionActive, FrameBurstStart, FrameBurstEnd, FrameBurstActive, FrameStart, FrameEnd, FrameActive, LineStart, ExposureStart, ExposureEnd 和 ExposureActive 。
TriggerMode 激活/停用触发器操作。它可以是 On 或 Off 。
TriggerSource 指定要用于选定触发器的物理输入线或内部信号。标准触发源是:Software, Line0, Line1, …, UserOutput0, UserOutput1, …, Counter0Start, Counter0End, …, Timer0Start, Timer0End , …, Encoder0, Encoder1, …, LogicBlock0, LogicBlock1, …, Action0, Action1, … , LinkTrigger0, LinkTrigger1, …。
通过软件触发源,TriggerSoftware 命令可以被应用程序用来生成内部触发信号。
对于硬件触发器源,TriggerActivation 指定了触发器的激活模式。这可以是 RisingEdge, FallingEdge, AnyEdge, LevelHigh 或 LevelLow 。
TriggerOverlap 指定允许与前一帧/行重叠的触发器重叠的类型。这定义何时为新帧/行接受(或锁定)有效触发器。这可以关闭以使没有重叠,读出在曝光周期后立即接受触发器,或前帧/前行接受(锁存)在前一帧/行开始后的任何时间发生的触发器。如果基于触发器重叠控制和当前传感器状态丢弃一个触发器,则它将成为一个丢失的触发器。这表示一种过度触发的情况,通常被认为是一个可以连接到一个事件的错误。(TriggerOverlap specifies the type of trigger overlap permitted with the previous frame/ line. This defines when a valid trigger will be accepted (or latched) for a new frame/line. This can be Off for no overlap, ReadOut to accept a trigger immediately after the exposure period or PreviousFrame/PreviousLine to accept (latch) a trigger that happened at any time after the start of the previous frame/Line. If a trigger is discarded based on the trigger overlap control and the current sensor state, it becomes a missed trigger. This represents an over triggering situation and is typically considered as an error which can be connected to an Event.)
TriggerDelay 指定在触发信号接收后有效激活前应用的延迟。
TriggerDivider 和 TriggerMultiplier 用于控制被接受的触发器的比例。
注意,在 Dividers, Multipliers, Delay,… 之后,一个触发器被认为是有效的。
例如,为了设置硬件触发采集,将在来自物理 Line 1 的信号的上升边缘开始捕获每个帧,可以使用以下伪代码:
Camera.TriggerSelector = FrameStart; Camera.TriggerMode = On; Camera.TriggerActivation = RisingEdge; Camera.TriggerSource = Line1;
下图显示了 SFNC 中触发器生成的函数模型。
它显示了在外部线路上接收的输入信号可以通过成为有效触发器(例如:FrameTrigger)。
图 5-16 :触发器生成函数模型。
输入信号(Input Signal)表示在外部线路上接收到的电信号或内部信号。
线路I/O控制(Line I/O Control)表示如图 6-1 所示的线路控制块。
触发模式/激活(Trigger Mode/Activation)表示触发器模式和触发器激活功能的效果。
触发除法器/乘法器(Trigger Divider/Multiplier)表示触发除法器和触发乘法器特性的效果。
触发延迟(Trigger Delay)表示触发延迟特性的效果
触发重叠控制(Trigger Overlap Control)表示触发器重叠特性的效果。
有效触发器(Valid Trigger)表示传入信号成为有效触发器。
错过触发器(Missed Trigger)表示传入信号没有成为有效的触发器。
(1)TriggerSelector(触发器选择器)
选择要配置的触发器的类型。具体情况见图 5-1 和图 5-3 。可能的值包括:
AcquisitionStart:根据采集模式(AcquisitionMode)选择启动一个或多个帧的触发器。
AcquisitionEnd:根据采集模式(AcquisitionMode)选择结束采集一个或多个帧的触发器。
AcquisitionActive:选择一个触发器,控制一个或多个帧的采集持续时间。
当触发信号变为活动时,采集被激活,当它返回到非活动状态时,采集被终止。
FrameStart:选择一个触发器来开始捕获一个帧。
FrameEnd:选择一个触发器来结束对一帧的捕获(主要用于线扫描模式)。
FrameActive:选择一个触发器来控制一帧的持续时间(主要用于线扫描模式)。
FrameBurstStart:选择一个触发器,来开始捕获采集中的帧突发。当 FrameBurstEnd 触发器激活时,AcquisitionBurstFrameCount 控制每个突发的长度 。如果采集模式是多帧的,则捕获的帧数总数也受到采集帧数的制约。
FrameBurstEnd:选择一个触发器,来结束捕获采集中的帧突发。
FrameBurstActive:选择一个触发器来控制采集中帧突发捕获的持续时间。
LineStart:选择一个触发器,开始捕获一个帧中的一行(主要用于线扫描模式)。
ExposureStart:选择一个触发器来控制一帧(或线)的曝光开始。
ExposureEnd:选择一个触发器来控制一个帧(或线)的曝光结束。
ExposureActive:选择一个触发器来控制一帧(或线)的曝光时间。
MultiSlopeExposureLimit1:选择个触发器来控制多坡曝光的第一个持续时间。根据预定义的多坡度设置继续曝光。
(2)TriggerMode(触发模式)
控制所选的触发器是否处于活动状态。可能的值是:
- Off:禁用所选的触发器。
- 开启:启用所选的触发器。
<Enumeration Name="TriggerMode" NameSpace="Standard"> <!-- Recommended element --> <ToolTip>Controls if the selected trigger is active.</ToolTip> <Description>Controls if the selected trigger is active.</Description> <DisplayName>Trigger Mode</DisplayName> <Visibility>Beginner</Visibility> <ImposedAccessMode>RW</ImposedAccessMode> <EnumEntry Name="Off" NameSpace="Standard"> <ToolTip>Disables the selected trigger.</ToolTip> <Description>Disables the selected trigger.</Description> <DisplayName>Off</DisplayName> <Value>0</Value> </EnumEntry> <EnumEntry Name="On" NameSpace="Standard"> <ToolTip>Enable the selected trigger.</ToolTip> <Description>Enable the selected trigger.</Description> <DisplayName>On</DisplayName> <Value>1</Value> </EnumEntry> <Value>0</Value> </Enumeration>
SFNC —— 采集控制(四)(下):https://developer.aliyun.com/article/1598548