Basler dart E cameras that support the Periodic Signal feature provide an additional camera signal source, PeriodicSignal1. The signal is synchronized to electrical signals applied via the camera's input line 1.
For example, if you apply an electrical signal with a period of 0.3 seconds to input line 1, the camera's internal periodic signal adapts, which in turn lets the camera capture an image every 0.3 seconds.
When you increase or decrease the period of the electrical signal, the camera's internal periodic signal takes a while to adapt to the new period. The camera's frame rate increases or decreases accordingly. When you stop applying electrical signals, image acquisition stops.
This has the following advantages over standard hardware triggering:
It allows edge triggering (rising or falling edge, configured via the BslPeriodicSignalActivation parameter). Standard hardware triggering only allows level triggering.
Because the camera "knows" that the signal is periodic, it can predict the next signal and prepare the camera for image acquisition. This reduces the time between the detection of the trigger signal and the actual start of the exposure.
You can specify a negative trigger delay (configured via the BslPeriodicSignalDelay parameter), which means that the camera acquires images before the electrical signal is actually applied.
Info
Basler recommends applying electrical signals at a steady rate. Decreasing or increasing the period during acquisition may cause unstable camera behavior and may lead to dropped frames.
To configure the camera for synchronized image acquisition:
Configure the camera to be triggered by the periodic signal:
Set the TriggerMode parameter to On.
Set the TriggerSource parameter to PeriodicSignal1.
Configure the signal transition type:
If you want the camera to capture images on the falling edges of the input signal, set the BslPeriodicSignalActivation parameter to FallingEdge.
If you want the camera to capture images on the rising edges of the input signal, set the BslPeriodicSignalActivation parameter to RisingEdge.
Configure the signal delay:
If you want the camera to capture images immediately when the input signal arrives, set the BslPeriodicSignalDelay parameter to 0.
If you want the camera to capture images before or after the input signal arrives, set the BslPeriodicSignalDelay parameter to any other value in nanoseconds. For example, if you set the parameter to -500000, the camera acquires an image 0.5 seconds before the next signal is expected to arrive.
Apply periodic electrical signals via the camera's 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 modecamera.TriggerSource.SetValue(TriggerSource_PeriodicSignal1);camera.TriggerMode.SetValue(TriggerMode_On);// Set the transition type to falling edgecamera.BslPeriodicSignalActivation.SetValue(BslPeriodicSignalActivation_FallingEdge);// Set the signal delay to 0camera.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 modeCEnumParameter(nodemap,"TriggerSource").SetValue("PeriodicSignal1");CEnumParameter(nodemap,"TriggerMode").SetValue("On");// Set the transition type to falling edgeCEnumParameter(nodemap,"BslPeriodicSignalActivation").SetValue("FallingEdge");// Set the signal delay to 0CIntegerParameter(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 modecamera.Parameters[PLCamera.TriggerSource].SetValue(PLCamera.TriggerSource.PeriodicSignal1);camera.Parameters[PLCamera.TriggerMode].SetValue(PLCamera.TriggerMode.On);// Set the transition type to falling edgecamera.Parameters[PLCamera.BslPeriodicSignalActivation].SetValue(PLCamera.BslPeriodicSignalActivation.FallingEdge);// Set the signal delay to 0camera.Parameters[PLCamera.BslPeriodicSignalDelay].SetValue(0);
/* Macro to check for errors */#define CHECK(errc) if (GENAPI_E_OK != errc) printErrorAndExit(errc)GENAPIC_RESULTerrRes=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 modecamera.TriggerSource.Value="PeriodicSignal1"camera.TriggerMode.Value="On"# Set the transition type to falling edgecamera.BslPeriodicSignalActivation.Value="FallingEdge"# Set the signal delay to 0camera.BslPeriodicSignalDelay.Value=0
/* Macro to check for errors */#define CHECK(errc) if (GENAPI_E_OK != errc) printErrorAndExit(errc)GENAPIC_RESULTerrRes=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.