Peripheral Devices Control#
Peripheral Devices Control に含まれる機能は SLP プロトコルに基づおり、カメラとライトまたは光学機器間の直接通信を可能にします。
Peripheral Devices Control セクションには、以下の camera features とそのパラメータが含まれます。
- Peripheral Devices Control トピック:
一部のパラメータは、異なるタイプの周辺機器間で共有されるため、設定手順も含めて本トピックで説明します。 - Light Control トピック:
Basler ace 2、boost R、dart M カメラで動作するライトデバイス専用のパラメータ。
Basler ace U および ace L カメラ、ならびに Peripheral Devices Control 機能を持たない ace 2、boost R、dart M カメラの Light Control 機能については、Light Control (ace U/L) トピックを参照してください。 - Optic Control:レンズなどの光学機器専用のパラメータ。
すべての周辺機器について、以下の情報が利用可能です:
- Device Type:選択された周辺機器のタイプ。
- Model Name:デバイスの製品名およびモデル名。
- Firmware Version:現在デバイスにインストールされているファームウェアのバージョン。
- Error Status:アクティブな障害状態を含む、周辺機器の現在のエラー状態。
これらのフィールドに表示される値は、現在選択されている周辺機器によって異なります。別の周辺機器を選択すると、表示される情報がそれに合わせて更新され、デバイス固有の値が表示されます。
残りのパラメータについては、Using the Peripheral Devices Control Parameters を参照してください。
特定のデバイスタイプに固有のパラメータは、対応する機能トピック(Light Control または Optic Control)で利用および説明されています。
情報
パラメータ名の変更や、以前のファームウェアバージョンからの移行に関する情報については、Compatibility and Parameter Mapping トピックの表を参照してください。このトピックでは、従来から新しいパラメータへのマッピングの概要を説明しています。
以下のセクションでは、ライトデバイスと光学機器の両方に適用される機能について説明します。
機能を使用する#
周辺機器の準備#
周辺機器の準備をするには:
- まだ行っていない場合は、必要に応じて周辺機器(ライト、レンズなど)とコントローラーを接続します。
- 電源を入れます。
-
pylon Viewer を使用する場合は、[機能]ペインの[ポーリング]オプションが選択されていることを確認してください。

-
カメラがアイドル状態であること、つまり画像をキャプチャしていないことを確認します。
- パラメーターを
BslPeripheralControlModeパラメータをOn.
これにより、以下の手段でライトデバイスの通信が可能になります。 GPIO line および Line 3 を次のように設定します:PeripheralControl. - 実行します:
BslLightControlEnumerateDevicesコマンド。
これにより、 light device ID が新しいデバイスに割り当てられ、接続されたライトデバイスへのアクセスが有効になります。 - もし
BslPeripheralErrorSummaryエラーが表示された場合は、BslPeripheralDeviceSelector、および確認する周辺機器を設定して、接続されているすべてのデバイス(ライトとレンズ)を確認します。
イメージBslPeripheralDeviceErrorStatusパラメータには、選択したデバイスの状態が表示されます。 - 設定が必要なのは
BslPeripheralDeviceTriggerSourceおよびBslPeripheralDeviceTriggerActivation接続されたライトをストロボ発光させたい場合のみです。
ほとんどのアプリケーションでは、デフォルト値のFlashWindowsのためにBslPeripheralDeviceTriggerSourceが適しています。
詳細については、Light Controlトピックのトリガー信号とストロボ持続時間の構成セクションを参照してください。連続点灯を使用する場合、いずれのパラメータも設定する必要はありません。
トリガー信号とストロボ持続期間の設定#
周辺機器は、BslPeripheralDeviceTriggerSourceで設定された信号を介してトリガーされます。トリガーの効果は、接続されている周辺機器のタイプによって異なります。送信されるトリガー信号は、すべての周辺機器に対して1つのみです。
次の例は、ストロボモードのライトがトリガー信号に応答してどのように状態を変化させるかを示しています。
- 最初はライトが消灯しています。
- トリガー信号によりライトが点灯します。
- ライトは、ストロボ持続時間である一定時間、点灯状態を維持します
- ストロボ持続時間が終了すると、ライトは再び消灯します。
Peripheral Devices Control機能を備えたカメラでトリガー信号とストロボ持続時間を設定するには、次のようにします。
- パラメーターを
BslPeripheralTriggerSourceパラメータに、接続されたライトを点灯するために使用するソースを設定します。例:FlashWindow. - If applicable, set the
BslPeripheralTriggerActivationパラメーターを次のいずれかの値に設定します。RisingEdge(デフォルト):
信号が... 立ち上がる(つまり、信号ステータスがLowからHighに変化する)ときにトリガーが有効になります。FallingEdge:
信号が... 立ち下がる(つまり、信号ステータスがHighからLowに変化する)ときにトリガーが有効になります。AnyEdge: 信号が入力されると、接続されているすべてのライトが点灯します。 立ち下がる または 立ち上がる.
エラーのチェックとクリア#
Basler ace 2、boost R、およびdart Mカメラは、接続された周辺機器から次のエラーデータを読み取ることができます。
エラーステータスは、エラーを自分で修正するのに役立ちます。
エラーを確認してクリアするには、次の手順に従います。
- 複数のデバイスが接続されている場合は、次のようにします。
- Check the
BslPeripheralErrorSummaryどのデバイスで問題が発生しているかを調べるためのパラメータ(例:Device2。複数のデバイスで問題が発生している場合、値は...MultipleDevices. - パラメーターを
BslPeripheralDeviceSelectorパラメータを問題が発生しているデバイスに設定します。
- Check the
- 次の値を取得します。
BslPeripheralDeviceErrorStatusパラメータを確認し、以下の表でその意味を エラーステータス 参照してください。
情報
ネットワーク接続が不安定になった状況に対処するために、 BslPeripheralOvertriggerCount パラメータを使用して、1台以上の接続された周辺機器が処理の準備ができていない間に受信したトリガー信号の数を特定します。
エラーステータス#
イメージ BslPeripheralDeviceErrorStatus パラメータには以下の値を設定できます:
| 値 | 意味 |
|---|---|
| No Error | エラーは検出されませんでした。 |
| 未接続 | 周辺機器がカメラに接続されていないか、まだ列挙されていません。...を実行してください。 BslPeripheralEnumerateDevices コマンドを実行してください。 |
| Communication Error | 周辺機器とカメラ間のデータ伝送に不具合がある場合、通信エラーが発生します。これは、長すぎるケーブルの使用や、ライン上の過度なノイズが原因である可能性があります。 |
| 接続ロスト | 以前に接続していた照明器具への接続が失われました。これは、ケーブルが緩んだ場合などに発生する可能性があります。 |
| Hardware Error | ライトデバイスで技術的な障害が発生しています。ハードウェアエラーの種類についての詳細は、 BslLightDeviceErrorStatusReadAndClear コマンドを実行して エラーコード。[^a] |
| 周辺機器のエラー | 周辺機器で内部エラーが発生しています。[^a] |
| サポートされていない器具のバージョン | 周辺機器が現在のカメラと互換性がありません。サポートにお問い合わせいただき、ファームウェアのアップデートが利用可能かどうかをご確認ください。 |
デバイス情報の確認#
カメラから接続されたデバイスの詳細を読み取ることができます。
- ...を使用して、使用するデバイスを選択します。
BslPeripheralDeviceSelector例:Device2. - ...を使用してデバイスのタイプを確認します。
BslPeripheralDeviceType。値は次のいずれかになります:LightControlまたはOpticControl. - 接続されているデバイスのモデル名とファームウェアバージョンを次の方法で取得します
BslPeripheralDeviceModelNameおよびBslPeripheralDeviceFirmwareVersion.
サンプルコード#
情報
このサンプルコードは、ファームウェアにPeripheral Devices Control機能が含まれているカメラにのみ適用されます。
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を使用して、パラメーターを簡単に設定することもできます。