Sequencer(ace 2およびboost R)#
シーケンサーセットと呼ばれる最大32セットのパラメーター設定を定義できます。カメラはトリガー信号を受信すると、シーケンサーセットを1つずつ順番に適用します。
例えば、Sequencer機能を使用して、設定済みの画像ROIまたは露光時間をすばやく変更できます。
機能を使用する#
Sequencerモード#
- シーケンサー設定モードではシーケンサーを設定できますが、操作はできません。
- シーケンサーモードではシーケンサーを操作できますが、設定はできません。
Sequencer設定モード#
シーケンサー設定モードを有効するには、次の手順に従います。
- パラメーターを
SequencerMode
parameter toOff
. - パラメーターを
SequencerConfigurationMode
parameter toその
.
これでシーケンサーを設定できるようになりました。
情報
- 設定モードでは、一部のカメラパラメーターが使用できない場合があります。つまり、これらは読み取り専用に設定されています。pylon Viewerの[Features - All]ペインで、使用可能なパラメーターを確認します。
Sequencerモード#
To enable the sequencer mode, set the SequencerMode
parameter to その
. This automatically disables the sequencer configuration mode.
これでシーケンサーがトリガー信号を受信し、設定されたとおりに進行する準備ができました。
情報
- By default, when enabling the sequencer mode, the camera immediately loads sequencer set 0. To change this behavior, set the
SequencerSetStart
parameter to the desired start set. - シーケンサーモードでは、一部のカメラパラメーターが使用できない場合があります。つまり、これらは読み取り専用に設定されています。pylon Viewerの[Features - All]ペインで、使用可能なパラメーターを確認します。
- シーケンサーモードでは、設定されたシーケンサーセットに基づいて一部のカメラのパラメーター値が計算されます。
- イメージ
PayloadSize
parameter value reflects the size of the largest sequencer set configured. - The maximum possible number of images in a burst of images, i.e., the maximum value of the
AcquisitionBurstFrameCount
parameter, is calculated using the largest sequencer set configured.
- イメージ
- You can use the
SequencerSetActive
parameter to find out which sequencer set is currently active. - 使用可能な場合は、Sequencer Set Active chunkを使用して、使用されるシーケンサーセットを追跡できます。有効にすると、各画像には、画像取得に使用されるシーケンサーセットのインデックス番号を含むチャンクデータが含まれます。
What's in a Sequencer Set?#
Sequencerセットには、次のパラメーターが含まれます(使用可能な場合)。
AutoFunctionROIWidth
aAutoFunctionROI Height
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
parameter to the index number of the desired set. - Execute the
SequencerSetSave
command. - 使用するすべてのセットについて、手順2~4を繰り返します。
例:セット0と1に異なる画像ROI設定を読み込むとします。これを行うには、次の手順に従います。
- Create the first image ROI by adjusting the
Width
,Height
,OffsetX
, andOffsetY
parameter values. - セット0を保存します。
- Create the second image ROI by choosing different values for the
Width
,Height
,OffsetX
, andOffsetY
parameters. - セット1を保存します。
その後、カメラが2つの画像ROI間で迅速に変更できるようにシーケンサーセット進行を設定できます。
Sequencerセット進行の設定#
シーケンサーを制御するには、シーケンサーがセットから次のセットに進む方法とタイミングを定義する必要があります。
シーケンサーセットごとに、以下を定義する必要があります。
基準 | パラメーター |
---|---|
次に来る必要があるセット | SequencerSetNext |
シーケンサーを次のセットに進ませるトリガー信号 | SequencerTriggerSource |
信号の立ち上がりエッジや立ち下がりエッジなどで、トリガー信号が有効とみなされるタイミング | SequencerTriggerActivation |
必要に応じて、いわゆるパスを設定することにより、各セットに対して上記を2回定義できます。例えば、Line 3のトリガー信号を受信したとき(= パス0)にカメラをセット1に進めるように定義できますが、Line 4のトリガー信号を受信したとき(= パス1)にセット3に進むように定義できます。
これがすべてセットアップされると、カメラはシーケンサーセット間の遷移のタイミングと方法を正確に把握し、基本的に状態機械のように動作します。
Sequencerセットはフレームトリガーとは無関係に進行
シーケンサーは、画像取得とは無関係に進行できます。画像は常に、カメラがフレームトリガー信号を受信した時点でアクティブなセットを使用して取得されます。
例えば、入力ライン3を使用してシーケンサーセット進行をトリガーできますが、ライン4を使用して画像をトリガーできます。
If you want to synchronize sequencer advance with image acquisition, Basler recommends setting the sequencer trigger source to ExposureStart
.
シーケンサートリガーソースとフレーム開始トリガーソースを同じ信号ソースに設定しないでください。そうしないと、カメラが予期しない動作を示す場合があります。
シーケンサーセット進行を設定するには、次の手順に従います。
- シーケンサーが設定モードであることを確認します。
- パラメーターを
SequencerSetSelector
parameter to the 最初に sequencer set to be configured. - Execute the
SequencerSetLoad
command. - 次の手順に従って、パス0のシーケンサーセット進行を設定します。
- パラメーターを
SequencerPathSelector
parameter to 0. - パラメーターを
SequencerSetNext
parameter to the next set to be configured. - パラメーターを
SequencerTriggerSource
parameter to the source signal that should be used to advance to the next set.
You can select any of the available trigger source signals, e.g.,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
(default): The sequencer advances when the source signal rises, i.e., when the signal status changes from low to high.FallingEdge
: The sequencer advances when the source signal falls, i.e., when the signal status changes from high to low.AnyEdge
: The sequencer advances when the source signal falls or rises.LevelHigh
: The sequencer advances when the source signal is high. If the signal is already high when the sequencer set is loaded, the sequencer immediately advances to the next set. This happens independently of image acquisition.LevelLow
: The sequencer advances when the source signal is low. If the signal is already low when the sequencer set is loaded, the sequencer immediately advances to the next set. This happens independently of image acquisition.
- パラメーターを
- If you want to define a second condition on which you want the camera to advance to a different set, repeat step 4 with the
SequencerPathSelector
parameter set to 1. - Execute the
SequencerSetSave
command. - パラメーターを
SequencerSetSelector
parameter to the next sequencer set to be configured. - 目的のすべてのセットについて、手順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
parameter to 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信号が低下)するたびに、シーケンサーは進行します。
- When the exposure of the 10th image starts, the counter reaches its maximum value (
CounterDuration
= 10), resets itself, and the camera sends a Counter 1 End signal. This makes the sequencer advance to set 2 on path 1 before the path 0 trigger condition (ExposureActive
,FallingEdge
) becomes valid. - これでシーケンサーはセット2に戻り、上記のプロセスが繰り返されるようになりました。
例3:ランタイムの選択#
必要に応じてランタイムにシーケンサーセットを選択するようにシーケンサーを設定できます。
This involves configuring multiple I/O lines as trigger sources and using the LevelLow
and LevelHigh
options of the SequencerTriggerActivation
parameter.
シーケンサーセットの選択は、入力ライン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 |
以下に、上記のようにシーケンサーを設定した場合の動作の概要を示します。
- As long as both signals are low, the triggers on Line 2 and Line 3 stay inactive, because their trigger activation is set to
LineHigh
. See table rows 1 and 2. Therefore, the sequencer remains at set 0. - When the signal on Line 3 rises, the
LineHigh
activation occurs, and the sequencer immediately advances from set 0 to set 1. See table row 1. Then, the sequencer remains at set 1, because Line 2 is still low. - ライン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を使用して、パラメーターを簡単に設定することもできます。