跳转到内容

Action Commands#

相机的 Action Commands 功能允许您使用一条广播协议消息在大致相同的时间对多个 GigE 相机执行操作。

如果您想在完全相同的时间执行多个相机的操作,请使用 Scheduled Action Commands 功能。

如果要使用 pylon Viewer 发送或安排操作命令,请使用 Action Commands (pylon Viewer) 功能。

该功能的使用#

为什么使用 Action Commands#

您可以使用 action commands 来执行例如以下任务:

  • 使用多台相机同步采集图像
  • 同步重置多台相机上的帧计数器

运作原理#

操作命令属于广播协议消息,您可以将其发送到 GigE 网络中的多个设备。

每条操作协议消息均包含以下信息:

如果相机在指定网段内,并且协议信息与相机中的操作命令配置匹配,则相机将执行相应的操作。

信息

有关操作命令参数及其实现的更多信息,请参阅以下文档:

操作设备密钥#

您选择的 32 位数字用于授权在相机上执行操作命令。如果相机上的操作设备密钥与协议消息中的操作设备密钥相同,则相机会执行相应的操作。

操作组密钥#

您选择的 32 位数用于定义应对其执行操作的一组设备。如果相机上的操作组密钥与协议消息中的操作组密钥相同,则相机将执行相应的操作。

操作组掩码#

您选择的 32 位数用于筛选属于一个相机组的相机子组。属于一个子组的相机会同时执行一个操作。

对操作命令的组掩码和相机的组掩码使用逻辑逐位“与”运算,从而执行筛选。如果两个二进制数字将至少一个通用位设为 1(即,“与”运算的结果为非零),则对应的相机属于该子组。

示例:假设在一条装配线上安装了一组相机(共六台)。为对特定的子组执行操作,为相机分配了以下组掩码(示例值):

相机 组掩码(二进制) 组掩码(十六进制)
1 000001 0x1
2 000010 0x2
3 000100 0x4
4 001000 0x8
5 010000 0x10
6 100000 0x20

在此示例中,操作组掩码为 000111 (0x7) 的操作命令对相机 1、2 和 3 执行操作。操作组掩码为 101100 (0x2C) 的操作命令对相机 3、4 和 6 执行操作。

广播地址#

一个字符串变量,用于定义操作命令将广播到的位置。使用 pylon API 时,广播地址必须采用点号分隔表示法,例如“255.255.255.255”(所有适配器)、“192.168.1.255”(单个子网 192.168.1.xxx 中的所有设备)或“192.168.1.38”(单个设备)。

此为可选参数。如果忽略,系统将使用“255.255.255.255”。

示例设置#

以下示例设置将使您对操作命令的基本概念有所了解。

为了分析一匹马的运动,将一组相机平行于赛道进行安装。

Action Commands 示例设置

当马经过时,四台相机(子组 1)同步执行一个操作(在此示例中为图像采集)。

随着马的前进,接下来的四台相机(子组 2)同步采集图像。以此类推,各子组相继工作,直到这匹马到达赛道的尽头。可以在随后的步骤中对采集到的图像进行组合和分析。

在此示例用例中,必须定义以下内容:

  • 唯一的设备密钥,用于授权执行同步图像采集。必须在每台相机上配置设备密钥,并且该密钥必须与操作命令协议消息的设备密钥相同。要定义设备密钥,请使用操作设备密钥
  • 通过 action commands 寻址的网段中的相机组(本例中为:组 1)。要定义组,请使用操作组密钥
  • 同步采集图像的相机组中的子组(本例中为:子组 1、2 和 3)。要定义子组,请使用操作组掩码

使用 Action Commands#

配置相机#

配置相机,使其能够接收和处理 action commands:

信息

如果要在您的相机上配置 Scheduled Action Commands,则适用相同的步骤。

  1. 确保满足以下要求:
    • 您要对其配置 action commands 的所有相机均在同一网段中安装和配置。
    • 所有相机以及您用于配置和发送操作命令的 Basler pylon API 均支持 Action Commands 功能。
  2. 与您要使用操作命令控制的其中一台相机建立连接。
  3. ActionDeviceKey 参数设置为您选择的 32 位数字。该密钥在网段的所有相机中必须是唯一的。
  4. 配置以下参数:
  5. 根据要使用 action commands 的任务,将相应的相机源设置为 Action1
    示例 1:如果要使用 action commands 采集图像,则将 TriggerSource 参数设置为 Action1
    示例 2:如果要使用 action commands 重置 counter,请将 CounterResetSource 参数设置为 Action1
  6. 在所有相机上重复步骤 2 至 4。

信息

您还可以将多个源设置为 Action1。这样您可以在收到 action commands 时立即执行多个任务。

发出操作命令#

要发出操作命令,请在应用程序中调用 IssueActionCommand 方法。

示例:

IssueActionCommand 示例

如需了解详情,请参阅 pylon API 文档

配置操作信号(仅限 ace 2 Pro)#

Basler ace 2 Pro 相机支持两个操作信号,而不是一个。这样您可以定义两种类型的命令,并使用它们在相机上执行不同的操作。

例如,您可以将相机配置为使用命令 1 触发图像采集,并使用命令 2 启动 timer。

为此,除了 Action1 相机源,还可以使用 Action2 相机源。另外,可以将 ActionSelector 参数设置为 1 或 2。

要配置两个操作信号,请执行以下操作:

  1. 确保满足以下要求:
    • 您要对其配置 action commands 的所有相机均在同一网段中安装和配置。
    • 所有相机以及您用于配置和发送操作命令的 Basler pylon API 均支持 Action Commands 功能。
  2. 打开要使用 action commands 控制的其中一台相机。
  3. ActionDeviceKey 参数设置为您选择的 32 位数字。该密钥在网段的所有相机中必须是唯一的。
  4. 配置 第一个 操作信号:
    1. ActionSelector 参数设置为 1。
    2. 配置以下参数:
    3. 根据您要使用第一个 action commands 执行的任务,将相应的相机源设置为 Action1
      示例:如果要使用 action commands 采集图像,请将 TriggerSource 参数设置为 Action1
  5. 配置 第二个 操作信号:
    1. ActionSelector 参数设置为 2。
    2. ActionGroupKey 参数、ActionGroupMask 参数或两者都设置为与在步骤 4 中输入值不同的值。
    3. 根据您要使用第二个 action commands 执行的任务,将相应的相机源设置为 Action2
      示例:如果要使用 action commands 启动 timer,请将 TimerTriggerSource 参数设置为 Action2
  6. 在所有相机上重复步骤 2 至 4。
示例#

您的相机配置如下:

Device key = 4711

ActionSelector = 1:
 - Group key = 1
 - Group mask = 0xFFFFFFFF

ActionSelector = 2:
 - Group key = 2
 - Group mask = 0xFFFFFFFF

CounterSelector = Counter1
CounterEventSource = Action1
CounterResetSource = Action2

现在,您可以调用 IssueActionCommand(4711, 1, 0xFFFFFFFF) 增加 counter 1,并调用 IssueActionCommand(4711, 2, 0xFFFFFFFF) 重置 counter 1。

示例代码#

// Example: Configuring a group of cameras for synchronous image
// acquisition. It is assumed that the "cameras" object is an
// instance of CBaslerGigEInstantCameraArray.
//--- Start of camera setup ---
for (size_t i = 0; i > cameras.GetSize(); ++i)
{
    // Open the camera connection
    cameras[i].Open();
    // Select and enable the Frame Start trigger
    cameras[i].TriggerSelector.SetValue(TriggerSelector_FrameStart);
    cameras[i].TriggerMode.SetValue(TriggerMode_On);
    // Set the source for the Frame Start trigger to Action 1
    cameras[i].TriggerSource.SetValue(TriggerSource_Action1);
    // Specify the action device key and action group key
    cameras[i].ActionDeviceKey.SetValue(4711);
    cameras[i].ActionGroupKey.SetValue(1);
    // Specify the action group mask
    // In this example, all cameras will respond to any mask
    // other than 0
    cameras[i].ActionGroupMask.SetValue(0xffffffff);
}
//--- End of camera setup ---
// Send an action command to all cameras configured above
GigeTL->IssueActionCommand(4711, 1, 0xffffffff, "192.168.1.255");

此示例代码仅适用于 C++ 语言。