Sequencer(ace Classic/U/L GigE)#
シーケンスセットと呼ばれる最大64セットのパラメーター設定を定義できます。カメラが画像を取得すると、シーケンスセットが1つずつ順番に適用されます。これにより、最大フレームレートを損なうことなく、カメラのパラメーターを迅速に変更できます。
例えば、Sequencer機能を使用して、設定済みの画像ROIまたは露光時間をすばやく変更できます。
機能を使用する#
Enabling or Disabling the Sequencer#
有効にすると、シーケンサーが画像取得を制御します。この状態では設定できません。
無効にすると、シーケンサーを設定できますが、画像取得は制御されません。
シーケンサーを有効にするには、次の手順に従います。
- すべて設定 自動機能 (例: Gain Auto, Exposure Auto) を
Off. - パラメーターを
SequenceEnableパラメータをtrue.
シーケンサーを無効にするには:
- パラメーターを
SequenceEnableパラメータをfalse. - If the
SequenceConfigurationModeパラメータがカメラモデルで使用できる場合は、以下のように設定しますOn.
What's in a Sequence Set?#
Sequencerセットには、次のパラメーターが含まれます(使用可能な場合)。
AcquisitionFrameRateAcquisitionFrameRateEnableBalanceRatioBinningHorizontalBinningVerticalBlackLevelCenterXCenterYChunkEnableChunkModeActiveColorAdjustmentEnableColorAdjustmentHueColorAdjustmentSaturationColorTransformationMatrixFactorColorTransformationValueDecimationVerticalDigitalShiftExposureTimeGainHeightLUTEnableOffsetXOffsetXPixelFormataProcessedRawEnableReverseXReverseYbScalingHorizontalSequenceSetExecutionscStackedZoneImagingEnableStackedZoneImagingZoneEnableStackedZoneImagingZoneHeightStackedZoneImagingZoneOffsetYSubsamplingHorizontalSyncUserOutputTestImageSelectorTimerDelaydTimerDelayTimebasedTimerDurationdTimerDurationTimebasedWidth
-
カメラモデルacA640-300gm/gc、acA800-200gm/gc、acA1300-75gm/gc、acA1920-48gm/gc、acA2500-20gm/gcでのみ使用できます。
-
次のカメラモデルでは使用できません:acA3088-16gm/gc、acA4024-8gm/gc、acA5472-5gm/gc。
-
自動シーケンスアドバンスモードが有効な場合にのみ含まれます。
-
Timer1で使用できます。
他のすべてのカメラパラメーターは、Sequencer機能を使用して制御できません。
情報
シーケンスセットをロードまたは保存すると、変更していないパラメーターも含め、常に上記のすべてのパラメーターがロードまたは保存されます。例えば、露光時間を変更し、他のすべてのパラメーターをデフォルト値のままにした場合、他のすべてのパラメーターの値も保存され、ロード時に上書きされます。
Configuring Sequence Sets#
情報
Sequencer機能を使用する前に、シーケンスセットに必要な設定を入力する必要があります。各シーケンスセットには、0~63の範囲の一意のシーケンスセットインデックス番号が付いています。
シーケンスセットを設定するには、次の手順に従います。
- パラメーターを
SequenceSetTotalNumberパラメータを使用するシーケンスセットの総数に設定します。 - 格納するシーケンスセットパラメーターをシーケンスセット0に設定します。
- シーケンスセット0を保存します。
- 使用するすべてのシーケンスセットについて、手順2と3を繰り返します。インデックス番号0から始まる連続した一連のインデックス番号を必ず使用するようにしてください。例えば、シーケンスセット0、1、2、3を使用します。
例:2つのシーケンスセットが必要で、それらに異なる画像ROI設定を入力するとします。これを行うには、次の手順に従います。
- パラメーターを
SequenceSetTotalNumberparameterを2に設定します。 - を調整して、最初の Image ROI を作成します。
Width,Height,OffsetXおよびOffsetYパラメータ値が含まれます。 - シーケンスセット0を保存します。
- に対して異なる値を指定して、2番目の Image ROI を作成します。
Width,Height,OffsetXおよびOffsetYパラメータ。 - シーケンスセット1を保存します。
これでシーケンサーを設定して、2つの画像ROIをすばやく切り替えられるようになりました。
Saving a Sequence Set#
シーケンスセットを保存するには、次の手順に従います。
- パラメーターを
SequenceSetIndexパラメータを希望のシーケンスセットに設定します。 - 実行します:
SequenceSetStoreコマンド。
すべてのシーケンスセットパラメーターの値は、選択したシーケンスセットに保存されます。
Loading a Sequence Set#
シーケンスセットは、シーケンサーの操作中に自動的にロードされます。ただし、シーケンスセットを手動でロードすると、テストやシーケンサーの設定時に役立ちます。
シーケンスセットを手動でロードするには、次の手順に従います。
- パラメーターを
SequenceSetIndexパラメータを希望のシーケンスセットに設定します。 - 実行します:
SequenceSetLoadコマンド。
すべてのシーケンスセットパラメーターの値が上書きされ、選択したシーケンスセットに保存されている値に置き換えられます。
Configuring the Sequencer#
シーケンスセットを設定したら、シーケンサーを設定する必要があります。
情報
- シーケンサーを設定するには、シーケンサーを無効にする必要があります。
- カメラの電源を切ると、シーケンサーの設定に加えられたすべての変更が失われます。また、シーケンサーの設定をユーザーセットに保存することもできません。Baslerでは、pylon APIを使用して適切なプログラムコードを記述し、カメラの電源をオンにするたびに再取得することをお勧めします。
- SequenceSetIndexチャンクを使用して、使用されているシーケンスセットを追跡できます。有効にすると、各画像には、画像取得に使用されるシーケンスセットのインデックス番号を含むチャンクデータが含まれます。
シーケンサーは、「アドバンスモード」と呼ばれる3つのモードで操作できます。
すべてのモードで、シーケンスセットは常にシーケンスセットインデックス番号0から昇順に進みます。
Auto Sequence Advance Mode#
このモードは、連続的に繰り返される固定シーケンスを設定する場合に便利です。
このモードを有効にするには、以下のように設定します SequenceAdvanceMode パラメータを Auto.
このモードでは、Frame Startトリガー信号を受信すると、シーケンスセットから次のシーケンスへの進行が自動的に行われます。
イメージ SequenceSetTotalNumber パラメータは、使用するシーケンスセットの総数を指定します。インデックス番号が最も高いシーケンスセットが使用された後、サイクルは再び0から始まります。
例:次のシーケンスサイクルを設定するとします。
上記のシーケンスサイクルを設定するには、次の手順に従います。
- パラメーターを
SequenceAdvanceModeパラメータをAuto. - パラメーターを
SequenceSetTotalNumberパラメータを5に設定します。
シーケンスセットを複数回使用する
必要に応じて、各シーケンスセットを複数回連続して使用できます。
各シーケンスセットを使用する回数を指定するには、次の手順に従います。
- 目的のシーケンスセットをロードします。
- 割り当ての設定は
SequenceSetExecutionsこのシーケンスセットのパラメータ。デフォルトでは、すべてのセットでパラメータが1に設定されており、これは各シーケンスセットがサイクルごとに1回使用されることを意味します。 - シーケンスセットを保存します。
例:次のシーケンスサイクルを設定するとします。
上記のシーケンスサイクルを設定するには、次の手順に従います。
- パラメーターを
SequenceAdvanceModeパラメータをAuto. - パラメーターを
SequenceSetTotalNumberパラメータを6に設定します。 -
割り当ての設定は
SequenceSetExecutions各シーケンスセットのパラメータ:- シーケンスセット0、2、3、4は、サイクルごとに1回のみ使用されます。そのため、これらのセットをスキップして、以下のように残すことができます
SequenceSetExecutionsデフォルト値の 1 のままにすることができます。 - シーケンスセット1は、続けて3回使用されます。 Load シーケンスセット1、以下のように設定します
SequenceSetExecutions3 に設定し、 保存 シーケンスセット1。 - シーケンスセット5は、続けて2回使用されます。 Load シーケンスセット5、以下のように設定します
SequenceSetExecutions2 に設定し、 保存 シーケンスセット5。
- シーケンスセット0、2、3、4は、サイクルごとに1回のみ使用されます。そのため、これらのセットをスキップして、以下のように残すことができます
Controlled Sequence Advance Mode#
このモードは、ライン1またはソフトウェアコマンドで制御できるダイナミックシーケンスを設定する場合に便利です。
情報
- リアルタイムアプリケーションの場合、Baslerは、ソフトウェアコマンドを使用してシーケンサーを制御しないことを強く推奨します。ソフトウェアコマンドを送信してから有効になるまでの遅延は、特定のインストールとネットワーク上の現在の負荷によって異なります。そのため、ソフトウェアコマンドの送信から有効になるまでの間に発生する画像取得の数を予測することはできません。
- ライン1を使用してシーケンサーを制御する場合は、ラインのステータスの設定とフレーム開始トリガー信号の上昇の間に1マイクロ秒かかることに注意してください。また、Frame Startトリガー信号が上昇した後、少なくとも1マイクロ秒はラインのステータスを維持する必要があります。Frame Trigger Wait 信号を監視して、タイミングを最適化します。
このモードを有効にするには、以下のように設定します SequenceAdvanceMode パラメータを Controlled.
他のモードと同様に、アドバンスは常にシーケンスセットインデックス番号0から昇順に進みます。
ただし、次の項目は制御できます。
- シーケンスセットアドバンス:シーケンサーを次のシーケンスセットに進めるタイミングは?
- シーケンスセットの再起動:シーケンスサイクルをシーケンスセット0からいつ再開?
イメージ SequenceSetTotalNumber パラメータは、使用するシーケンスセットの総数を指定します。インデックス番号が最も高いシーケンスセットが使用された後、サイクルは再び0から始まります。
Configuring Sequence Set Advance#
シーケンスセットアドバンスを設定するには、次の手順に従います。
- パラメーターを
SequenceControlSelectorパラメータをAdvance. - パラメーターを
SequenceControlSourceパラメーターを次のいずれかのオプションに設定します。Line1:シーケンスセットの進行はLine 1を介して制御されます。次の場合にLine 1がLow(0)である間 フレームスタートトリガー 信号を受信すると、Sequencerは進まず、現在のシーケンスセットが画像取り込みに再び使用されます。Frame Startトリガー信号の受信時にLine 1がHigh(1)である場合、Sequencerが進行し、サイクル内の次のシーケンスセットが画像取り込みに使用されます。Disabled:シーケンスセットの進行は、以下を使用して制御されますSequenceAsyncAdvanceソフトウェアコマンド。このコマンドを受信すると、Sequencerは画像を取り込まずに進行します。次のとき Frame Start トリガー 信号を受信すると、示されたシーケンスセットがSequenceCurrentSetパラメータ値が画像取り込みに使用されます。AlwaysActive:Sequencerの動作は、あたかも次のような動作をしますLine1が選択され、Line 1が常にHigh(1)でした。その結果、 Sequencerは次のような場合に毎回進みます フレームスタートトリガー 信号を受信します。このSequencerの動作方法は、各シークエンスセットを1サイクルにつき1回だけ使用する場合のオートシークエンスアドバンスモードでの動作と似ています。唯一の違いは、シークエンスセット0の代わりにシークエンスセット1が最初のシークエンスセットとして使用される点です。
Configuring Sequence Set Restart#
シーケンスセットの再起動を設定するには、次の手順に従います。
- パラメーターを
SequenceControlSelectorパラメータをRestart. - パラメーターを
SequenceControlSourceパラメーターを次のいずれかのオプションに設定します。Line1:Sequency set restartは、Line 1を介して制御されます。フレームスタートトリガー信号を受信したときにLine 1がLow(0)の場合、 フレームスタートトリガー 信号を受信すると、次のシークエンスセットが使用されます。フレームスタートトリガー信号を受信したときにLine 1がHigh(1)の場合、シーケンスサイクルが再起動され、シークエンスセット0が使用されます。Disabled:Sequence set restartは、SequenceAsyncRestartソフトウェアコマンドを使用して制御されます。このコマンドを受信すると、画像を取得せずにシーケンスサイクルが再起動されます。次の Frame Start トリガー 信号を受信すると、シークエンスセット0が使用されます。
Free Selection Advance Mode#
このモードは、特定の順序に従わないで、自由に選択可能なシーケンスセットをすばやく切り替える場合に便利です。カメラの入力ラインを使用して、シーケンスを決定します。
情報
ラインのステータスの設定とFrame Startトリガー信号の上昇の間には1マイクロ秒かかることに注意してください。また、Frame Startトリガー信号が上昇した後、少なくとも1マイクロ秒はラインのステータスを維持する必要があります。Frame Trigger Wait信号を監視して、タイミングを最適化します。
自由選択アドバンスモードの設定方法は、カメラで使用できる入力ラインの数によって異なります。
Cameras with One Input Line#
シーケンスセットは、入力ライン1のステータスに従って選択されます。
- フレーム開始トリガー信号を受信しているときにライン1が低(0)の場合は、シーケンスセット0が画像取得に使用されます。
- Frame Startトリガー信号を受信しているときにライン1が高(1)の場合は、シーケンスセット1が画像取得に使用されます。
シーケンスセット0と1のみ使用できます。
自由選択アドバンスモードを有効にするには、次の手順に従います。
- パラメーターを
SequenceAdvanceModeパラメータをFreeSelection. - パラメーターを
SequenceSetTotalNumberparameterを2に設定します。
イメージ SequenceAddressBitSelector および SequenceAddressBitSource パラメータもフリーセレクトアドバンスモードの動作を制御します。ただし、これらのパラメータは事前設定されており、変更することはできません。
Cameras with Two Input Lines#
シーケンスセットは、ライン1(光結合入力ライン)とライン3(GPIOライン、入力として設定する必要があります)のステータスに応じて選択され、4つの可能な組み合わせができます。これにより、4つのシーケンスセットから選択できます。したがって、シーケンスセット0、1、2、3のみが使用可能です。
自由選択アドバンスモードを設定するには、各行に「シーケンスセットアドレスビット」を割り当てる必要があります。これらのアドレスビットの組み合わせによって、シーケンスセットインデックス番号が決まります。次の表に、考えられる組み合わせとそれぞれの結果を示します。
| Address Bit 1 | Address Bit 0 | 選択されるシーケンスセット |
|---|---|---|
| 0 | 0 | Sequence set 0 |
| 0 | 1 | Sequence set 1 |
| 1 | 0 | Sequence set 2 |
| 1 | 1 | Sequence set 3 |
例えば、ライン1をビット1に、ライン3をビット0に割り当てることができます。これにより、次の設定例が得られます。
- フレーム開始トリガー信号を受信しているときに、ライン1低(0)でライン3が低(0)の場合、シーケンスセット0が画像取得に使用されます。
- フレーム開始トリガー信号を受信しているときに、ライン1が低(0)でライン3が高(1)の場合、シーケンスセット1が画像取得に使用されます。
- フレーム開始トリガー信号を受信しているときに、ライン1が高(1)でライン3が低(0)の場合、シーケンスセット2が画像取得に使用されます。
- フレーム開始トリガー信号を受信しているときに、ライン1が高(1)でライン3が高(1)の場合、シーケンスセット3が画像取得に使用されます。
ビットを設定し、自由選択アドバンスモードを有効にするには、次の手順に従います。
- パラメーターを
SequenceAdvanceModeパラメータをFreeSelection. - パラメーターを
SequenceSetTotalNumberパラメータを4に設定します。 - パラメーターを
SequenceAddressBitSelectorパラメータをBit0. - パラメーターを
SequenceAddressBitSourceパラメータを、ビット0に割り当てたいラインに設定します(例:Line3. - パラメーターを
SequenceAddressBitSelectorパラメータをBit1. - パラメーターを
SequenceAddressBitSourceパラメータを、ビット1に割り当てたいラインに設定します(例:Line1.
情報
フリーセレクトアドバンスモードでは、入力ラインを1つだけ使用することもできます。これを行うには、 SequenceSetTotalNumber パラメータを2に設定します。これで、ビット0のみを使用してシークエンスセットを選択できるようになります。フリーセレクトアドバンスモードは、「Cameras with One Input Line」で説明したように動作します。
Timing Diagrams#
Example: Auto Sequence Advance Mode#
Example: Controlled Sequence Advance Mode (Controlled via Line 1)#
Example: Free Selection Advance Mode#
サンプルコード#
// ** Configuring sequence sets **
// Disable the sequencer during configuration
camera.SequenceEnable.SetValue(false);
// Enable configuration mode (available on selected cameras only)
camera.SequenceConfigurationMode.SetValue(SequenceConfigurationMode_On);
// Set the total number of sequence sets to 2
camera.SequenceSetTotalNumber.SetValue(2);
// Configure the parameters that you want to store in the first sequence set
camera.Width.SetValue(500);
camera.Height.SetValue(300);
// Select sequence set 0 and save the parameter values
camera.SequenceSetIndex.SetValue(0);
camera.SequenceSetStore.Execute();
// Configure the parameters that you want to store in the second sequence set
camera.Width.SetValue(800);
camera.Height.SetValue(600);
// Select sequence set 1 and save the parameter values
camera.SequenceSetIndex.SetValue(1);
camera.SequenceSetStore.Execute();
// ** Configuring the sequencer for auto sequence advance mode
// Assuming you want to configure the following sequence cycle:
// 0 - 0 - 1 - 1 - 1 (- 0 - 0 - ...) **
// Disable the sequencer during configuration
camera.SequenceEnable.SetValue(false);
camera.SequenceAdvanceMode.SetValue(SequenceAdvanceMode_Auto);
// Set the total number of sequence sets to 2
camera.SequenceSetTotalNumber.SetValue(2);
// Load sequence set 0 and specify that this set is to be used
// 2 times in a row
camera.SequenceSetIndex.SetValue(0);
camera.SequenceSetLoad.Execute();
camera.SequenceSetExecutions.SetValue(2);
camera.SequenceSetStore.Execute();
// Load sequence set 1 and specify that this set is to be used
// 3 times in a row
camera.SequenceSetIndex.SetValue(1);
camera.SequenceSetLoad.Execute();
camera.SequenceSetExecutions.SetValue(3);
camera.SequenceSetStore.Execute();
// Enable the sequencer
camera.SequenceEnable.SetValue(true);
// ** Configuring the sequencer for controlled sequence advance mode **
// Disable the sequencer during configuration
camera.SequenceEnable.SetValue(false);
camera.SequenceAdvanceMode.SetValue(SequenceAdvanceMode_Controlled);
// Set the total number of sequence sets to 2
camera.SequenceSetTotalNumber.SetValue(2);
// Specify that sequence set advance is controlled via line 1
camera.SequenceControlSelector.SetValue(SequenceControlSelector_Advance);
camera.SequenceControlSource.SetValue(SequenceControlSource_Line1);
// Specify that sequence set restart is controlled
// via software command
camera.SequenceControlSelector.SetValue(SequenceControlSelector_Restart);
camera.SequenceControlSource.SetValue(SequenceControlSource_Disabled);
// Enable the sequencer
camera.SequenceEnable.SetValue(true);
// Restart the sequencer via software command (for testing purposes)
camera.SequenceAsyncRestart.Execute();
// ** Configuring the sequencer for free selection advance mode
// on cameras with ONE input line **
// Disable the sequencer during configuration
camera.SequenceEnable.SetValue(false);
camera.SequenceAdvanceMode.SetValue(SequenceAdvanceMode_FreeSelection);
// Set the total number of sequence sets to 2
camera.SequenceSetTotalNumber.SetValue(2);
// Enable the sequencer
camera.SequenceEnable.SetValue(true);
// ** Configuring the sequencer for free selection advance mode
// on cameras with TWO input lines (1x opto-coupled, 1x GPIO set for input) **
// Disable the sequencer during configuration
camera.SequenceEnable.SetValue(false);
camera.SequenceAdvanceMode.SetValue(SequenceAdvanceMode_FreeSelection);
// Set the total number of sequence sets to 2
camera.SequenceSetTotalNumber.SetValue(4);
// Assign sequence address bit 0 to line 3
camera.SequenceAddressBitSelector.SetValue(SequenceAddressBitSelector_Bit0);
camera.SequenceAddressBitSource.SetValue(SequenceAddressBitSource_Line3);
// Assign sequence address bit 1 to line 1
camera.SequenceAddressBitSelector.SetValue(SequenceAddressBitSelector_Bit1);
camera.SequenceAddressBitSource.SetValue(SequenceAddressBitSource_Line1);
// Enable the sequencer
camera.SequenceEnable.SetValue(true);
INodeMap& nodemap = camera.GetNodeMap();
// ** Configuring sequence sets **
// Disable the sequencer during configuration
CBooleanParameter(nodemap, "SequenceEnable").SetValue(false);
// Enable configuration mode (available on selected cameras only)
CEnumParameter(nodemap, "SequenceConfigurationMode").SetValue("On");
// Set the total number of sequence sets to 2
CIntegerParameter(nodemap, "SequenceSetTotalNumber").SetValue(2);
// Configure the parameters that you want to store in the first sequence set
CIntegerParameter(nodemap, "Width").SetValue(500);
CIntegerParameter(nodemap, "Height").SetValue(300);
// Select sequence set 0 and save the parameter values
CIntegerParameter(nodemap, "SequenceSetIndex").SetValue(0);
CCommandParameter(nodemap, "SequenceSetStore").Execute();
// Configure the parameters that you want to store in the second sequence set
CIntegerParameter(nodemap, "Width").SetValue(800);
CIntegerParameter(nodemap, "Height").SetValue(600);
// Select sequence set 1 and save the parameter values
CIntegerParameter(nodemap, "SequenceSetIndex").SetValue(1);
CCommandParameter(nodemap, "SequenceSetStore").Execute();
// ** Configuring the sequencer for auto sequence advance mode
// Assuming you want to configure the following sequence cycle:
// 0 - 0 - 1 - 1 - 1 (- 0 - 0 - ...) **
// Disable the sequencer during configuration
CBooleanParameter(nodemap, "SequenceEnable").SetValue(false);
CEnumParameter(nodemap, "SequenceAdvanceMode").SetValue("Auto");
// Set the total number of sequence sets to 2
CIntegerParameter(nodemap, "SequenceSetTotalNumber").SetValue(2);
// Load sequence set 0 and specify that this set is to be used
// 2 times in a row
CIntegerParameter(nodemap, "SequenceSetIndex").SetValue(0);
CCommandParameter(nodemap, "SequenceSetLoad").Execute();
CIntegerParameter(nodemap, "SequenceSetExecutions").SetValue(2);
CCommandParameter(nodemap, "SequenceSetStore").Execute();
// Load sequence set 1 and specify that this set is to be used
// 3 times in a row
CIntegerParameter(nodemap, "SequenceSetIndex").SetValue(1);
CCommandParameter(nodemap, "SequenceSetLoad").Execute();
CIntegerParameter(nodemap, "SequenceSetExecutions").SetValue(3);
CCommandParameter(nodemap, "SequenceSetStore").Execute();
// Enable the sequencer
CBooleanParameter(nodemap, "SequenceEnable").SetValue(true);
// ** Configuring the sequencer for controlled sequence advance mode **
// Disable the sequencer during configuration
CBooleanParameter(nodemap, "SequenceEnable").SetValue(false);
CEnumParameter(nodemap, "SequenceAdvanceMode").SetValue("Controlled");
// Set the total number of sequence sets to 2
CIntegerParameter(nodemap, "SequenceSetTotalNumber").SetValue(2);
// Specify that sequence set advance is controlled via line 1
CEnumParameter(nodemap, "SequenceControlSelector").SetValue("Advance");
CEnumParameter(nodemap, "SequenceControlSource").SetValue("Line1");
// Specify that sequence set restart is controlled
// via software command
CEnumParameter(nodemap, "SequenceControlSelector").SetValue("Restart");
CEnumParameter(nodemap, "SequenceControlSource").SetValue("Disabled");
// Enable the sequencer
CBooleanParameter(nodemap, "SequenceEnable").SetValue(true);
// Restart the sequencer via software command (for testing purposes)
CCommandParameter(nodemap, "SequenceAsyncRestart").Execute();
// ** Configuring the sequencer for free selection advance mode
// on cameras with ONE input line **
// Disable the sequencer during configuration
CBooleanParameter(nodemap, "SequenceEnable").SetValue(false);
CEnumParameter(nodemap, "SequenceAdvanceMode").SetValue("FreeSelection");
// Set the total number of sequence sets to 2
CIntegerParameter(nodemap, "SequenceSetTotalNumber").SetValue(2);
// Enable the sequencer
CBooleanParameter(nodemap, "SequenceEnable").SetValue(true);
// ** Configuring the sequencer for free selection advance mode
// on cameras with TWO input lines (1x opto-coupled, 1x GPIO set for input) **
// Disable the sequencer during configuration
CBooleanParameter(nodemap, "SequenceEnable").SetValue(false);
CEnumParameter(nodemap, "SequenceAdvanceMode").SetValue("FreeSelection");
// Set the total number of sequence sets to 2
CIntegerParameter(nodemap, "SequenceSetTotalNumber").SetValue(4);
// Assign sequence address bit 0 to line 3
CEnumParameter(nodemap, "SequenceAddressBitSelector").SetValue("Bit0");
CEnumParameter(nodemap, "SequenceAddressBitSource").SetValue("Line3");
// Assign sequence address bit 1 to line 1
CEnumParameter(nodemap, "SequenceAddressBitSelector").SetValue("Bit1");
CEnumParameter(nodemap, "SequenceAddressBitSource").SetValue("Line1");
// Enable the sequencer
CBooleanParameter(nodemap, "SequenceEnable").SetValue(true);
// ** Configuring sequence sets **
// Disable the sequencer during configuration
camera.Parameters[PLCamera.SequenceEnable].SetValue(false);
// Enable configuration mode (available on selected cameras only)
camera.Parameters[PLCamera.SequenceConfigurationMode].SetValue(PLCamera.SequenceConfigurationMode.On);
// Set the total number of sequence sets to 2
camera.Parameters[PLCamera.SequenceSetTotalNumber].SetValue(2);
// Configure the parameters that you want to store in the first sequence set
camera.Parameters[PLCamera.Width].SetValue(500);
camera.Parameters[PLCamera.Height].SetValue(300);
// Select sequence set 0 and save the parameter values
camera.Parameters[PLCamera.SequenceSetIndex].SetValue(0);
camera.Parameters[PLCamera.SequenceSetStore].Execute();
// Configure the parameters that you want to store in the second sequence set
camera.Parameters[PLCamera.Width].SetValue(800);
camera.Parameters[PLCamera.Height].SetValue(600);
// Select sequence set 1 and save the parameter values
camera.Parameters[PLCamera.SequenceSetIndex].SetValue(1);
camera.Parameters[PLCamera.SequenceSetStore].Execute();
// ** Configuring the sequencer for auto sequence advance mode
// Assuming you want to configure the following sequence cycle:
// 0 - 0 - 1 - 1 - 1 (- 0 - 0 - ...) **
// Disable the sequencer during configuration
camera.Parameters[PLCamera.SequenceEnable].SetValue(false);
camera.Parameters[PLCamera.SequenceAdvanceMode].SetValue(PLCamera.SequenceAdvanceMode.Auto);
// Set the total number of sequence sets to 2
camera.Parameters[PLCamera.SequenceSetTotalNumber].SetValue(2);
// Load sequence set 0 and specify that this set is to be used
// 2 times in a row
camera.Parameters[PLCamera.SequenceSetIndex].SetValue(0);
camera.Parameters[PLCamera.SequenceSetLoad].Execute();
camera.Parameters[PLCamera.SequenceSetExecutions].SetValue(2);
camera.Parameters[PLCamera.SequenceSetStore].Execute();
// Load sequence set 1 and specify that this set is to be used
// 3 times in a row
camera.Parameters[PLCamera.SequenceSetIndex].SetValue(1);
camera.Parameters[PLCamera.SequenceSetLoad].Execute();
camera.Parameters[PLCamera.SequenceSetExecutions].SetValue(3);
camera.Parameters[PLCamera.SequenceSetStore].Execute();
// Enable the sequencer
camera.Parameters[PLCamera.SequenceEnable].SetValue(true);
// ** Configuring the sequencer for controlled sequence advance mode **
// Disable the sequencer during configuration
camera.Parameters[PLCamera.SequenceEnable].SetValue(false);
camera.Parameters[PLCamera.SequenceAdvanceMode].SetValue(PLCamera.SequenceAdvanceMode.Controlled);
// Set the total number of sequence sets to 2
camera.Parameters[PLCamera.SequenceSetTotalNumber].SetValue(2);
// Specify that sequence set advance is controlled via line 1
camera.Parameters[PLCamera.SequenceControlSelector].SetValue(PLCamera.SequenceControlSelector.Advance);
camera.Parameters[PLCamera.SequenceControlSource].SetValue(PLCamera.SequenceControlSource.Line1);
// Specify that sequence set restart is controlled
// via software command
camera.Parameters[PLCamera.SequenceControlSelector].SetValue(PLCamera.SequenceControlSelector.Restart);
camera.Parameters[PLCamera.SequenceControlSource].SetValue(PLCamera.SequenceControlSource.Disabled);
// Enable the sequencer
camera.Parameters[PLCamera.SequenceEnable].SetValue(true);
// Restart the sequencer via software command (for testing purposes)
camera.Parameters[PLCamera.SequenceAsyncRestart].Execute();
// ** Configuring the sequencer for free selection advance mode
// on cameras with ONE input line **
// Disable the sequencer during configuration
camera.Parameters[PLCamera.SequenceEnable].SetValue(false);
camera.Parameters[PLCamera.SequenceAdvanceMode].SetValue(PLCamera.SequenceAdvanceMode.FreeSelection);
// Set the total number of sequence sets to 2
camera.Parameters[PLCamera.SequenceSetTotalNumber].SetValue(2);
// Enable the sequencer
camera.Parameters[PLCamera.SequenceEnable].SetValue(true);
// ** Configuring the sequencer for free selection advance mode
// on cameras with TWO input lines (1x opto-coupled, 1x GPIO set for input) **
// Disable the sequencer during configuration
camera.Parameters[PLCamera.SequenceEnable].SetValue(false);
camera.Parameters[PLCamera.SequenceAdvanceMode].SetValue(PLCamera.SequenceAdvanceMode.FreeSelection);
// Set the total number of sequence sets to 2
camera.Parameters[PLCamera.SequenceSetTotalNumber].SetValue(4);
// Assign sequence address bit 0 to line 3
camera.Parameters[PLCamera.SequenceAddressBitSelector].SetValue(PLCamera.SequenceAddressBitSelector.Bit0);
camera.Parameters[PLCamera.SequenceAddressBitSource].SetValue(PLCamera.SequenceAddressBitSource.Line3);
// Assign sequence address bit 1 to line 1
camera.Parameters[PLCamera.SequenceAddressBitSelector].SetValue(PLCamera.SequenceAddressBitSelector.Bit1);
camera.Parameters[PLCamera.SequenceAddressBitSource].SetValue(PLCamera.SequenceAddressBitSource.Line1);
// Enable the sequencer
camera.Parameters[PLCamera.SequenceEnable].SetValue(true);
/* 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 sequence sets ** */
/* Disable the sequencer during configuration */
errRes = PylonDeviceSetBooleanFeature(hdev, "SequenceEnable", 0);
CHECK(errRes);
/* Enable configuration mode (available on selected cameras only) */
errRes = PylonDeviceFeatureFromString(hdev, "SequenceConfigurationMode", "On");
CHECK(errRes);
/* Set the total number of sequence sets to 2 */
errRes = PylonDeviceSetIntegerFeature(hdev, "SequenceSetTotalNumber", 2);
CHECK(errRes);
/* Configure the parameters that you want to store in the first sequence set */
errRes = PylonDeviceSetIntegerFeature(hdev, "Width", 500);
CHECK(errRes);
errRes = PylonDeviceSetIntegerFeature(hdev, "Height", 300);
CHECK(errRes);
/* Select sequence set 0 and save the parameter values */
errRes = PylonDeviceSetIntegerFeature(hdev, "SequenceSetIndex", 0);
CHECK(errRes);
errRes = PylonDeviceExecuteCommandFeature(hdev, "SequenceSetStore");
CHECK(errRes);
/* Configure the parameters that you want to store in the second sequence set */
errRes = PylonDeviceSetIntegerFeature(hdev, "Width", 800);
CHECK(errRes);
errRes = PylonDeviceSetIntegerFeature(hdev, "Height", 600);
CHECK(errRes);
/* Select sequence set 1 and save the parameter values */
errRes = PylonDeviceSetIntegerFeature(hdev, "SequenceSetIndex", 1);
CHECK(errRes);
errRes = PylonDeviceExecuteCommandFeature(hdev, "SequenceSetStore");
CHECK(errRes);
/* ** Configuring the sequencer for auto sequence advance mode */
/* Assuming you want to configure the following sequence cycle: */
/* 0 - 0 - 1 - 1 - 1 (- 0 - 0 - ...) ** */
/* Disable the sequencer during configuration */
errRes = PylonDeviceSetBooleanFeature(hdev, "SequenceEnable", 0);
CHECK(errRes);
errRes = PylonDeviceFeatureFromString(hdev, "SequenceAdvanceMode", "Auto");
CHECK(errRes);
/* Set the total number of sequence sets to 2 */
errRes = PylonDeviceSetIntegerFeature(hdev, "SequenceSetTotalNumber", 2);
CHECK(errRes);
/* Load sequence set 0 and specify that this set is to be used */
/* 2 times in a row */
errRes = PylonDeviceSetIntegerFeature(hdev, "SequenceSetIndex", 0);
CHECK(errRes);
errRes = PylonDeviceExecuteCommandFeature(hdev, "SequenceSetLoad");
CHECK(errRes);
errRes = PylonDeviceSetIntegerFeature(hdev, "SequenceSetExecutions", 2);
CHECK(errRes);
errRes = PylonDeviceExecuteCommandFeature(hdev, "SequenceSetStore");
CHECK(errRes);
/* Load sequence set 1 and specify that this set is to be used */
/* 3 times in a row */
errRes = PylonDeviceSetIntegerFeature(hdev, "SequenceSetIndex", 1);
CHECK(errRes);
errRes = PylonDeviceExecuteCommandFeature(hdev, "SequenceSetLoad");
CHECK(errRes);
errRes = PylonDeviceSetIntegerFeature(hdev, "SequenceSetExecutions", 3);
CHECK(errRes);
errRes = PylonDeviceExecuteCommandFeature(hdev, "SequenceSetStore");
CHECK(errRes);
/* Enable the sequencer */
errRes = PylonDeviceSetBooleanFeature(hdev, "SequenceEnable", 1);
CHECK(errRes);
/* ** Configuring the sequencer for controlled sequence advance mode ** */
/* Disable the sequencer during configuration */
errRes = PylonDeviceSetBooleanFeature(hdev, "SequenceEnable", 0);
CHECK(errRes);
errRes = PylonDeviceFeatureFromString(hdev, "SequenceAdvanceMode", "Controlled");
CHECK(errRes);
/* Set the total number of sequence sets to 2 */
errRes = PylonDeviceSetIntegerFeature(hdev, "SequenceSetTotalNumber", 2);
CHECK(errRes);
/* Specify that sequence set advance is controlled via line 1 */
errRes = PylonDeviceFeatureFromString(hdev, "SequenceControlSelector", "Advance");
CHECK(errRes);
errRes = PylonDeviceFeatureFromString(hdev, "SequenceControlSource", "Line1");
CHECK(errRes);
/* Specify that sequence set restart is controlled */
/* via software command */
errRes = PylonDeviceFeatureFromString(hdev, "SequenceControlSelector", "Restart");
CHECK(errRes);
errRes = PylonDeviceFeatureFromString(hdev, "SequenceControlSource", "Disabled");
CHECK(errRes);
/* Enable the sequencer */
errRes = PylonDeviceSetBooleanFeature(hdev, "SequenceEnable", 1);
CHECK(errRes);
/* Restart the sequencer via software command (for testing purposes) */
errRes = PylonDeviceExecuteCommandFeature(hdev, "SequenceAsyncRestart");
CHECK(errRes);
/* ** Configuring the sequencer for free selection advance mode */
/* on cameras with ONE input line ** */
/* Disable the sequencer during configuration */
errRes = PylonDeviceSetBooleanFeature(hdev, "SequenceEnable", 0);
CHECK(errRes);
errRes = PylonDeviceFeatureFromString(hdev, "SequenceAdvanceMode", "FreeSelection");
CHECK(errRes);
/* Set the total number of sequence sets to 2 */
errRes = PylonDeviceSetIntegerFeature(hdev, "SequenceSetTotalNumber", 2);
CHECK(errRes);
/* Enable the sequencer */
errRes = PylonDeviceSetBooleanFeature(hdev, "SequenceEnable", 1);
CHECK(errRes);
/* ** Configuring the sequencer for free selection advance mode */
/* on cameras with TWO input lines (1x opto-coupled, 1x GPIO set for input) ** */
/* Disable the sequencer during configuration */
errRes = PylonDeviceSetBooleanFeature(hdev, "SequenceEnable", 0);
CHECK(errRes);
errRes = PylonDeviceFeatureFromString(hdev, "SequenceAdvanceMode", "FreeSelection");
CHECK(errRes);
/* Set the total number of sequence sets to 2 */
errRes = PylonDeviceSetIntegerFeature(hdev, "SequenceSetTotalNumber", 4);
CHECK(errRes);
/* Assign sequence address bit 0 to line 3 */
errRes = PylonDeviceFeatureFromString(hdev, "SequenceAddressBitSelector", "Bit0");
CHECK(errRes);
errRes = PylonDeviceFeatureFromString(hdev, "SequenceAddressBitSource", "Line3");
CHECK(errRes);
/* Assign sequence address bit 1 to line 1 */
errRes = PylonDeviceFeatureFromString(hdev, "SequenceAddressBitSelector", "Bit1");
CHECK(errRes);
errRes = PylonDeviceFeatureFromString(hdev, "SequenceAddressBitSource", "Line1");
CHECK(errRes);
/* Enable the sequencer */
errRes = PylonDeviceSetBooleanFeature(hdev, "SequenceEnable", 1);
CHECK(errRes);
# ** Configuring sequence sets **
# Disable the sequencer during configuration
camera.SequenceEnable.Value = False
# Enable configuration mode (available on selected cameras only)
camera.SequenceConfigurationMode.Value = "On"
# Set the total number of sequence sets to 2
camera.SequenceSetTotalNumber.Value = 2
# Configure the parameters that you want to store in the first sequence set
camera.Width.Value = 500
camera.Height.Value = 300
# Select sequence set 0 and save the parameter values
camera.SequenceSetIndex.Value = 0
camera.SequenceSetStore.Execute()
# Configure the parameters that you want to store in the second sequence set
camera.Width.Value = 800
camera.Height.Value = 600
# Select sequence set 1 and save the parameter values
camera.SequenceSetIndex.Value = 1
camera.SequenceSetStore.Execute()
# ** Configuring the sequencer for auto sequence advance mode
# Assuming you want to configure the following sequence cycle:
# 0 - 0 - 1 - 1 - 1 (- 0 - 0 - ...) **
# Disable the sequencer during configuration
camera.SequenceEnable.Value = False
camera.SequenceAdvanceMode.Value = "Auto"
# Set the total number of sequence sets to 2
camera.SequenceSetTotalNumber.Value = 2
# Load sequence set 0 and specify that this set is to be used
# 2 times in a row
camera.SequenceSetIndex.Value = 0
camera.SequenceSetLoad.Execute()
camera.SequenceSetExecutions.Value = 2
camera.SequenceSetStore.Execute()
# Load sequence set 1 and specify that this set is to be used
# 3 times in a row
camera.SequenceSetIndex.Value = 1
camera.SequenceSetLoad.Execute()
camera.SequenceSetExecutions.Value = 3
camera.SequenceSetStore.Execute()
# Enable the sequencer
camera.SequenceEnable.Value = True
# ** Configuring the sequencer for controlled sequence advance mode **
# Disable the sequencer during configuration
camera.SequenceEnable.Value = False
camera.SequenceAdvanceMode.Value = "Controlled"
# Set the total number of sequence sets to 2
camera.SequenceSetTotalNumber.Value = 2
# Specify that sequence set advance is controlled via line 1
camera.SequenceControlSelector.Value = "Advance"
camera.SequenceControlSource.Value = "Line1"
# Specify that sequence set restart is controlled
# via software command
camera.SequenceControlSelector.Value = "Restart"
camera.SequenceControlSource.Value = "Disabled"
# Enable the sequencer
camera.SequenceEnable.Value = True
# Restart the sequencer via software command (for testing purposes)
camera.SequenceAsyncRestart.Execute()
# ** Configuring the sequencer for free selection advance mode
# on cameras with ONE input line **
# Disable the sequencer during configuration
camera.SequenceEnable.Value = False
camera.SequenceAdvanceMode.Value = "FreeSelection"
# Set the total number of sequence sets to 2
camera.SequenceSetTotalNumber.Value = 2
# Enable the sequencer
camera.SequenceEnable.Value = True
# ** Configuring the sequencer for free selection advance mode
# on cameras with TWO input lines (1x opto-coupled, 1x GPIO set for input) **
# Disable the sequencer during configuration
camera.SequenceEnable.Value = False
camera.SequenceAdvanceMode.Value = "FreeSelection"
# Set the total number of sequence sets to 2
camera.SequenceSetTotalNumber.Value = 4
# Assign sequence address bit 0 to line 3
camera.SequenceAddressBitSelector.Value = "Bit0"
camera.SequenceAddressBitSource.Value = "Line3"
# Assign sequence address bit 1 to line 1
camera.SequenceAddressBitSelector.Value = "Bit1"
camera.SequenceAddressBitSource.Value = "Line1"
# Enable the sequencer
camera.SequenceEnable.Value = True
pylon Viewerを使用して、パラメーターを簡単に設定することもできます。