# スクリプトの変数

### スクリプトでの変数の使用

変数を使用してオペレーションを実行できます。

MEMO:

- OR/AND/XOR/NOT は、常に 32 ビット符号なし整数値を返します。
- 入力値が負の場合、ビットシフト式は 32 ビットの整数値を返します。
- 入力値が正の場合、ビットシフト式は 32 ビット符号なし整数値を返します。

### スクリプトでの外部変数の使用

スクリプトで外部変数を使用する場合、スクリプトの処理中に接続機器に割り当てられたデバイスアドレス値が変更される場合があります。

割り当て操作でデバイスアドレスを使用すると、表示器は接続されたデバイスからアドレスデータを読み取る必要があるため、書き込み遅延を引き起こす可能性があります。

MEMO: スクリプトの 1 つのトリガー内で同じ外部変数を複数回変更した場合も、値はすぐには反映されません。

更新された値を使用したい場合は、スクリプトで外部変数の値を内部変数に格納して使用してください。または、外部変数の値を使用する前に、別のトリガーで外部変数の値を更新してください。

(例)

以下の変数を追加します。

[名前] | [データの種類] | [ソース] | [デバイスアドレス] | [バイト数 / ワード数]
Var1 | [INT] | 'Schneider Modbus Serial Equipment’ | 400020 | -
Var2 | [INT] | 400021 | -
Var3 | [INT] | 400022 | -

画面上に以下のオブジェクトを描画します。

#### スイッチオブジェクト (名前: Switch1)

設定不要

#### スクリプト

番号 | ブロック
1 | [トリガー] ➞ [タッチ] ➞ [タッチ]
2 | [オペレーション] ➞ [値の変更] ➞ [値の変更]
3 | [値] ➞ [画面オブジェクト]
4 | [ロジック] ➞ [Math]
5 | [値] ➞ [変数]
6 | [値] ➞ [定数]

Switch1 を押すと、Var1+1 の値が Var2 に割り当てられます。ただし、デバイスとの通信に時間が掛かるため、Var2 の値は Var3 に割り当てられていません。

そのような場合、以下の例のように実行前に Var1 の結果を内部変数 Var4 に格納するようなスクリプトをプログラムできます。

以下の変数を追加します。

[名前] | [データの種類] | [ソース] | [デバイスアドレス] | [バイト数 / ワード数]
Var1 | [INT] | 'Schneider Modbus Serial Equipment' | 400020 | -
Var2 | [INT] | 400021 | -
Var3 | [INT] | 400022 | -
Var4 | [INT] | [Internal] | - | -

#### スクリプト