Skip to main content

セクション: VarArray

パラメータ VarArrays 構成可能なサイズで配列を作成できます。

SEC VarArrays                                       //optional: yes, modifier: [UPDATE]]
    SEC VarArray : <slot identifier>                    //optional: yes, modifier []
            Variable := <variable name>;                //optional: no, type: InstancePath
            Var_Count := <variable count>;              //optional: no, type: InstancePath
            Inst_Name := <instance name>;               //optional: yes, type: StringLiteral
            Pragmas := [<pragma1>, <pragma2>,...];      //optional: yes, type: Pragmalist
            Var_Decl_Flags := <Flag1> | <Flag2> | ... ; //optional: yes, type: Flags
    END_SEC
END_SEC

定義タイプの構文の詳細については、「 モジュール宣言の構文 説明された。

. 仕様:
  • 定義 Variable モジュール関数ブロックに対する相対的な入力インスタンス パスです。その男は POINTER TO <ELEMTYPE><ELEMTYPE> 任意のタイプにすることができます。

  • セクションのターゲット VarArray 構成可能なサイズの配列を一意に識別する必要があります。

  • Var_Count 整数入力変数の入力インスタンス パスです。 Variable ファンクションブロックの。この変数を構成用にエディターに表示するには、パラメーターとして宣言する必要があります。あるいは、次のこともできます Var_Count マルチスロットまたはマルチinstRefの変数が使用可能です。複数の VarArray が同じである可能性があります Var_Count-変数を使用します。配列のサイズが 0 の場合、配列は作成されませんが、配列ポインターは 0 に設定されます。

  • Inst_Name 作成する配列変数の名前を指定します。プレースホルダー %Instancename% そして %VariablePath% (大文字/小文字は関係ありません) は、モジュール インスタンスのインスタンス名またはポインター変数のインスタンス パス (ドットはアンダースコアに置き換えられます) に置き換えられます。定義を省略した場合はデフォルト値が適用されます。 AC_ARRAY_%VariablePath%

  • モジュールの 2 つの異なる VarArray に同一の VarArray がある場合、エラーになります。 Inst_Name それはプレースホルダーではありません %VariablePath% が含まれています。

  • Pragmas コンパイラ プラグマのリストが含まれており、生成された配列変数の前に挿入されます。

  • Var_Decl_Flags 作成された配列の変数の型をより正確に指定できるようになります。許可されるフラグは次のとおりです。 NONERETAIN そして PERSISTENT。これらのフラグにより、セクションに移動します。 VAR_INPUT、配列が作成される場所を追加できます(たとえば、フラグ用) RETAINVAR_INPUT RETAIN)。

26.
SEC VAR_ARRAYS
        SEC VAR_ARRAY : NameList
                Variable  := psNameList;
                Var_Count := uiArraySize;
        END_SEC
        ...
        SEC PARAM : ArraySize
                Variable := uiArraySize;
                Name     := TL.ArraySize_Name;
                Desc     := TL.ArraySize_Desc;
        END_SEC
END_SEC

関数ブロックの宣言部分には次の宣言が含まれている必要があります。 uiArraySize: UINT := 7; psNameList: POINTER TO STRING;