APP下载

基于LabVIEW 的中值滤波算法在剔除尖脉冲干扰中的应用

2021-10-26朱兆林格日勒图

机电产品开发与创新 2021年5期
关键词:中值油温油箱

靳 松, 朱兆林, 张 旺, 格日勒图

(中机生产力促进中心, 北京 100044)

0 引言

数据采集和控制系统在实际运行中会受到各种电磁干扰, 一般通过硬件滤波电路和软件滤波算法的形式来消除电磁干扰对系统的影响。 但是当现场有大功率的设备频繁启停或传感器的采集电路存在设计缺陷时,数据采集系统容易受到尖脉冲干扰,当系统受到强烈的尖脉冲干扰时, 采集的数据中会叠加一些尖脉冲干扰信号,这种干扰信号具有干扰能力强、无规律的特点。 尖脉冲干扰信号引起的粗大误差会使采集数据瞬间增大或减少, 引起安全系统误动作甚至使整个系统无法正常运行。

1 研究背景

当周围有大功率设备频繁启动时某试验台润滑油箱油温采集受到严重的尖脉冲干扰, 油箱油温曲线上布满了尖峰,见图1,温度超限频繁,安全系统报警停机,试验台无法正常工作。

图1 纵坐标为20℃~80℃时油箱油温曲线

从图1 可以看出油箱油温在50 ℃左右变化时,油温曲线纵坐标为20℃~80℃时无法看到尖脉冲干扰的最大值。改变纵坐标的温度值为-1000℃~6000℃,如图2 所示,从图2 中可以看到数据受到尖脉冲干扰时油箱温度采集值可以瞬间增到5455℃,是油箱正常温度的100 多倍,最低到0 度,无法设置报警阈值,安全系统遇到这种尖脉冲干扰就会立即报警停机。

图2 纵坐标为-1000℃~6000℃时油箱温度曲线

2 中值滤波算法

1971 年著名学者J.W.Tukey 提出了中值滤波概念并将其用作时间序列平滑, 中值滤波一出现就因其对尖脉冲具有良好的拟制能力而备受瞩目。 中值滤波是一种非线性滤波, 在一定条件下可以克服线性滤波器所带来的细节模糊,而且对滤除脉冲干扰最为有效。

所谓“中值”是指将一个数列中的数据按照从大到小(或者从小到大)的顺序排列,如这个序列的长度为奇数,则排在中间的那个数就是此序列的中值; 如果数据序列长度为偶数, 可以定义处于中间的两个数的平均值为中值。因此,中值滤波最简单的办法就是用一个条形或方形滑动窗口在被处理的数据数列上逐点滑动, 将窗口正中那点的值作为窗口的中值来代替窗口内各点的值, 中值滤波可以这样进行定义:

设有一个一维序列{x1,x2,…,xn},取窗口长度为N(N为奇数),对此序列进行中值滤波,就是从输入序列中相继抽出m 个数,xi-v,…,xi-1,xi,xi+1,…,xi+v,其中i 为窗口的中心位置,v=(N-1)/2, 再将这N 个数按其数值大小排列,取其序号为正中间的那个数据作为滤波输出,其数学公式表示为:

例如对某一测量过程进行连续5 次采样,将采样数值存储在数列{Si}(i=5),按照采集时间顺序数据排列为:

然后将数列(2)中的数据按照数值大小顺序重新排列:

重新排列后数列{Si}(i=5)的中值为S3,则S3就作为此次滤波的输出值。 若窗口长度N 取奇数则中值为从大到小排列的中间元素, 若N 取偶数则中值为从大到小排列的中间两个元素的平均值。

窗口长度N 的取值影响滤波效果, 在实际应用中要根据实际情况进行选择,一般窗口长度N 选择为奇数,若N 选择为偶数干扰脉冲如果排在中间的两个数据时干扰脉冲值就会参与平均值运算求出的中值是含有脉冲干扰的,在这种情况下就不能够将脉冲干扰剔除出去。窗口长度N 选择为奇数时, 只取序列的中间位置的元素不进行平均值运算,就避免了脉冲值参与运算可能性。但是如果N 取值太小, 假设N 取3 时三个数据中有一个为干扰脉冲时,不管干扰发生在什么位置,都能将其滤除,如果三个数据有两个为脉冲干扰时而干扰是异向时则仍可以将干扰脉冲滤去, 但如果有两次同向干扰或三次干扰时则无法将干扰脉冲完全滤去,甚至会把干扰信息记录下来。为了有效的滤除两次或三次脉冲干扰将窗口长度N 适当放大取5 或7。 因为这种干扰尖脉冲大都偶然因素引起的波动或者采样器不稳定引起的, 实际中很少会出现连续多个干扰脉冲出现的情景。

为了考察中值滤波对尖脉冲的滤波效果, 并找出合适的窗口长度N 的取值,对中值滤波进行仿真。生成振幅为10 频率为1/180Hz 初始相位为0 的正弦波:

x(t)=10*sin(π/90*t) (5)

在正弦波x(t)上随机加入幅值在区间[-50,50]之间的脉冲干扰信号r(t),形成带有随机脉冲干扰的正弦信号y(t)

对信号y(t)进行中值滤波,窗口长度N 分别取3 和5,其滤波效果如图3 所示,从图3 中可以看出当窗口长度N 取3 时根据随机干扰产生的位置不同会偶尔存在个别滤不去的干扰存在, 当窗口长度N 取5 时滤波效果会好很多,能够满足大部分应用场合。

图3 中值滤波仿真

3 LabVIEW 实现

LabVIEW(Laboratory Virtual Instrument Engineering Workbench)实验室虚拟仪器集成环境的简称, LabVIEW 是专为测试、 测量和控制应用而设计的系统工程软件,包含大量的用于数据采集、分析的工具。 利用LabVIEW 自带的中值函数就可以方便的实现中值滤波。

利用LabVIEW 自带的中值函数可以方便获得一个数列的中值。 图4 为LabVIEW 的中值函数。

图4 LabVIEW 中值函数

其中X 为输入序列,函数对输入序列X 进行排序,如果序列X 有奇数个元素则输出中值为序列中间元素, 如果序列X 有偶数个元素则输出中值为中间两个元素的平均值。

只要创建一个X 序列将传感器采集的数值不断的放入X 序列里就可以实现对采集数字进行中值滤波。 采用LabVIEW 的数据队列将采集的数据值逐点放到数据量队列里,选择队列长度为5,即中值滤波窗口长度N 为5,一般选择奇数, 防止干扰脉冲值参与平均值运算而引起误差。这样就创建了一个含有5 个元素的X 序列。LabVIEW中值滤波程序见图5。

图5 LabVIEW 中值滤波程序

该程序首先从缓冲区里读取采集数据, 将读取的数据逐点放入数据队列, 数据队列将每5 个数据作为一个队列输出给中值函数, 中值函数将数据队列里的5 个数据从大到小进行排序,选取中间的数据作为输出值输出。

4 滤波效果验证

将中值滤波程序应用到试验台油箱温度采集中,油箱由侵入式加热器进行加热, 上位机根据设定温度控制加热器的启停, 例如设定温度为50℃, 则油箱油温高于50 ℃时停止加热,当温度低于48℃时开始加热。 试验台油箱温度控制采集系统界面,见图6。

图6 温度采集和控制界面如图所示

上位机通过串口采集温度传感器的数据, 为了方便对比将没有经过滤波的原始数据曲线显示在界面上方,将经过中值滤波的数据曲线显示在界面的下方。 从原始数据曲线中可以看出当采集系统受到尖脉冲干扰时会出现很多远远大于真实值的干扰噪声, 曲线上出现了很多尖峰毛刺。 经过中值滤波后可以很好的将尖脉冲干扰信号滤去, 从原始数据曲线和中值滤波数据曲线中可以看出中值滤波数据曲线上的尖峰脉冲被有效的剔除了,曲线平滑没有突变的粗大值。采集数据真实准确,整个系统运行稳定可靠。

5 结论

试验设备遇到尖脉冲干扰时采集数据因尖脉冲干扰会产生粗大误差, 这种粗大误差会引起试验设备安全系统误动作,严重时设备无法正常运行。采用中值滤波算法可以有效的剔除这种因尖脉冲干扰而产生的粗大误差,利用LabVIEW 的中值函数实现了中值滤波算法,并应用在试验台油箱温度采集中,获得了良好的效果。

中值滤波对因尖脉冲干扰、 偶然波动或采集系统不稳定而引起的尖峰干扰具有良好的剔除作用,对温度、液位等具有一定滞后性、 响应比较慢的被测量具有良好的滤波效果。

猜你喜欢

中值油温油箱
高炉半闭式液压油箱的开发和应用
拖拉机油箱的常见故障与维护管理
Lagrange中值定理的巧妙应用
一根筷子辨别油温
液压系统油温过高现象原因分析及改进
重庆双五油箱首次超过设计产能月产量达5.8万套
高等数学中拉格朗日中值定理的教学处理
微分中值定理教法研讨
后中值波电流脉冲MIG焊工艺
如何判断油温?