コンテンツにスキップ

Sequencer(ace Classic/U/L USB)#

Sequencerカメラ機能を使用すると、一連のパラメーター設定を定義し、連続した画像取得に適用できます。

シーケンサーセットと呼ばれる最大32セットのパラメーター設定を定義できます。カメラが画像を取得すると、シーケンサーセットが1つずつ順番に適用されます。これにより、最大フレームレートを損なうことなく、カメラのパラメーターを迅速に変更できます。

例えば、Sequencer機能を使用して、設定済みの画像ROIまたは露光時間をすばやく変更できます。

機能を使用する#

Sequencerモード#

  • シーケンサーモードでは、シーケンサーが画像取得を制御します。この状態では設定できません。
  • シーケンサー設定モードで、シーケンサーは設定できますが、画像取得は制御しません。

シーケンサーモードを有効にするには、次の手順に従います。

  1. Set all auto functions (e.g., Gain Auto, Exposure Auto) to Off.
  2. Set the SequencerMode parameter to On.

シーケンサー設定モードを有効するには、次の手順に従います。

  1. Set the SequencerMode parameter to Off.
  2. Set the SequencerConfigurationMode parameter to On.

情報

acA1920-25uc/umおよびacA2500-14uc/umカメラでは、異なるシーケンサーセットを使用して画像を取得する場合、オーバーラップ画像取得はできません。カメラで全露光プロセスおよび全読み出しプロセスを完了すると、新しいシーケンスセットをロードできます。その結果、フレームレートが大幅に低下する場合があります。

What's in a Sequencer Set?#

Sequencerセットには、次のパラメーターが含まれます(使用可能な場合)。

  • AcquisitionFrameRate
  • AcquisitionFrameRateEnable
  • BalanceRatio
  • BinningHorizontal
  • BinningVertical
  • BlackLevel
  • CenterX
  • CenterY
  • ChunkEnable
  • ChunkModeActive
  • ColorAdjustmentHue
  • ColorAdjustmentSaturation
  • ColorTransformationValue
  • CounterDuration (for Counter 2)
  • CounterEventSource
  • CounterResetSource
  • DigitalShift
  • ExposureTime
  • Gain
  • Height
  • LUTEnablea
  • OffsetX
  • OffsetY
  • PixelFormatb
  • ReverseX
  • ReverseYc
  • ScalingHorizontal
  • SequencerSetNext
  • SequencerSetPath
  • SequencerSetSelector
  • SequencerSetStart
  • SequencerTriggerActivation
  • SequencerTriggerSource
  • TestImageSelector
  • TimerDelay (for Timer 1)
  • TimerDuration (for Timer 1)
  • Width

他のすべてのカメラパラメーターは、Sequencer機能を使用して制御できません


  1. Only contained if the Gamma parameter is set to 1.0 and the LightSourcePreset parameter is set to Off.

  2. 次のカメラモデルでのみ使用可能:acA640-750um/UC、acA800-510um/UC、acA1300-200um/UC、acA1920-150um/UC、acA2500-60um/UC。

  3. 次のカメラモデルでは使用できません:acA3088-57um/UC、acA4024-29um/UC、acA5472-17um/UC。

情報

シーケンサーセットをロードまたは保存すると、変更していないパラメーターも含め、常に上記のすべてのパラメーターがロードまたは保存されます。例えば、露光時間を変更し、他のすべてのパラメーターをデフォルト値のままにした場合、他のすべてのパラメーターの値も保存され、ロード時に上書きされます

Configuring Sequencer Sets#

情報

  • シーケンサーセットを設定するには、シーケンサーが設定モードである必要があります。
  • カメラの電源を切ると、シーケンサーセットに加えられたすべての変更が失われます。また、シーケンサーの設定をユーザーセットに保存することもできません。設定を保持するために、Baslerでは、pylon APIを使用して適切なプログラムコードを記述し、カメラの電源がオンになるたびにシーケンスセットを再取得することをお勧めします。

Sequencer機能を使用する前に、シーケンサーセットに必要な設定を入力する必要があります。各シーケンサーセットには、0~31の範囲の一意のシーケンサーセットインデックス番号が付いています。

シーケンサーセットを設定するには、次の手順に従います。

  1. 格納するシーケンサーセットパラメーターをシーケンサーセット0に設定します。
  2. シーケンサーセット0を保存します。
  3. 使用するすべてのシーケンサーセットについて、手順1と2を繰り返します。インデックス番号0から始まる連続した一連のインデックス番号を必ず使用するようにしてください。例えば、シーケンサーセット0、1、2、3を使用します。

例:2つのシーケンサーセットが必要で、それらに異なる画像ROI 設定を入力するとします。これを行うには、次の手順に従います。

  1. Create the first image ROI by adjusting the Width, Height, OffsetX, and OffsetY parameter values.
  2. シーケンサーセット0を保存します。
  3. Create the second image ROI by choosing different values for the Width, Height, OffsetX, and OffsetY parameters.
  4. シーケンサーセット1を保存します。

これでシーケンサーを設定して、2つの画像ROIをすばやく切り替えられるようになりました。

Saving a Sequencer Set#

シーケンサーセットを保存するには、次の手順に従います。

  1. Set the SequencerSetSelector parameter to the desired sequencer set.
  2. Execute the SequencerSetSave command.

すべてのシーケンサーセットパラメーターの値は、選択したシーケンサーセットに保存されます。

Loading a Sequencer Set#

Sequencerセットは、シーケンサーの操作中に自動的にロードされます。ただし、シーケンサーセットを手動でロードすると、テストやシーケンサーの設定に役立ちます。

シーケンサーセットを手動でロードするには、次の手順に従います。

  1. Set the SequencerSetSelector parameter to the desired sequencer set.
  2. Execute the SequencerSetLoad command.

すべてのシーケンサーセットパラメーターの値が上書きされ、選択したシーケンサーセットに保存されている値に置き換えられます。

Configuring the Sequencer#

シーケンサーセットを設定したら、シーケンサーを設定する必要があります。

情報

  • シーケンサーを設定するには、シーケンサーが設定モードである必要があります。
  • カメラの電源を切ると、シーケンサーの設定に加えられたすべての変更が失われます。また、シーケンサーの設定をユーザーセットに保存することもできません。Baslerでは、pylon APIを使用して適切なプログラムコードを記述し、カメラの電源をオンにするたびに再取得することをお勧めします。
  • SequencerSetActiveチャンクを使用して、使用されているシーケンサーセットを追跡できます。有効にすると、各画像には、画像取得に使用されるシーケンサーセットのインデックス番号を含むチャンクデータが含まれます。

Path 0 and Path 1#

シーケンサーを制御するには、いわゆる「パス」を2つ設定する必要があります。

  • パス1を使用すると、使用可能なシーケンサーセット(シーケンサーセットアドバンス)を順番に切り替えることができます。シーケンサーが「パス1」トリガー信号を受信するたびに、シーケンサーは次のセットに進みます。例:

    Sample Sequence Cycle for Path 1: 0-1-2-3-4-0-1-...

  • パス0を使用すると、サイクルをリセットできます(シーケンサーセットのリセット)。シーケンサーが「パス0」トリガー信号を受信するたびに、シーケンサーはシーケンサーセット0でサイクルを再開します。例:

    Sample Sequence Cycle for Path 0: 0-1-2-0-1-2-...

Setting Up Path 0#

パス0を設定するには、「パス0」トリガー信号として使用する、つまりシーケンサーセットリセット信号として使用するソース信号を指定する必要があります。

ハードウェア信号またはソフトウェア信号をパス0のソース信号として選択できます。ソース設定はシーケンサーセット0に保存する必要があります。

パス0のソース信号を指定するには、次の手順に従います。

  1. シーケンサーセット0をロードします。
  2. Set the SequencerPathSelector parameter to 0.
  3. パラメーターを SequencerTriggerSource パラメーターを次のいずれかの値に設定します。
    • Line1, Line3, or Line4: Sequencer set reset can be controlled via input line 1, GPIO line 3, or GPIO line 4.
    • SoftwareSignal1, SoftwareSignal2, or SoftwareSignal3: Sequencer set reset can be controlled using the Software Signal Pulse feature.
  4. シーケンサーセット0を保存します。

情報

  • リアルタイムアプリケーションでは、ソフトウェアコマンドを使用してシーケンサーセットのリセットを制御しないことをBaslerは強くお勧めします。信号処理と送信のため、ソフトウェアコマンドの発行とシーケンサーセットのリセットの間には、詳細不明な遅延が生じます。したがって、ソフトウェアコマンドが送信されてから有効になるまでの間に発生する可能性のある画像取得の数を予測することはできません。
  • パス0とパス1に同じトリガーソースを使用しないでください。

Setting Up Path 1#

Trigger Sourceの指定#

最初に、「パス1」トリガー信号として使用する、つまりシーケンサーセットのアドバンス信号として使用するソース信号を指定する必要があります。

パス1のソース信号として、Frame Startトリガー信号、ハードウェア信号、ソフトウェア信号、またはカウンターを選択できます。ソース設定は、シーケンサーセット0に保存する必要があります。

パス1のソース信号を指定するには、次の手順に従います。

  1. シーケンサーセット0をロードします。
  2. Set the SequencerPathSelector parameter to 1.
  3. パラメーターを SequencerTriggerSource パラメーターを次のいずれかの値に設定します。
    • FrameStart: Sequencer set advance occurs automatically as Frame Start trigger signals are received.
    • Line1, Line3, or Line4: Sequencer set advance can be controlled via input line 1, GPIO line 3, or GPIO line 4. To use one of the GPIO lines, the line must be configured for input. If the specified line is low (0) while a frame start trigger signal is received, the sequencer does not advance, and the current set is used again for image acquisition. If the line is high (1) while a Frame Start trigger signal is received, the sequencer advances, and the next sequencer set in the cycle is used for image acquisition.
    • SoftwareSignal1, SoftwareSignal2, or SoftwareSignal3: Sequencer set advance can be controlled using the Software Signal Pulse feature.
    • Counter2End: Sequencer set advance can be controlled using a counter.
  4. シーケンサーセット0を保存します。
Specifying the Sequencer Sets Used#

次に、シーケンサー操作中に使用するシーケンサーセットを指定する必要があります。

デフォルトでは、32個のシーケンサーセットがすべて使用されます。「パス1」トリガー信号が受信されると、シーケンサーは、0から31までのシーケンサーセットインデックス番号の昇順で進めます。その後、サイクルは0で再開されます。

シーケンサーセットの数を減らすには、次の手順に従います。

  1. 使用するインデックス番号が最も大きいシーケンサーセットをロードします
    例:5つのシーケンサーセットを設定し、以下のサイクルを設定するとします。

    Sample Sequence Cycle for Path 1: 0-1-2-3-4-0-1-...

    In this cycle, the highest sequencer set index number is 4. Therefore, load sequencer set 4. 2. Set the SequencerPathSelector parameter to 1. 3. Set the SequencerSetNext parameter to 0. 4. Save the sequencer set.

操作中に、シーケンサーは、インデックス番号が最も大きいセットの後に、シーケンサーセット0に切り替わります。これにより「サークルが閉じます」。

情報

  • リアルタイムアプリケーションでは、ソフトウェアコマンドを使用してシーケンサーセットアドバンスを制御しないことをBaslerは強くお勧めします。信号処理と送信のため、ソフトウェアコマンドの発行とシーケンサーセットアドバンスの間には、詳細不明な遅延が生じます。したがって、ソフトウェアコマンドが送信されてから有効になるまでの間に発生する可能性のある画像取得の数を予測することはできません。
  • パス0とパス1に同じトリガーソースを使用しないでください。

Using a Counter to Control the Sequencer#

If you set the source signal for path 1 to Counter2End, you can use a counter to control sequencer set advance.

これは、シーケンサーセットを複数回連続して使用する固定シーケンスを設定する場合に便利です。

For each sequencer set, you can set the CounterDuration parameter to specify how many times the set is to be used in a row. By default, the parameter is set to 1 for all sets, and each sequence set is used once per cycle.

例:次のシーケンサーセットサイクルを設定するとします。

Sample Sequencer Cycle: 0-1-1-1-2-3-4-5-5-0-1-...

上記のシーケンサーセットサイクルを設定するには、次の手順に従います。

  1. シーケンサーセット0をロードします。
  2. Set the SequencerPathSelector parameter to 1.
  3. Set the SequencerTriggerSource parameter to Counter2End.
  4. シーケンサーセット0を保存します。
  5. Set the CounterSelector parameter to Counter2.
  6. Set the CounterDuration parameter for each sequencer set:

    • Sequencer sets 0, 2, 3, and 4 are to be used only once per cycle. Therefore, you can skip these sets and leave the CounterDuration parameter at the default value of 1.
    • Sequencer set 1 is to be used three times in a row. Load sequencer set 1, set the CounterDuration parameter to 3, and save sequencer set 1.
    • Sequencer set 5 is to be used two times in a row. Load sequencer set 5, set the CounterDuration parameter to 2, and save sequencer set 5.

追加パラメーター#

The SequencerSetStart and SequencerTriggerActivation parameters also control the operation of the sequencer. However, these parameters are preset and can't be changed.

サンプルコード#

// ** Configuring the sequencer sets **
// Enable sequencer configuration mode
camera.SequencerMode.SetValue(SequencerMode_Off);
camera.SequencerConfigurationMode.SetValue(SequencerConfigurationMode_On);
// Configure parameters to be stored in the first sequencer set
camera.Width.SetValue(600);
camera.Height.SetValue(300);
// Select sequencer set 0 and save the parameter values
camera.SequencerSetSelector.SetValue(0);
camera.SequencerSetSave.Execute();
// Configure parameters to be stored in the second sequencer set
camera.Width.SetValue(800);
camera.Height.SetValue(600);
// Select sequencer set 1 and save the parameter values
camera.SequencerSetSelector.SetValue(1);
camera.SequencerSetSave.Execute();
// Enable sequencer mode to operate the sequencer
camera.SequencerMode.SetValue(SequencerMode_On);
// ** Setting up path 0 **
// Enable sequencer configuration mode
camera.SequencerMode.SetValue(SequencerMode_Off);
camera.SequencerConfigurationMode.SetValue(SequencerConfigurationMode_On);
// Load sequencer set 0 and select path 0
camera.SequencerSetSelector.SetValue(0);
camera.SequencerSetLoad.Execute();
camera.SequencerPathSelector.SetValue(0);
// Set software signal 1 as "path 0" trigger signal
camera.SequencerTriggerSource.SetValue(SequencerTriggerSource_SoftwareSignal1);
// Save the changes
camera.SequencerSetSave.Execute();
// Enable sequencer mode to operate the sequencer
camera.SequencerMode.SetValue(SequencerMode_On);
// * Setting up path 1 **
// Enable sequencer configuration mode
camera.SequencerMode.SetValue(SequencerMode_Off);
camera.SequencerConfigurationMode.SetValue(SequencerConfigurationMode_On);
// Load sequencer set 0 and select path 1
camera.SequencerSetSelector.SetValue(0);
camera.SequencerSetLoad.Execute();
camera.SequencerPathSelector.SetValue(1);
// Set software signal 2 as "path 1" trigger signal
camera.SequencerTriggerSource.SetValue(SequencerTriggerSource_SoftwareSignal2);
// Save the changes
camera.SequencerSetSave.Execute();
// Assume you want to set up the following sequencer set cycle:
// 0 - 1 - 2 - 3 (- 0 - 1 - ...)
// Load the sequencer set with the highest index number to be used (here: 3)
camera.SequencerSetSelector.SetValue(3);
camera.SequencerSetLoad.Execute();
// Set the next sequencer set to 0 to "close the circle"
camera.SequencerPathSelector.SetValue(1);
camera.SequencerSetNext.SetValue(0);
// Save the changes
camera.SequencerSetSave.Execute();
// Enable sequencer mode to operate the sequencer
camera.SequencerMode.SetValue(SequencerMode_On);
// ** Advanced: Using a counter to control the sequencer **
// Enable sequencer configuration mode
camera.SequencerMode.SetValue(SequencerMode_Off);
camera.SequencerConfigurationMode.SetValue(SequencerConfigurationMode_On);
// Load sequencer set 0 and select path 1
camera.SequencerSetSelector.SetValue(0);
camera.SequencerSetLoad.Execute();
camera.SequencerPathSelector.SetValue(1);
// Set the Counter2 end event as "path 1" trigger signal
camera.SequencerTriggerSource.SetValue(SequencerTriggerSource_Counter2End);
// Save the changes
camera.SequencerSetSave.Execute();
// Select counter 2 to configure this counter
camera.CounterSelector.SetValue(CounterSelector_Counter2);
// Assume you want to set up the following sequencer set cycle:
// 0 - 0 - 1 - 1 - 1 (- 0 - 0 - ...)
// Load sequencer set 0 and specify that this set is to be used
// two times in a row
camera.SequencerSetSelector.SetValue(0);
camera.SequencerSetLoad.Execute();
camera.CounterDuration.SetValue(2);
camera.SequencerSetSave.Execute();
// Load sequencer set 1 and specify that this set is to be used
// three times in a row
camera.SequencerSetSelector.SetValue(1);
camera.SequencerSetLoad.Execute();
camera.CounterDuration.SetValue(3);
camera.SequencerSetSave.Execute();
// Enable sequencer mode to operate the sequencer
camera.SequencerMode.SetValue(SequencerMode_On);
INodeMap& nodemap = camera.GetNodeMap();
// ** Configuring the sequencer sets **
// Enable sequencer configuration mode
CEnumParameter(nodemap, "SequencerMode").SetValue("Off");
CEnumParameter(nodemap, "SequencerConfigurationMode").SetValue("On");
// Configure parameters to be stored in the first sequencer set
CIntegerParameter(nodemap, "Width").SetValue(600);
CIntegerParameter(nodemap, "Height").SetValue(300);
// Select sequencer set 0 and save the parameter values
CIntegerParameter(nodemap, "SequencerSetSelector").SetValue(0);
CCommandParameter(nodemap, "SequencerSetSave").Execute();
// Configure parameters to be stored in the second sequencer set
CIntegerParameter(nodemap, "Width").SetValue(800);
CIntegerParameter(nodemap, "Height").SetValue(600);
// Select sequencer set 1 and save the parameter values
CIntegerParameter(nodemap, "SequencerSetSelector").SetValue(1);
CCommandParameter(nodemap, "SequencerSetSave").Execute();
// Enable sequencer mode to operate the sequencer
CEnumParameter(nodemap, "SequencerMode").SetValue("On");
// ** Setting up path 0 **
// Enable sequencer configuration mode
CEnumParameter(nodemap, "SequencerMode").SetValue("Off");
CEnumParameter(nodemap, "SequencerConfigurationMode").SetValue("On");
// Load sequencer set 0 and select path 0
CIntegerParameter(nodemap, "SequencerSetSelector").SetValue(0);
CCommandParameter(nodemap, "SequencerSetLoad").Execute();
CIntegerParameter(nodemap, "SequencerPathSelector").SetValue(0);
// Set software signal 1 as "path 0" trigger signal
CEnumParameter(nodemap, "SequencerTriggerSource").SetValue("SoftwareSignal1");
// Save the changes
CCommandParameter(nodemap, "SequencerSetSave").Execute();
// Enable sequencer mode to operate the sequencer
CEnumParameter(nodemap, "SequencerMode").SetValue("On");
// * Setting up path 1 **
// Enable sequencer configuration mode
CEnumParameter(nodemap, "SequencerMode").SetValue("Off");
CEnumParameter(nodemap, "SequencerConfigurationMode").SetValue("On");
// Load sequencer set 0 and select path 1
CIntegerParameter(nodemap, "SequencerSetSelector").SetValue(0);
CCommandParameter(nodemap, "SequencerSetLoad").Execute();
CIntegerParameter(nodemap, "SequencerPathSelector").SetValue(1);
// Set software signal 2 as "path 1" trigger signal
CEnumParameter(nodemap, "SequencerTriggerSource").SetValue("SoftwareSignal2");
// Save the changes
CCommandParameter(nodemap, "SequencerSetSave").Execute();
// Assume you want to set up the following sequencer set cycle:
// 0 - 1 - 2 - 3 (- 0 - 1 - ...)
// Load the sequencer set with the highest index number to be used (here: 3)
CIntegerParameter(nodemap, "SequencerSetSelector").SetValue(3);
CCommandParameter(nodemap, "SequencerSetLoad").Execute();
// Set the next sequencer set to 0 to "close the circle"
CIntegerParameter(nodemap, "SequencerPathSelector").SetValue(1);
CIntegerParameter(nodemap, "SequencerSetNext").SetValue(0);
// Save the changes
CCommandParameter(nodemap, "SequencerSetSave").Execute();
// Enable sequencer mode to operate the sequencer
CEnumParameter(nodemap, "SequencerMode").SetValue("On");
// ** Advanced: Using a counter to control the sequencer **
// Enable sequencer configuration mode
CEnumParameter(nodemap, "SequencerMode").SetValue("Off");
CEnumParameter(nodemap, "SequencerConfigurationMode").SetValue("On");
// Load sequencer set 0 and select path 1
CIntegerParameter(nodemap, "SequencerSetSelector").SetValue(0);
CCommandParameter(nodemap, "SequencerSetLoad").Execute();
CIntegerParameter(nodemap, "SequencerPathSelector").SetValue(1);
// Set the Counter2 end event as "path 1" trigger signal
CEnumParameter(nodemap, "SequencerTriggerSource").SetValue("Counter2End");
// Save the changes
CCommandParameter(nodemap, "SequencerSetSave").Execute();
// Select counter 2 to configure this counter
CEnumParameter(nodemap, "CounterSelector").SetValue("Counter2");
// Assume you want to set up the following sequencer set cycle:
// 0 - 0 - 1 - 1 - 1 (- 0 - 0 - ...)
// Load sequencer set 0 and specify that this set is to be used
// two times in a row
CIntegerParameter(nodemap, "SequencerSetSelector").SetValue(0);
CCommandParameter(nodemap, "SequencerSetLoad").Execute();
CIntegerParameter(nodemap, "CounterDuration").SetValue(2);
CCommandParameter(nodemap, "SequencerSetSave").Execute();
// Load sequencer set 1 and specify that this set is to be used
// three times in a row
CIntegerParameter(nodemap, "SequencerSetSelector").SetValue(1);
CCommandParameter(nodemap, "SequencerSetLoad").Execute();
CIntegerParameter(nodemap, "CounterDuration").SetValue(3);
CCommandParameter(nodemap, "SequencerSetSave").Execute();
// Enable sequencer mode to operate the sequencer
CEnumParameter(nodemap, "SequencerMode").SetValue("On");
// ** Configuring the sequencer sets **
// Enable sequencer configuration mode
camera.Parameters[PLCamera.SequencerMode].SetValue(PLCamera.SequencerMode.Off);
camera.Parameters[PLCamera.SequencerConfigurationMode].SetValue(PLCamera.SequencerConfigurationMode.On);
// Configure parameters to be stored in the first sequencer set
camera.Parameters[PLCamera.Width].SetValue(600);
camera.Parameters[PLCamera.Height].SetValue(300);
// Select sequencer set 0 and save the parameter values
camera.Parameters[PLCamera.SequencerSetSelector].SetValue(0);
camera.Parameters[PLCamera.SequencerSetSave].Execute();
// Configure parameters to be stored in the second sequencer set
camera.Parameters[PLCamera.Width].SetValue(800);
camera.Parameters[PLCamera.Height].SetValue(600);
// Select sequencer set 1 and save the parameter values
camera.Parameters[PLCamera.SequencerSetSelector].SetValue(1);
camera.Parameters[PLCamera.SequencerSetSave].Execute();
// Enable sequencer mode to operate the sequencer
camera.Parameters[PLCamera.SequencerMode].SetValue(PLCamera.SequencerMode.On);
// ** Setting up path 0 **
// Enable sequencer configuration mode
camera.Parameters[PLCamera.SequencerMode].SetValue(PLCamera.SequencerMode.Off);
camera.Parameters[PLCamera.SequencerConfigurationMode].SetValue(PLCamera.SequencerConfigurationMode.On);
// Load sequencer set 0 and select path 0
camera.Parameters[PLCamera.SequencerSetSelector].SetValue(0);
camera.Parameters[PLCamera.SequencerSetLoad].Execute();
camera.Parameters[PLCamera.SequencerPathSelector].SetValue(0);
// Set software signal 1 as "path 0" trigger signal
camera.Parameters[PLCamera.SequencerTriggerSource].SetValue(PLCamera.SequencerTriggerSource.SoftwareSignal1);
// Save the changes
camera.Parameters[PLCamera.SequencerSetSave].Execute();
// Enable sequencer mode to operate the sequencer
camera.Parameters[PLCamera.SequencerMode].SetValue(PLCamera.SequencerMode.On);
// * Setting up path 1 **
// Enable sequencer configuration mode
camera.Parameters[PLCamera.SequencerMode].SetValue(PLCamera.SequencerMode.Off);
camera.Parameters[PLCamera.SequencerConfigurationMode].SetValue(PLCamera.SequencerConfigurationMode.On);
// Load sequencer set 0 and select path 1
camera.Parameters[PLCamera.SequencerSetSelector].SetValue(0);
camera.Parameters[PLCamera.SequencerSetLoad].Execute();
camera.Parameters[PLCamera.SequencerPathSelector].SetValue(1);
// Set software signal 2 as "path 1" trigger signal
camera.Parameters[PLCamera.SequencerTriggerSource].SetValue(PLCamera.SequencerTriggerSource.SoftwareSignal2);
// Save the changes
camera.Parameters[PLCamera.SequencerSetSave].Execute();
// Assume you want to set up the following sequencer set cycle:
// 0 - 1 - 2 - 3 (- 0 - 1 - ...)
// Load the sequencer set with the highest index number to be used (here: 3)
camera.Parameters[PLCamera.SequencerSetSelector].SetValue(3);
camera.Parameters[PLCamera.SequencerSetLoad].Execute();
// Set the next sequencer set to 0 to "close the circle"
camera.Parameters[PLCamera.SequencerPathSelector].SetValue(1);
camera.Parameters[PLCamera.SequencerSetNext].SetValue(0);
// Save the changes
camera.Parameters[PLCamera.SequencerSetSave].Execute();
// Enable sequencer mode to operate the sequencer
camera.Parameters[PLCamera.SequencerMode].SetValue(PLCamera.SequencerMode.On);
// ** Advanced: Using a counter to control the sequencer **
// Enable sequencer configuration mode
camera.Parameters[PLCamera.SequencerMode].SetValue(PLCamera.SequencerMode.Off);
camera.Parameters[PLCamera.SequencerConfigurationMode].SetValue(PLCamera.SequencerConfigurationMode.On);
// Load sequencer set 0 and select path 1
camera.Parameters[PLCamera.SequencerSetSelector].SetValue(0);
camera.Parameters[PLCamera.SequencerSetLoad].Execute();
camera.Parameters[PLCamera.SequencerPathSelector].SetValue(1);
// Set the Counter2 end event as "path 1" trigger signal
camera.Parameters[PLCamera.SequencerTriggerSource].SetValue(PLCamera.SequencerTriggerSource.Counter2End);
// Save the changes
camera.Parameters[PLCamera.SequencerSetSave].Execute();
// Select counter 2 to configure this counter
camera.Parameters[PLCamera.CounterSelector].SetValue(PLCamera.CounterSelector.Counter2);
// Assume you want to set up the following sequencer set cycle:
// 0 - 0 - 1 - 1 - 1 (- 0 - 0 - ...)
// Load sequencer set 0 and specify that this set is to be used
// two times in a row
camera.Parameters[PLCamera.SequencerSetSelector].SetValue(0);
camera.Parameters[PLCamera.SequencerSetLoad].Execute();
camera.Parameters[PLCamera.CounterDuration].SetValue(2);
camera.Parameters[PLCamera.SequencerSetSave].Execute();
// Load sequencer set 1 and specify that this set is to be used
// three times in a row
camera.Parameters[PLCamera.SequencerSetSelector].SetValue(1);
camera.Parameters[PLCamera.SequencerSetLoad].Execute();
camera.Parameters[PLCamera.CounterDuration].SetValue(3);
camera.Parameters[PLCamera.SequencerSetSave].Execute();
// Enable sequencer mode to operate the sequencer
camera.Parameters[PLCamera.SequencerMode].SetValue(PLCamera.SequencerMode.On);
/* Macro to check for errors */
#define CHECK(errc) if (GENAPI_E_OK != errc) printErrorAndExit(errc)
GENAPIC_RESULT errRes = GENAPI_E_OK;  /* Return value of pylon methods */
/* ** Configuring the sequencer sets ** */
/* Enable sequencer configuration mode */
errRes = PylonDeviceFeatureFromString(hdev, "SequencerMode", "Off");
CHECK(errRes);
errRes = PylonDeviceFeatureFromString(hdev, "SequencerConfigurationMode", "On");
CHECK(errRes);
/* Configure parameters to be stored in the first sequencer set */
errRes = PylonDeviceSetIntegerFeature(hdev, "Width", 600);
CHECK(errRes);
errRes = PylonDeviceSetIntegerFeature(hdev, "Height", 300);
CHECK(errRes);
/* Select sequencer set 0 and save the parameter values */
errRes = PylonDeviceSetIntegerFeature(hdev, "SequencerSetSelector", 0);
CHECK(errRes);
errRes = PylonDeviceExecuteCommandFeature(hdev, "SequencerSetSave");
CHECK(errRes);
/* Configure parameters to be stored in the second sequencer set */
errRes = PylonDeviceSetIntegerFeature(hdev, "Width", 800);
CHECK(errRes);
errRes = PylonDeviceSetIntegerFeature(hdev, "Height", 600);
CHECK(errRes);
/* Select sequencer set 1 and save the parameter values */
errRes = PylonDeviceSetIntegerFeature(hdev, "SequencerSetSelector", 1);
CHECK(errRes);
errRes = PylonDeviceExecuteCommandFeature(hdev, "SequencerSetSave");
CHECK(errRes);
/* Enable sequencer mode to operate the sequencer */
errRes = PylonDeviceFeatureFromString(hdev, "SequencerMode", "On");
CHECK(errRes);
/* ** Setting up path 0 ** */
/* Enable sequencer configuration mode */
errRes = PylonDeviceFeatureFromString(hdev, "SequencerMode", "Off");
CHECK(errRes);
errRes = PylonDeviceFeatureFromString(hdev, "SequencerConfigurationMode", "On");
CHECK(errRes);
/* Load sequencer set 0 and select path 0 */
errRes = PylonDeviceSetIntegerFeature(hdev, "SequencerSetSelector", 0);
CHECK(errRes);
errRes = PylonDeviceExecuteCommandFeature(hdev, "SequencerSetLoad");
CHECK(errRes);
errRes = PylonDeviceSetIntegerFeature(hdev, "SequencerPathSelector", 0);
CHECK(errRes);
/* Set software signal 1 as "path 0" trigger signal */
errRes = PylonDeviceFeatureFromString(hdev, "SequencerTriggerSource", "SoftwareSignal1");
CHECK(errRes);
/* Save the changes */
errRes = PylonDeviceExecuteCommandFeature(hdev, "SequencerSetSave");
CHECK(errRes);
/* Enable sequencer mode to operate the sequencer */
errRes = PylonDeviceFeatureFromString(hdev, "SequencerMode", "On");
CHECK(errRes);
/* * Setting up path 1 ** */
/* Enable sequencer configuration mode */
errRes = PylonDeviceFeatureFromString(hdev, "SequencerMode", "Off");
CHECK(errRes);
errRes = PylonDeviceFeatureFromString(hdev, "SequencerConfigurationMode", "On");
CHECK(errRes);
/* Load sequencer set 0 and select path 1 */
errRes = PylonDeviceSetIntegerFeature(hdev, "SequencerSetSelector", 0);
CHECK(errRes);
errRes = PylonDeviceExecuteCommandFeature(hdev, "SequencerSetLoad");
CHECK(errRes);
errRes = PylonDeviceSetIntegerFeature(hdev, "SequencerPathSelector", 1);
CHECK(errRes);
/* Set software signal 2 as "path 1" trigger signal */
errRes = PylonDeviceFeatureFromString(hdev, "SequencerTriggerSource", "SoftwareSignal2");
CHECK(errRes);
/* Save the changes */
errRes = PylonDeviceExecuteCommandFeature(hdev, "SequencerSetSave");
CHECK(errRes);
/* Assume you want to set up the following sequencer set cycle: */
/* 0 - 1 - 2 - 3 (- 0 - 1 - ...) */
/* Load the sequencer set with the highest index number to be used (here: 3) */
errRes = PylonDeviceSetIntegerFeature(hdev, "SequencerSetSelector", 3);
CHECK(errRes);
errRes = PylonDeviceExecuteCommandFeature(hdev, "SequencerSetLoad");
CHECK(errRes);
/* Set the next sequencer set to 0 to "close the circle" */
errRes = PylonDeviceSetIntegerFeature(hdev, "SequencerPathSelector", 1);
CHECK(errRes);
errRes = PylonDeviceSetIntegerFeature(hdev, "SequencerSetNext", 0);
CHECK(errRes);
/* Save the changes */
errRes = PylonDeviceExecuteCommandFeature(hdev, "SequencerSetSave");
CHECK(errRes);
/* Enable sequencer mode to operate the sequencer */
errRes = PylonDeviceFeatureFromString(hdev, "SequencerMode", "On");
CHECK(errRes);
/* ** Advanced: Using a counter to control the sequencer ** */
/* Enable sequencer configuration mode */
errRes = PylonDeviceFeatureFromString(hdev, "SequencerMode", "Off");
CHECK(errRes);
errRes = PylonDeviceFeatureFromString(hdev, "SequencerConfigurationMode", "On");
CHECK(errRes);
/* Load sequencer set 0 and select path 1 */
errRes = PylonDeviceSetIntegerFeature(hdev, "SequencerSetSelector", 0);
CHECK(errRes);
errRes = PylonDeviceExecuteCommandFeature(hdev, "SequencerSetLoad");
CHECK(errRes);
errRes = PylonDeviceSetIntegerFeature(hdev, "SequencerPathSelector", 1);
CHECK(errRes);
/* Set the Counter2 end event as "path 1" trigger signal */
errRes = PylonDeviceFeatureFromString(hdev, "SequencerTriggerSource", "Counter2End");
CHECK(errRes);
/* Save the changes */
errRes = PylonDeviceExecuteCommandFeature(hdev, "SequencerSetSave");
CHECK(errRes);
/* Select counter 2 to configure this counter */
errRes = PylonDeviceFeatureFromString(hdev, "CounterSelector", "Counter2");
CHECK(errRes);
/* Assume you want to set up the following sequencer set cycle: */
/* 0 - 0 - 1 - 1 - 1 (- 0 - 0 - ...) */
/* Load sequencer set 0 and specify that this set is to be used */
/* two times in a row */
errRes = PylonDeviceSetIntegerFeature(hdev, "SequencerSetSelector", 0);
CHECK(errRes);
errRes = PylonDeviceExecuteCommandFeature(hdev, "SequencerSetLoad");
CHECK(errRes);
errRes = PylonDeviceSetIntegerFeature(hdev, "CounterDuration", 2);
CHECK(errRes);
errRes = PylonDeviceExecuteCommandFeature(hdev, "SequencerSetSave");
CHECK(errRes);
/* Load sequencer set 1 and specify that this set is to be used */
/* three times in a row */
errRes = PylonDeviceSetIntegerFeature(hdev, "SequencerSetSelector", 1);
CHECK(errRes);
errRes = PylonDeviceExecuteCommandFeature(hdev, "SequencerSetLoad");
CHECK(errRes);
errRes = PylonDeviceSetIntegerFeature(hdev, "CounterDuration", 3);
CHECK(errRes);
errRes = PylonDeviceExecuteCommandFeature(hdev, "SequencerSetSave");
CHECK(errRes);
/* Enable sequencer mode to operate the sequencer */
errRes = PylonDeviceFeatureFromString(hdev, "SequencerMode", "On");
CHECK(errRes);
# ** Configuring the sequencer sets **
# Enable sequencer configuration mode
camera.SequencerMode.Value = "Off"
camera.SequencerConfigurationMode.Value = "On"
# Configure parameters to be stored in the first sequencer set
camera.Width.Value = 600
camera.Height.Value = 300
# Select sequencer set 0 and save the parameter values
camera.SequencerSetSelector.Value = 0
camera.SequencerSetSave.Execute()
# Configure parameters to be stored in the second sequencer set
camera.Width.Value = 800
camera.Height.Value = 600
# Select sequencer set 1 and save the parameter values
camera.SequencerSetSelector.Value = 1
camera.SequencerSetSave.Execute()
# Enable sequencer mode to operate the sequencer
camera.SequencerMode.Value = "On"
# ** Setting up path 0 **
# Enable sequencer configuration mode
camera.SequencerMode.Value = "Off"
camera.SequencerConfigurationMode.Value = "On"
# Load sequencer set 0 and select path 0
camera.SequencerSetSelector.Value = 0
camera.SequencerSetLoad.Execute()
camera.SequencerPathSelector.Value = 0
# Set software signal 1 as "path 0" trigger signal
camera.SequencerTriggerSource.Value = "SoftwareSignal1"
# Save the changes
camera.SequencerSetSave.Execute()
# Enable sequencer mode to operate the sequencer
camera.SequencerMode.Value = "On"
# * Setting up path 1 **
# Enable sequencer configuration mode
camera.SequencerMode.Value = "Off"
camera.SequencerConfigurationMode.Value = "On"
# Load sequencer set 0 and select path 1
camera.SequencerSetSelector.Value = 0
camera.SequencerSetLoad.Execute()
camera.SequencerPathSelector.Value = 1
# Set software signal 2 as "path 1" trigger signal
camera.SequencerTriggerSource.Value = "SoftwareSignal2"
# Save the changes
camera.SequencerSetSave.Execute()
# Assume you want to set up the following sequencer set cycle:
# 0 - 1 - 2 - 3 (- 0 - 1 - ...)
# Load the sequencer set with the highest index number to be used (here: 3)
camera.SequencerSetSelector.Value = 3
camera.SequencerSetLoad.Execute()
# Set the next sequencer set to 0 to "close the circle"
camera.SequencerPathSelector.Value = 1
camera.SequencerSetNext.Value = 0
# Save the changes
camera.SequencerSetSave.Execute()
# Enable sequencer mode to operate the sequencer
camera.SequencerMode.Value = "On"
# ** Advanced: Using a counter to control the sequencer **
# Enable sequencer configuration mode
camera.SequencerMode.Value = "Off"
camera.SequencerConfigurationMode.Value = "On"
# Load sequencer set 0 and select path 1
camera.SequencerSetSelector.Value = 0
camera.SequencerSetLoad.Execute()
camera.SequencerPathSelector.Value = 1
# Set the Counter2 end event as "path 1" trigger signal
camera.SequencerTriggerSource.Value = "Counter2End"
# Save the changes
camera.SequencerSetSave.Execute()
# Select counter 2 to configure this counter
camera.CounterSelector.Value = "Counter2"
# Assume you want to set up the following sequencer set cycle:
# 0 - 0 - 1 - 1 - 1 (- 0 - 0 - ...)
# Load sequencer set 0 and specify that this set is to be used
# two times in a row
camera.SequencerSetSelector.Value = 0
camera.SequencerSetLoad.Execute()
camera.CounterDuration.Value = 2
camera.SequencerSetSave.Execute()
# Load sequencer set 1 and specify that this set is to be used
# three times in a row
camera.SequencerSetSelector.Value = 1
camera.SequencerSetLoad.Execute()
camera.CounterDuration.Value = 3
camera.SequencerSetSave.Execute()
# Enable sequencer mode to operate the sequencer
camera.SequencerMode.Value = "On"

pylon Viewerを使用して、パラメーターを簡単に設定することもできます。