需求写入

Demand Write(需求写入)动作在触发器执行时即刻将设备变量写入设备,从而绕过通常在触发器结束执行时写入的用于设备变量的内部触发器缓冲区。

当触发器启动执行时,触发器动作引用的所有变量将读取到内部缓冲区中。触发器的任何动作引用变量时,将在该内部缓冲区读取或写入变量的值。在触发器完成其执行时,内部缓冲区将写入设备。
为绕过此内部缓冲,Demand Write(需求写入)动作会强制将设备变量通过设备管理器和设备驱动程序写入至设备。

参数描述

参数 描述
Device Name(设备名称) 变量驻留所在的设备。
名称可以是常量(直接在参数中输入),也可以动态地指定名称。
默认值为替换变量 $(Device Name)。此参数可与 Input(输入)选项卡参数 Device Name(设备名称)一起使用,也可进行更改。
此参数允许您使用复合字符串指定设备名称。以下所示为示例 Device Name(设备名称)参数以及在 Input(输入)选项卡中保存其 Id 变量的行。

替换变量 $(Id) 映射至 Input(输入)选项卡。
Variable Name(变量名称) 要写入的变量。
名称可以是常量(直接在参数中输入),也可以动态地指定名称。
默认值为替换变量 $(Variable Name)。此参数可与 Input(输入)选项卡参数 Variable Name(变量名称)一起使用,也可进行更改。
此参数允许您使用复合字符串指定设备名称。以下所示为示例 Variable Name(变量名称)参数以及在 Input(输入)选项卡中保存其 Type(类型)和 Number(数字)变量的行。

替换变量 $(Type) 和 $(Number) 映射至 Input(输入)选项卡。
Input Data Type(输入数据类型) 此参数指定输入变量的数据类型。

Input Data Count(输入数据计数) 该值指定输入变量的元素数。
对于单个变量,请输入 1。
对于数组变量,输入要写入的数组元素数。

输入选项卡

Input(输入)选项卡中的参数基于 Device Name(设备名称)和 Variable Name(变量名称)参数中使用的替换变量。

默认替换变量为 $(Device Name) 和 $(Variable Name),相应的 Input(输入)选项卡如下所示。


参数 描述
Device Name(设备名称) 要写入的变量所在设备的名称。
Variable Name(变量名称) 要写入其值的变量的名称。
Value(值) 基于 Device Name(设备名称)和 Variable Name(变量名称)参数写入目标变量的值。

对于示例替换变量 $(Id)、$(Type) 和 $(Number),相应的 Input(输入)选项卡会将这些参数映射至输入变量。

需求写入注意事项

通常会在设备变量为动作中的目标变量时进行“写入”。例如,Set(设置)动作具有源变量和目标变量。

当触发器启动执行时,触发器动作引用的所有变量将读取到内部缓冲区中。触发器的任何动作引用变量时,将在该内部缓冲区读取或写入变量的值。在触发器完成其执行时,内部缓冲区将写入设备。此过程会最大化触发器执行的性能。

如果设备变量需要直接写入设备而不是仅仅写入内部触发器缓冲区,将使用 Demand Write(需求写入)动作。这些情况需要考虑触发器和设备中的总体应用逻辑,以了解应用程序所有部分的动态交互。Demand Write(需求写入)动作就处理时间而言确实会占用额外资源(例如与 Set(设置)动作相比),因为触发器引擎和设备驱动程序必须向下与物理设备通信并获得响应,包括通过网络与设备通信。

在触发器完成其执行时,内部触发器缓冲区(例如 Set(设置)动作的目标变量)将写入设备。