変数初期化
すべての宣言の標準初期化値は 0
。宣言部分では、変数やデータ型ごとにユーザー定義の初期化値を指定することもできます
ユーザー定義の初期化は代入演算子から始まります :=
プログラミング言語 ST (構造化テキスト) の任意の有効な表現で構成されます。したがって、初期化値は定数、その他の変数、または関数を使用して定義します。変数を使用する場合は、その変数も初期化する必要があります
表 5. デフォルト初期化値
データタイプ | [初期化] |
---|---|
任意の数値データ型 |
|
すべてのポインタ |
|
|
|
| 各要素のデフォルト初期化値 |
構造 | 宣言の個々の要素に明示的な値が定義されていない場合、データ型のデフォルト値は初期化値です。 |
例 13. 例
VAR var1:INT := 12; //initialization value 12 x : INT := 13 + 8; //initalization value defined by an expression of constants y : INT := x + fun(4); //initialization value defined by an expression, //that contains a function call; notice the order! z : POINTER TO INT := ADR(y); //not described in the standard IEC61131-3: // initialization value defined by an adress function; // Notice: In this case the pointer will not be initialized // during an Online Change *) END_VAR
初期化の順序に関する注意事項
まず、定数
コンパイラバージョン3.5.3.40以降、関数ブロック内の変数は次の順序で初期化されます。まず、すべての定数は宣言の順序に従って初期化され、次に他のすべての変数は宣言の順序に従って初期化されます。
ローカル変数の前のグローバル変数
コンパイラバージョン 3.3.2.0 以降では、グローバル変数リストの変数は常に POU のローカル変数の前に初期化されます。
詳細については、以下を参照してください。 構造変数の宣言と初期化 とプラグマ global_init_slot。