コンテンツにスキップ

Input Filter#

Input Filterカメラ機能を使用すると、ハードウェア入力信号からノイズ、干渉、または接点バウンスを除外できます。

この機能は、 ace classic/U/Lカメラでのみ使用できるLine Debouncer機能に似ています。

機能を使用する#

仕組み#

次のカメラ設定のいずれかまたは両方を設定することで、入力フィルタリングを制御できます。

Input Filter Time#

デジタル入力信号は、カメラに到達したときに完全に形成されないことがよくあります。特に長いI/Oケーブルを使用している場合や近くに電源装置がある場合にノイズや干渉を受ける可能性があります。また、スイッチ出力はクロストークの原因となる場合があります。

その結果、「low」から「high」への変更(またはその逆)において、遷移中にロジックレベルが未定義の状態で数マイクロ秒かかることがあります。

入力フィルター時間を指定すると、これらの問題のほとんどを解決できます。

入力フィルターは、入力信号の論理状態のすべての変化と期間を評価します。この評価期間の継続時間は、BslInputFilterTimeパラメーターで定義されます。

評価中、カメラは時間の経過に応じて平均値を計算し、この計算結果にしきい値機能を適用してデジタル信号を再構築します。これにより、フィルター時間より短い信号pulseだけでなく、ノイズ、干渉なども除去されます。

情報

入力フィルター時間を指定し、入力信号が元の遷移後に安定していない場合、伝播遅延が増加します。

つまり、アナログI/O信号の変化からカメラの内部ステータスの変化までの時間が長くなります。

Input Hold-Off Time#

入力ホールドオフ時間の設定は、複数のトリガー信号が連続して到着する(接点バウンス)ことによる誤トリガーを回避する場合に便利です。

入力ホールドオフ時間が設定され、入力トリガー信号が着信した場合、カメラは信号を受信すると、ホールドオフ時間が経過するまで、それ以上のトリガー信号または信号変化の受け入れを停止します。

例えば、BslInputHoldOffTimeパラメーターを10に設定して、カメラにトリガー信号を適用した場合、カメラは信号を受信すると、それ以上のトリガー信号または信号変更の受け入れを10ミリ秒間停止します。

Input Hold-Off Time:Timing Diagram

情報

入力フィルター時間とは異なり、入力ホールドオフ時間を指定しても伝播遅延は増加しません。

Input Filteringの設定#

  1. カメラがハードウェアトリガー用に設定されていることを確認します。
  2. LineSelectorパラメーターをLine1などの目的の入力ラインに設定します。
  3. 入力フィルター時間を設定する場合は、BslInputFilterTimeパラメーターの値を入力します。
  4. 入力ホールドオフ時間を設定する場合は、BslInputHoldOffTimeパラメーターの値を入力します。

Input FilterおよびInput Hold-Off Timeの選択#

  • 入力フィルター時間または入力ホールドオフ時間の値が小さすぎると、無効な信号や信号状態を受け入れてしまいます。
  • 入力フィルター時間または入力ホールドオフ時間の値が大きすぎると、有効な信号や信号状態が拒否されてしまいます。

Baslerでは、次のアプローチを推奨しています。

  • 無効な信号の予想される最長時間よりもわずかに長い入力フィルター時間を選択します。
  • 2つの有効な信号間の予想される最短間隔よりもわずかに短い入力ホールドオフ時間を選択します。

短い有効な信号を拒否するリスクがわずかにありますが、ほとんどのシナリオでは、このアプローチは良好な結果をもたらすはずです。アプリケーションを監視し、必要に応じて、拒否される有効な信号が多すぎる場合は値を調整します。

サンプルコード#

// Select the desired input line
camera.LineSelector.SetValue(LineSelector_Line1);
// Set the input filter time to 10 microseconds
camera.BslInputFilterTime.SetValue(10.0);
// Set the input hold-off time to 20 microseconds
camera.BslInputHoldOffTime.SetValue(20.0);
INodeMap& nodemap = camera.GetNodeMap();
// Select the desired input line
CEnumParameter(nodemap, "LineSelector").SetValue("Line1");
// Set the input filter time to 10 microseconds
CFloatParameter(nodemap, "BslInputFilterTime").SetValue(10.0);
// Set the input hold-off time to 20 microseconds
CFloatParameter(nodemap, "BslInputHoldOffTime").SetValue(20.0);
// Select the desired input line
camera.Parameters[PLCamera.LineSelector].SetValue(PLCamera.LineSelector.Line1);
// Set the input filter time to 10 microseconds
camera.Parameters[PLCamera.BslInputFilterTime].SetValue(10.0);
// Set the input hold-off time to 20 microseconds
camera.Parameters[PLCamera.BslInputHoldOffTime].SetValue(20.0);
/* 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 the desired input line */
errRes = PylonDeviceFeatureFromString(hdev, "LineSelector", "Line1");
CHECK(errRes);
/* Set the input filter time to 10 microseconds */
errRes = PylonDeviceSetFloatFeature(hdev, "BslInputFilterTime", 10.0);
CHECK(errRes);
/* Set the input hold-off time to 20 microseconds */
errRes = PylonDeviceSetFloatFeature(hdev, "BslInputHoldOffTime", 20.0);
CHECK(errRes);

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