移动标准偏差 (MSTD)

此信息适用于 CompactLogix 5370、ControlLogix 5570、CompactGuardLogix 5370、GuardLogix 5570、CompactGuardLogix 5380、CompactLogix 5380、ControlLogix 5580、GuardLogix 5580 和 ControlLogix 5590 控制器。
移动标准偏差 (MSTD) 指令可计算 In 信号的移动标准偏差和平均值。
可用语言
梯形图
此指令不可用于梯形图逻辑中。
功能块
MSTD_FBD_avail_v31
结构化文本
MSTD(MSTD_tag, StorageArray);
操作数
功能块
操作数
类型
格式
说明
block tag
MOVING_STD_DEV
结构
MSTD 结构
StorageArray
REAL
数组
用于保留 In 样本。此数组的大小至少应与 NumberOfSamples 相当。
MOVING_STD_DEV 结构
输入参数
数据类型
说明
EnableIn
BOOL
启用输入。如果此参数清零,指令不会执行,也不会更新输出。
默认置位。
In
REAL
指令的模拟信号输入。
有效值 = 任意浮点值
默认值 = 0.0
InFault
BOOL
输入不良状况指示器。如果 In 是从模拟输入读取的,则 InFault 通常由模拟输入的故障状态控制。此参数置位时,InFault 指示输入信号存在错误,指令会将 Status 中的相应位置位,并使 Out 和 Average 保持其当前值。当 InFault 由置位跳变为清零时,指令会初始化平均值算法,然后继续执行。
默认清零。
Initialize
BOOL
指令的初始化输入。此参数置位时,指令会设置 Out = 0.0 且 Average = In,但如果 InFault 也置位,指令会使 Out 和 Average 保持其当前值。当 Initialize 由置位跳变为清零时,指令会初始化标准偏差算法,然后继续执行。
默认清零。
SampleEnable
BOOL
In 采样使能。此参数置位时,指令会将 In 的值输入到存储数组中并计算新的 Out 和 Average 值。当 SampleEnable 清零且 Initialize 清零时,指令会使 Out 和 Average 保持其当前值。
默认清零。
NumberOfSamples
DINT
计算中要使用的样本数。如果该值无效,指令会将 Status 中的相应位置位,并使 Out 和 Average 保持其当前值。当 NumberOfSamples 变为有效后,指令会初始化标准偏差算法,然后继续执行。
有效值 = 1 到存储数组的大小
默认值 = 1
输出参数
数据类型
说明
EnableOut
BOOL
指示指令是否处于启用状态。如果 Out 溢出,则设置为假。
Out
REAL
计算所得的算法输出。
平均值
REAL
计算出的算法平均值。
状态
DINT
功能块的状态。
InstructFault (Status.0)
BOOL
该指令检测到以下执行错误之一。这不是轻微或严重的控制器错误。检查其他状态位以确定发生的情况。
InFaulted (Status.1)
BOOL
In 状况不良。InFault 置位。
NumberOfSampInv (Status.2)
BOOL
NumberOfSamples 无效或与数组大小不相符。
结构化文本
操作数
类型
格式
说明
block tag
MOVING_STD_DEV
结构
MSTD 结构
StorageArray
REAL
数组
用于保留 In 样本。此数组的大小至少应与 NumberOfSamples 相当。
有关结构化文本中表达式语法的详细信息,请参阅结构化文本语法
说明
MSTD 指令支持任何输入队列长度。每次扫描时,如果 SampleEnable 置位,指令会将 In 值输入到存储数组中。当 storage 数组变满后,每输入一个新 In 值,就将最早的条目从数组中删除。
MSTD 指令使用以下公式计算输出值:
条件
Action
平均值
MSTD_fbd_eq1
Out
MSTD_fbd_eq2
指令不会将无效的 In 值(NAN 或 Plus or Minus sign INF)放入存储数组。当 In 无效时,指令会设置 Out = In,设置 Average = In,并记录轻微溢出故障(如果已启用此报告功能)。当 In 变为有效后,指令会初始化标准偏差算法,然后继续执行。
可在运行时更改 NumberOfSamples 参数。如果增加样本数,指令会以增量方式处理从当前样本量到新样本量的新数据。如果减少样本数,指令会重新计算从样本数组起点直到新 NumberOfSamples 值的标准偏差。
初始化标准偏差算法
特定情况下(例如指令首次扫描和指令首次运行),需要由指令对标准偏差算法进行初始化。出现这种情况时,指令会将 StorageArray 视为空,并以增量方式处理从 1 到 NumberOfSamples 值对应的样本。例如:
MSTD_fbd_STDAlgorithm_eq
影响数学状态标志
严重/轻微故障
没有特定于此指令的故障。有关操作数相关的故障,请参阅 常用属性
执行
功能块
条件/状态
执行的操作
预扫描
EnableIn 和 EnableOut 位设置为假。
Tag.EnableIn 为假
EnableIn 和 EnableOut 位设置为假。
Tag.EnableIn 为真
EnableIn 和 EnableOut 位设置为真。
指令执行。
指令首次运行
初始化先前的 Output 和 Average。
指令首次扫描
将 Out 初始化为零。
将 Average 初始化为 Input 值
初始化指令算法。
后扫描
EnableIn 和 EnableOut 位设置为假。
结构化文本
在结构化文本中,EnableIn 在普通扫描期间始终为真。如果指令处于由逻辑激活的控制路径中,指令将会执行。
条件/状态
执行的操作
预扫描
请参见“功能块”表中的“预扫描”行。
正常执行
请参见“功能块”表中的“Tag.EnableIn 为真”行。
后扫描
请参见“功能块”表中的“后扫描”行。
示例
每次扫描时,如果 SampleEnable 置位,指令会将 In 值放入存储数组中,并计算存储数组中各数值的标准偏差,然后将结果放入 Out。Out 将成为 function_block_C 的输入参数。
功能块
MSTD_FBD_ex_v31
结构化文本
MSTD_01.In := input_value;
MSTD_01.SampleEnable := enable_sample;
MSTD(MSTD_01,storage);
deviation := MSTD_01.Out;
提供反馈
对本文档有问题或反馈吗? 请在这里提交您的反馈
Normal