Frequency Converter#
Frequency Converter 可以接受來自不同來源的觸發訊號,例如相機的 Encoder Control、Counter 或 Timer。接收來自 Encoder Control 的訊號是最常見的應用情境。
此功能僅適用於 Basler racer 2 相機。
使用此功能#
運作原理#
Frequency Converter 會將接收到的訊號觸發速率調整為適合其他應用程式使用的觸發速率。這是透過除法和乘法來完成的。
Frequency Converter 包含依序對原始訊號起作用的三個模組:前置除法器 (pre-divider)、相乘器 (multiplier) 和後置除法器 (post-divider)
前置除法器模組#
前置除法器模組負責接收輸入訊號。透過該模組,您可以套用整數係數(即前置除法器)來降低原始頻率,並將訊號傳遞至下一個模組(即相乘器模組)。
例如,如果前置除法器值設為 2,則只有每隔一個輸入訊號會原封不動地傳遞至相乘器模組,因此頻率會減半。如果前置除法器值設為 1,則每個輸入訊號都會原封不動地傳遞至相乘器模組。
資訊
- 使用前置除法器有助於減少輸入訊號的週期性抖動。
- Basler 建議對前置除法器使用較低的值。應盡量少改變原始訊號頻率,以便於相乘器模組進行頻率調整。
相乘器模組#
相乘器模組接收來自前置除法器模組的訊號。為確保運作正常,接收到的訊號頻率不得低於 10 Hz。透過相乘器模組,您可以套用整數係數(即相乘器)來產生頻率增加的訊號,並將訊號傳遞至下一個模組(即後置除法器模組)。
針對每個輸入訊號,都會產生一個同步輸出訊號,也就是說訊號是同相的。套用 3 的相乘係數看起來會像這樣:
資訊
變更輸入訊號或相乘器值後,可能需要一些時間才能達到如上所示的理想相位對齊狀態。如果輸入週期持續變化(例如增量編碼器傳送的訊號具有顯著抖動),則可能永遠無法達到穩定的相位對齊。不過,輸出訊號仍會接近最佳狀態。
後置除法器模組#
後置除法器模組接收來自相乘器模組的訊號。透過後置除法器模組,您可以套用整數係數(即後置除法器)來產生頻率降低的訊號,並提供這些訊號作為相機觸發訊號使用,例如作為行啟動觸發 (line start triggers)。
Frequency Converter 來源訊號#
您可以使用 BslFrequencyConverterSignalSource 參數設定 Frequency Converter 的來源訊號。 這定義了 Frequency Converter 的驅動方式
資訊
。例如,您可以指定轉換器是由電氣訊號還是 Timer 訊號驅動。Frequency Converter 只能處理脈衝訊號。因此,當選擇準位訊號(例如 Line1)時,您還必須指定 訊號轉換 將會啟動 Frequency Converter。
可用下列來源訊號:
Encoder1:可以透過增量編碼器來驅動 Frequency Converter。Line1設定為Line6:可以透過將電氣訊號套用至 I/O line 1、2、3、4、5 或 6 來驅動 Frequency Converter。CxpTrigger0,CxpTrigger1:可以透過從擷取卡傳送的 CXP 觸發訊號來驅動 Frequency Converter。Counter1Active設定為Counter4Active:可以使用 Counter 功能來驅動 Frequency Converter。只要指定的 Counter 正在計數,訊號就會保持高電位 (1);只要未計數,訊號就會保持低電位 (0)。Counter1Start設定為Counter4Start:可以使用 Counter 功能。每當指定的 Counter 開始計數時,就會傳送一項訊號。Counter1End設定為Counter4End:可以使用 Counter 功能。每當指定的 Counter 停止計數時,就會傳送一項訊號。Timer1Active,Timer2Active:可以使用 Timer 功能。只要指定的 Timer 正在執行,訊號就會保持高電位 (1);只要未執行,訊號就會保持低電位 (0)。Timer1End,Timer2End:可以使用 Timer 功能。每當指定的 Timer 結束時,就會傳送一項訊號。
Frequency Converter 啟用#
影像 BslFrequencyConverterActivation 參數可讓您定義 哪個訊號轉態 會啟動 Frequency Converter。例如,您可以指定當觸發訊號下降時,Converter 會變為啟用狀態。
資訊
影像 BslFrequencyConverterActivation 參數僅在選擇位準訊號作為來源訊號時可用,也就是可以是高電位 (1) 或低電位 (0) 的訊號,例如 I/O 訊號或「Active」訊號,例如 Timer1Active.
您可以將 BslFrequencyConverterActivation 參數設為下列其中一個值:
RisingEdge:當觸發訊號上升(也就是訊號狀態從低電位變為高電位)時,Frequency Converter 會變為啟用狀態。這是預設設定。FallingEdge:當觸發訊號下降(也就是訊號狀態從高電位變為低電位)時,Frequency Converter 會變為啟用狀態。AnyEdge:當觸發訊號下降或上升時,Frequency Converter 會變為啟用狀態。
設定 Frequency Converter#
若要設定 Frequency Converter:
- 將
BslFrequencyConverterSignalSourceProperty 設為其中一個可用的來源訊號,例如Encoder1. - 如果您已選擇位準訊號作為來源訊號,請將
BslFrequencyConverterActivation參數設定為,例如RisingEdge. - 將
BslFrequencyConverterPreDivider參數設定為(例如)3。 - 將
BslFrequencyConverterMultiplier參數設定為(例如)4。 - 將
BslFrequencyConverterPostDivider參數,例如設為 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 來輕鬆設定參數。