跳至內容
測試伺服器
開發伺服器

Frequency Converter#

「Frequency Converter 」相機功能可讓您以與接收到的輸入訊號頻率不同的頻率觸發相機。您可以利用此功能,將原始訊號的頻率乘以一個分數值。

變頻器可接收來自不同來源的觸發訊號,例如來自相機的編碼器控制、計數器或計時器。接收來自編碼器控制的訊號是最常見的應用情境。

此功能僅適用於Basler racer 2系列相機。

使用功能#

運作原理#

變頻器會將接收到的訊號觸發率,調整為適合用於其他應用程式的觸發率。此調整是透過分頻與倍頻來實現的。

該變頻器包含三個依序對原始訊號進行處理的模組:預分頻器、倍頻器及後分頻器

Frequency Converter 模組

預分頻模組#

預分頻模組負責接收輸入訊號。此模組可讓您套用一個整數係數(即預分頻係數),藉此降低原始頻率,並將訊號傳送至下一個模組——乘頻模組。

例如,若預分頻器值設定為 2,則僅每兩個輸入訊號中的其中一個會以原始狀態傳送至乘法器模組,因此頻率將減半。若預分頻器值設定為 1,則每個輸入訊號都會以原始狀態傳送至乘法器模組。

資訊

  • 為了降低輸入訊號的週期性抖動,建議採用預分頻器。
  • Basler 建議將預分頻器的設定值設為較低。應盡可能減少原始訊號頻率的變化,以便由倍頻模組進行頻率調整。
乘法模組#

乘法器模組會接收來自預分頻器模組的訊號。為確保正常運作,接收到的訊號頻率不得低於 10 Hz。乘法器模組可讓您套用一個整數係數(即乘數),以產生更高頻率的訊號,並將這些訊號傳送至下一個模組——後分頻器模組。

對於每個輸入訊號,都會產生一個同步的輸出訊號,也就是說,這些訊號的相位是同步的。若套用乘數係數 3,則會呈現如下情形:

倍頻模組的相位對齊

資訊

在變更輸入訊號或乘數值後,可能需要一段時間才能達到如上圖所示的理想相位對齊狀態。若輸入週期不斷變化——例如,當增量式編碼器傳送的訊號存在顯著抖動時——可能永遠無法達到穩定的相位對齊。然而,輸出訊號仍會接近最佳狀態。

後分流模組#

後分頻模組接收來自乘法器模組的訊號。透過後分頻模組,您可以套用一個整數係數(即後分頻係數),以產生頻率較低的訊號,並將這些訊號提供給相機作為觸發訊號使用,例如作為行起始觸發訊號。

Frequency Converter 來源訊號#

您可以透過以下方式設定變頻器的輸入訊號: BslFrequencyConverterSignalSource 參數。這定義了 如何 變頻器由特定訊號驅動。例如,您可以指定變頻器由電訊號或計時器訊號驅動。

資訊

變頻器僅能處理脈衝訊號。選擇電平訊號時,例如: Line1, 因此您也必須指定該 訊號轉換 該裝置會啟動變頻器。

可用的來源訊號如下:

  • Encoder1: 變頻器可由增量式編碼器驅動。
  • Line1 設為 Line6: 可透過向 I/O 線 1、2、3、4、5 或 6 施加電訊號來驅動變頻器。
  • CxpTrigger0, CxpTrigger1: 變頻器可由幀擷取卡發出的 CXP 觸發訊號驅動。
  • Counter1Active 設為 Counter4Active: 變頻器可透過以下方式驅動: Counter 功能。只要指定的計數器正在計數,該訊號即為高電平(1);若未在計數,則為低電平(0)。
  • Counter1Start 設為 Counter4Start: 變頻器可透過以下方式驅動: Counter 功能。每當指定的計數器開始計數時,便會發送一個訊號。
  • Counter1End 設為 Counter4End: 變頻器可透過以下方式驅動: Counter 功能。每當指定的計數器停止計數時,便會發送一個訊號。
  • Timer1Active, Timer2Active: 變頻器可透過以下方式驅動: Timer 功能。只要指定的計時器正在運行,該訊號即為高電平(1);若計時器未運行,則為低電平(0)。
  • Timer1End, Timer2End: 變頻器可透過以下方式驅動: Timer 功能。每當指定的計時器時間屆滿時,便會發出一個訊號。

Frequency Converter 啟用#

當 BslFrequencyConverterActivation 此參數可讓您定義 哪個訊號的轉變 啟動頻率轉換器。例如,您可以指定當觸發訊號下降時,轉換器即進入運作狀態。

資訊

當 BslFrequencyConverterActivation 此參數僅在選擇電平訊號作為來源訊號時才可用,也就是說,該訊號可為高電平 (1) 或低電平 (0),例如 I/O 訊號或「有效」訊號,如 Timer1Active.

您可以設定 BslFrequencyConverterActivation 參數設定為以下值之一:

  • RisingEdge: 當觸發訊號上升時,即訊號狀態從低電平轉為高電平時,變頻器便會啟動。這是預設設定。
  • FallingEdge: 當觸發訊號下降時,即當訊號狀態從高電平變為低電平時,變頻器便會啟動。
  • AnyEdge: 當觸發訊號下降或上升時,變頻器便會啟動。

設定Frequency Converter#

要設定變頻器:

  1. 將相機中的 BslFrequencyConverterSignalSource 參數設為其中一個可用的來源信號,例如 Encoder1.
  2. 若您已選擇電平訊號作為來源訊號,請設定 BslFrequencyConverterActivation 參數,例如設為 RisingEdge.
  3. 將相機中的 BslFrequencyConverterPreDivider 參數,例如設為 3。
  4. 將相機中的 BslFrequencyConverterMultiplier 參數,例如設為 4。
  5. 將相機中的 BslFrequencyConverterPostDivider 參數,例如設為 2。
  6. 可選:若要將變頻器用作所選觸發器的訊號來源,請設定 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"

您也可以 use the pylon Viewer 來輕鬆設定參數。