コンテンツにスキップ
ステージングサーバー
開発サーバー

Frequency Converter#

Frequency Converter カメラ機能を使用すると、受信した入力信号の周波数とは異なる周波数でカメラをトリガーできます。これを使用することで、元の信号周波数を分数倍にすることができます。

Frequency Converterは、カメラの Encoder Control、Counter、Timer など、さまざまなソースからトリガー信号を受け取ることができます。Encoder Controlからの信号の受信が最も一般的なユースケースです。

この機能は、Basler racer 2 カメラでのみ利用可能です。

機能を使用する#

仕組み#

Frequency Converterは、受信した信号のトリガーレートを、他のアプリケーションで使用しやすいトリガーレートに適応させます。これは除算と乗算によって行われます。

Frequency Converterには、元の信号に対して順番に作用する3つのモジュール(プリデバイダー、マルチライヤー、ポストデバイダー)が含まれています。

Frequency Converterモジュール

プリデバイダーモジュール#

プリデバイダーモジュールは入力信号を受信します。このモジュールを使用すると、整数係数(プリデバイダー)を適用して元の周波数を下げ、次のモジュールであるマルチライヤーモジュールに信号を渡すことができます。

たとえば、プリデバイダーの値が2に設定されている場合、2つに1つの入力信号のみがそのままマルチライヤーモジュールに出力され、したがって周波数は半分になります。プリデバイダーの値が1に設定されている場合、すべての入力信号がそのままマルチライヤーモジュールに出力されます。

情報

  • プリデバイダーを使用することは、入力信号の周期的ジッターを軽減するうえで推奨されます。
  • Baslerでは、プリデバイダーに低い値を使用することを推奨しています。マルチライヤーモジュールによる周波数調整を容易にするため、元の信号周波数の変更は最小限に抑える必要があります。
マルチライヤーモジュール#

マルチライヤーモジュールは、プリデバイダーモジュールから信号を受信します。適切に動作させるためには、受信する信号の周波数が10 Hzを下回ってはなりません。マルチライヤーモジュールを使用すると、整数係数(マルチライヤー)を適用して周波数を高めた信号を生成し、その信号を次のモジュールであるポストデバイダーモジュールに渡すことができます。

各入力信号に対して同期された出力信号が生成されます。つまり、信号は同相になります。3のマルチライヤー係数を適用した場合、次のようになります。

マルチライヤーモジュールの位相合わせ

情報

入力信号またはマルチライヤーの値を変更したあと、上記のような理想的な位相合わせの状態に達するまでに少し時間がかかることがあります。インクリメンタルエンコーダーから送信された信号に大きなジッターがある場合など、入力周期が絶えず変動する場合、安定した位相合わせに到達しない可能性があります。ただし、出力信号は最適値に近いものになります。

ポストデバイダーモジュール#

ポストデバイダーモジュールは、マルチライヤーモジュールから信号を受信します。ポストデバイダーモジュールを使用すると、整数係数(ポストデバイダー)を適用して周波数を下げた信号を生成し、これらの信号をカメラのトリガー信号(ラインスタートトリガーなど)として使用できるように提供できます。

Frequency Converter ソース信号#

Frequency Converterのソース信号は、 BslFrequencyConverterSignalSource パラメータを使用して設定できます。 これにより、 Frequency Converterがどのように駆動されるかが定義されます。たとえば、コンバーターが電気信号またはタイマー信号によって駆動されるように指定できます。

情報

Frequency Converterは、パルス信号のみを処理できます。レベル信号を選択する場合(例: Line1)、 信号遷移を指定する必要もあります。 Frequency Converterを有効にします。

以下のソース信号を利用できます。

  • Encoder1: Frequency Converterはインクリメンタルエンコーダーによって駆動できます。
  • Line1 を Line6: Frequency Converterは、I/Oライン1、2、3、4、5、または6に電気信号を印加することで駆動できます。
  • CxpTrigger0, CxpTrigger1: Frequency Converterは、フレームグラバーから送信されるCXPトリガー信号によって駆動できます。
  • 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 の有効化#

イメージ BslFrequencyConverterActivation パラメータを使用すると、以下を定義できます。 どの信号遷移で はFrequency Converterを有効にします。たとえば、トリガー信号が下降したときにコンバーターがアクティブになるように指定できます。

情報

イメージ BslFrequencyConverterActivation パラメータは、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を設定するには:

  1. パラメーターを BslFrequencyConverterSignalSource Propertyを利用可能なソース信号のいずれかに設定します(例: 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"

pylon Viewerを使用して、パラメーターを簡単に設定することもできます。