Operator CXPDualCamera

Operator Library: Hardware Platform

此 Operator 表示 CXP 双通道相机与 VisualApplets 之间的图像数据接口。

适用于以下硬件平台
mE5 marathon VCX-QP
mE5 ironman VQ8-CXP6D
mE5 ironman VQ8-CXP6B

该 Operator 在其输出端 O 上提供图像数据。此输出端始终存在。

除此标准输出端口外,如果您的设计需要,还可以指定各种可选端口。

Operator 实例化期间将出现以下弹出对话框:

您可以在此处指定通过 CXP 电缆进行通用输入和输出的可选端口,以及往返于相机的可选触发端口。

您可以定义特定 GPI(通用输入)、特定 GPO(通用输出)、触发输入端口和触发输出端口的可用性。

如果将端口可用性设置为“0”(默认值),则该端口将不存在于 Operator 中。如果将端口可用性设置为 1,则该特定端口可在 Operator 接口上使用。

该 Operator 使用 2 个类型为 CameraPort 的资源。

[重要] 修改图像宽度和图像高度

您可以将宽度和高度修改为相机特定的设置。但是,Operator 端口 O 上的最大图像宽度必须能够被端口 O 的 Parallelism 整除。

确保最大图像宽度能够被端口 O 的 Parallelism 整除!

[重要] Parallelism 的值

端口 O 上的 Parallelism 必须至少设置为最小值(在参数 MinimalParallelism 中说明)。不允许使用更小的 Parallelism 值。最小 Parallelism 是由 VisualApplets 根据您为此 Operator 的其他参数定义的值计算得出的。这样,始终可以接收传入的数据。

[重要] 虚拟像素 (Dummy Pixels)

输出数据可能包含虚拟像素。这是因为 Operator 可能会转换两次 Parallelism。首先,Operator 在内部转换为其计算出的最小 Parallelism,并在参数 MinimalParallelism 中作为只读值提供。这会产生一个内部图像宽度,该宽度能够被 MinimalParallelism 整除,并且由于 Parallelism 转换可能会添加额外的虚拟值。其次,如果第一次 Parallelism 转换产生的填充图像宽度不是 O.Parallelism 的倍数,Operator 会将 Parallelism 转换为 O.Parallelism,这可能会添加更多虚拟值。因此,输出数据是否包含虚拟像素取决于 MinimalParallelism 参数、图像宽度和 O.Parallelism。每次 Parallelism 转换都可能会添加虚拟像素。附加的虚拟像素包含未定义的数据值,并导致图像宽度偏离真实的图像宽度。

示例:如果 MinimalParallelism 为 12,O.Parallelism 为 32,并且传输的图像宽度为 128 像素,由于 MinimalParallelism 参数中定义的内部 Parallelism,Operator 在内部创建宽度为 132 的图像行。对于输出,数据向量转换为 Parallelism 32(O.Parallelism),这会导致图像行宽度为 160 像素。

由于虚拟像素的存在,预期的输出图像宽度为:

[重要] Bit Width 和格式类型

端口 O(图像端口)上的 Bit Width 取决于所选的格式类型(参数 FormatType):

  • 如果 FormatType = Gray:Bit Width 可以具有任意值(VAF_Gray 和 FL_NONE)。
  • 如果 FormatType = RGB:Bit Width 是 3 的倍数(VAF_Color 和 FL_RGB)
  • 如果 FormatType = RGBA:Bit Width 是 4 的倍数(VAF_Gray 和 FL_NONE)
  • If FormatType = RAW: Bit Width is 32 (VAF_Gray and FL_NONE)

I/O Property

Property 值
Operator Type M
输入链路 - TriggerI(可选),从采集卡通过 CXP 通道发送到相机的触发信号。此端口通常用于触发线阵相机。
- GPIx(可选),从采集卡通过 CXP channel 发送到相机的通用输入 [x]。可用选项包括 GPI0、GPI1、GPI2、GPI3、GPI4、GPI5、GPI6 和 GPI7。
Output Links - O,图像数据输出
- TriggerO(可选),从相机通过 CXP 通道发送到采集卡的触发信号。
- GPOx(可选),从相机通过 CXP 通道发送到采集卡的通用输出 [x]。可用选项包括 GPO0、GPO1、GPO2、GPO3、GPO4、GPO5、GPO6 和 GPO7。

Supported Link Format

Link Parameter Output Link - O Input Link - TriggerI (optional) Output Link - TriggerO (optional) Input Link - GPIx (optional) Output Link - GPOx (optional)
Bit Width any 1 1 1 1
Arithmetic unsigned unsigned unsigned unsigned unsigned
Parallelism any1 1 1 1 1
Kernel Columns 1 1 1 1 1
Kernel Rows 1 1 1 1 1
Img Protocol {VALT_IMAGE2D, VALT_LINE1D} (default: VALT_IMAGE2D) VALT_SIGNAL VALT_SIGNAL VALT_SIGNAL VALT_SIGNAL
Color Format {VAF_GRAY, VAF_COLOR}

VAF_GRAY = FL_NONE

VAF_COLOR = FL_RGB

(如果 Color Format 为 VAF_GRAY,则 Color Flavor 为 FL_NONE;如果 Color Format 为 VAF_COLOR,则 Color Flavor 为 FL_RGB。)

VAF_GRAY VAF_GRAY VAF_GRAY VAF_GRAY
Color Flavor {FL_NONE, FL_RGB}

VAF_GRAY = FL_NONE

VAF_COLOR = FL_RGB

(如果 Color Format 为 VAF_GRAY,则 Color Flavor 为 FL_NONE;如果 Color Format 为 VAF_COLOR,则 Color Flavor 为 FL_RGB。)

FL_NONE FL_NONE FL_NONE FL_NONE
Max. Img Width 任意(默认值:1024) 1 1 1 1
Max. Img Height 任意(默认值:1024) 1 1 1 1

1

必须至少将其设置为参数 MinimalParallelism 中规定的最小值。

如果 MinimalParallelism 与 O.Paralleism 各不相同,则并行度将被转换两次,并且每次都可能会添加虚拟值。由于这些虚拟像素,预期的输出图像宽度为:

参数

CameraID
键入 静态写参数
默认
范围 {-1, 0, 1, 2, 3}

CameraID 参数定义了相机算子固件的 CXP 主端口 ID,以允许自动发现 CXP 拓扑(相机到小应用程序以及小应用程序到相机)。

通过使用此参数,您可以直接在此算子中指定 ID。不过,我们建议在“Resources”对话框中指定算子的资源。(要打开“Resources”对话框,只需突出显示相机算子,然后从“Design”菜单中选择菜单项“Resources”。)CameraID 参数将使用资源对话框参数自动更新为正确的主端口。以下示例使用了一个单相机和一个双相机:

module3(单相机)的 CameraID(CXP 主端口 ID)为 2。module5(双相机)的 CameraID(CXP 主端口 ID)为 1。

双相机需要 2 个 CXP 相机端口。(四相机需要 4 个端口。)算子的 CameraID 参数中仅反映主端口。

当您定义的 CameraPort 资源超出可能数量(最大值为 4)时(例如,当您实例化 5 个 "CXPSingleCamera" 算子时),最后请求 CameraPort 资源的相机算子(此时所有四个可用资源已被占用)将其 CameraID 设置为 -1。在这种情况下,设计规则检查将报告错误。

参数 CameraID 的范围为 {-1,0,1,2,3}。

MinimalParallelism
键入 静态读取参数
默认 12
范围 [1 : 512]

一个只读参数,提供输出链接 O 的最小 Parallelism,该 Parallelism 仍允许传输相机的最大带宽而不会丢失数据。最小 Parallelism 是自动计算的。

该值取决于您在参数 FormatMode 中选择的 Pixel Format。

如果您将参数 FormatMode 定义为 dynamic 参数(请参阅下方参数 FormatMode 的说明),则会计算可能出现的最小 Parallelism 的最小值。

最小的 Parallelism 可能会导致创建虚拟像素,因为算子可能会在此过程中进行两次 Parallelism 转换并添加虚拟值。由于这些虚拟像素,预期的输出图像宽度为:

状态
键入 动态只读参数
默认
范围 {0; 2^7-1}

Status 参数是一个运行时只读参数,用于反映相机算子的当前状态。Bit[0] 表示检测到 CXP 数据流数据包丢失。Bit[1] 表示 CXP 数据流数据包中的单字节纠错。Bit[2] 表示 CXP 数据流数据包中的多字节错误检测。Bit[3..6] 为保留位。 此参数可能会在未来的版本中更改。

FormatType
键入 静态写参数
默认 GRAY
范围 GRAY, RGB, RGBA, RAW

在此处,您可以选择要接收的 Pixel Format 类型(由 CXP 规范定义)。 您在此处选择的值决定了参数 FormatMode 中可选择的 Pixel Format。 因此,此参数的设置会直接影响参数 FormatMode。 另请参见下方参数 FormatMode 的文档。

FormatMode
键入 静态或动态(用户定义)写参数
默认 Mono8
范围 {Mono8, Mono10, Mono12, Mono14, Mono16, BayerGR8, BayerGR10, BayerGR12, BayerGR14, BayerGR16, BayerRG8, BayerRG10, BayerRG12, BayerRG14, BayerRG16, BayerGB8, BayerGB10, BayerGB12, BayerGB14, BayerGB16, BayerBG8, BayerBG10, BayerBG12, BayerBG14, BayerBG16, RGB8, RGB10, RGB12, RGB14, RGB16, RGBA8, RGBA10, RGBA12, RGBA14, RGBA16, Raw}

该参数提供属于您在参数 FormatType 中所选格式类型的所有 Pixel Format (由 CXP 规范定义)。

您在此处可以选择的 Pixel Format 取决于参数 FormatType 的设置。 因此,您始终只能使用完整值范围的预设子集。

若要获取另一组 Pixel Format, 请更改参数 FormatType 的设置。另请 参见上方参数 FormatType 的文档。

详细而言,参数 FormatType 的以下设置 在参数 FormatMode 中提供以下 Pixel Format:

FormatType == GRAY: {Mono8, Mono10, Mono12, Mono14, Mono16, BayerGR8, BayerGR10, BayerGR12, BayerGR14, BayerGR16, BayerRG8, BayerRG10, BayerRG12, BayerRG14, BayerRG16, BayerGB8, BayerGB10, BayerGB12, BayerGB14, BayerGB16, BayerBG8, BayerBG10, BayerBG12, BayerBG14, BayerBG16}

FormatType == RGB: {RGB8, RGB10, RGB12, RGB14, RGB16}

FormatType == RGBA: {RGBA8, RGBA10, RGBA12, RGBA14, RGBA16}

FormatType == RAW: {Raw} Pixel format Raw has a fix bit width of 32Bit. The data are interpreted as received.

您可以决定是将此参数用作动态参数还是静态参数。请在“Parameter Type”列中进行选择:

TxTriggerPacketMode
键入 动态写入参数
默认 CxpStandard
范围 {CxpStandard, RisingEdgeOnly}

通过参数 TxTriggerPacketMode,您可以增加 连接采集卡与相机的 CXP 线缆的带宽。 带宽的增加是通过稍微修改相机触发信号的解释来实现的。

请注意,此功能只能用于支持该功能的特定相机。有关详情,请联系您的当地经销商或 Basler 支持部门。

参数 TxTriggerPacketMode 允许两个值 (CxpStandard、RisingEdgeOnly):

  • CxpStandard:推荐设置为 CxpStandard 值。如果设置为 CxpStandard 值,相机触发将 按照 CXP 规范进行工作。(CXP 规范 规定采集卡通过 CXP 线缆向相机发送两个数据包, 以便触发相机一次。)

  • RisingEdgeOnly:如果设置为 RisingEdgeOnly 值, 采集卡只向相机发送一个数据包, 以便触发相机一次。其结果是带宽增加, 行频更高。

TxTriggerEventCount
键入 动态只读参数
默认 0
范围 {0;2^20-1}

TxTriggerEventCount 参数 指示已向相机发送了多少个触发边沿事件。

TxTriggerAcknowledgementCount
键入 动态只读参数
默认 0
范围 {0;2^20-1}

采集卡已接收到多少个由相机发送的触发确认数据包(作为对先前发送的触发边沿数据包的回应), TxTriggerAcknowledgementCount 参数 即指示这一数量。

TxTriggerWaveformViolation
键入 动态只读参数
默认 0
范围 {0,1}

如果相机操作员检测到 TriggerI 端口上的两个触发边沿之间的距离违反了最小边沿频率,则相机操作员会将该 Property 设置为 1。在所有 microEnable 5 平台上,最小边沿频率为 550 ns(纳秒)。该 Property 会保持其值,直到被读取。读取后,该 Property 会更新其值。频率控制一直在持续运行,不受该 Property 读取状态的影响。

使用示例

以下示例展示了 CXPDualCamera 算子的使用方法: