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

Peripheral Devices Control#

周辺機器制御カメラ機能は、カメラに接続された周辺機器(最大4つのライトや光学機器(レンズなど))を制御するためのパラメータと機能を提供します。

周辺機器制御に含まれる機能は、カメラや照明機器、光学機器が相互に直接通信できるようにするSLPプロトコルに基づいています。

周辺機器制御セクションには、以下のカメラ機能とそのパラメータが含まれています。

  • 周辺機器の制御に関するトピック:
    一部のパラメータは、異なる種類の周辺機器間で共通しているため、設定手順を含め、本トピックで説明します。
  • Light Controlトピック:
    Basler ace 2で動作する照明機器専用のパラメータ、 boost R 、そしてDart Mカメラ。
    に関する情報についてはLight Control Basler ace U および ace L カメラ、ならびに ace 2 の機能。 boost R周辺機器制御機能のない dart M カメラについては、「 Light Control (ace U/L)」のトピックを参照してください。
  • 光学制御:レンズなどの光学機器専用のパラメータ。

以下の情報は、すべての周辺機器について利用可能です。

  • デバイスタイプ:選択した周辺機器の種類。
  • 型番:機器の製品名と型番。
  • ファームウェアバージョン:デバイスに現在インストールされているファームウェアのバージョン。
  • エラー状態:周辺機器の現在のエラー状態。アクティブな障害状態も含む。

これらのフィールドに表示される値は、現在選択されている周辺機器によって異なります。別の周辺機器を選択すると、表示される情報はそれに応じて更新され、機器固有の値が表示されます。

残りのパラメータについては、 「周辺機器制御パラメータの使用」を参照してください。

特定のデバイスタイプに固有のパラメータは、対応する機能トピック( Light Controlまたは光学制御)で利用可能であり、説明されています。

情報

パラメータ名の変更や以前のファームウェアバージョンからの移行に関する情報は、「互換性とパラメータマッピング」トピックの表を参照してください。このトピックでは、旧バージョンから新バージョンへのパラメータマッピングの概要を説明しています。

以下のセクションでは、光デバイスと光学デバイスの両方に適用される機能について説明します。

機能を使用する#

周辺機器の準備#

周辺機器を準備するには:

  1. まだ接続していない場合は、必要に応じて周辺機器(ライト、レンズなど)とコントローラーを接続してください。
  2. 電源を入れてください。
  3. pylon Viewer を使用する場合は、[機能]ペインの[ポーリング]オプションが選択されていることを確認してください。

    pylon Viewer のポーリングオプション

  4. カメラがアイドル状態であること、つまり画像をキャプチャしていないことを確認します。

  5. パラメーターを BslPeripheralControlMode パラメータを On.
    これにより、以下の手段でライトデバイスの通信が可能になります。 GPIO line そしてライン3を PeripheralControl.
  6. 実行します: BslLightControlEnumerateDevices コマンド。
    これは割り当てます light device ID 新しいデバイスに対応し、接続されている照明機器へのアクセスを可能にします。
  7. もし BslPeripheralErrorSummary エラーが表示された場合は、接続されているすべてのデバイス(ライトとレンズ)を次の設定で確認してください。 BslPeripheralDeviceSelectorそして、チェックしたい周辺機器へ。
    イメージ BslPeripheralDeviceErrorStatus このパラメータは、選択したデバイスの状態を示します。
  8. 設定するだけで BslPeripheralDeviceTriggerSource および BslPeripheralDeviceTriggerActivation ストロボ効果のために接続されたライトを使用したい場合。
    ほとんどのアプリケーションでは、デフォルト値は FlashWindows のために BslPeripheralDeviceTriggerSource 良い選択です。

詳細については、 Light Control トピック。連続光を使用する場合は、どちらのパラメータも設定する必要はありません。

トリガー信号とストロボ持続期間の設定#

周辺機器は、BslPeripheralDeviceTriggerSourceで設定された信号によってトリガーされます。トリガーの効果は、接続されている周辺機器の種類によって異なります。すべての周辺機器に送信されるトリガー信号は1つだけです。

次の例は、ストロボモードのライトがトリガー信号に応じてどのように変化するかを示しています。

  1. 最初はライトが消灯しています。
  2. トリガー信号によりライトが点灯します。
  3. ライトが点灯する時間は一定時間で、これがストロボの持続時間です。
  4. ストロボ持続時間が終了すると、ライトは再び消灯します。

周辺機器制御機能を使用して、カメラのトリガー信号とストロボ持続時間を設定するには:

  1. パラメーターを BslPeripheralTriggerSource パラメータに、接続されたライトを点灯するために使用するソースを設定します。例: FlashWindow.
  2. If applicable, set the BslPeripheralTriggerActivation パラメーターを次のいずれかの値に設定します。
    • RisingEdge (デフォルト):
      信号が受信されると、接続されているすべてのライトが点灯します。 立ち上がる(つまり、信号ステータスがLowからHighに変化する)ときにトリガーが有効になります。
    • FallingEdge:
      信号が受信されると、接続されているすべてのライトが点灯します。 立ち下がる(つまり、信号ステータスがHighからLowに変化する)ときにトリガーが有効になります。
    • AnyEdge: 信号が入力されると、接続されているすべてのライトが点灯します。 立ち下がる または 立ち上がる.

エラーのチェックとクリア#

バスラーエース2、 boost Rまた、Dart Mカメラは、接続された周辺機器から以下のエラーデータを読み取ることができます。

エラーステータスは、エラーを自分で修正するのに役立ちます。

エラーを確認してクリアするには、次の手順に従います。

  1. 複数のデバイスが接続されている場合は、次のようにします。
    1. Check the BslPeripheralErrorSummary どのデバイスで問題が発生しているかを調べるためのパラメータ(例: Device2複数のデバイスで問題が発生している場合は、値は次のようになります。 MultipleDevices.
    2. パラメーターを BslPeripheralDeviceSelector パラメータを問題が発生しているデバイスに設定します。
  2. 次の値を取得します。 BslPeripheralDeviceErrorStatus パラメータを確認し、以下の表でその意味を エラーステータス 参照してください。

情報

ネットワーク接続が不安定になった状況に対処するために、 BslPeripheralOvertriggerCount 接続されている周辺機器のうち1つ以上がトリガー信号を処理する準備ができていない間に、受信したトリガー信号の数を決定するためのパラメータ。

エラーステータス#

イメージ BslPeripheralDeviceErrorStatus パラメータには以下の値を設定できます:

値 意味
No Error エラーは検出されませんでした。
未接続 周辺機器がカメラに接続されていないか、まだ列挙されていません。 BslPeripheralEnumerateDevices コマンドを実行してください。
Communication Error 周辺機器とカメラ間のデータ伝送に不具合が生じると、通信エラーが発生します。これは、ケーブルが長すぎる場合や、回線にノイズが多すぎる場合などに発生する可能性があります。
接続ロスト 以前に接続していた照明器具への接続が失われました。これは、ケーブルが緩んだ場合などに発生する可能性があります。
Hardware Error ライトデバイスで技術的な障害が発生しています。ハードウェアエラーの種類についての詳細は、 BslLightDeviceErrorStatusReadAndClear コマンドを実行して エラーコード.[^a]
周辺機器エラー 周辺機器で内部エラーが発生しました。[^a]
サポートされていない器具のバージョン この周辺機器は、現在お使いのカメラと互換性がありません。ファームウェアのアップデートが利用可能かどうかについては、サポートにお問い合わせください。

デバイス情報の確認#

カメラに接続されているデバイスの詳細については、以下を参照してください。

  1. 使用するデバイスを選択してください BslPeripheralDeviceSelector 例えば Device2.
  2. 使用しているデバイスの種類を確認してください BslPeripheralDeviceType値は以下のいずれかになります。 LightControl または OpticControl.
  3. 接続されたデバイスのモデル名とファームウェアバージョンを取得するには、以下を使用します。 BslPeripheralDeviceModelName および BslPeripheralDeviceFirmwareVersion.

サンプルコード#

情報

このコードサンプルは、ファームウェアに周辺機器制御機能を搭載しているカメラにのみ適用されます。

ace 2、boost R、dart M カメラ#
// Enable the peripheral devices control mode
camera.BslPeripheralControlMode.SetValue(BslPeripheralControlMode_On);
// Enumerate the peripheral devices
camera.BslPeripheralEnumerateDevices.Execute();
// Check the error summary for any errors that might have occurred
auto summary = camera.BslPeripheralErrorSummary.GetValue();
// Configure the trigger source for all devices.
camera.BslPeripheralTriggerSource.SetValue(BslPeripheralTriggerSource_FlashWindow);
// Trigger on the rising edge of the selected signal.
camera.BslPeripheralTriggerActivation.SetValue(BslPeripheralTriggerActivation_RisingEdge);
// Check for overtrigger from the selected trigger source and reset it
auto count = camera.BslPeripheralOvertriggerCount.GetValue();
camera.BslPeripheralOvertriggerCountReset.Execute();
// Select the peripheral device to configure.
camera.BslPeripheralDeviceSelector.SetValue(BslPeripheralDeviceSelector_Device1);
// Check device type and model name and firmware version
auto deviceType = camera.BslPeripheralDeviceType.GetValue();
auto modelName = camera.BslPeripheralDeviceModelName.GetValue();
auto firmwareVersion = camera.BslPeripheralDeviceFirmwareVersion.GetValue();
// Read error status of the device
auto status = camera.BslPeripheralDeviceErrorStatus.GetValue();
INodeMap& nodemap = camera.GetNodeMap();
// Enable the peripheral devices control mode
CEnumParameter(nodemap, "BslPeripheralControlMode").SetValue("On");
// Enumerate the peripheral devices
CCommandParameter(nodemap, "BslPeripheralEnumerateDevices").Execute();
// Check the error summary for any errors that might have occurred
String_t summary = CEnumParameter(nodemap, "BslPeripheralErrorSummary").GetValue();
// Configure the trigger source for all devices.
CEnumParameter(nodemap, "BslPeripheralTriggerSource").SetValue("FlashWindow");
// Trigger on the rising edge of the selected signal.
CEnumParameter(nodemap, "BslPeripheralTriggerActivation").SetValue("RisingEdge");
// Check for overtrigger from the selected trigger source and reset it
String_t count = CEnumParameter(nodemap, "BslPeripheralOvertriggerCount").GetValue();
CCommandParameter(nodemap, "BslPeripheralOvertriggerCountReset").Execute();
// Select the peripheral device to configure.
CEnumParameter(nodemap, "BslPeripheralDeviceSelector").SetValue("Device1");
// Check device type and model name and firmware version
String_t deviceType = CEnumParameter(nodemap, "BslPeripheralDeviceType").GetValue();
String_t modelName = CEnumParameter(nodemap, "BslPeripheralDeviceModelName").GetValue();
String_t firmwareVersion = CEnumParameter(nodemap, "BslPeripheralDeviceFirmwareVersion").GetValue();
// Read error status of the device
String_t status = CEnumParameter(nodemap, "BslPeripheralDeviceErrorStatus").GetValue();
// Enable the peripheral devices control mode
camera.Parameters[PLCamera.BslPeripheralControlMode].SetValue(PLCamera.BslPeripheralControlMode.On);
// Enumerate the peripheral devices
camera.Parameters[PLCamera.BslPeripheralEnumerateDevices].Execute();
// Check the error summary for any errors that might have occurred
string summary = camera.Parameters[PLCamera.BslPeripheralErrorSummary].GetValue();
// Configure the trigger source for all devices.
camera.Parameters[PLCamera.BslPeripheralTriggerSource].SetValue(PLCamera.BslPeripheralTriggerSource.FlashWindow);
// Trigger on the rising edge of the selected signal.
camera.Parameters[PLCamera.BslPeripheralTriggerActivation].SetValue(PLCamera.BslPeripheralTriggerActivation.RisingEdge);
// Check for overtrigger from the selected trigger source and reset it
string count = camera.Parameters[PLCamera.BslPeripheralOvertriggerCount].GetValue();
camera.Parameters[PLCamera.BslPeripheralOvertriggerCountReset].Execute();
// Select the peripheral device to configure.
camera.Parameters[PLCamera.BslPeripheralDeviceSelector].SetValue(PLCamera.BslPeripheralDeviceSelector.Device1);
// Check device type and model name and firmware version
string deviceType = camera.Parameters[PLCamera.BslPeripheralDeviceType].GetValue();
string modelName = camera.Parameters[PLCamera.BslPeripheralDeviceModelName].GetValue();
string firmwareVersion = camera.Parameters[PLCamera.BslPeripheralDeviceFirmwareVersion].GetValue();
// Read error status of the device
string status = camera.Parameters[PLCamera.BslPeripheralDeviceErrorStatus].GetValue();
/* 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 */
size_t len = 0;
char summary_str[64] = {0};
char count_str[64] = {0};
char deviceType_str[64] = {0};
char modelName_str[64] = {0};
char firmwareVersion_str[64] = {0};
char status_str[64] = {0};
/* Enable the peripheral devices control mode */
errRes = PylonDeviceFeatureFromString(hdev, "BslPeripheralControlMode", "On");
CHECK(errRes);
/* Enumerate the peripheral devices */
errRes = PylonDeviceExecuteCommandFeature(hdev, "BslPeripheralEnumerateDevices");
CHECK(errRes);
/* Check the error summary for any errors that might have occurred */
len = sizeof(summary_str);
errRes = PylonDeviceFeatureToString(hdev, "BslPeripheralErrorSummary", summary_str, &len);
CHECK(errRes);
/* Configure the trigger source for all devices. */
errRes = PylonDeviceFeatureFromString(hdev, "BslPeripheralTriggerSource", "FlashWindow");
CHECK(errRes);
/* Trigger on the rising edge of the selected signal. */
errRes = PylonDeviceFeatureFromString(hdev, "BslPeripheralTriggerActivation", "RisingEdge");
CHECK(errRes);
/* Check for overtrigger from the selected trigger source and reset it */
len = sizeof(count_str);
errRes = PylonDeviceFeatureToString(hdev, "BslPeripheralOvertriggerCount", count_str, &len);
CHECK(errRes);
errRes = PylonDeviceExecuteCommandFeature(hdev, "BslPeripheralOvertriggerCountReset");
CHECK(errRes);
/* Select the peripheral device to configure. */
errRes = PylonDeviceFeatureFromString(hdev, "BslPeripheralDeviceSelector", "Device1");
CHECK(errRes);
/* Check device type and model name and firmware version */
len = sizeof(deviceType_str);
errRes = PylonDeviceFeatureToString(hdev, "BslPeripheralDeviceType", deviceType_str, &len);
CHECK(errRes);
len = sizeof(modelName_str);
errRes = PylonDeviceFeatureToString(hdev, "BslPeripheralDeviceModelName", modelName_str, &len);
CHECK(errRes);
len = sizeof(firmwareVersion_str);
errRes = PylonDeviceFeatureToString(hdev, "BslPeripheralDeviceFirmwareVersion", firmwareVersion_str, &len);
CHECK(errRes);
/* Read error status of the device */
len = sizeof(status_str);
errRes = PylonDeviceFeatureToString(hdev, "BslPeripheralDeviceErrorStatus", status_str, &len);
CHECK(errRes);
# Enable the peripheral devices control mode
camera.BslPeripheralControlMode.Value = "On"
# Enumerate the peripheral devices
camera.BslPeripheralEnumerateDevices.Execute()
# Check the error summary for any errors that might have occurred
summary = camera.BslPeripheralErrorSummary.Value
# Configure the trigger source for all devices.
camera.BslPeripheralTriggerSource.Value = "FlashWindow"
# Trigger on the rising edge of the selected signal.
camera.BslPeripheralTriggerActivation.Value = "RisingEdge"
# Check for overtrigger from the selected trigger source and reset it
count = camera.BslPeripheralOvertriggerCount.Value
camera.BslPeripheralOvertriggerCountReset.Execute()
# Select the peripheral device to configure.
camera.BslPeripheralDeviceSelector.Value = "Device1"
# Check device type and model name and firmware version
deviceType = camera.BslPeripheralDeviceType.Value
modelName = camera.BslPeripheralDeviceModelName.Value
firmwareVersion = camera.BslPeripheralDeviceFirmwareVersion.Value
# Read error status of the device
status = camera.BslPeripheralDeviceErrorStatus.Value

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