콘텐츠로 바로 가기
STAGING SERVER
DEVELOPMENT SERVER

Sequencer (ace 2 및 boost R)#

Sequencer 카메라 기능을 사용하면 매개변수 설정 그룹을 정의하고 이를 일련의 이미지에 적용할 수 있습니다.

Sequencer set이라고 하는 매개변수 설정 그룹을 최대 32개까지 정의할 수 있습니다. 카메라는 트리거 신호를 수신할 때마다 Sequencer set을 차례대로 적용합니다.

예를 들어 Sequencer 기능을 사용하여 사전 설정된 Image ROI 또는 Exposure Time 간에 빠르게 전환할 수 있습니다.

기능 사용#

Sequencer 모드#

  • Sequencer configuration mode에서는 Sequencer를 구성할 수 있지만 작동할 수는 없습니다.
  • Sequencer mode에서는 Sequencer를 작동할 수 있지만 구성할 수는 없습니다.

Sequencer 구성 모드#

sequencer configuration mode를 활성화하려면:

  1. 파라미터를 원하는 SequencerMode 파라메터 Off.
  2. 파라미터를 원하는 SequencerConfigurationMode 파라메터 On.

이제 Sequencer를 구성할 수 있습니다.

정보

  • 구성 모드에서는 일부 카메라 매개변수를 사용하지 못할 수 있으며, 즉 읽기 전용으로 설정됩니다. 어떤 매개변수를 사용할 수 있는지 확인하려면 pylon Viewer의 Features - All 창을 확인하세요.

Sequencer 모드#

Sequencer mode을 활성화하려면, SequencerMode 파라메터 On설정하세요. 그러면 Sequencer configuration mode이 자동으로 비활성화됩니다.

이제 Sequencer가 트리거 신호를 수신하고 구성된 대로 진행할 준비가 되었습니다.

정보

  • 기본적으로 Sequencer mode을 활성화하면 카메라는 즉시 Sequencer set 0을 로드합니다. 이 동작을 변경하려면, SequencerSetStart 매개변수를 원하는 시작 세트로 설정하세요.
  • Sequencer mode에서는 일부 카메라 매개변수를 사용하지 못할 수 있으며, 즉 읽기 전용으로 설정됩니다. 어떤 매개변수를 사용할 수 있는지 확인하려면 pylon Viewer의 Features - All 창을 확인하세요.
  • Sequencer mode에서는 구성된 Sequencer set을 기반으로 일부 카메라 매개변수 값이 계산됩니다.
    • The PayloadSize 매개변수 값은 구성된 가장 큰 Sequencer set의 크기를 반영합니다.
    • 버스트 이미지의 최대 가능 이미지 수, 즉 AcquisitionBurstFrameCount 매개변수의 최댓값은 구성된 가장 큰 Sequencer set을 사용하여 계산됩니다.
  • 다음 항목을 사용할 수 있습니다. SequencerSetActive 매개변수를 사용하여 현재 활성화된 Sequencer set을 확인하세요.
  • 사용 가능한 경우 Sequencer Set Active chunk를 사용하여 사용된 Sequencer set을 추적할 수 있습니다. 활성화되면 각 이미지에는 이미지 수집에 사용된 Sequencer set의 색인 번호가 포함된 청크 데이터가 포함됩니다.
  • 일부 카메라에서는 Sequencer mode을 활성화하면 오버랩 이미지 수집이 비활성화되므로 카메라의 최대 프레임 속도가 낮아집니다. 이는 "오버랩 이미지 수집 가용성"이 "카메라도 프리런 이미지 수집으로 구성된 경우에만"으로 지정된 이 표의 모든 카메라에 적용됩니다.

Sequencer 세트의 구성 요소#

Sequencer set에는 사용 가능한 경우 다음 파라미터가 포함됩니다.

  • AutoFunctionROIWidtha
  • AutoFunctionROIHeighta
  • AutoFunctionROIOffsetXa
  • AutoFunctionROIOffsetYa
  • BinningHorizontalab
  • BinningVerticalab
  • BinningHorizontalModeab
  • BinningVerticalModeab
  • BslFlatFieldCorrectionMode
  • BslFlatFieldCorrectionSetIndex
  • ExposureTimec
  • Gain
  • Heightad
  • OffsetXad
  • OffsetYad
  • PixelFormata
  • SequencerSetNext
  • SequencerTriggerActivation
  • SequencerTriggerSource
  • Widthad

  1. Basler ace 2 V 및 boost 카메라에서는 사용할 수 없습니다.

  2. FPGA binning에 대한 설정만 저장됩니다.

  3. Sequencer를 작동하거나 구성할 때 Exposure Time 모드는 Standard 또는 Common으로 사전 설정되며 변경할 수 없습니다.

  4. Sequencer를 작동하거나 구성할 때 Multiple ROI 기능이 비활성화됩니다.

기타 모든 카메라 파라미터는 Sequencer 기능을 사용하여 제어할 수 없습니다.

정보

Sequencer set을 로드하거나 저장하면 변경하지 않은 항목을 포함하여 항상 위 매개변수 모두가 로드되거나 저장됩니다. 예를 들어 Exposure Time만 변경하고 다른 모든 매개변수를 기본값으로 둔 경우, 다른 모든 매개변수의 값도 저장되며 로드할 때 덮어씌워집니다.

Sequencer 구성#

Basler에서는 두 단계로 Sequencer를 구성할 것을 권장합니다.

  1. Sequencer set에 원하는 카메라 설정(예: Exposure Time 또는 Image ROI)을 입력합니다.
  2. Sequencer set advance를 구성합니다. 즉, Sequencer가 한 세트에서 다음 세트로 진행하는 방식과 시점을 정의합니다.

Sequencer Set 채우기#

각 Sequencer set에는 0부터 31까지의 고유한 인덱스 번호가 있습니다. 원하는 카메라 설정(예: Exposure Time 또는 Image ROI)을 세트에 채울 수 있습니다.

Sequencer set을 채우려면:

  1. Sequencer가 Configuration Mode에 있는지 확인합니다.
  2. Sequencer set에 저장하려는 camera parameter를 구성합니다.
  3. 파라미터를 원하는 SequencerSetSelector parameter를 원하는 세트의 인덱스 번호로 설정합니다.
  4. 다음을 실행합니다. SequencerSetSave command.
  5. 사용하려는 모든 set에 대해 2~4단계를 반복합니다.

예시: 세트 0과 1에 서로 다른 Image ROI 설정을 지정한다고 가정해 보겠습니다. 방법은 다음과 같습니다:

  1. 다음 파라미터 값을 조정하여 첫 번째 Image ROI를 생성합니다. Width, Height, OffsetX및 OffsetY 파라미터 값.
  2. 세트 0을 저장합니다.
  3. 다음 항목에 대해 다른 값을 선택하여 두 번째 Image ROI를 생성합니다. Width, Height, OffsetX및 OffsetY 매개변수.
  4. 세트 1을 저장합니다.

그런 다음 Sequencer set advance를 구성하여 카메라가 두 Image ROI 사이를 빠르게 전환하도록 할 수 있습니다.

Sequencer Set 전환(Advance) 구성#

Sequencer를 제어하려면 Sequencer가 한 세트에서 다음 세트로 진행하는 방식과 시점을 정의해야 합니다.

각 Sequencer set에 대해 다음 사항을 정의해야 합니다:

기준(Criterion) Parameter
다음 세트는 무엇이 되어야 하는가? SequencerSetNext
어떤 Trigger Source에서 Sequencer가 다음 세트로 진행해야 하는가? SequencerTriggerSource
Trigger signal을 유효한 것으로 간주해야 하는 시점은 언제인가(예: 신호의 상승 에지 또는 하강 에지)? SequencerTriggerActivation

필요한 경우 path라고 하는 항목을 구성하여 각 세트에 대해 위 내용을 두 번 정의할 수 있습니다. 예를 들어, Line 3의 trigger signal이 수신되면 카메라가 세트 1로 진행하고(= path 0), Line 4의 trigger signal이 수신되면 세트 3으로 진행하도록(= path 1) 정의할 수 있습니다.

이 모든 설정이 완료되면 카메라는 Sequencer set 간에 전환되는 시점과 방식을 정확히 알 수 있으며, 본질적으로 state machine처럼 작동합니다.

Sequencer Set Advance는 프레임 트리거와 무관하게 작동합니다

Sequencer는 image acquisition과 관계없이 독립적으로 진행될 수 있습니다. 이미지는 카메가가 frame trigger signal을 수신할 당시 활성 상태인 세트를 사용하여 항상 획득됩니다.

예를 들어, 입력 라인 3을 사용하여 Sequencer set advance를 트리거하고, 라인 4를 사용하여 이미지 트리거를 수행할 수 있습니다.

원하는 경우 동기화하려면 image acquisition과 Sequencer advance를 동기화하려면 Basler는 Sequencer Trigger Source를 다음과 같이 설정할 것을 권장합니다: ExposureStart.

Sequencer와 frame start trigger source를 동일한 신호 소스로 설정하지 마십시오. 그렇지 않으면 카메라가 예측할 수 없는 동작을 보일 수 있습니다.

Sequencer set advance를 구성하려면:

  1. Sequencer가 Configuration Mode에 있는지 확인합니다.
  2. 파라미터를 원하는 SequencerSetSelector 파라미터를 다음으로 설정: 첫 번째 구성할 Sequencer set입니다.
  3. 다음을 실행합니다. SequencerSetLoad command.
  4. 경로 0에 대한 Sequencer set 전환을 구성합니다.
    1. 파라미터를 원하는 SequencerPathSelector 매개변수를 0으로 설정합니다.
    2. 파라미터를 원하는 SequencerSetNext 다음에 구성할 set에 대한 파라미터입니다.
    3. 파라미터를 원하는 SequencerTriggerSource 다음 set으로 진행하는 데 사용할 소스 신호에 대한 파라미터입니다.
      사용 가능한 트리거 소스 신호(예: Line1 또는 ExposureStart.
    4. High(1) 또는 Low(0) 상태를 가질 수 있는 Trigger Source(즉, I/O 신호)를 선택한 경우, 파라미터를 SequencerTriggerActivation 파라미터를 설정하십시오:
      • RisingEdge (기본값): 소스 신호가 상승, 즉 신호 상태가 Low에서 High로 변경될 때.
      • FallingEdge: 소스 신호가 하강, 즉 신호 상태가 High에서 Low로 변경될 때.
      • AnyEdge: 소스 신호가 하강 또는 상승.
      • LevelHigh: 소스 신호가 High. Sequencer set이 로드될 때 신호가 이미 High 상태이면, Sequencer는 즉시 다음 set으로 진행합니다. 이는 이미지 취득과 무관하게 발생합니다.
      • LevelLow: 소스 신호가 Low. Sequencer set이 로드될 때 신호가 이미 Low 상태이면, Sequencer는 즉시 다음 set으로 진행합니다. 이는 이미지 취득과 무관하게 발생합니다.
  5. 카메라가 다른 set으로 전환되도록 하는 두 번째 조건을 정의하려면, 파라미터를 SequencerPathSelector (으)로 설정하여 4단계를 반복합니다.
  6. 다음을 실행합니다. SequencerSetSave command.
  7. 파라미터를 원하는 SequencerSetSelector 파라미터를 다음으로 설정: 다음 구성할 Sequencer set입니다.
  8. 원하는 모든 set에 대해 3단계부터 7단계까지 반복합니다.

예제#

예제 1: Set 순환#

이미지 취득 중에 Sequencer set 0, 1, 2를 순환하려고 한다고 가정해 보겠습니다. 카메가가 이미지를 취득할 때마다 Sequencer는 다음 set으로 전환되어야 합니다.

예제 1 상태 다이어그램

이를 달성하려면 다음과 같이 Sequencer를 설정하십시오.

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

위와 같이 Sequencer를 설정할 때 발생하는 상황은 다음과 같습니다.

  • Sequencer가 활성화되면 set 0(기본값)에서 시작하여 첫 번째 이미지의 노출을 대기합니다.
  • 이벤트가 발생하면 카메라가 현재 Sequencer set 0을 이미지에 적용한 후 set 1로 이동합니다.
  • 다음 노출이 시작되면 카메라가 set 1을 적용하고 set 2로 이동합니다.
  • 다음 노출이 시작되면 카메라가 set 2를 적용하고 set 0으로 이동합니다.
  • 이제 Sequencer가 set 0으로 돌아갔으며, 위에서 설명한 프로세스가 반복됩니다.

예제 2: Counter 및 여러 경로 사용#

매 nth 이미지 취득 시 특정 set으로 이동하도록 Sequencer를 설정할 수 있습니다.

여기에는 Counter 기능을 사용하고 여러 경로를 구성하는 작업이 포함됩니다.

이미지 취득 중 Sequencer set 0과 set 1 사이를 번갈아 사용하되, 첫 번째 이미지와 매 10th 이미지마다 Sequencer set 2를 사용한다고 가정해 보겠습니다.

예제 2 상태 다이어그램

이를 달성하려면:

  1. 파라미터를 원하는 SequencerStartSet 파라미터를 2로 설정합니다.
  2. 다음과 같이 counter 1을 구성합니다.

    • CounterDuration = 10
    • CounterEventSource = ExposureStart
    • CounterResetSource = Counter1End
  3. 아래 표에 표시된 대로 Sequencer를 구성합니다.

Sequencer Set Selector Sequencer Path Selector Sequencer Trigger Source Sequencer Trigger Activation Sequencer Set Next
0 0 위의 구성에서 counter는 Exposure Start 신호를 사용하여 트리거되는 반면, Sequencer set 이동은 하강 에지 활성화가 있는 Exposure Active 신호를 사용하여 트리거된다는 점에 유의하십시오. 이는 경로 0과 경로 1 간의 타이밍 충돌을 방지하는 데 도움이 됩니다. FallingEdge 1
0 1 Counter1End - 2
1 0 위의 구성에서 counter는 Exposure Start 신호를 사용하여 트리거되는 반면, Sequencer set 이동은 하강 에지 활성화가 있는 Exposure Active 신호를 사용하여 트리거된다는 점에 유의하십시오. 이는 경로 0과 경로 1 간의 타이밍 충돌을 방지하는 데 도움이 됩니다. FallingEdge 0
1 1 Counter1End - 2
2 0 위의 구성에서 counter는 Exposure Start 신호를 사용하여 트리거되는 반면, Sequencer set 이동은 하강 에지 활성화가 있는 Exposure Active 신호를 사용하여 트리거된다는 점에 유의하십시오. 이는 경로 0과 경로 1 간의 타이밍 충돌을 방지하는 데 도움이 됩니다. FallingEdge 0

정보

  • 이미지 취득을 시작하기 전에 counter가 reset되었는지 확인하십시오. 그렇지 않으면 카운트되지 않습니다.
  • 위의 구성에서, 카운터는 ‘Exposure Start’ 신호를 사용하여 트리거되는 반면, 시퀀서 세트 진행은 하강 에지 활성화 방식의 ‘Exposure Active’ 신호를 사용하여 트리거된다는 점에 유의하십시오. 이는 경로 0과 경로 1 간의 타이밍 충돌을 방지하는 데 도움이 됩니다.

위와 같이 Sequencer를 설정할 때 발생하는 상황은 다음과 같습니다.

  • Sequencer가 활성화되면 set 2에서 시작하여 첫 번째 이미지의 노출을 대기합니다.
  • 첫 번째 노출이 시작되면 Counter 1이 0에서 1로 증가합니다. 이는 Exposure Start 이벤트를 카운트하도록 구성되어 있기 때문입니다.
  • 첫 번째 노출이 종료될 때, 즉 Exposure Active 신호가 하강할 때 Sequencer가 set 0으로 이동합니다.
  • 다음 8번의 이미지 취득 동안 Sequencer는 set 0과 set 1 사이를 번갈아 가며 작동하고 counter는 계속 증가합니다. 노출이 종료될 때, 즉 Exposure Active 신호가 하강할 때마다 Sequencer가 이동합니다.
  • 10th 이미지의 노출이 시작되면 counter가 최댓값( CounterDuration = 10)에 도달하여 자체적으로 리셋되고 카메라는 Counter 1 End 신호를 보냅니다. 이를 통해 Sequencer가 경로 1에서 set 2로 이동합니다. 전 경로 0 트리거 조건(ExposureActive, FallingEdge)이 유효해집니다.
  • 이제 Sequencer가 set 2로 돌아왔으며, 위에서 설명한 프로세스가 반복됩니다.

예제 3: 런타임 시 선택#

필요에 따라 런타임에 Sequencer set을 선택하도록 Sequencer를 설정할 수 있습니다.

이를 위해 여러 I/O 라인을 Trigger Source로 설정하고 LevelLow 및 LevelHigh 옵션을 사용합니다. SequencerTriggerActivation 파라미터에 HTML 로그 파일(*.html)의 경로와 이름을 지정할 수 있습니다.

입력 라인 2와 3의 신호 상태(0 = low, 1 = high)를 사용하여 Sequencer set 선택을 제어하려고 한다고 가정해 보겠습니다. 라인 상태에 따라 Sequencer가 다음과 같이 작동하도록 하려고 합니다.

Line 2 신호 상태 Line 3 신호 상태 선택된 Set
0 0 0
0 1 1
1 0 2
1 1 3

이를 달성하려면 다음과 같이 Sequencer를 설정하십시오.

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

위와 같이 Sequencer를 설정할 때 발생하는 상황은 다음과 같습니다.

  • 두 신호가 모두 low인 동안에는 Line 2 및 Line 3의 Trigger Activation이 다음과 같이 설정되어 있으므로 해당 라인의 트리거가 비활성 상태로 유지됩니다. LineHigh. 테이블 행 1과 2를 참조하십시오. 따라서 Sequencer는 set 0에 유지됩니다.
  • Line 3의 신호가 상승하면 LineHigh activation이 발생하고 Sequencer가 set 0에서 set 1로 즉시 이동합니다. 테이블 행 1을 참조하십시오. 그런 다음 Line 2가 여전히 low 상태이므로 Sequencer는 set 1에 유지됩니다.
  • Line 2의 신호도 상승하면 Sequencer가 set 1에서 set 3으로 이동합니다. 테이블 행 4를 참조하십시오.
  • Line 2의 신호가 하강하면 Sequencer가 다시 set 1로 이동합니다. 테이블 행 8을 참조하십시오.
  • Line 3의 신호도 하강하면 Sequencer가 다시 set 0으로 이동합니다. 테이블 행 3을 참조하십시오.

정보

  • 이는 양쪽 I/O 라인의 신호를 동시에 변경하는 경우(예: 두 I/O 라인의 상태를 high에서 low로 전환)에도 작동합니다.
  • 이미지 취득은 별도로 트리거되어야 합니다. I/O 라인 상태가 변경될 때 프레임 사이에서 Sequencer가 여러 번 이동할 수 있습니다.

샘플 코드#

// ** 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를 사용하여 파라미터를 손쉽게 설정할 수도 있습니다.