移动平均值 (MAVE)

此信息适用于 CompactLogix 5370、ControlLogix 5570、CompactGuardLogix 5370、GuardLogix 5570、CompactGuardLogix 5380、CompactLogix 5380、ControlLogix 5580、GuardLogix 5580 和 ControlLogix 5590 控制器。
移动平均值 (MAVE) 指令用于计算 In 信号的时间平均值。该指令有选择地支持用户指定的权重。
可用语言
梯形图
此指令不可用于梯形图逻辑中。
功能块
MAVE_FBD_avail_v31
结构化文本
MAVE(MAVE_tag,storage,weight);
操作数
功能块
操作数
类型
格式
说明
MAVE 标签
MOVING_AVERAGE
结构
MAVE 结构
storage
REAL
数组
存储移动平均值样本。此数组的大小至少应与 NumberOfSamples 相当。
weight
REAL
数组
(可选)
用于加权平均值。此数组的大小至少应与 NumberOfSamples 相当。元素 [0] 用于最新的采样;元素 [n] 用于最早的采样。
MOVING_AVERAGE 结构
输入参数
数据类型
说明
EnableIn
BOOL
启用输入。如果此参数清零,指令不会执行,也不会更新输出。
默认置位。
In
REAL
指令的模拟信号输入。
有效值 = 任意浮点值
默认值 = 0.0
InFault
BOOL
输入不良状况指示器。如果 In 是从模拟输入读取的,则 InFault 通常由模拟输入的故障状态控制。置位时,InFault 指示输入信号存在错误,指令会将 Status 中的相应位置位,并且指令会使 Out 保持其当前值。当 InFault 由置位跳变为清零时,指令会初始化平均值算法,然后继续执行。
默认清零。
Initialize
BOOL
指令的初始化输入。此参数置位时,指令会保持 Out = In,但 InFault 置位时除外,此时,指令会使 Out 保持其当前值。当 Initialize 由置位跳变为清零时,指令会初始化平均值算法,然后继续执行。
默认清零。
SampleEnable
BOOL
In 采样使能。此参数置位时,指令会将 In 的值输入到 storage 数组并计算新的 Out 值。当 SampleEnable 清零且 Initialize 清零时,指令会使 Out 保持其当前值。
默认置位。
NumberOfSamples
DINT
计算中要使用的样本数。如果该值无效,指令会将 Status 中的相应位置位,并使 Out 保持其当前值。NumberOfSamples 变为有效后,指令会初始化平均值算法然后继续执行。
有效值 = 1 到(StorageArray 或 WeightArray 的最小大小,如果使用)
默认值 = 1
UseWeights
BOOL
指令的平均值方案输入。此参数置位时,指令会使用加权方法计算 Out。此参数清零时,指令会使用统一方法计算 Out。
默认清零。
输出参数
数据类型
说明
EnableOut
BOOL
指示指令是否处于启用状态。如果 Out 溢出,则设置为假。
Out
REAL
计算所得的算法输出。
状态
DINT
功能块的状态。
InstructFault (Status.0)
BOOL
该指令检测到以下执行错误之一。这不是轻微或严重的控制器错误。检查其他状态位以确定发生的情况。
InFaulted (Status.1)
BOOL
In 不良(InFault 置位)。
NumberOfSampInv (Status.2)
BOOL
NumberOfSamples 无效或与数组大小不相符。
结构化文本
操作数
类型
格式
说明
MAVE 标签
MOVING_AVERAGE
结构
MAVE 结构
storage
REAL
数组
存储移动平均值样本。此数组的大小至少应与 NumberOfSamples 相当。
weight
REAL
数组
(可选)
用于加权平均值。此数组的大小至少应与 NumberOfSamples 相当。元素 [0] 用于最新的采样;元素 [n] 用于最早的采样。
MOVING_AVERAGE 结构
输入参数
数据类型
说明
EnableIn
BOOL
启用输入。如果此参数清零,指令不会执行,也不会更新输出。
默认置位。
In
REAL
指令的模拟信号输入。
有效值 = 任意浮点值
默认值 = 0.0
InFault
BOOL
输入不良状况指示器。如果 In 是从模拟输入读取的,则 InFault 通常由模拟输入的故障状态控制。置位时,InFault 指示输入信号存在错误,指令会将 Status 中的相应位置位,并且指令会使 Out 保持其当前值。当 InFault 由置位跳变为清零时,指令会初始化平均值算法,然后继续执行。
默认清零。
Initialize
BOOL
指令的初始化输入。此参数置位时,指令会保持 Out = In,但 InFault 置位时除外,此时,指令会使 Out 保持其当前值。当 Initialize 由置位跳变为清零时,指令会初始化平均值算法,然后继续执行。
默认清零。
SampleEnable
BOOL
In 采样使能。此参数置位时,指令会将 In 的值输入到 storage 数组并计算新的 Out 值。当 SampleEnable 清零且 Initialize 清零时,指令会使 Out 保持其当前值。
默认置位。
NumberOfSamples
DINT
计算中要使用的样本数。如果该值无效,指令会将 Status 中的相应位置位,并使 Out 保持其当前值。NumberOfSamples 变为有效后,指令会初始化平均值算法然后继续执行。
有效值 = 1 到(StorageArray 或 WeightArray 的最小大小,如果使用)
默认值 = 1
UseWeights
BOOL
指令的平均值方案输入。此参数置位时,指令会使用加权方法计算 Out。此参数清零时,指令会使用统一方法计算 Out。
默认清零。
输出参数
数据类型
说明
EnableOut
BOOL
指示指令是否处于启用状态。如果 Out 溢出,则设置为假。
Out
REAL
计算所得的算法输出。
状态
DINT
功能块的状态。
InstructFault (Status.0)
BOOL
该指令检测到以下执行错误之一。这不是轻微或严重的控制器错误。检查其他状态位以确定发生的情况。
InFaulted (Status.1)
BOOL
In 不良(InFault 置位)。
NumberOfSampInv (Status.2)
BOOL
NumberOfSamples 无效或与数组大小不相符。
有关结构化文本中表达式语法的详细信息,请参阅结构化文本语法
说明
MAVE 指令计算输入信号的加权或非加权移动平均值。NumberOfSamples 指定移动平均值量程的长度。在每次扫描功能块时,如果 SampleEnable 置位,指令会将 In 的值移入 storage 数组并丢弃最早的值。每个
Inn
都有用户配置的
Weightn
,Weightn 在 UseWeights 置位时使用。
条件
Action
加权平均法
UseWeights 置位。
MAVE Weighted averaging method
统一平均法
UseWeights 清零。
MAVE_UniformAveraging_v34
指令不会将无效 In 值(NAN 或 ± INF)放入存储数组。当 In 无效时,指令会设置 Out = In,并记录轻微溢出故障(如果已启用此报告)。In 变为有效后,指令会初始化平均值算法然后继续执行。
可在运行时更改 NumberOfSamples 参数。如果增大数目,指令将对从当前样本量到新样本量的新数据递增求平均值。如果减小数目,指令会重新计算从样本数组开始到新 NumberOfSamples 值的平均值。
初始化平均值算法
特定情况下(例如指令首次扫描和指令首次运行时),需要由指令对移动平均值算法进行初始化。出现这种情况时,指令会将样本 StorageArray 视为空,并对从 1 到 NumberOfSamples 的样本递增求平均值。例如:
MAVE Initialize average algorithm
影响数学状态标志
严重/轻微故障
没有特定于此指令的故障。有关操作数相关的故障,请参阅 常用属性
执行
功能块
条件/状态
执行的操作
预扫描
EnableIn 和 EnableOut 位设置为假。
Tag.EnableIn 为假
EnableIn 和 EnableOut 位设置为假。请求在指令下次执行时重新初始化 storage 数组。
Tag.EnableIn 为真
EnableIn 和 EnableOut 位设置为真。
指令执行。
指令首次运行
不适用
指令首次扫描
将 Out 初始化为零。
后扫描
EnableIn 和 EnableOut 位设置为假。
结构化文本
在结构化文本中,EnableIn 在普通扫描期间始终为真。如果指令处于由逻辑激活的控制路径中,指令将会执行。
条件/状态
执行的操作
预扫描
请参见“功能块”表中的“预扫描”行。
正常执行
请参见“功能块”表中的“Tag.EnableIn 为真”行。
后扫描
请参见“功能块”表中的“后扫描”行。
示例
每次扫描时,指令都会将 input_value 放入数组 storage。指令会计算 storage 数组中值的平均值(可选择使用 weight 数组中的权重值),并将结果放入 Out。
功能块
MAVE_FBD_ex_v31
结构化文本
MAVE_01.In := input_value;
MAVE(MAVE_01,storage,weight);
output_value := MAVE_01.Out;
提供反馈
对本文档有问题或反馈吗? 请在这里提交您的反馈
Normal