3

Codesys を使用して配列を作成しています。

以下の例は、5 つの値の配列を作成するために使用しているものです。

ARRAY [1..5] OF INT := [1,2,3,4,5];

5 個の配列の場合は問題ありませんが、100 個の値の配列が必要な場合はどうでしょうか。

以下の例に示すように、各値を個別に入力する代わりに、100 個の値の配列をすばやく作成する方法はありますか。

ARRAY [1..100] OF INT :=[1,2,3,4,5,6,7 to 100]
4

2 に答える 2

3

配列または配列の一部を同じ値で初期化する場合は、省略形 ()を使用できます。

ARRAY [1..100] OF INT :=[4(1),3(2),2(3),4]; //Equivalent [1,1,1,1,2,2,2,3,3,4]

Codesys V3 または TwinCat 3 では、FB_initメソッドを使用して初期化コードを記述できます。宣言されたすべての FB インスタンスのFB_initメソッドは、起動時に通常の周期的なタスクの実行が開始される前に呼び出されます。

次のように使用できます。

METHOD FB_Init : BOOL
VAR_INPUT
  bInitRetains : BOOL; // if TRUE, the retain variables are initialized (warm start / cold start)
  bInCopyCode : BOOL;  // if TRUE, the instance afterwards gets moved into the copy code (online change)
END_VAR
VAR
  unCount : UINT;
END_VAR

FOR unCount := 1 TO 100 DO
   arrnInitExample[unCount]:= unCount;
END_FOR

注: FB_init メソッドの最初の 2 つのブール入力は、常に同じでなければなりません。ただし、後で入力変数を追加することもできます。次に、FB インスタンスの宣言時にカスタム パラメータをメソッドに渡すことができます。

于 2016-01-07T16:11:55.410 に答える