Library Parameters

Library Parameters は、設計時および実行時の両方におけるデザインのパラメータ設定において、いくつかの大きな利点を提供します。

  • 階層構造の深い場所にある特定のパラメータへのパスを設定できます。これにより、保護された階層ボックス(または他の保護された階層ボックス内にネストされた保護された階層ボックス)内のパラメータであっても、そのパラメータ設定インターフェースがアクセス制限のない階層レベルへと引き上げられるため、実行時に設定およびリセットを行うことができます。
  • デザイン内でパラメータのネットやチェーンを設定し、1つのパラメータ値を他のさまざまなオペレーターに転送することができます。これにより、最終的なアプレットのパラメータ設定を簡素化できます。たとえば、最終ユーザーが1つのパラメータを一度設定すると、この書き込みプロセスをトリガーとして、デザイン内の他のさまざまなパラメータがユーザーの追加操作なしでそれに応じて設定されます。
  • ライブラリのトランスレーターオペレーターを使用すると、パラメータ値を転送するだけでなく、さまざまなパラメータの現在の値からデザインに新しい値を計算させ、その結果をデザイン内の任意の場所にある他のパラメータに書き込ませることができます。数式は自分で定義します。数式の構文は GenICam 標準(GenICam API バージョン 2.0)に準拠しており、以下に説明されています。

Parameters ライブラリの優れた点は、デザインのデータフロー構造を実際に変更することなく、デザイン内のパラメータ値の間で接続(ネットまたはチェーン)を設定できることです。

Library Parameters には、7つのリファレンスオペレーターと4つのトランスレーションオペレーターが含まれています。両方のタイプのオペレーターの詳細については、以下を参照してください。

You find example designs using the operators of the Parameters Library in your VisualApplets installation: <installation_directory>\VisualApplets\Examples\AdvancedVAFunctions\Parameters Library.

************************************************************

リファレンスオペレーター

Parameters ライブラリの Reference オペレーターを使用すると、オペレーターパラメータをリファレンスオペレーターのマップパラメータ Value(または Field)に 1:1 でマッピングできます。参照されるパラメータ(パスと名前)は、パラメータ「Reference」で指定します。

参照されるパラメータが表示され、アクセス可能になるデザイン階層内のターゲットを定義できます。ターゲットは、「DisplayHierarchy」と「DisplayName」の2つのパラメータによって定義されます。「DisplayHierarchy」では、リファレンスオペレーター自体が配置されているプロセスと同じプロセス内の階層ボックスを指定します。「DisplayName」パラメータでは、ターゲットパラメータの名前を設定します。「DisplayHierarchy」と「DisplayName」の両方が設定されている場合、「DisplayName」で定義されたパラメータは、「DisplayHierarchy」で指定された階層ボックスで使用可能になります。「DisplayName」が空の場合、パラメータは作成されません。「DisplayName」が設定されているが「DisplayHierarchy」が空の場合、「DisplayName」で定義されたパラメータは親階層(つまり、リファレンスオペレーター自体が配置されている階層ボックス)に追加されます。

これにより、デザインの任意の階層レベルでデザインのパラメータを利用可能にすることができます。たとえば、保護された階層ボックス内のモジュールのパラメータを、保護された階層ボックス自体の Property の下で直接パラメータ設定できるようにすることができます。

マッピングされたパラメータ自体を参照することもできます。したがって、リファレンスオペレーター内のパラメータ Value のコンテンツを参照するか、「DisplayName」および「DisplayHierarchy」パラメータで定義したパラメータを参照することができます。これは、保護された階層ボックスが他の保護された階層ボックスから構築されている場合に特に重要です。

[注] 接続されているすべてのパラメーターが一度に更新されます

接続されているパラメータのいずれか(参照されるパラメータ、マップパラメータ Value、またはターゲットパラメータ)が変更されると、他のすべての接続されたパラメータの値も変更されます。

マップパラメータを設定するには、次の2〜3つの手順を実行します。

  1. リファレンスオペレーターをインスタンス化します。
  2. ソースパラメータ(階層の深い場所にネストされているパラメータなど)を定義します。ソースパラメータの値は、直ちにリファレンスオペレーターインスタンスのマップパラメータにミラーリングされます。
  3. (オプションで)2番目のマップパラメータの名前と場所(ターゲット階層ボックスへのパスとパラメータ名)を定義します。

すべてのマップパラメータは、環境によって通常のパラメータとして扱われます。「元の」オペレーターパラメータにアクセスするのと同様に、Framegrabber API または Framegrabber SDK ツール(microDiagnostics および microDisplay)を介してアクセスできます。

リファレンスオペレーターの各インスタンスを使用すると、デザイン内の任意のパラメータの値と、リファレンスオペレーターインスタンスのマップパラメータ(パラメータ Value)との間に 1:1 の関係を設定できます。

リファレンスオペレーターでサポートされているデータ型:

マップパラメータを作成するには、まず1つのリファレンスオペレーターをインスタンス化する必要があります。使用可能なデータ型ごとに、1つのリファレンスオペレーターを利用できます。

オペレータ名 このオペレーターでサポートされているデータ型
IntParamReference 整数(VA_SINT、VA_UINT)
EnumParamReference 列挙型(VA_ENUM)
FloatParamReference Floating Point (VA_DOUBLE)
IntFieldParamReference Integer Fields (VA_SINTFIELD, VA_UINTFIELD)
FloatFieldParamReference Floating Point Fields (VA_DOUBLEFIELD)
StringParamReference String (VA_STRING,VA_FILENAME,VA_METADATA)
ResourceReference 整数(VA_SINT、VA_UINT)

表 48. リファレンスオペレーターがサポートするデータ型


リファレンスオペレーターを使用してマップ値を作成する手順:

  1. 必要なデータ型のリファレンスオペレーターをインスタンス化します。

  2. リファレンスオペレーターのインスタンスをダブルクリックして、モジュールプロパティを開きます。

  3. パラメータ Reference で、リファレンスオペレーターのインスタンスを接続するソースパラメータを指定します。

以下の例では、Reference Operator Example という名前のオペレーター IntParamReference のインスタンスが、モジュール Buffer のパラメータ YLength に接続されています。この例では、両方のモジュール(Reference Operator Example と Buffer)が同じ階層レベルに配置されています。

参照されたパラメータへのパス:

参照されたパラメータ:

[注] 参照の構文

構文は以下のとおりです:

<Path> is the relative path to the hierarchical level where the referenced module "Module" is located. Use a slash as separator between different hierarchical levels. Define the path as relative path from the hierarchical level the reference operator instance is located in.

<Module> is the name of the module (operator instance or hierarchical box) that contains the referenced parameter.

<ParamName> is the actual name of the referenced parameter.

If <Path> starts with a slash, the path is interpreted as absolute path starting from design level (e.g., /Process0/UUT/SetParam.Valueを使用します。

次を使用することもできます: ../ 階層を1つ上に移動します。ただし、自由に複製または再配置可能なモジュールを設計する場合には、このオプションを使用しないように注意してください。

  1. パラメータ Activate を「Yes」に設定します。

  2. Apply をクリックします。参照されたパラメータの値が、パラメータ Value(マップパラメータ)に表示されます。

この例では、オペレーター Buffer のパラメータ YLength の値が、リファレンスオペレーターインスタンスのパラメータ Value でも使用できるようになりました。

リファレンスオペレーターのパラメータ Value を使用して、さまざまな処理を行うことができます。

たとえば、パラメータ Value にある値を、デザイン内の任意の場所にある別のモジュール(オペレーターインスタンスまたは階層ボックス)で使用できるようにすることができます。これを行うには:

  1. パラメータ Value と同じ値を持つ、全く新しいパラメータの名前を定義します。これを行うには、リファレンスオペレーターのパラメータ DisplayName を使用します。名前の定義は自由に行うことができます。

  2. この新しいパラメータを持つデザイン内のモジュールを定義します。これを行うには、リファレンスオペレーターのパラメータ DisplayHierarchy を使用します。

[注] 表示先へのパスを設定するための構文

デザインの別の場所に新しいパラメータを表示させたい場合は、パラメータ DisplayHierarchy に新しいパラメータを含める階層ボックスへのパスを指定する必要があります。

構文は以下のとおりです:

<Path> is the relative path from process level to the hierarchical level of the design where the <Hierarchical Box> is located that is to receive the new parameter. Thus, parameter DisplayHierarchy can only address hierarchical boxes within the same process. Use a slash as separator between different hierarchical levels.

<HierarchicalBox> is the name of the hierarchical box that is to receive the new map parameter.

例: Level0/Level1

この例では、リファレンスオペレーターインスタンスのパラメータ Value が、モジュール ModuleWithConnectedParameter の新しいパラメータ ConnectionToYLengthInModuleBuffer に接続されています:

パラメータ Activate が「Yes」に設定されている場合、Apply ボタンをクリックすると、接続されたモジュールに正しい値を持つ新しいパラメータが表示されます:

これにより、モジュール ModuleWithConnectedParameter の新しいパラメータ ConnectionToYLengthInModuleBuffer は、モジュール Buffer のパラメータ YLength と同じ値を持ちます。

マッピングはリファレンスオペレーターインスタンスによって実行されます。

3つのモジュールのいずれかの接続されたパラメータがリセットされた場合、他のすべてのモジュールの値も同様にリセットされます。

階層ボックス:

ParametersライブラリのReferenceオペレーターを使用すると、デザイン内の任意の階層レベルでデザインのパラメータを利用できるようにすることができます。これは、保護された階層ボックスの内部深くにネストされたパラメータを、実行時にパラメータ化できるようにする場合(つまり、動的な書き込みパラメータとして利用できるようにする場合)に特に役立ちます。階層ボックスのパラメータ化を簡単に行うために、階層ボックス自体がパラメータを持つことができるようになりました(階層ボックス自体のProperties内のパラメータとして)。

Referenceオペレーターを使用すると、階層ボックスの表面(階層ボックスのProperties)から、深く埋め込まれている可能性のある特定のパラメータへのパスを設定できます。これにより、保護された階層ボックス(または他の保護された階層ボックス内にネストされた保護された階層ボックス)内のパラメータであっても、そのパラメータ化インターフェイスがアクセス制限のない階層レベルに引き上げられるため、実行時に設定およびリセットすることができます。

マッピングされたパラメータ自体を参照することもできます。したがって、リファレンスオペレーター内のパラメータValue(またはField)の内容を参照するか、リファレンスオペレーターのパラメータDisplayNameおよびDisplayHierarchyで定義したパラメータを参照することができます。これは、保護された階層ボックスが他の保護された階層ボックスから構築されている場合に特に重要です。

この例では、モジュールReferenceOperatorExampleのパラメータValueだけでなく、モジュールModuleWithConnectedParameterのパラメータConnectionToYLengthInModuleBufferも参照できることを意味します。

リファレンスオペレーターインスタンスReferenceOperatorExampleのパラメータValueへの参照:

モジュールModuleWithConnectedParameterのパラメータConnectionToYLengthInModuleBufferへの参照:

[ヒント] 参照ループを作成しない

ModuleA.ValueがModuleB.Valueを参照し、ModuleB.ValueがModuleA.Valueを参照するような参照ループを実装しないようにしてください。

利用可能な6つのリファレンスオペレーターにより、保護された階層ボックスでパラメータ値として発生し得るすべてのデータ型が提供されます。

************************************************************

トランスレーションオペレーター

Parametersライブラリのトランスレーションオペレーターを使用すると、1つまたは複数の他のオペレーターのパラメータに変換アクセスできます。

計算のために数式を定義します。これらの数式の構文はGenICam APIバージョン2.0に準拠しており、以下で説明します。

読み取りアクション:

パラメータReadActionでは、トランスレーションオペレーターのパラメータValueへの読み取りアクセス時に何が起こるかを定義します。

リファレンスオペレーターとの主な違いの1つは、トランスレーションオペレーターが単に値を保持するわけではない点です。代わりに、パラメータValueの値は数式から計算されます。この数式はパラメータReadActionで定義します。

パラメータValueへの読み取りアクセスが発生するとすぐに、ReadActionで定義した数式が実行され、その結果が値を要求している要素に転送されます。

数式には、デザイン内のどこにあるオペレーターパラメータの値も含めることができます。これらの値のいずれかが変更されるとすぐに、トランスレーションオペレーターのパラメータValueの計算は新しい結果になります(以前にパラメータValueが保持していた値とは異なります)。

数式には、パラメータの値だけでなく、最小値、最大値、ステップサイズ、列挙項目の数値などのパラメータの特定のプロパティも組み込むことができます。

Write Action

パラメータWriteActionでは、トランスレーションオペレーターのパラメータValueへの書き込みアクセス時に何が起こるかを定義します。

リファレンスオペレーターとは対照的に、パラメータValueの値をデザイン内の別のパラメータに単純に転送するわけではありません。代わりに、パラメータValueの値は、トランスレーションオペレーターのパラメータWriteActionで定義する一連の書き込みアクションに使用されます。書き込みアクションは、1つまたは複数の式で構成されます。これらの式の左側で、どのオペレーターのどのパラメータが計算結果を受け取るかを定義します。複数の式を定義する場合は、セミコロンで式を区切ってください。

パラメータValueへの書き込みアクセスが発生するとすぐに、パラメータWriteActionで定義した式の右側にある数式が実行され、その結果が式の左側で指定されたパラメータに転送されます。

数式は、デザイン内のどこにあるオペレーターパラメータの値も参照できます。これらの値のいずれかが変更されると、前回と同じ値をValueパラメータに再書き込みしたときに、計算結果が異なります。

数式には、パラメータの値だけでなく、最小値、最大値、ステップサイズ、列挙項目の数値などのパラメータの特定のプロパティも組み込むことができます。

データ型:

選択した演算子によって、そのパラメータ Value のデータ型が次のように定義されます。

演算子 IntParamTranslator -> 整数値

演算子 FloatParamTranslator -> 浮動小数点値

演算子 EnumParamTranslator -> 列挙型の値

ただし、演算子によってパラメータ Value の型が定義されても、読み取りまたは書き込み操作時にアクセスされるパラメータのデータ型が制限されるわけではありません。たとえば、演算子 IntParamTranslator はそのパラメータ Value が整数型であることを定義していますが、演算子内で定義された数式には、倍精度浮動小数点型などのパラメータへのアクセスを含めることができます。

値の範囲の計算のための数式

パラメータ Value の現在の値の範囲を計算する数式を追加することもできます。該当する数式は、パラメータ RangeFrom、RangeTo、および RangeIncrement(ステップサイズ)で定義します。

数式には、デザイン内の任意の場所にあるモジュールパラメータの値のほか、最小値、最大値、ステップサイズ、列挙アイテムの数値など、これらのパラメータの特定の Property を含めることができます。

[ヒント] 翻訳オペレーターパラメータの構文

構文は GenICam API バージョン 2.0 標準に準拠しています。許可される数式要素は、GenICam 標準で定義されている数式要素と同一です。詳細については、FloatParamTranslator および IntParamTranslator 演算子の個別のドキュメントを参照してください。

パラメータへのパス

デザイン内の任意の場所から演算子パラメータにアクセスするには、数式内でそのパラメータへのパスを指定する必要があります。

演算子のパラメータにアクセスするには、次の構文を使用します。

PathToModule: アクセスするパラメータを持つ演算子への相対パスを定義します。変換演算子が配置されている階層レベルを基準とした相対パスを指定します。アクセスする演算子の名前を指定します。階層の区切り文字としてスラッシュを使用します。

Module: 演算子の名前を指定します。

this: 変換演算子インスタンス自体を参照するには、この名前を使用します。

[重要] モジュールの独立性を維持する

原則として、変換演算子が配置されているレベルより上の階層レベルを指すパスは定義しないでください。このルールにより、階層モジュールが、自身がインスタンス化される環境に依存しない状態を維持できます。周囲の階層に依存しないモジュールのみが、自由に再配置および複製可能なコンポーネントとして使用できます。

Parameter Propertyへのアクセス

数式には、パラメータの値だけでなく、最小値、最大値、ステップサイズといったパラメータの特定の Property を組み込むこともできます。

  • ${PathToModule/Module.ParamName.From} または ${PathToModule/Module.ParamName.Min}: の有効な最小値 PathToModule/Module.ParamName パラメータ。
  • ${PathToModule/Module.ParamName.To} または ${ PathToModule/Module.ParamName.Max}: の有効な最大値 PathToModule/Module.ParamName パラメータ。
  • ${PathToModule/Module.ParamName.Inc}: の2つの有効な値の間のインクリメント(ステップサイズ) PathToModule/Module.ParamName parameter.
  • ${PathToModule/Module.ParamName.Enum("EnumName")}: 列挙名の整数値 EnumName.

書き込みアクセス数式の構文

書き込みアクションの方程式を次のパラメータで定義します。 WriteAction パラメータ。書き込みアクセス数式の構文は次のとおりです。

ここでは、複数のターゲットパラメータに対して複数の数式を定義できます。個々の数式を区切るには、区切り文字としてセミコロンを使用します。

this: 変換演算子インスタンス自体を参照します。

WriteAction方程式の例:

例:

読み取りアクセス式の構文

次の場所の読み取りアクションの式を定義します ReadAction パラメータ。読み取りアクセス式には、次の構文があります。

ReadAction方程式の例:

グローバル定数

変換式では、グローバル定数を参照することもできます。グローバル定数は、次を使用して変換式内で参照されます。 :: プレフィックスを使用します。例: ${::DesignClock} または ${::ConstantName}.

グローバル定数の参照

モジュールパラメータとその Property にアクセスすることに加えて、変換式ではグローバル定数を参照できます。グローバル定数は、パラメータ変換式で使用できるシステム全体の値を提供します。

変換式では、次を使用してグローバル定数を指定できます。 :: プレフィックス。一般的な構文は次のとおりです。 ${::ConstantName}、例えば ${::DesignClock} または ${::ConstantName}

変換式で使用できるように、デフォルトで次の標準グローバル定数が用意されています。

  • ${::DesignClock} – MHz 単位の現在の設計クロック周波数

  • ${::DesignClock.Min} – 最小有効クロック値

  • ${::DesignClock.Max} – 最大有効クロック値

いつ 値 は静的であるため、次を設定することでユーザー定義のグローバル定数を作成できます。 DisplayHierarchy モジュールパラメータ :: で IntVariable, FloatVariable, IntParamTranslator、または FloatParamTranslator オペレータ。これにより、変換式で使用するグローバル定数が作成されます。次を使用してアクセスできます。 ${::myGlobalConst}.

オペレータリスト

次のリストは、Library Parameters のすべてのオペレータをまとめたものです。

オペレータ名 簡単な説明 利用可能なバージョン
EnumParamReference

データ型が VA_ENUM である参照パラメータからマップパラメータを生成します。

バージョン 3.0.1
EnumParamTranslator

VA_ENUM 型の変換済みマップパラメータを生成します。VA_ENUM 型のパラメータを使用して、他のモジュールに複数の変換済みマップパラメータを作成します。

バージョン 3.0.1
EnumVariable

ソフトウェア変数を生成します。

バージョン 3.1
FloatFieldParamReference

VA_DOUBLEFIELD 型の参照パラメータからマップパラメータを生成します。

バージョン 3.0.1
FloatParamReference

VA_DOUBLE 型の参照パラメータからマップパラメータを生成します。

バージョン 3.0.1
FloatParamTranslator

VA_DOUBLE 型の変換済みマップ パラメータを生成します。 VA_DOUBLE 型のパラメータを使用して、他のモジュール内に複数の変換済みマップ パラメータを作成します。

バージョン 3.0.1
FloatVariable

ソフトウェア変数を生成します。

バージョン 3.1
IntFieldParamReference

VA_SINTFIELD または VA_UINTFIELD 型の参照パラメータからマップ パラメータを生成します。

バージョン 3.0.1
IntParamReference

VA_SINT、VA_UINT、または VA_ENUM 型の参照パラメータから Int64 マップ パラメータを生成します。

バージョン 3.0.1
IntParamTranslator

VA_SINT 型の変換済みマップ パラメータを生成します。 VA_SINT 型のパラメータを使用して、他のモジュール内に複数の変換済みマップ パラメータを作成します。

バージョン 3.0.1
IntVariable

ソフトウェア変数を生成します。

バージョン 3.1
IntFieldVariable

このオペレータは、ソフトウェア変数フィールドを生成します。

バージョン 3.5
LinkProperties

接続されたリンクの Property へのアクセスを許可します。

バージョン 3.0.1
LinkParamTranslator

このオペレータを使用すると、接続されたリンクの Property の読み取りや書き込みを行うことができ、書き込みアクションを実行できます。

バージョン 3.3.0
StringParamReference

VA_STRING、VA_FILENAME、または VA_METADATA 型の参照パラメータからマップ パラメータ(文字列)を生成します。

バージョン 3.0.1
ResourceReference

このオペレータは、デバイス リソース マッピングへの参照からマップ パラメータ(int)を生成します。

バージョン 3.3.0
IntParamSelector

このオペレータは、VA_SINT、VA_UINT、または VA_ENUM 型の複数の参照パラメータ間で切り替えることができる Int64 マップ パラメータを生成します。

バージョン 3.3.0
FloatParamSelector

このオペレータは、VA_DOUBLE 型の複数の参照パラメータ間で切り替えることができるマップ パラメータを生成します。

バージョン 3.3.0

表 49. ライブラリ パラメータのオペレータ