コンテンツにスキップ
ステージングサーバー
開発サーバー

Sequencer(ace Classic/U/L USB)#

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

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

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

機能を使用する#

Sequencerモード#

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

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

  1. すべて設定 自動機能 (例: Gain Auto, Exposure Auto) を Off.
  2. パラメーターを SequencerMode パラメータを On.

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

  1. パラメーターを SequencerMode パラメータを Off.
  2. パラメーターを SequencerConfigurationMode パラメータを 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 (Counter 2の場合)
  • CounterEventSource
  • CounterResetSource
  • DigitalShift
  • ExposureTime
  • Gain
  • Height
  • LUTEnablea
  • OffsetX
  • OffsetY
  • PixelFormatb
  • ReverseX
  • ReverseYc
  • ScalingHorizontal
  • SequencerSetNext
  • SequencerSetPath
  • SequencerSetSelector
  • SequencerSetStart
  • SequencerTriggerActivation
  • SequencerTriggerSource
  • TestImageSelector
  • TimerDelay (Timer 1の場合)
  • TimerDuration (Timer 1の場合)
  • Width

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


  1. 含まれるのは、 Gamma パラメータが1.0に設定され、かつ LightSourcePreset パラメータが次のように設定されていること: 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. を調整して、最初の Image ROI を作成します。 Width, Height, OffsetXおよび OffsetY パラメータ値が含まれます。
  2. シーケンサーセット0を保存します。
  3. に対して異なる値を指定して、2番目の Image ROI を作成します。 Width, Height, OffsetXおよび OffsetY パラメータ。
  4. シーケンサーセット1を保存します。

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

Saving a Sequencer Set#

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

  1. パラメーターを SequencerSetSelector パラメータを目的の Sequencer セットに設定します。
  2. 実行します: SequencerSetSave コマンド。

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

Loading a Sequencer Set#

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

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

  1. パラメーターを SequencerSetSelector パラメータを目的の Sequencer セットに設定します。
  2. 実行します: SequencerSetLoad コマンド。

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

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. パラメーターを SequencerPathSelector パラメータを 0 に設定します。
  3. パラメーターを SequencerTriggerSource パラメーターを次のいずれかの値に設定します。
    • Line1, Line3、または Line4: Sequencer セットのリセットは、入力線 1、GPIO線 3、または GPIO線 4 を介して制御できます。
    • SoftwareSignal1, SoftwareSignal2、または SoftwareSignal3: Sequencer セットのリセットは、次を使用して制御できます。 Software Signal Pulse feature.
  4. シーケンサーセット0を保存します。

情報

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

Setting Up Path 1#

Trigger Sourceの指定#

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

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

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

  1. シーケンサーセット0をロードします。
  2. パラメーターを SequencerPathSelector パラメータを 1 に設定します。
  3. パラメーターを SequencerTriggerSource パラメーターを次のいずれかの値に設定します。
    • FrameStart: Sequencer セットの高度化は自動的に行われます。 Frame Start トリガー 信号が受信されます。
    • Line1, Line3、または Line4: Sequencer セットの進行は、入力線 1、GPIO線 3、または GPIO線 4 を介して制御できます。いずれかの GPIO線を使用するには、その線を入力用に設定する必要があります。指定された線がロー (0) の状態で フレームスタートトリガー 信号を受信すると、Sequencer は進行せず、現在のセットが画像取得に再び使用されます。線がハイ (1) の状態で Frame Start トリガー信号を受信すると、Sequencer が進行し、サイクル内の次の Sequencer セットが画像取得に使用されます。
    • SoftwareSignal1, SoftwareSignal2、または SoftwareSignal3: Sequencer セットの進行は、次を使用して制御できます。 Software Signal Pulse feature.
    • Counter2End: Sequencer セットの進行は制御できます 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-...

    このサイクルでは、最も大きい Sequencer セットインデックス番号は 4 です。したがって、Sequencer セット 4 を読み込みます。2. 次を設定します。 SequencerPathSelector パラメータを 1 に設定します。3. 次を設定します。 SequencerSetNext パラメータを 0 に設定します。4. Save Sequencer set。

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

情報

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

Using a Counter to Control the Sequencer#

次の場合: path 1 のソース信号を設定します を Counter2End, Counter を使用して Sequencer set の進行を制御できます。

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

各 Sequencer set について、次の設定が可能です。 CounterDuration パラメータを使用して、そのセットを連続して使用する回数を指定します。デフォルトでは、すべてのセットでこのパラメータは 1 に設定されており、各シーケンスセットは 1 サイクルにつき 1 回使用されます。

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

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

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

  1. シーケンサーセット0をロードします。
  2. パラメーターを SequencerPathSelector パラメータを 1 に設定します。
  3. パラメーターを SequencerTriggerSource パラメータを Counter2End.
  4. シーケンサーセット0を保存します。
  5. パラメーターを CounterSelector パラメータを Counter2.
  6. パラメーターを CounterDuration 各 Sequencer set のパラメータ:

    • Sequencer set 0、2、3、4 は 1 サイクルにつき 1 回のみ使用されます。そのため、これらのセットをスキップし、パラメータを CounterDuration デフォルト値の 1 のままにすることができます。
    • Sequencer set 1 は連続して 3 回使用されます。 Load Sequencer set 1、パラメータを CounterDuration 3 に設定し、 保存 Sequencer set 1。
    • Sequencer set 5 は連続して 2 回使用されます。 Load Sequencer set 5、パラメータを CounterDuration 2 に設定し、 保存 Sequencer set 5。

追加パラメーター#

イメージ SequencerSetStart および SequencerTriggerActivation パラメータも Sequencer の動作を制御します。ただし、これらのパラメータはプリセットされており、変更することはできません。

サンプルコード#

// ** 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を使用して、パラメーターを簡単に設定することもできます。