移动平均值 (MAVE)
此信息适用于 CompactLogix 5370、ControlLogix 5570、CompactGuardLogix 5370、GuardLogix 5570、CompactGuardLogix 5380、CompactLogix 5380、ControlLogix 5580、GuardLogix 5580 和 ControlLogix 5590 控制器。
移动平均值 (MAVE) 指令用于计算 In 信号的时间平均值。该指令有选择地支持用户指定的权重。
可用语言
梯形图
此指令不可用于梯形图逻辑中。
功能块

结构化文本
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 置位。 | ![]() |
统一平均法 UseWeights 清零。 | ![]() |
指令不会将无效 In 值(NAN 或 ± INF)放入存储数组。当 In 无效时,指令会设置 Out = In,并记录轻微溢出故障(如果已启用此报告)。In 变为有效后,指令会初始化平均值算法然后继续执行。
可在运行时更改 NumberOfSamples 参数。如果增大数目,指令将对从当前样本量到新样本量的新数据递增求平均值。如果减小数目,指令会重新计算从样本数组开始到新 NumberOfSamples 值的平均值。
初始化平均值算法
特定情况下(例如指令首次扫描和指令首次运行时),需要由指令对移动平均值算法进行初始化。出现这种情况时,指令会将样本 StorageArray 视为空,并对从 1 到 NumberOfSamples 的样本递增求平均值。例如:

影响数学状态标志
否
严重/轻微故障
没有特定于此指令的故障。有关操作数相关的故障,请参阅 常用属性。
执行
功能块
条件/状态 | 执行的操作 |
预扫描 | EnableIn 和 EnableOut 位设置为假。 |
Tag.EnableIn 为假 | EnableIn 和 EnableOut 位设置为假。请求在指令下次执行时重新初始化 storage 数组。 |
Tag.EnableIn 为真 | EnableIn 和 EnableOut 位设置为真。 指令执行。 |
指令首次运行 | 不适用 |
指令首次扫描 | 将 Out 初始化为零。 |
后扫描 | EnableIn 和 EnableOut 位设置为假。 |
结构化文本
在结构化文本中,EnableIn 在普通扫描期间始终为真。如果指令处于由逻辑激活的控制路径中,指令将会执行。
条件/状态 | 执行的操作 |
预扫描 | 请参见“功能块”表中的“预扫描”行。 |
正常执行 | 请参见“功能块”表中的“Tag.EnableIn 为真”行。 |
后扫描 | 请参见“功能块”表中的“后扫描”行。 |
示例
每次扫描时,指令都会将 input_value 放入数组 storage。指令会计算 storage 数组中值的平均值(可选择使用 weight 数组中的权重值),并将结果放入 Out。
功能块

结构化文本
MAVE_01.In := input_value;
MAVE(MAVE_01,storage,weight);
output_value := MAVE_01.Out;
提供反馈

