(2)PLC 内部的信号滤波算法:
信号滤波在功能上分为输入信号的采样、储存,数据分析处理、滤波,信号输出等环节:
1) 采样、存储环节:PLC 系统接受模拟量信号后,首先进行可控周期、可控数量的采样,采样采取FIFO 算法,保证数据的实时性。保证在任何时间段内采集存储的的数据都是最新、最近的。
2) 数据处理排序环节:利用冒泡算法对采集的数据排序。
3) 数据处理均值环节:去除 N 个最大值、最小值。对剩余的数据进行均值处理。控制框图如下:
3 滤波系统功能详细介绍:
考虑到数据采样的连续性以及在特定的时间段内要保留一定数量的连续的采样数据,在系统中定义一个FIFO 数据链表,采样数据按照时间顺序依次进入链表,当链表数据个数N(可调)一定时,那么着N 个采样值就是一段时间内的连续采样值。在采样过程中从频率根据具体情况进行调整。
采样数据的最大值和最小值在采样过程中有可能受到干扰,或者采集的数据与其它值有较大偏离,其采样可靠度不如其他中间数据可靠,在运算中将规定数量(可调)的最值除去。采用冒泡算法对数据排序,然后分别除去两端的一定个数(可调)的最大值和最小值。最后剩余的数据均值处理。
4 方案模块化:
本次应用的特点就是将上述功能模块化集中在一个功能块FC 中,任何时候只要调用此功能块,就可实现采样滤波功能,通过调整功能块参数(爪子),可以实现可变频率采样,
可变数量采样等数据滤波功能。本功能基于Siemens S7-400PLC 系统设计,采用SCL 编程语言,功能块参数描述如下:
Input:
I_main:模拟量输入信号
S_EN:功能允许信号
S_TRG:采样允许信号
F_SEL:需要去除的最值个数
S_NO:采样个数
S_ARR:采样寄存器
Output:
O_main:滤波后信号输出。
S_ok:采样滤波计算正常。
调用此功能块的程序如下:FC10 为采样功能块
CALL FC 10 (
I_main := MD 300,
S_EN:= L 20.0,
S_TRG:= L 20.1,
F_SEL:= MW 502,
S_NO:= MW 504,
O_main:= MD 404,
S_ok:= M 506.0,
S_ARR:= DB10.ARR);
5 应用体会
采用此滤波功能后,对速度相应要求相对较慢的张力数据采集有较好的滤波效果。本功能可以方
因篇幅问题不能全部显示,请点此查看更多更全内容