当一个值从人机界面输入到所选变量时,输入变量值触发条件运行该操作。
即使输入值和当前值相同,也会发生该触发条件。
onVariableInput(VARIABLE, ()=>{
1
});
1: 变量
当值不是从面板,而是直接从外部设备的设备地址输入到外部变量时,触发条件不运行。
当外部变量的质量状态不是很好时,即使向外部变量输入了值,触发条件也不会运行。您可以从源属性 (<变量名称>.Quality) 监控变量质量状态。
变量
(示例)
onVariableInput(DINT1, ()=>{
DINT2 += 20;
});
您也可以使用 [Value Change] 触发条件,其功能与 [Input Variable Value] 触发条件类似。如果 [Input Variable Value] 触发条件不能满足您的要求,请考虑使用 [Value Change] 触发条件。
下面介绍两种触发条件的区别。
[Input Variable Value] | [Value Change] | |
触发条件的目标 | 仅限变量 | 变量和源属性 |
当数值从设备地址直接输入到外部变量时: | 触发条件不运行。 | 触发条件运行。 |
当输入与当前值相同的数值时: | 触发条件运行。 | 触发条件不运行。 |
当您使用相同的外部变量,而非将从属设备驱动程序分配到 [Input Variable Value] 触发条件和连接块时,从连接块引用的可能不是输入值,而是当前值。
onVariableInput(Var1, ()=>{
$GraphicObject.NumericDisplay2.CurrentValue = Var1;
});
变量类型 | 驱动程序 | 使用异步类型操作 *2 | 来自连接块的引用变量值 |
内部变量 | - | 是 | 输入值 |
否 | 输入值 | ||
外部变量 | 从属设备驱动程序 *1 | 是 | 输入值 |
否 | 输入值 | ||
非从属设备驱动程序 | 是 | 输入值 | |
否 | 当前值 (输入值之前) |
*1 从属设备驱动程序包括:
*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] 触发条件的详细信息,请参阅以下内容。
值更改