Sequencer(ace 2およびboost R)#
シーケンサーセットと呼ばれる最大32セットのパラメーター設定を定義できます。カメラはトリガー信号を受信すると、シーケンサーセットを1つずつ順番に適用します。
例えば、Sequencer機能を使用して、設定済みの画像ROIまたは露光時間をすばやく変更できます。
機能を使用する#
Sequencerモード#
- シーケンサー設定モードではシーケンサーを設定できますが、操作はできません。
- シーケンサーモードではシーケンサーを操作できますが、設定はできません。
Sequencer設定モード#
シーケンサー設定モードを有効するには、次の手順に従います。
- パラメーターを
SequencerModeパラメータを次のように設定:Off. - パラメーターを
SequencerConfigurationModeパラメータを次のように設定:On.
これでシーケンサーを設定できるようになりました。
情報
- 設定モードでは、一部のカメラパラメーターが使用できない場合があります。つまり、これらは読み取り専用に設定されています。pylon Viewerの[Features - All]ペインで、使用可能なパラメーターを確認します。
Sequencerモード#
Sequencer モードを有効にするには、次のように設定します。 SequencerMode パラメータを次のように設定: On。これにより、Sequencer 設定モードが自動的に無効になります。
これでシーケンサーがトリガー信号を受信し、設定されたとおりに進行する準備ができました。
情報
- デフォルトでは、Sequencer モードを有効にすると、カメラはすぐに Sequencer Set 0 をロードします。この動作を変更するには、次の設定を行います。
SequencerSetStartパラメータを希望の開始セットに設定します。 - シーケンサーモードでは、一部のカメラパラメーターが使用できない場合があります。つまり、これらは読み取り専用に設定されています。pylon Viewerの[Features - All]ペインで、使用可能なパラメーターを確認します。
- シーケンサーモードでは、設定されたシーケンサーセットに基づいて一部のカメラのパラメーター値が計算されます。
- イメージ
PayloadSizeパラメータの値は、構成された最大の Sequencer Set のサイズを反映します。 - 画像バースト内の画像の最大可能数、つまり
AcquisitionBurstFrameCountパラメータの最大値は、構成された最大の Sequencer Set を使用して計算されます。
- イメージ
- 次を使用して行うことができます。
SequencerSetActiveパラメータを使用して、現在アクティブな Sequencer Set を確認します。 - 使用可能な場合は、Sequencer Set Active chunkを使用して、使用されるシーケンサーセットを追跡できます。有効にすると、各画像には、画像取得に使用されるシーケンサーセットのインデックス番号を含むチャンクデータが含まれます。
- 一部のカメラでは、Sequencer モードを有効にすると オーバーラップ画像取得 が無効になり、カメラの最大フレームレートが低下します。これは、このテーブル 内の「オーバーラップ画像取得の可用性」が「カメラがフリーラン画像取得用に構成されている場合のみ」と指定されているすべてのカメラに適用されます。
What's in a Sequencer Set?#
Sequencerセットには、次のパラメーターが含まれます(使用可能な場合)。
AutoFunctionROIWidthaAutoFunctionROIHeightaAutoFunctionROIOffsetXaAutoFunctionROIOffsetYaBinningHorizontalabBinningVerticalabBinningHorizontalModeabBinningVerticalModeabBslFlatFieldCorrectionModeBslFlatFieldCorrectionSetIndexExposureTimecGainHeightadOffsetXadOffsetYadPixelFormataSequencerSetNextSequencerTriggerActivationSequencerTriggerSourceWidthad
-
Basler ace 2 V および boost カメラでは使用できません。
-
FPGAビニングの設定のみが保存されます。
-
Sequencer の操作または設定時、Exposure Time モードは Standard または Common に事前設定されており、変更できません。
-
シーケンサーを操作または設定する際、Multiple ROI機能は無効になっています。
他のすべてのカメラパラメーターは、Sequencer機能を使用して制御できません。
情報
シーケンサーセットをロードまたは保存すると、変更していないパラメーターも含め、常に上記のすべてのパラメーターがロードまたは保存されます。例えば、露光時間を変更し、他のすべてのパラメーターをデフォルト値のままにした場合、他のすべてのパラメーターの値も保存され、ロード時に上書きされます。
Configuring the Sequencer#
Baslerは、シーケンサーを以下の2つの手順で設定することを推奨します。
- 目的のカメラ設定(露光時間や画像ROIなど)をシーケンサーセットに読み込みます。
- シーケンサーセット進行を設定します。すなわち、シーケンサーがセットから次のセットに進む方法とタイミングを定義します。
Sequencerセットへのデータの読み込み#
各シーケンサーセットには、0~31の範囲の固有のインデックス番号があります。目的のカメラ設定(露光時間や画像ROIなど)をセットに読み込むことができます。
次の手順に従ってシーケンサーセットに読み込みます。
- シーケンサーが設定モードであることを確認します。
- シーケンサーセットに保存するカメラパラメーターを設定します。
- パラメーターを
SequencerSetSelectorパラメータを希望のセットのインデックス番号に設定します。 - 実行する
SequencerSetSaveコマンド。 - 使用するすべてのセットについて、手順2~4を繰り返します。
例:セット0と1に異なる画像ROI設定を読み込むとします。これを行うには、次の手順に従います。
- のパラメータ値を調整して、最初の Image ROIを作成します。
Width,Height,OffsetX、およびOffsetYパラメータ値。 - セット0を保存します。
- のパラメータに異なる値を選択して、2つ目の Image ROIを作成します。
Width,Height,OffsetX、およびOffsetYパラメータで設定します。 - セット1を保存します。
その後、カメラが2つの画像ROI間で迅速に変更できるようにシーケンサーセット進行を設定できます。
Sequencerセット進行の設定#
シーケンサーを制御するには、シーケンサーがセットから次のセットに進む方法とタイミングを定義する必要があります。
シーケンサーセットごとに、以下を定義する必要があります。
| 基準 | パラメーター |
|---|---|
| 次に来る必要があるセット | SequencerSetNext |
| シーケンサーを次のセットに進ませるトリガー信号 | SequencerTriggerSource |
| 信号の立ち上がりエッジや立ち下がりエッジなどで、トリガー信号が有効とみなされるタイミング | SequencerTriggerActivation |
必要に応じて、いわゆるパスを設定することにより、各セットに対して上記を2回定義できます。例えば、Line 3のトリガー信号を受信したとき(= パス0)にカメラをセット1に進めるように定義できますが、Line 4のトリガー信号を受信したとき(= パス1)にセット3に進むように定義できます。
これがすべてセットアップされると、カメラはシーケンサーセット間の遷移のタイミングと方法を正確に把握し、基本的に状態機械のように動作します。
Sequencerセットはフレームトリガーとは無関係に進行
シーケンサーは、画像取得とは無関係に進行できます。画像は常に、カメラがフレームトリガー信号を受信した時点でアクティブなセットを使用して取得されます。
例えば、入力ライン3を使用してシーケンサーセット進行をトリガーできますが、ライン4を使用して画像をトリガーできます。
次を行う場合: 同期する 画像取得と Sequencer の進行を同期させるため、Basler では Trigger Source を次のように設定することを推奨しています。 ExposureStart.
シーケンサートリガーソースとフレーム開始トリガーソースを同じ信号ソースに設定しないでください。そうしないと、カメラが予期しない動作を示す場合があります。
シーケンサーセット進行を設定するには、次の手順に従います。
- シーケンサーが設定モードであることを確認します。
- パラメーターを
SequencerSetSelectorパラメータを 最初に 設定する Sequencer Set に設定します。 - 実行する
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(デフォルト):ソース信号が次の場合に Sequencer が進行します 立ち上がったとき、つまり信号ステータスがローからハイに変化したときに、トリガーがアクティブになります。FallingEdge:ソース信号が次の場合に Sequencer が進行します 立ち下がり、つまり信号ステータスがHighからLowに変化したときです。AnyEdge:ソース信号が次の場合に Sequencer が進行します 立ち下がりまたは立ち上がり.LevelHigh:ソース信号が次の状態である場合に Sequencer が進行します High。Sequencer Set がロードされたときに信号がすでに High の場合、Sequencer は直ちに次のセットに進行します。これは画像取得とは独立して発生します。LevelLow:ソース信号が次の状態である場合に Sequencer が進行します Low。Sequencer Set がロードされたときに信号がすでに Low の場合、Sequencer は直ちに次のセットに進行します。これは画像取得とは独立して発生します。
- パラメーターを
- カメラを別のセットに移行させるための2つ目の条件を定義する場合は、ステップ4を以下のように繰り返します。
SequencerPathSelectorパラメータが1に設定されています。 - 実行する
SequencerSetSaveコマンド。 - パラメーターを
SequencerSetSelectorパラメータを 次へ 設定する Sequencer Set に設定します。 - 目的のすべてのセットについて、手順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=ExposureStartCounterResetSource=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番目の画像の露光が開始されると、th 画像が開始されると、Counterが最大値に達し(
CounterDuration= 10)、自身をリセットし、カメラはCounter 1 End信号を送信します。これにより、シーケンサーはパス1でセット2に移行します。 前 パス0のトリガー条件(ExposureActive,FallingEdge) が有効になります。 - これでシーケンサーはセット2に戻り、上記のプロセスが繰り返されるようになりました。
例3:ランタイムの選択#
必要に応じてランタイムにシーケンサーセットを選択するようにシーケンサーを設定できます。
これには、複数のI/OラインをTrigger Sourceとして設定し、以下の機能を使用することが含まれます。 LevelLow と LevelHigh のオプション SequencerTriggerActivation パラメータ。
シーケンサーセットの選択は、入力ライン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の間は、Line 2およびLine 3のトリガーは非アクティブのままとなります。これは、そのTrigger Activationが次のように設定されているためです。
LineHigh. 表の行1および2を参照してください。したがって、シーケンサーはセット0にとどまります。 - Line 3の信号がHighになると、
LineHighアクティベーションが発生し、シーケンサーはセット0からセット1に直ちに移行します。表の行1を参照してください。その後、Line 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(0);
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(0);
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(0);
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", 0);
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 = 0
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を使用して、パラメーターを簡単に設定することもできます。