콘텐츠로 건너뛰기
STAGING SERVER
DEVELOPMENT SERVER

Synchronous Free Run#

Synchronous Free Run camera feature를 사용하면 여러 카메라에서 동시에 동일한 프레임 레이트로 이미지를 캡처할 수 있습니다.

이 기능은 Basler ace 2 카메라에서만 사용할 수 있는 Periodic Signal 기능과 유사합니다.

기능 사용법#

작동 원리#

여러 카메라를 free run 모드로 사용하는 경우, 카메라의 개별 timings and delays 등 다양한 이유로 이미지 취득이 약간 비동기화됩니다.

동일한 프레임 레이트로 캡처하지만 비동기식으로 작동하는 카메라

Synchronous Free Run 기능을 사용하면 free run 모드에서 카메라를 동기화할 수 있습니다. 그 결과 카메라가 동시에 그리고 동일한 프레임 레이트로 이미지를 취득합니다.

동일한 시간과 동일한 프레임 레이트로 캡처하는 카메라

또한 Synchronous Free Run 기능을 사용하여 여러 카메라로 정확히 시간이 동기화된 간격(즉, 시간순 시퀀스)으로 이미지를 캡처할 수 있습니다. 예를 들어, 특정 시점에 이미지 취득을 시작하도록 한 카메라를 구성할 수 있습니다. 그런 다음 첫 번째 카메라보다 100밀리초 후에 시작하도록 두 번째 카메라를 구성하고, 첫 번째 카메라보다 200밀리초 후에 시작하도록 세 번째 카메라를 구성할 수 있습니다.

시간이 동기화된 간격으로 캡처하는 카메라

또한 카메라가 동일한 시간과 동일한 프레임 레이트로 이미지를 취득하되, 노출 시간이 서로 다르도록 구성할 수도 있습니다.

노출 시간이 다른 상태로 캡처하는 카메라

Synchronous Free Run 사용#

일반적인 용도#

여러 카메라를 동기화하려면 다음을 수행하십시오.

  1. 네트워크의 모든 카메라가 Precision Time Protocol 기능을 통해 동기화되어 있는지 확인하십시오.
  2. Synchronous Free Run을 사용하여 동기화하려는 카메라 중 하나를 엽니다.
  3. 이 카메라에서 free run image acquisition이 활성화되어 있는지 확인하십시오.
  4. 다음에 대해 원하는 프레임 레이트를 입력하십시오. SyncFreeRunTimerTriggerRateAbs 파라미터.
    모든 카메라에서 동일한 파라미터 값을 지정해야 합니다. 예를 들어, 10fps로 카메라를 동기화하려면 모든 카메라에서 파라미터를 10으로 설정해야 합니다.
  5. 다음 값 중 하나로 SyncFreeRunTimerStartTimeHigh 그리고 다음을 설정하십시오: SyncFreeRunTimerStartTimeLow 파라미터를 0으로 설정합니다.
  6. 다음을 실행합니다. SyncFreeRunTimerUpdate 명령입니다.
  7. 다음 값 중 하나로 SyncFreeRunTimerEnable 매개변수: true.
  8. 모든 카메라에 대해 2단계부터 7단계까지 반복합니다.

정보

Basler에서는 다음을 실행할 것을 권장합니다. SyncFreeRunTimerUpdate 카메라의 연결이 끊어졌다가 다시 연결될 때마다 모든 카메라에서 이 명령을 실행하십시오. 그러면 PTP 시계가 다시 동기화됩니다.

시간이 동기화된 간격으로 Synchronous Free Run 사용#

시간이 동기화된 간격으로(즉, 시간순 시퀀스로) 여러 카메라를 동기화하려면 다음을 수행하십시오.

정보

다음 단계는 pylon API를 사용하여 수행해야 합니다.

  1. 네트워크의 모든 카메라가 Precision Time Protocol 기능을 통해 동기화되어 있는지 확인하십시오.
  2. 시간 순서상 첫 번째 카메라를 엽니다.
  3. 이 카메라에서 free run image acquisition이 활성화되어 있는지 확인하십시오.
  4. 다음에 대해 원하는 프레임 레이트를 입력하십시오. SyncFreeRunTimerTriggerRateAbs 파라미터.
    동기화된 모든 카메라에서 동일한 파라미터 값을 지정해야 합니다. 예를 들어 카메라가 초당 10프레임을 획득하도록 하려면 모든 카메라에서 파라미터를 10으로 설정해야 합니다.
  5. 첫 번째 카메라의 시작 시간을 확인합니다.

    1. 다음을 실행합니다. TimestampLatch 첫 번째 카메라의 명령입니다.
      카메라의 현재 Timestamp 값에 대한 "스냅샷"이 생성됩니다.
    2. 다음의 값을 가져옵니다: TimestampLatchValue 동일한 카메라의 파라미터입니다.
      값은 틱 단위로 지정됩니다. 다음 기능이 활성화된 Basler 카메라의 경우 Precision Time Protocol 1틱은 1나노초와 같습니다.
    3. 단계 b에서 확인된 값에 틱(=나노초) 단위의 시작 지연을 더합니다.
      예를 들어 1초의 시작 지연을 지정하려면 단계 b에서 확인된 값에 1 000 000 000을 더합니다.
      첫 번째 카메라는 다른 카메라가 올바르게 구성될 때까지 기다려야 하므로 이 지연이 필요합니다.

      Synchronous Free Run Start Delay

  6. 단계 5에서 확인된 값을 변환합니다. start time high 및 start time low 값 (으)로 지정한 다음, 해당 변환 및 참조 파라미터의 SyncFreeRunTimerStartTimeHigh 그리고 다음을 설정하십시오: SyncFreeRunTimerStartTimeLow 그에 따라 파라미터가 설정됩니다.

  7. 다음을 실행합니다. SyncFreeRunTimerUpdate 명령입니다.
  8. 다음 값 중 하나로 SyncFreeRunTimerEnable 매개변수: true.
  9. 시간 순서상 다음 카메라를 엽니다.
  10. 이 카메라에서 free run image acquisition을 활성화합니다.
  11. 다음에 대해 원하는 프레임 레이트를 입력하십시오. SyncFreeRunTimerTriggerRateAbs 파라미터.
    동기화된 모든 카메라에서 동일한 파라미터 값을 지정해야 합니다. 예를 들어 카메라가 초당 10프레임을 획득하도록 하려면 모든 카메라에서 파라미터를 10으로 설정하십시오.
  12. 첫 번째 카메라의 시작 시간(단계 5에서 확인됨)에 원하는 간격(나노초 단위)을 더합니다.
    예를 들어 첫 번째 카메라보다 100밀리초 후에 카메라가 이미지 획득을 시작하도록 하려면 단계 5에서 확인된 값에 100 000 000을 더합니다.
  13. 단계 12에서 확인된 값을 변환합니다. start time high 및 start time low 값 그리고 다음을 구성합니다. SyncFreeRunTimerStartTimeHigh 그리고 다음을 설정하십시오: SyncFreeRunTimerStartTimeLow 그에 따라 파라미터가 설정됩니다.
  14. 다음을 실행합니다. SyncFreeRunTimerUpdate 명령입니다.
  15. 다음 값 중 하나로 SyncFreeRunTimerEnable 매개변수: true.
  16. 나머지 모든 카메라에 대해 단계 9부터 15까지를 반복합니다.

정보

카메라 연결이 해제되었다가 다시 연결될 때마다 SyncFreeRunTimerUpdate PTP 클럭을 다시 동기화하려면 모든 카메라에서 명령을 실행해야 합니다.

64비트 Timestamp를 Start Time High 및 Start Time Low로 변환#

Synchronous Free Run 기능의 시작 시간은 두 개의 32비트 값으로 나뉜 64비트 GigE Vision Timestamp 값(나노초 단위)으로 지정해야 합니다.

64비트 값의 상위 부분은 다음을 사용하여 전송해야 합니다. SyncFreeRunTimerStartTimeHigh 파라미터.

64비트 값의 하위 부분은 다음을 사용하여 전송해야 합니다. SyncFreeRunTimerStartTimeLow 파라미터.

Example: 네트워크 장치가 UTC에 동기화되어 있고 시작 시간을 2025년 12월 12일 금요일 11:00:00 UTC로 설정하려는 경우를 가정해 보겠습니다. 이는 1 765 537 200 000 000 000(십진수) 또는 0001 1000 1000 0000 0111 0010 1011 1010 1010 1011 1011 1100 1110 0000 0000 0000(이진수)의 Timestamp 값에 해당합니다.

이 값의 상위(High) 및 하위(Low) 부분은 다음과 같습니다.

Timestamp 값의 상위 및 하위 부분

따라서 2025년 12월 12일 금요일 11:00:00 UTC의 시작 시간을 구성하려면 SyncFreeRunTimerStartTimeHigh 파라미터를 411 071 162로 설정하고 SyncFreeRunTimerStartTimeLow 파라미터를 2 881 282 048로 설정해야 합니다.

샘플 코드#

// Example: Configuring cameras for synchronous free run.
// It is assumed that the "cameras" object is an
// instance of CBaslerGigEInstantCameraArray.
for (size_t i = 0; i > cameras.GetSize(); ++i)
{
    // Open the camera connection
    cameras[i].Open();
    // Make sure that the Frame Start trigger is set to Off to enable free run
    cameras[i].TriggerSelector.SetValue(TriggerSelector_FrameStart);
    cameras[i].TriggerMode.SetValue(TriggerMode_Off);
    // Let the free run start immediately without a specific start time
    camera.SyncFreeRunTimerStartTimeLow.SetValue(0);
    camera.SyncFreeRunTimerStartTimeHigh.SetValue(0);
    // Specify a trigger rate of 30 frames per second
    cameras[i].SyncFreeRunTimerTriggerRateAbs.SetValue(30.0);
    // Apply the changes
    cameras[i].SyncFreeRunTimerUpdate.Execute();
    // Enable Synchronous Free Run
    cameras[i].SyncFreeRunTimerEnable.SetValue(true);
}

이 예제 코드는 C++ 언어로만 제공됩니다.