需求读取
Demand Read(需求读取)动作在触发器执行时即刻读取设备变量,从而绕过触发器执行开始时读取的初始触发器缓冲区。
当触发器启动执行时,触发器动作引用的所有变量将读取到内部缓冲区中。触发器的任何动作引用变量时,将在该内部缓冲区读取或写入变量的值。在触发器完成其执行时,内部缓冲区将写入设备。
为绕过此内部缓冲,Demand Read(需求读取)动作会强制将设备变量通过设备管理器和设备驱动程序读取至设备。
参数描述
参数 | 描述 |
---|---|
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(输入)选项卡。 |
Output Data Type(输出数据类型) | 此参数指定输出变量的数据类型。 |
Output Data Count(输出数据计数) | 该值指定输出变量的元素数。 对于单个设备变量,请输入 1。 对于数组设备变量,输入要读取的数组元素数。 |
输入选项卡
Input(输入)选项卡用于读取设备变量。必须首先将设备名称和变量名称传递至动作中。
参数 | 描述 |
---|---|
Device Name(设备名称) | 要读取其值的变量所在设备的名称。 |
Variable Name(变量名称) | 要读取其值的变量的名称。 |
输出选项卡
参数 | 描述 |
---|---|
Value(值) | 从设备变量读取的值。 Logical(逻辑)数据类型值基于 Output Data Type(输出数据类型)参数设置。 Count(计数)值基于 Output Data Count(输出数据计数)参数设置。 |
需求读取注意事项
通常会在设备变量为动作中的源变量时进行“读取”。例如,Set(设置)动作具有源变量和目标变量。
当触发器启动执行时,触发器动作引用的所有变量将读取到内部缓冲区中。触发器的任何动作引用变量时,将在该内部缓冲区读取或写入变量的值。在触发器完成其执行时,内部缓冲区将写入设备。此过程会最大化触发器执行的性能。
如果需要直接从设备而不是先前读取的内部触发器缓冲区读取设备变量,将使用 Demand Read(需求读取)动作。这些情况需要考虑触发器和设备中的总体应用逻辑,以了解应用程序所有部分的动态交互。Demand Read(需求读取)动作就处理时间而言确实会占用额外资源(例如与 Set(设置)动作相比),因为触发器引擎和设备驱动程序必须向下与物理设备通信并获得响应,包括通过网络与设备通信。