Action Commands#
複数のカメラできっちり同時に操作を実行したい場合は、Scheduled Action Commands機能を代わりに使用します。
pylon Viewerを使用してアクションコマンドを送信またはスケジュールする場合、Action Commands(pylon Viewer)機能を使用します。
機能を使用する#
Action Commandsを使用する理由#
アクションコマンドを使用して、次のタスクを実行できます。
- 複数のカメラで画像を同期取得
- 複数のカメラのフレームカウンターを同期的にリセット
仕組み#
アクションコマンドは、GigEネットワーク内の複数のデバイスに送信できるブロードキャストプロトコルメッセージです。
各アクションプロトコルメッセージには、次の情報が含まれています。
- アクションデバイスキー
- アクショングループキー
- アクショングループマスク
- ブロードキャストアドレス(オプション、デフォルト:255.255.255.255)
カメラが指定されたネットワークセグメント内にあり、プロトコル情報がカメラのアクションコマンド設定と一致する場合、カメラは対応するアクションを実行します。
情報
アクションコマンドのパラメーターとその実装の詳細については、次のドキュメントを参照してください。
- GigE Vision Specification、バージョン2.0、セクション14.3
- 「pylon APIドキュメント」のGrab_UsingActionCommand (C++)コードサンプル
アクションデバイスキー#
カメラでアクションコマンドの実行を許可するために使用する32ビットの数値。カメラのアクションデバイスキーとプロトコルメッセージのアクションデバイスキーが同じ場合、カメラは対応するアクションを実行します。
アクショングループキー#
操作を実行するデバイスのグループを定義するために使用する32ビットの数値。カメラのアクショングループキーとプロトコルメッセージのアクショングループキーが同じ場合、カメラは対応する操作を実行します。
アクショングループマスク#
カメラのグループに属するカメラのサブグループを抜き出すために使用する32ビットの数値。サブグループに属するカメラは、同時にアクションを実行します。
フィルタリングは、アクションコマンドのグループマスク番号とカメラのグループマスク番号に対してビット単位の論理AND演算を使用して行われます。両方のバイナリ番号に1つ以上の共通ビットが1に設定されている場合(つまり、AND演算の結果がゼロ以外の場合)、対応するカメラはサブグループに属します。
例:6台のカメラのグループがアセンブリラインに接地されているとします。特定のサブグループに対してアクションを実行するために、次のグループマスク番号がカメラに割り当てられています(サンプル値)。
カメラ | グループマスク番号(2進数) | グループマスク番号(16進数) |
---|---|---|
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」が使用されます。
例のセットアップ#
次のセットアップ例で、アクションコマンドの基本的な概念について説明します。
馬の動きを分析するために、カメラのグループはレーストラックに平行に設置されています。
馬が通過すると、4台のカメラ(サブグループ1)が同期的にアクション(この例では画像取得)を実行します。
馬が進むにつれて、次の4台のカメラ(サブグループ2)は画像を同期的にキャプチャします。馬がレーストラックの最終地点に到達するまで、サブグループは次々とこのアクションを続行します。生成された画像は、後の手順で組み合わせて分析できます。
この使用例では、次の項目を定義する必要があります。
- 同期画像取得の実行を許可する一意のデバイスキー。デバイスキーは各カメラで設定する必要があり、アクションコマンドプロトコルメッセージのデバイスキーと同じである必要があります。デバイスキーを定義するには、アクションデバイスキーを使用します。
- アクションコマンド(この例ではグループ1)で指定されるネットワークセグメント内のカメラのグループ。グループを定義するには、アクショングループキーを使用します。
- 画像を同期的にキャプチャするカメラグループ内のサブグループ(この例では、サブグループ1、2、3)。サブグループを定義するには、アクショングループマスクを使用します。
Action Commandsの使用#
カメラの設定#
アクションコマンドを受信して処理できるようにカメラを設定するには、次の手順を実行します。
情報
カメラでScheduled Action Commandsを設定する場合も、同じ手順を適用します。
- 次の要件が満たされていることを確認します。
- アクションコマンドを設定するすべてのカメラが、同じネットワークセグメントに設置され、設定されます。
- Action Commands機能は、すべてのカメラと、アクションコマンドの設定と送信に使用するBaslerpylon APIによってサポートされています。
- アクションコマンドを使用して、制御するいずれかのカメラへの接続を開きます。
- パラメーターを
ActionDeviceKey
parameter to a 32-bit number of your choice. The key must be unique among all cameras in the network segment. - 次のパラメーターを設定します。
- Depending on which task you want to use action commands for, set the corresponding camera source to
Action1
.
Example 1: If you want to use action commands to acquire images, set theTriggerSource
parameter toAction1
.
Example 2: If you want to use action commands to reset a counter, set theCounterResetSource
parameter toAction1
. - すべてのカメラで手順2~4を繰り返します。
情報
You can also set multiple sources to Action1
. This allows you to execute multiple tasks at once whenever an action command is received.
アクションコマンドの発行#
To issue an action command, call the IssueActionCommand
method in your application.
例:
詳細については、「pylon APIドキュメント」を参照してください。
アクションシグナルの設定(ace 2 Proのみ)#
Basler ace 2 Proカメラは、1つではなく2つのアクションシグナルをサポートしています。これにより、2つのタイプのコマンドを定義し、それらを使用してカメラによって異なる操作を実行できます。
例えば、コマンド1で画像取得をトリガーし、コマンド2でタイマーを開始するようにカメラを設定できます。
For this purpose, in addition to the Action1
camera sources, Action2
camera sources are available. Also, the ActionSelector
parameter can be set to 1 or 2.
2つのアクションシグナルを設定するには、次の手順に従います。
- 次の要件が満たされていることを確認します。
- アクションコマンドを設定するすべてのカメラが、同じネットワークセグメントに設置され、設定されます。
- Action Commands機能は、すべてのカメラと、アクションコマンドの設定と送信に使用するBaslerpylon APIによってサポートされています。
- アクションコマンドを使用して、制御するいずれかのカメラを開きます。
- パラメーターを
ActionDeviceKey
parameter to a 32-bit number of your choice. The key must be unique among all cameras in the network segment. - 割り当ての設定は 最初に アクションシグナル:
- パラメーターを
ActionSelector
parameter to 1. - 次のパラメーターを設定します。
- Depending on which task you want to use the first action command for, set the corresponding camera source to
Action1
.
例: If you want to use action commands to acquire images, set theTriggerSource
parameter toAction1
.
- パラメーターを
- 割り当ての設定は 第2に アクションシグナル:
- パラメーターを
ActionSelector
parameter to 2. - パラメーターを
ActionGroupKey
parameter or theActionGroupMask
parameter or both to a different value than you entered in step 4. - Depending on which task you want to use the second action command for, set the corresponding camera source to
Action2
.
例: If you want to use action commands to start a timer, set theTimerTriggerSource
parameter toAction2
.
- パラメーターを
- すべてのカメラで手順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
Now, you can call IssueActionCommand(4711, 1, 0xFFFFFFFF)
to increase counter 1, and IssueActionCommand(4711, 2, 0xFFFFFFFF)
to reset 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++言語でのみ使用できます。