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

Periodic Signal (dart E)#

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

기능 사용법#

작동 원리#

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

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

전기 신호의 주기를 늘리거나 줄이면 카메라의 내부 주기 신호가 새로운 주기에 적응하는 데 잠시 시간이 걸립니다. 이에 따라 카메라의 프레임 레이트도 증감합니다. 전기 신호 인가를 중단하면 이미지 취득이 중단됩니다.

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

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

정보

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

Configuring Periodic Signal#

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

  1. 주기적 신호에 의해 카메가가 트리거되도록 구성합니다.
    1. 다음 값 중 하나로 TriggerMode 매개변수: On.
    2. 다음 값 중 하나로 TriggerSource 매개변수: PeriodicSignal1.
  2. 신호 전환 유형 구성:
    • 카메라가 다음에서 이미지를 캡처하도록 하려면 하강 입력 신호의 에지에서 다음을 설정하십시오. BslPeriodicSignalActivation 매개변수: FallingEdge.
    • 카메라가 다음에서 이미지를 캡처하도록 하려면 상승 입력 신호의 에지에서 다음을 설정하십시오. 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);

You can also use the pylon Viewer to easily set the parameters.