Frequency Converter#
Frequency converter는 카메라의 Encoder Control, Counter 또는 Timer와 같은 다양한 소스에서 트리거 신호를 받을 수 있습니다. Encoder Control에서 신호를 받는 것이 가장 일반적인 사용 사례입니다.
이 기능은 Basler racer 2 카메라에서만 사용할 수 있습니다.
기능 사용#
작동 방식#
Frequency converter는 수신된 신호의 트리거 레이트를 다른 응용 프로그램에서 사용하기 적합한 트리거 레이트로 조정합니다. 이는 나눗셈과 곱셈을 통해 이루어집니다.
Frequency converter는 원래 신호에 순차적으로 작용하는 세 가지 모듈(프리 디바이더, 멀티플라이어, 포스트 디바이더)을 포함합니다.
Pre-Divider Module#
프리 디바이더 모듈은 입력 신호를 수신합니다. 이 모듈을 사용하면 정수 계수인 프리 디바이더를 적용하여 원래 주파수를 낮추고, 그 신호를 다음 모듈인 멀티플라이어 모듈로 전달할 수 있습니다.
예를 들어 프리 디바이더 값이 2로 설정된 경우, 입력 신호 중 걸러진 절반만 변경 없이 멀티플라이어 모듈로 전달되므로 주파수가 절반으로 줄어듭니다. 프리 디바이더 값이 1로 설정된 경우 모든 입력 신호가 변경 없이 멀티플라이어 모듈로 전달됩니다.
정보
- 프리 디바이더를 사용하면 입력 신호의 주기적 지터(jitter)를 줄이는 데 도움이 될 수 있습니다.
- Basler에서는 프리 디바이더에 낮은 값을 사용할 것을 권장합니다. 멀티플라이어 모듈을 통한 주파수 조정을 용이하게 하려면 원래 신호 주파수를 가능한 적게 변경해야 합니다.
Multiplier Module#
멀티플라이어 모듈은 프리 디바이더 모듈로부터 신호를 받습니다. 정상적인 작동을 위해 수신된 신호 주파수는 10 Hz 이상이어야 합니다. 멀티플라이어 모듈을 사용하면 정수 계수인 멀티플라이어를 적용하여 주파수가 증가된 신호를 생성하고, 이를 다음 모듈인 포스트 디바이더 모듈로 전달할 수 있습니다.
각 입력 신호에 대해 동기화된 출력 신호가 생성되며, 즉 신호들이 동위상 상태가 됩니다. 승수 계수 3을 적용하면 다음과 같습니다.
정보
입력 신호나 멀티플라이어 값을 변경한 후, 위에서 표시된 것과 같은 이상적인 위상 정렬 상태에 도달하는 데 다소 시간이 걸릴 수 있습니다. 인코더에서 보낸 신호에 상당한 지터가 있는 등 입력 주기가 지속적으로 변하는 경우 안정적인 위상 정렬에 도달하지 못할 수도 있습니다. 그러나 출력 신호는 최적값에 가까울 것입니다.
Post-Divider Module#
포스트 디바이더 모듈은 멀티플라이어 모듈로부터 신호를 받습니다. 포스트 디바이더 모듈을 사용하면 정수 계수인 포스트 디바이더를 적용하여 주파수가 낮아진 신호를 생성하고, 이 신호를 라인 스타트 트리거 등 카메라 트리거 신호로 사용할 수 있습니다.
Frequency Converter 소스 신호#
다음 항목을 사용하여 frequency converter의 소스 신호를 설정할 수 있습니다. BslFrequencyConverterSignalSource parameter. This defines how the frequency converter is driven. For example, you can specify that the converter is driven by an electrical signal or by a timer signal.
정보
The frequency converter can only process pulsed signals. When choosing a level signal, e.g., Line1, you must therefore also specify the signal transition Frequency Converter를 활성화합니다.
다음 소스 신호를 사용할 수 있습니다.
Encoder1: 증분 엔코더를 사용하여 Frequency Converter를 구동할 수 있습니다.Line1에서Line6: I/O 라인 1, 2, 3, 4, 5 또는 6에 전기 신호를 인가하여 Frequency Converter를 구동할 수 있습니다.CxpTrigger0,CxpTrigger1: 프레임 그래버에서 전송된 CXP 트리거 신호로 Frequency Converter를 구동할 수 있습니다.Counter1Active에서Counter4Active: 다음을 사용하여 Frequency Converter를 구동할 수 있습니다. Counter 기능. 지정된 Counter가 카운팅하는 동안에는 신호가 High(1) 상태를 유지하고, 카운팅하지 않는 동안에는 Low(0) 상태가 됩니다.Counter1Start에서Counter4Start: 다음을 사용하여 Frequency Converter를 구동할 수 있습니다. Counter 기능. 지정된 Counter가 카운팅을 시작할 때마다 신호가 전송됩니다.Counter1End에서Counter4End: 다음을 사용하여 Frequency Converter를 구동할 수 있습니다. Counter 기능. 지정된 Counter가 카운팅을 중지할 때마다 신호가 전송됩니다.Timer1Active,Timer2Active: 다음을 사용하여 Frequency Converter를 구동할 수 있습니다. Timer 기능. 지정된 Timer가 실행되는 동안에는 신호가 High(1) 상태를 유지하고, 실행되지 않는 동안에는 Low(0) 상태가 됩니다.Timer1End,Timer2End: 다음을 사용하여 Frequency Converter를 구동할 수 있습니다. Timer 기능. 지정된 Timer가 경과할 때마다 신호가 전송됩니다.
Frequency Converter 활성화#
The BslFrequencyConverterActivation parameter를 통해 다음을 정의할 수 있습니다. 어떤 신호 전환에서 Frequency Converter를 활성화합니다. 예를 들어, 트리거 신호가 하강할 때 컨버터가 활성화되도록 지정할 수 있습니다.
정보
The BslFrequencyConverterActivation parameter는 I/O 신호 또는 다음과 같은 "Active" 신호와 같이 High(1) 또는 Low(0) 상태를 가질 수 있는 레벨 신호를 소스 신호로 선택한 경우에만 사용할 수 있습니다. Timer1Active.
다음을 설정할 수 있습니다. BslFrequencyConverterActivation 파라미터를 설정하십시오:
RisingEdge: 트리거 신호가 상승할 때, 즉 신호 상태가 Low에서 High로 변경될 때 Frequency Converter가 활성화됩니다. 이는 기본 설정입니다.FallingEdge: 트리거 신호가 하강할 때, 즉 신호 상태가 High에서 Low로 변경될 때 Frequency Converter가 활성화됩니다.AnyEdge: 트리거 신호가 하강하거나 상승할 때 Frequency Converter가 활성화됩니다.
Frequency Converter 구성#
Frequency Converter를 구성하려면:
- 파라미터를 원하는
BslFrequencyConverterSignalSourceparameter를 사용 가능한 소스 신호 중 하나로 설정합니다(예:Encoder1. - 소스 신호로 레벨 신호를 선택한 경우,
BslFrequencyConverterActivationparameter를 설정합니다(예:RisingEdge. - 파라미터를 원하는
BslFrequencyConverterPreDividerparameter를 설정합니다(예: 3). - 파라미터를 원하는
BslFrequencyConverterMultiplierparameter를 설정합니다(예: 4). - 파라미터를 원하는
BslFrequencyConverterPostDividerparameter를 설정합니다(예: 2). - 옵션: Frequency Converter를 선택한 트리거의 소스 신호로 사용하려면 다음을 설정하십시오.
TriggerSource파라메터FrequencyConverter.
샘플 코드#
// Select encoder 1 as the source signal for the frequency converter
camera.BslFrequencyConverterSignalSource.SetValue(BslFrequencyConverterSignalSource_Encoder1);
// Set the pre-divider value to 3
camera.BslFrequencyConverterPreDivider.SetValue(3);
// Set the multiplier value to 4
camera.BslFrequencyConverterMultiplier.SetValue(4);
// Set the post-divider to 2
camera.BslFrequencyConverterPostDivider.SetValue(2);
// Optional: Set the frequency converter as source signal for the selected trigger
camera.TriggerSource.SetValue(TriggerSource_FrequencyConverter);
INodeMap& nodemap = camera.GetNodeMap();
// Select encoder 1 as the source signal for the frequency converter
CEnumParameter(nodemap, "BslFrequencyConverterSignalSource").SetValue("Encoder1");
// Set the pre-divider value to 3
CIntegerParameter(nodemap, "BslFrequencyConverterPreDivider").SetValue(3);
// Set the multiplier value to 4
CIntegerParameter(nodemap, "BslFrequencyConverterMultiplier").SetValue(4);
// Set the post-divider to 2
CIntegerParameter(nodemap, "BslFrequencyConverterPostDivider").SetValue(2);
// Optional: Set the frequency converter as source signal for the selected trigger
CEnumParameter(nodemap, "TriggerSource").SetValue("FrequencyConverter");
// Select encoder 1 as the source signal for the frequency converter
camera.Parameters[PLCamera.BslFrequencyConverterSignalSource].SetValue(PLCamera.BslFrequencyConverterSignalSource.Encoder1);
// Set the pre-divider value to 3
camera.Parameters[PLCamera.BslFrequencyConverterPreDivider].SetValue(3);
// Set the multiplier value to 4
camera.Parameters[PLCamera.BslFrequencyConverterMultiplier].SetValue(4);
// Set the post-divider to 2
camera.Parameters[PLCamera.BslFrequencyConverterPostDivider].SetValue(2);
// Optional: Set the frequency converter as source signal for the selected trigger
camera.Parameters[PLCamera.TriggerSource].SetValue(PLCamera.TriggerSource.FrequencyConverter);
/* 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 */
/* Select encoder 1 as the source signal for the frequency converter */
errRes = PylonDeviceFeatureFromString(hdev, "BslFrequencyConverterSignalSource", "Encoder1");
CHECK(errRes);
/* Set the pre-divider value to 3 */
errRes = PylonDeviceSetIntegerFeature(hdev, "BslFrequencyConverterPreDivider", 3);
CHECK(errRes);
/* Set the multiplier value to 4 */
errRes = PylonDeviceSetIntegerFeature(hdev, "BslFrequencyConverterMultiplier", 4);
CHECK(errRes);
/* Set the post-divider to 2 */
errRes = PylonDeviceSetIntegerFeature(hdev, "BslFrequencyConverterPostDivider", 2);
CHECK(errRes);
/* Optional: Set the frequency converter as source signal for the selected trigger */
errRes = PylonDeviceFeatureFromString(hdev, "TriggerSource", "FrequencyConverter");
CHECK(errRes);
# Select encoder 1 as the source signal for the frequency converter
camera.BslFrequencyConverterSignalSource.Value = "Encoder1"
# Set the pre-divider value to 3
camera.BslFrequencyConverterPreDivider.Value = 3
# Set the multiplier value to 4
camera.BslFrequencyConverterMultiplier.Value = 4
# Set the post-divider to 2
camera.BslFrequencyConverterPostDivider.Value = 2
# Optional: Set the frequency converter as source signal for the selected trigger
camera.TriggerSource.Value = "FrequencyConverter"
pylon Viewer를 사용하여 파라미터를 손쉽게 설정할 수도 있습니다.