変数値を入力

表示器から選択した変数に値が入力されると、変数値を入力トリガーがオペレーションを実行します。

このトリガーは、入力値が現在値と同じ場合でも発生します。

ブロック

テキスト

onVariableInput(VARIABLE, ()=>{
                   1
});

1: 変数

MEMO:

  • 表示器ではなく、接続機器から直接外部変数に値が入力された場合、トリガーは実行されません。

  • 外部変数のクオリティ状態が「good」以外の場合は、外部変数に値が入力されてもトリガーは実行されません。ソースプロパティ (<変数名>.Quality) で変数のクオリティ状態を監視できます。
    変数

(例)

  1. 2 つの数値表示器オブジェクトを作成します。
  2. 変数編集画面に2 つの変数、DINT1 および DINT2 を追加します。
  3. DINT1 を 1 番目の数値表示器オブジェクト、DINT2 を 2 番目の数値表示器オブジェクトに割り当てます。
  4. 変数値を入力 トリガーを追加し、DINT1 を変数としてセットします。
  5. 値の変更 オペレーションを追加し、オブジェクトに DINT2、[Value Change] に [AddTo]、パラメーターに 20 を割り当てます。
    →表示器では、1 番目の数値表示器オブジェクトに値を入れるたびに、2 番目の数値表示器オブジェクトの値が 20 ずつ増加します。直前に入力した値と同じ値を入力しても、2 番目の数値表示器オブジェクトでは同様に 20 加算された値が表示されます。
ブロック
テキスト

onVariableInput(DINT1, ()=>{
DINT2 += 20;

});

[変数値を入力] トリガーと [値の変更] トリガーの違い

[変数値を入力] トリガーと同様の機能をもつ [値の変更] トリガーを使用することもできます。[変数値を入力] トリガーで対応できない場合は、[値の変更] トリガーの使用を検討してください。

この 2 つのトリガーの違いを以下に説明します。

  [変数値を入力] [値の変更]
トリガーの対象 変数のみ 変数とソースプロパティ
デバイスアドレスから直接外部変数に値が入力された場合 トリガーが実行されない。 トリガーが実行される。
現在値と同じ値が入力された場合 トリガーが実行される。 トリガーが実行されない。

[変数値を入力] トリガーと接続されたブロックに同じ変数を割り当てる場合の注意点

[変数値を入力] トリガーと接続されたブロックにスレーブデバイスドライバー以外の同じ外部変数を割り当てると、接続されたブロックから入力値ではなく現在値が参照される場合があります。

ブロック

テキスト

onVariableInput(Var1, ()=>{

$GraphicObject.NumericDisplay2.CurrentValue = Var1;

});

変数の種類 ドライバー 非同期型オペレーションの使用 *2 接続されたブロックから参照される変数値
内部変数 - 適用 入力値
不適用 入力値
外部変数 スレーブデバイスドライバー *1 適用 入力値
不適用 入力値
スレーブデバイスドライバー以外 適用 入力値
不適用 現在値 (値が入力される前の値)

*1 スレーブデバイスドライバーは以下を含みます。

*2 [変数値を入力] トリガーと目的のオペレーションの間に非同期型オペレーションを挿入する場合。

ブロック

テキスト

onVariableInput(Var1, ()=>{

exportAlarmData(false, false, $Enums.AlarmMode.Log);

$GraphicObject.NumericDisplay2.CurrentValue = Var1;

});

非同期型オペレーションについての詳細は、以下を参照してください。
オペレーションブロック

表の一番下の項目に該当する場合は、[変数値を入力] トリガーの代わりに [値の変更] トリガーの使用を検討してください。
[値の変更] トリガーと [変数値を入力] トリガーの違いについての詳細は、本トピックの「[変数値を入力] トリガーと [値の変更] トリガーの違い」を参照してください。
[値の変更] トリガーについての詳細は、以下を参照してください。
値の変更