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

Frequency Converter#

透過 Frequency Converter camera feature,您可以透過不同於所接收輸入訊號頻率的頻率來觸發相機。您可以使用它將原始訊號頻率乘以小數值。

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

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

使用功能#

運作原理#

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

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

Frequency Converter 模組

預分頻模組#

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

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

資訊

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

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

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

倍頻模組的相位對齊

資訊

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

後分流模組#

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

Frequency Converter 來源訊號#

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

資訊

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

以下為可用的來源信號:

  • Encoder1:Frequency Converter 可以由增量型編碼器(incremental encoder)驅動。
  • Line1 設為 Line6:Frequency Converter 可以透過對 I/O 線路 1、2、3、4、5 或 6 施加電子信號來驅動。
  • CxpTrigger0, CxpTrigger1:Frequency Converter 可以由從擷取卡(frame grabber)發送的 CXP 觸發信號來驅動。
  • Counter1Active 設為 Counter4Active:Frequency Converter 可以使用 Counter 功能來驅動。只要指定的 Counter 正在計數,信號就會保持高電位 (1);只要它未在計數,信號就會保持低電位 (0)。
  • Counter1Start 設為 Counter4Start:Frequency Converter 可以使用 Counter 功能。每當指定的 Counter 開始計數時,就會發送一個信號。
  • Counter1End 設為 Counter4End:Frequency Converter 可以使用 Counter 功能。每當指定的 Counter 停止計數時,就會發送一個信號。
  • Timer1Active, Timer2Active:Frequency Converter 可以使用 Timer 功能。只要指定的 Timer 正在運行,信號就會保持高電位 (1);只要它未在運行,信號就會保持低電位 (0)。
  • Timer1End, Timer2End:Frequency Converter 可以使用 Timer 功能。每當指定的 Timer 逾時結束時,就會發送一個信號。

Frequency Converter 啟用#

當 BslFrequencyConverterActivation 參數允許您定義 哪一個信號轉態(signal transition) 會啟動 Frequency Converter。例如,您可以指定當觸發信號下降時轉換器會變成啟用狀態。

資訊

當 BslFrequencyConverterActivation 參數僅在選擇位準信號(level signal)作為來源信號時可用,也就是可以為高 (1) 或低 (0) 的信號,例如 I/O 信號或諸如 Timer1Active.

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

  • RisingEdge:當觸發信號上升時(即信號狀態從低變為高),Frequency Converter 會變成啟用狀態。這是預設設定。
  • FallingEdge:當觸發信號下降時(即信號狀態從高變為低),Frequency Converter 會變成啟用狀態。
  • AnyEdge:當觸發信號下降或上升時,Frequency Converter 會變成啟用狀態。

設定 Frequency Converter#

若要設定 Frequency Converter:

  1. 將相機中的 BslFrequencyConverterSignalSource 參數設為其中一個可用的來源信號,例如 Encoder1.
  2. 如果您已選擇位準信號作為來源信號,請設定 BslFrequencyConverterActivation 參數,例如設為 RisingEdge.
  3. 將相機中的 BslFrequencyConverterPreDivider 參數,例如設為 3。
  4. 將相機中的 BslFrequencyConverterMultiplier 參數,例如設為 4。
  5. 將相機中的 BslFrequencyConverterPostDivider 參數,例如設為 2。
  6. 選用:如果您想要將 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"

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