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

Periodic Signal (dart E)#

dart E 카메라의 Periodic Signal camera feature를 사용하면 여러 카메라에서 이미지 취득을 동기화할 수 있습니다.

기능 사용#

작동 방식#

Periodic Signal 기능을 지원하는 Basler dart E 카메라는 추가 카메라 신호 소스를 제공하며, PeriodicSignal1. 이 신호는 카메라의 입력 라인 1을 통해 인가되는 전기 신호와 동기화됩니다.

예를 들어, 0.3초 주기의 전기 신호를 입력 라인 1에 인가하면 카메라의 내부 Periodic Signal이 이에 적응하여 결과적으로 카메라가 0.3초마다 이미지를 캡처할 수 있게 됩니다.

전기 신호의 주기를 늘리거나 줄이면 카메라의 내부 Periodic Signal이 새 주기에 적응하는 데 일정 시간이 소요됩니다. 카메라의 프레임 레이트도 그에 따라 증가하거나 감소합니다. 전기 신호 인가를 중단하면 Acquisition Stop이 발생합니다.

이는 표준 하드웨어 트리거링에 비해 다음과 같은 이점이 있습니다.

  • 에지 트리거링(상향 또는 하향 에지, 다음을 통해 구성됨 BslPeriodicSignalActivation 파라미터)을 허용합니다. 표준 하드웨어 트리거링은 레벨 트리거링만 허용합니다.
  • 카메라는 신호가 주기적이라는 것을 "알고" 있으므로 다음 신호를 예측하고 이미지 취득을 위해 카메라를 미리 준비할 수 있습니다. 이를 통해 트리거 신호 감지와 실제 노출 시작 사이의 시간이 단축됩니다.
  • 음수 Trigger Delay를 지정할 수 있으며(다음 통해 구성됨 BslPeriodicSignalDelay 파라미터), 이는 전기 신호가 실제로 인가되기 전에 카메라가 이미지를 취득함을 의미합니다.

정보

Basler는 일정한 속도로 전기 신호를 인가할 것을 권장합니다. 취득 중에 주기를 줄이거나 늘리면 카메라 동작이 불안정해지고 프레임 누락이 발생할 수 있습니다.

Periodic Signal 구성#

동기화된 이미지 취득을 위해 카메라를 구성하려면:

  1. Periodic Signal에 의해 트리거되도록 카메라 구성:
    1. 파라미터를 원하는 TriggerMode 파라메터 On.
    2. 파라미터를 원하는 TriggerSource 파라메터 PeriodicSignal1.
  2. 신호 전환 유형을 구성합니다:
    • 카메라가 다음 조건에서 이미지를 캡처하도록 하려면 falling 입력 신호의 에지, 다음을 설정합니다 BslPeriodicSignalActivation 파라메터 FallingEdge.
    • 카메라가 다음 조건에서 이미지를 캡처하도록 하려면 rising 입력 신호의 에지, 다음을 설정합니다 BslPeriodicSignalActivation 파라메터 RisingEdge.
  3. 신호 지연을 구성합니다.
    • 카메라가 이미지를 캡처하도록 하려면 즉시 입력 신호가 도착하면 다음을 설정합니다 BslPeriodicSignalDelay 매개변수를 0으로 설정합니다.
    • 카메라가 이미지를 캡처하도록 하려면 전 또는 후 입력 신호가 도착하면 다음을 설정합니다 BslPeriodicSignalDelay 파라미터를 나노초 단위의 다른 값으로 설정합니다. 예를 들어, 파라미터를 -500000으로 설정하면 카메라는 다음 신호가 도착할 것으로 예상되는 시간보다 0.5초 전에 이미지를 취득합니다.
  4. 카메라의 input line 1을 통해 주기적인 전기 신호를 인가합니다.

샘플 코드#

// Configure the camera to be triggered by the periodic signal
// Note: You must set the trigger source first and then the trigger mode
camera.TriggerSource.SetValue(TriggerSource_PeriodicSignal1);
camera.TriggerMode.SetValue(TriggerMode_On);
// Set the transition type to falling edge
camera.BslPeriodicSignalActivation.SetValue(BslPeriodicSignalActivation_FallingEdge);
// Set the signal delay to 0
camera.BslPeriodicSignalDelay.SetValue(0);
INodeMap& nodemap = camera.GetNodeMap();
// Configure the camera to be triggered by the periodic signal
// Note: You must set the trigger source first and then the trigger mode
CEnumParameter(nodemap, "TriggerSource").SetValue("PeriodicSignal1");
CEnumParameter(nodemap, "TriggerMode").SetValue("On");
// Set the transition type to falling edge
CEnumParameter(nodemap, "BslPeriodicSignalActivation").SetValue("FallingEdge");
// Set the signal delay to 0
CIntegerParameter(nodemap, "BslPeriodicSignalDelay").SetValue(0);
// Configure the camera to be triggered by the periodic signal
// Note: You must set the trigger source first and then the trigger mode
camera.Parameters[PLCamera.TriggerSource].SetValue(PLCamera.TriggerSource.PeriodicSignal1);
camera.Parameters[PLCamera.TriggerMode].SetValue(PLCamera.TriggerMode.On);
// Set the transition type to falling edge
camera.Parameters[PLCamera.BslPeriodicSignalActivation].SetValue(PLCamera.BslPeriodicSignalActivation.FallingEdge);
// Set the signal delay to 0
camera.Parameters[PLCamera.BslPeriodicSignalDelay].SetValue(0);
/* 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 */
/* Configure the camera to be triggered by the periodic signal */
/* Note: You must set the trigger source first and then the trigger mode */
errRes = PylonDeviceFeatureFromString(hdev, "TriggerSource", "PeriodicSignal1");
CHECK(errRes);
errRes = PylonDeviceFeatureFromString(hdev, "TriggerMode", "On");
CHECK(errRes);
/* Set the transition type to falling edge */
errRes = PylonDeviceFeatureFromString(hdev, "BslPeriodicSignalActivation", "FallingEdge");
CHECK(errRes);
/* Set the signal delay to 0 */
errRes = PylonDeviceSetIntegerFeature(hdev, "BslPeriodicSignalDelay", 0);
CHECK(errRes);
# Configure the camera to be triggered by the periodic signal
# Note: You must set the trigger source first and then the trigger mode
camera.TriggerSource.Value = "PeriodicSignal1"
camera.TriggerMode.Value = "On"
# Set the transition type to falling edge
camera.BslPeriodicSignalActivation.Value = "FallingEdge"
# Set the signal delay to 0
camera.BslPeriodicSignalDelay.Value = 0
/* 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 */
/* Configure the camera to be triggered by the periodic signal */
errRes = PylonDeviceFeatureFromString(hdev, "TriggerMode", "On");
CHECK(errRes);
errRes = PylonDeviceFeatureFromString(hdev, "TriggerSource", "PeriodicSignal1");
CHECK(errRes);
/* Set the transition type to falling edge */
errRes = PylonDeviceFeatureFromString(hdev, "BslPeriodicSignalActivation", "FallingEdge");
CHECK(errRes);
/* Set the signal delay to 0 */
errRes = PylonDeviceSetIntegerFeature(hdev, "BslPeriodicSignalDelay", 0);
CHECK(errRes);

pylon Viewer를 사용하여 매개변수를 간편하게 설정할 수도 있습니다.