Sequencer(ace 2およびboost R)#
シーケンサーセットと呼ばれる最大32セットのパラメーター設定を定義できます。カメラはトリガー信号を受信すると、シーケンサーセットを1つずつ順番に適用します。
例えば、Sequencer機能を使用して、設定済みの画像ROIまたは露光時間をすばやく変更できます。
機能を使用する#
Sequencerモード#
- シーケンサー設定モードではシーケンサーを設定できますが、操作はできません。
- シーケンサーモードではシーケンサーを操作できますが、設定はできません。
Sequencer設定モード#
シーケンサー設定モードを有効するには、次の手順に従います。
Sequencer Mode
パラメーターをOff
に設定します。Sequencer ConfigurationMode
パラメーターをOn
に設定します。
これでシーケンサーを設定できるようになりました。
情報
- 設定モードでは、一部のカメラパラメーターが使用できない場合があります。つまり、これらは読み取り専用に設定されています。pylon Viewerの[Features - All]ペインで、使用可能なパラメーターを確認します。
Sequencerモード#
シーケンサーモードを有効にするには、SequencerMode
パラメーターをOn
に設定します。これにより、シーケンサー設定モードが自動的に無効になります。
これでシーケンサーがトリガー信号を受信し、設定されたとおりに進行する準備ができました。
情報
- デフォルトでは、シーケンサーモードを有効にすると、カメラはただちにシーケンサーセット0をロードします。この動作を変更するには、
SequencerSetStart
パラメーターを目的の開始セットに設定します。 - シーケンサーモードでは、一部のカメラパラメーターが使用できない場合があります。つまり、これらは読み取り専用に設定されています。pylon Viewerの[Features - All]ペインで、使用可能なパラメーターを確認します。
- シーケンサーモードでは、設定されたシーケンサーセットに基づいて一部のカメラのパラメーター値が計算されます。
PayloadSize
パラメーター値は、設定された最大のシーケンサーセットのサイズを反映します。- バーストされた画像の最大数(
AcquisitionBurstFrameCount
パラメーターの最大値)は、設定された最大のシーケンサーセットを使用して計算されます。
SequencerSetActive
パラメーターを使用して、どのシーケンサーセットが現在アクティブかを確認できます。- 使用可能な場合は、Sequencer Set Active chunkを使用して、使用されるシーケンサーセットを追跡できます。有効にすると、各画像には、画像取得に使用されるシーケンサーセットのインデックス番号を含むチャンクデータが含まれます。
What's in a Sequencer Set?#
Sequencerセットには、次のパラメーターが含まれます(使用可能な場合)。
AutoFunctionROIWidth
aAutoFunctionROIHeight
aAutoFunctionROIOffsetX
aAutoFunctionROIOffsetY
aBinningHorizontal
abBinningVertical
abBinningHorizontalMode
abBinningVerticalMode
abExposureTime
cGain
Height
adOffsetX
adOffsetY
adPixelFormat
aSequencerSetNext
SequencerTriggerActivation
SequencerTriggerSource
Width
ad
-
Not available on Basler ace 2 V and boost cameras.
-
FPGAビニングの設定のみが保存されます。
-
シーケンサーを操作または設定する際、露光時間モードはStandardにプリセットされており、変更できません。
-
シーケンサーを操作または設定する際、Multiple ROI機能は無効になっています。
他のすべてのカメラパラメーターは、Sequencer機能を使用して制御できません。
情報
シーケンサーセットをロードまたは保存すると、変更していないパラメーターも含め、常に上記のすべてのパラメーターがロードまたは保存されます。例えば、露光時間を変更し、他のすべてのパラメーターをデフォルト値のままにした場合、他のすべてのパラメーターの値も保存され、ロード時に上書きされます。
Configuring the Sequencer#
Baslerは、シーケンサーを以下の2つの手順で設定することを推奨します。
- 目的のカメラ設定(露光時間や画像ROIなど)をシーケンサーセットに読み込みます。
- シーケンサーセット進行を設定します。すなわち、シーケンサーがセットから次のセットに進む方法とタイミングを定義します。
Sequencerセットへのデータの読み込み#
各シーケンサーセットには、0~31の範囲の固有のインデックス番号があります。目的のカメラ設定(露光時間や画像ROIなど)をセットに読み込むことができます。
次の手順に従ってシーケンサーセットに読み込みます。
- シーケンサーが設定モードであることを確認します。
- シーケンサーセットに保存するカメラパラメーターを設定します。
SequencerSetSelector
パラメーターを目的のセットのインデックス番号に設定します。SequencerSetSave
コマンドを実行します。- 使用するすべてのセットについて、手順2~4を繰り返します。
例:セット0と1に異なる画像ROI設定を読み込むとします。これを行うには、次の手順に従います。
Width
、Height
、OffsetX
およびOffsetY
のパラメーター値を調整して、最初の画像ROIを作成します。- セット0を保存します。
Width
、Height
、OffsetX
およびOffsetY
のパラメーターに異なる値を選択して、2番目の画像ROIを作成します。- セット1を保存します。
その後、カメラが2つの画像ROI間で迅速に変更できるようにシーケンサーセット進行を設定できます。
Sequencerセット進行の設定#
シーケンサーを制御するには、シーケンサーがセットから次のセットに進む方法とタイミングを定義する必要があります。
シーケンサーセットごとに、以下を定義する必要があります。
基準 | パラメーター |
---|---|
次に来る必要があるセット | SequencerSetNext |
シーケンサーを次のセットに進ませるトリガー信号 | SequencerTriggerSource |
信号の立ち上がりエッジや立ち下がりエッジなどで、トリガー信号が有効とみなされるタイミング | SequencerTriggerActivation |
必要に応じて、いわゆるパスを設定することにより、各セットに対して上記を2回定義できます。例えば、Line 3のトリガー信号を受信したとき(= パス0)にカメラをセット1に進めるように定義できますが、Line 4のトリガー信号を受信したとき(= パス1)にセット3に進むように定義できます。
これがすべてセットアップされると、カメラはシーケンサーセット間の遷移のタイミングと方法を正確に把握し、基本的に状態機械のように動作します。
Sequencerセットはフレームトリガーとは無関係に進行
シーケンサーは、画像取得とは無関係に進行できます。画像は常に、カメラがフレームトリガー信号を受信した時点でアクティブなセットを使用して取得されます。
例えば、入力ライン3を使用してシーケンサーセット進行をトリガーできますが、ライン4を使用して画像をトリガーできます。
シーケンサーの進行を画像取得と同期させる場合、BaslerはシーケンサートリガーソースをExposureStart
に設定することを推奨します。
シーケンサートリガーソースとフレーム開始トリガーソースを同じ信号ソースに設定しないでください。そうしないと、カメラが予期しない動作を示す場合があります。
シーケンサーセット進行を設定するには、次の手順に従います。
- シーケンサーが設定モードであることを確認します。
SequencerSetSelector
パラメーターを、設定する最初のシーケンサーセットに指定します。SequencerSetLoad
コマンドを実行します。- 次の手順に従って、パス0のシーケンサーセット進行を設定します。
SequencerPathSelector
パラメーターを0に設定します。SequencerSetNext
パラメーターを、設定する次のセットに指定します。SequencerTriggerSource
パラメーターを、次のセットに進むために使用するソース信号に指定します。Line1
やExposureStart
など、使用可能な任意のトリガーソース信号を選択できます。- If you selected a trigger source that can be high (1) or low (0), i.e., an I/O signal, set the
SequencerTriggerActivation
パラメーターを次のいずれかの値に設定します。RisingEdge
(デフォルト):シーケンサーは、ソース信号が立ち上がる(信号ステータスがLowからHighに変化する)と進行します。FallingEdge
:シーケンサーは、ソース信号が立ち下がる(信号ステータスがHighからLowに変化する)と進行します。AnyEdge
:ソース信号の立ち下がりまたは立ち下がりでシーケンサーが進行します。LevelHigh
:シーケンサーは、ソース信号がHighのときに進行します。シーケンサーセットがロードされたときに信号がすでにHighの場合、シーケンサーはすぐに次のセットに進行します。これは、画像取得とは無関係に行われます。LevelLow
:シーケンサーは、ソース信号がLowのときに進行します。シーケンサーセットがロードされたときに信号がすでにLowの場合、シーケンサーはすぐに次のセットに進行します。これは、画像取得とは無関係に行われます。
- カメラを別のセットに進める2番目の条件を定義する場合は、
SequencerPathSelector
パラメーターを1に設定して手順4を繰り返します。 SequencerSetSave
コマンドを実行します。SequencerSetSelector
パラメーターを、設定する次のシーケンサーセットに指定します。- 目的のすべてのセットについて、手順3~7を繰り返します。
例#
例1:セットの循環#
画像取得中にシーケンサーセット0、1、2を順番に切り替えるとします。カメラが画像を取得するたびに、シーケンサーは次のセットに進む必要があります。
これを行うには、シーケンサーを以下のように設定します。
Sequencer Set Selector | Sequencer Path Selector | Sequencer Trigger Source | Sequencer Trigger Activation | Sequencer Set Next |
---|---|---|---|---|
0 | 0 | ExposureStart | - | 1 |
1 | 0 | ExposureStart | - | 2 |
2 | 0 | ExposureStart | - | 0 |
以下に、上記のようにシーケンサーを設定した場合の動作の概要を示します。
- 有効にすると、シーケンサーはセット0(デフォルト)で開始し、最初の画像の露光を待機します。
- その場合、カメラは現在のシーケンサーセット0を画像に適用してからセット1に進みます。
- 次の露光が開始されると、カメラはセット1を適用し、セット2に進みます。
- 次の露光が開始されると、カメラはセット2を適用し、セット0に進みます。
- これでシーケンサーはセット0に戻り、上記のプロセスが繰り返されるようになりました。
例2:CounterとMultiple Pathsの使用#
n回目の画像取得ごとに特定のセットに進むようにシーケンサーを設定できます。
これには、Counter機能の使用と複数のパスの設定が含まれます。
画像取得中にシーケンサーセット0と1を交互に切り替えるとします。ただし、最初の画像と10番目の画像ごとにシーケンサーセット2を使用する必要があります。
これを実現するには、次の手順に従います。
SequencerStartSet
パラメーターを2に設定します。-
Counter 1を次のように設定します。
CounterDuration
= 10CounterEventSource
=ExposureStart
CounterResetSource
=Counter1End
-
以下の表に示すようにシーケンサーを設定します。
Sequencer Set Selector | Sequencer Path Selector | Sequencer Trigger Source | Sequencer Trigger Activation | Sequencer Set Next |
---|---|---|---|---|
0 | 0 | ExposureActive | FallingEdge | 1 |
0 | 1 | Counter1End | - | 2 |
1 | 0 | ExposureActive | FallingEdge | 0 |
1 | 1 | Counter1End | - | 2 |
2 | 0 | ExposureActive | FallingEdge | 0 |
情報
- 画像取得を開始する前に、カウンターがリセットされていることを確認してください。それ以外の場合は、カウントされません。
- 上記の設定では、シーケンサーセット進行が立ち下がりエッジアクティブでExposure Active信号を使用してトリガーされる間に、カウンターがExposure Start信号を使用してトリガーされることに注意してください。これにより、パス0とパス1のタイミングの競合を回避できます。
以下に、上記のようにシーケンサーを設定した場合の動作の概要を示します。
- 有効にすると、シーケンサーはセット2で開始し、最初の画像の露光を待機します。
- 最初の露光が開始されると、Counter 1はExposure Startイベントをカウントするように設定されているため、0から1に増加します。
- 最初の露光が終了(Exposure Active信号が低下)すると、シーケンサーはセット0に進みます。
- 次の8つの画像取得では、シーケンサーがセット0とセット1を交互に切り替え、カウンターが増加し続けます。露光が終了(Exposure Active信号が低下)するたびに、シーケンサーは進行します。
- 10番目の画像の露光が開始されると、カウンターは最大値(
CounterDuration
= 10)に達し、自動的にリセットされ、カメラはCounter 1 End信号を送信します。これにより、シーケンサーはパス0トリガー条件(ExposureActive
、FallingEdge
)が有効になる前にパス1でセット2に進みます。 - これでシーケンサーはセット2に戻り、上記のプロセスが繰り返されるようになりました。
例3:ランタイムの選択#
必要に応じてランタイムにシーケンサーセットを選択するようにシーケンサーを設定できます。
これには、複数のI/Oラインをトリガーソースとして設定し、SequencerTriggerActivation
パラメーターのLevelLow
およびLevelHigh
オプションを使用します。
シーケンサーセットの選択は、入力ライン2および3の信号ステータス(0 = Low、1 = High)を使用して制御するものとします。ラインのステータスに応じて、シーケンサーを以下のように動作させます。
Signal Status Line 2 | Signal Status Line 3 | Selected Set |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 2 |
1 | 1 | 3 |
これを行うには、シーケンサーを以下のように設定します。
Sequencer Set Selector | Sequencer Path Selector | Sequencer Trigger Source | Sequencer Trigger Activation | Sequencer Set Next |
---|---|---|---|---|
0 | 0 | Line3 | LineHigh | 1 |
0 | 1 | Line2 | LineHigh | 2 |
1 | 0 | Line3 | LineLow | 0 |
1 | 1 | Line2 | LineHigh | 3 |
2 | 0 | Line3 | LineHigh | 3 |
2 | 1 | Line2 | LineLow | 0 |
3 | 0 | Line3 | LineLow | 2 |
3 | 1 | Line2 | LineLow | 1 |
以下に、上記のようにシーケンサーを設定した場合の動作の概要を示します。
- 両方の信号がLowである限り、Trigger Activationが
LineHigh
に設定されているため、ライン2およびライン3のトリガーは無効のままです。表の行1と行2を参照してください。したがって、シーケンサーはセット0のままです。 - ライン3の信号が立ち上がると
LineHigh
がアクティブ化され、シーケンサーはすぐにセット0からセット1に進みます。表の行1を参照してください。その後は、ライン2がまだLowであるため、シーケンサーはセット1のままです。 - ライン2の信号も立ち上がると、シーケンサーはセット1からセット3に進みます。表の行4を参照してください。
- ライン2の信号が立ち下がると、シーケンサーはセット1に戻ります。表の行8を参照してください。
- ライン3の信号も立ち下がると、シーケンサーはセット0に戻ります。表の行3を参照してください。
情報
- これは、両方のI/OラインのステータスをHighからLowに切り替えるなどして、両方のラインのI/O信号を同時に変更する場合にも機能します。
- 画像取得は個別にトリガーする必要があります。I/Oラインのステータスが変更されると、シーケンサーはフレーム間で複数回進むことがあります。
サンプルコード#
// ** Populating 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);
// ** Configuring sequencer set advance **
// Assume you want to alternate between sequencer sets 0 and 1 using input line 3
// Enable sequencer configuration mode
camera.SequencerMode.SetValue(SequencerMode_Off);
camera.SequencerConfigurationMode.SetValue(SequencerConfigurationMode_On);
// Set the start set to set 0
camera.SequencerSetStart.SetValue(0);
// Load and configure sequencer set 0
camera.SequencerSetSelector.SetValue(0);
camera.SequencerSetLoad.Execute();
camera.SequencerPathSelector.SetValue(0);
camera.SequencerSetNext.SetValue(1);
camera.SequencerTriggerSource.SetValue(SequencerTriggerSource_Line3);
camera.SequencerTriggerActivation.SetValue(SequencerTriggerActivation_RisingEdge);
// Save the changes
camera.SequencerSetSave.Execute();
// Load and configure sequencer set 1
camera.SequencerSetSelector.SetValue(1);
camera.SequencerSetLoad.Execute();
camera.SequencerPathSelector.SetValue(0);
camera.SequencerSetNext.SetValue(2);
camera.SequencerTriggerSource.SetValue(SequencerTriggerSource_Line3);
camera.SequencerTriggerActivation.SetValue(SequencerTriggerActivation_RisingEdge);
// Save the changes
camera.SequencerSetSave.Execute();
// Enable sequencer mode to operate the sequencer
camera.SequencerMode.SetValue(SequencerMode_On);
INodeMap& nodemap = camera.GetNodeMap();
// ** Populating 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");
// ** Configuring sequencer set advance **
// Assume you want to alternate between sequencer sets 0 and 1 using input line 3
// Enable sequencer configuration mode
CEnumParameter(nodemap, "SequencerMode").SetValue("Off");
CEnumParameter(nodemap, "SequencerConfigurationMode").SetValue("On");
// Set the start set to set 0
CIntegerParameter(nodemap, "SequencerSetStart").SetValue(0);
// Load and configure sequencer set 0
CIntegerParameter(nodemap, "SequencerSetSelector").SetValue(0);
CCommandParameter(nodemap, "SequencerSetLoad").Execute();
CIntegerParameter(nodemap, "SequencerPathSelector").SetValue(0);
CIntegerParameter(nodemap, "SequencerSetNext").SetValue(1);
CEnumParameter(nodemap, "SequencerTriggerSource").SetValue("Line3");
CEnumParameter(nodemap, "SequencerTriggerActivation").SetValue("RisingEdge");
// Save the changes
CCommandParameter(nodemap, "SequencerSetSave").Execute();
// Load and configure sequencer set 1
CIntegerParameter(nodemap, "SequencerSetSelector").SetValue(1);
CCommandParameter(nodemap, "SequencerSetLoad").Execute();
CIntegerParameter(nodemap, "SequencerPathSelector").SetValue(0);
CIntegerParameter(nodemap, "SequencerSetNext").SetValue(2);
CEnumParameter(nodemap, "SequencerTriggerSource").SetValue("Line3");
CEnumParameter(nodemap, "SequencerTriggerActivation").SetValue("RisingEdge");
// Save the changes
CCommandParameter(nodemap, "SequencerSetSave").Execute();
// Enable sequencer mode to operate the sequencer
CEnumParameter(nodemap, "SequencerMode").SetValue("On");
// ** Populating 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);
// ** Configuring sequencer set advance **
// Assume you want to alternate between sequencer sets 0 and 1 using input line 3
// Enable sequencer configuration mode
camera.Parameters[PLCamera.SequencerMode].SetValue(PLCamera.SequencerMode.Off);
camera.Parameters[PLCamera.SequencerConfigurationMode].SetValue(PLCamera.SequencerConfigurationMode.On);
// Set the start set to set 0
camera.Parameters[PLCamera.SequencerSetStart].SetValue(0);
// Load and configure sequencer set 0
camera.Parameters[PLCamera.SequencerSetSelector].SetValue(0);
camera.Parameters[PLCamera.SequencerSetLoad].Execute();
camera.Parameters[PLCamera.SequencerPathSelector].SetValue(0);
camera.Parameters[PLCamera.SequencerSetNext].SetValue(1);
camera.Parameters[PLCamera.SequencerTriggerSource].SetValue(PLCamera.SequencerTriggerSource.Line3);
camera.Parameters[PLCamera.SequencerTriggerActivation].SetValue(PLCamera.SequencerTriggerActivation.RisingEdge);
// Save the changes
camera.Parameters[PLCamera.SequencerSetSave].Execute();
// Load and configure sequencer set 1
camera.Parameters[PLCamera.SequencerSetSelector].SetValue(1);
camera.Parameters[PLCamera.SequencerSetLoad].Execute();
camera.Parameters[PLCamera.SequencerPathSelector].SetValue(0);
camera.Parameters[PLCamera.SequencerSetNext].SetValue(2);
camera.Parameters[PLCamera.SequencerTriggerSource].SetValue(PLCamera.SequencerTriggerSource.Line3);
camera.Parameters[PLCamera.SequencerTriggerActivation].SetValue(PLCamera.SequencerTriggerActivation.RisingEdge);
// Save the changes
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 */
/* ** Populating 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);
/* ** Configuring sequencer set advance ** */
/* Assume you want to alternate between sequencer sets 0 and 1 using input line 3 */
/* Enable sequencer configuration mode */
errRes = PylonDeviceFeatureFromString(hdev, "SequencerMode", "Off");
CHECK(errRes);
errRes = PylonDeviceFeatureFromString(hdev, "SequencerConfigurationMode", "On");
CHECK(errRes);
/* Set the start set to set 0 */
errRes = PylonDeviceSetIntegerFeature(hdev, "SequencerSetStart", 0);
CHECK(errRes);
/* Load and configure sequencer set 0 */
errRes = PylonDeviceSetIntegerFeature(hdev, "SequencerSetSelector", 0);
CHECK(errRes);
errRes = PylonDeviceExecuteCommandFeature(hdev, "SequencerSetLoad");
CHECK(errRes);
errRes = PylonDeviceSetIntegerFeature(hdev, "SequencerPathSelector", 0);
CHECK(errRes);
errRes = PylonDeviceSetIntegerFeature(hdev, "SequencerSetNext", 1);
CHECK(errRes);
errRes = PylonDeviceFeatureFromString(hdev, "SequencerTriggerSource", "Line3");
CHECK(errRes);
errRes = PylonDeviceFeatureFromString(hdev, "SequencerTriggerActivation", "RisingEdge");
CHECK(errRes);
/* Save the changes */
errRes = PylonDeviceExecuteCommandFeature(hdev, "SequencerSetSave");
CHECK(errRes);
/* Load and configure sequencer set 1 */
errRes = PylonDeviceSetIntegerFeature(hdev, "SequencerSetSelector", 1);
CHECK(errRes);
errRes = PylonDeviceExecuteCommandFeature(hdev, "SequencerSetLoad");
CHECK(errRes);
errRes = PylonDeviceSetIntegerFeature(hdev, "SequencerPathSelector", 0);
CHECK(errRes);
errRes = PylonDeviceSetIntegerFeature(hdev, "SequencerSetNext", 2);
CHECK(errRes);
errRes = PylonDeviceFeatureFromString(hdev, "SequencerTriggerSource", "Line3");
CHECK(errRes);
errRes = PylonDeviceFeatureFromString(hdev, "SequencerTriggerActivation", "RisingEdge");
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);
# ** Populating 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"
# ** Configuring sequencer set advance **
# Assume you want to alternate between sequencer sets 0 and 1 using input line 3
# Enable sequencer configuration mode
camera.SequencerMode.Value = "Off"
camera.SequencerConfigurationMode.Value = "On"
# Set the start set to set 0
camera.SequencerSetStart.Value = 0
# Load and configure sequencer set 0
camera.SequencerSetSelector.Value = 0
camera.SequencerSetLoad.Execute()
camera.SequencerPathSelector.Value = 0
camera.SequencerSetNext.Value = 1
camera.SequencerTriggerSource.Value = "Line3"
camera.SequencerTriggerActivation.Value = "RisingEdge"
# Save the changes
camera.SequencerSetSave.Execute()
# Load and configure sequencer set 1
camera.SequencerSetSelector.Value = 1
camera.SequencerSetLoad.Execute()
camera.SequencerPathSelector.Value = 0
camera.SequencerSetNext.Value = 2
camera.SequencerTriggerSource.Value = "Line3"
camera.SequencerTriggerActivation.Value = "RisingEdge"
# Save the changes
camera.SequencerSetSave.Execute()
# Enable sequencer mode to operate the sequencer
camera.SequencerMode.Value = "On"
pylon Viewerを使用して、パラメーターを簡単に設定することもできます。