# 输入变量值

当一个值从人机界面输入到所选变量时，输入变量值触发条件运行该操作。

即使输入值和当前值相同，也会发生该触发条件。

##### 块

##### 文本

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

1: 变量

注：

- 当值不是从面板，而是直接从外部设备的设备地址输入到外部变量时，触发条件不运行。

- 当外部变量的质量状态不是很好时，即使向外部变量输入了值，触发条件也不会运行。您可以从源属性 (<变量名称>.Quality) 监控变量质量状态。
  变量

(示例)

1. 创建两个数值显示对象。
2. 在变量编辑器中添加两个变量 DINT1 和 DINT2。
3. 将 DINT1 分配给第一个数值显示对象，将 DINT2 分配给第二个数值显示对象。
4. 添加输入变量值触发条件并将 DINT1 设置为变量。
5. 添加一个值更改操作，并将 DINT2 分配为对象，[AddTo]分配到[Value Change]，20 分配到参数。
   → 在人机界面中，每次在第一个数值显示对象中输入值时，第二个数值显示对象中的值将递增 20。即使您输入和之前输入相同的值，第二个数值显示中的值仍会增加 20 后显示。

##### 块

##### 文本

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

## [Input Variable Value] 和 [Value Change] 触发条件之间的区别

您也可以使用 [Value Change] 触发条件，其功能与 [Input Variable Value] 触发条件类似。如果 [Input Variable Value] 触发条件不能满足您的要求，请考虑使用 [Value Change] 触发条件。

下面介绍两种触发条件的区别。

| [Input Variable Value] | [Value Change]
触发条件的目标 | 仅限变量 | 变量和源属性
当数值从设备地址直接输入到外部变量时: | 触发条件不运行。 | 触发条件运行。
当输入与当前值相同的数值时: | 触发条件运行。 | 触发条件不运行。

## 为 [Input Variable Value] 触发条件和连接块分配相同变量的注意事项

当您使用相同的外部变量，而非将从属设备驱动程序分配到 [Input Variable Value] 触发条件和连接块时，从连接块引用的可能不是输入值，而是当前值。

##### 块

##### 文本

onVariableInput(Var1, ()=>{

$GraphicObject.NumericDisplay2.CurrentValue = Var1;

});

变量类型 | 驱动程序 | 使用异步类型操作 *2 | 来自连接块的引用变量值
内部变量 | - | 是 | 输入值
否 | 输入值
外部变量 | 从属设备驱动程序 *1 | 是 | 输入值
否 | 输入值
非从属设备驱动程序 | 是 | 输入值
否 | 当前值 (输入值之前)

*1 从属设备驱动程序包括:

- Modbus Organization

- MODBUS SIO Slave
- MODBUS TCP Slave

- Pro-face by Schneider Electric

- Memory Link Ethernet
- Memory Link SIO

- Schneider Electric

- EcoStruxure Augmented Operator Advisor

*2 在 [输入变量值] 触发条件和目标操作之间插入异步类型操作的情况下。

##### 块

##### 文本

onVariableInput(Var1, ()=>{

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

$GraphicObject.NumericDisplay2.CurrentValue = Var1;

});

关于异步类型操作的更多细节，请参阅以下内容。
操作块

如果您遇到表格底部的项目，请考虑是否可以使用 [Value Change] 触发条件而不是 [Input Variable Value] 触发条件。
关于 [Value Change] 触发条件和 [Input Variable Value] 触发条件之间区别的更多细节，请参考本主题中 "[Input Variable Value] 和 [Value Change] 触发条件之间的区别"。
关于 [Value Change] 触发条件的详细信息，请参阅以下内容。
值更改