高兴泉, 王立国
(吉林化工学院 信息与控制工程学院, 吉林 吉林 132022)
在实际的工业生产过程中,高效、及时、准确的数据采集处理是企业提高生产效益的一个重要手段。但实际的工作现场环境一般较为恶劣,存在着来自被测信号源本身、传感器、外界电磁扰动等各种各样的噪声和干扰。为了进行准确测量和控制,必须消除被测信号中的这些不利因素,数字滤波技术[1-3]则是在数据采集系统中非常有效的一种去除干扰的手段。
目前,有很多数字滤波器设计的成果如程序数字滤波器、FIR数字滤波器[4-7]以及IIR数字滤波器[8-9]等等。为了进行滤波器设计及其性能分析,很多成果都借助于MATLAB这强大的工具进行设计及仿真。数字滤波仿真系统必须实现两个功能,一个功能是采集的数据的模拟,采集的数据应该是真实值和干扰或噪声的叠加,大多数仿真基本都用MATLAB产生的信号如正弦信号,再加载一个随机信号构成[4-5],但这种方法缺少直观性。仿真系统应具备的另外一个功能就是数字滤波器的模拟。对数字滤波器的模拟主要有三种方法,第一种方法是借助于SIMULINK里的已有数字滤波器设计工具箱(Filter Design & Analysis Tool, FDATool)实现[5],第二种方法是程序设计法,即通过运行纯粹的脚本文件进行仿真[8]。第三种方法是直接用离散的系统函数H(z)来实现[10]。但所有这些方法都是侧重滤波器的设计,仿真结果仅仅是用来验证或分析滤波器性能的。其数字滤波仿真系统运行过程和实际滤波器的工作过程还有很大距离,因此只适合用于科研与教学使用。
为了真实地模拟数字滤波器实现的过程,给数字滤波器的实际应用提供更有价值的参考依据,本文提出了一种基于SIMULINK/SIMSCAPE的数字滤波器仿真方法。其中,采集的数据用模拟的电路系统产生,该电路系统不是用单纯的数学模型描述,而是用SIMSCAPE物理模型建立起来的[11]。用SIMSCAPE提供的对应于实际物理系统的物理模型模块可以像搭积木似的构建一个系统模型,构建仿真系统的元部件对应于实际物理真实系统的元部件,这样非常直观,仿真系统搭建的过程和实际的硬件连接过程一致。而数字滤波器模拟是通过用SIMULINK模块库中的触发子系统嵌入自定义的实现滤波的函数来实现的,配合一定的应用程序可实现对数字滤波器周期性采样、迭代求解相应差分方程过程的模拟。本文不考虑具体的滤波器结构,而着眼于尽可能地真实模拟数字滤波器的工作过程,只要是通过求解差分方程来实现的滤波算法都适用。
本文主要以电路系统中的信号滤波为例,介绍一种数字滤波仿真方法。仿真系统总体框图如图1所示。
图1 数字滤波仿真系统总体框图
下面介绍仿真系统的各个组成部分。
如图2所示系统是一个典型的电路系统,在一定电信号的激励下,构建的电路系统的输出信号是确定的、平滑的,它用来模拟电路系统中传输或处理的真实信号。
图2 典型二阶电路
忽略一些因素,该系统可以看做是一个典型的二阶线性系统。取R1=R2=200 kΩ,C1=1 μF,C2=10 μF,R3=10 kΩ。可求得系统闭环传递函数为:
可以计算出系统的阻尼比ζ=0.353 6,若给该系统施加一个常值的电压信号,输出端应该具有震荡、有超调并收敛于常值的响应形式。此时系统输出信号包含非常典型信号变化情况,包括直流信号、近似线性增长的信号、以及非线性变化的信号等。在该系统上研究数字滤波对其他系统的研究具有重要的指导意义。
为了模拟干扰噪声污染真实数据的情况,需要生成频率可调的干扰信号。本文采用如图所示3所示的模拟电路生成尖脉冲干扰信号。
图3 尖脉冲干扰信号产生电路
在该电路输入端加载一定频率的方波信号,电路输出端会产生尖脉冲通过改变方波信号的频率,即可改变尖脉冲的频率。
将真实信号和脉冲干扰信号合成为一个实际的数据采集信号,需要用到加法电路,本文采用如图4所示的加法电路。
图4 加法电路
数字滤波器是本仿真系统的核心部分。它接收采集来的受干扰影响的数据,利用一定的滤波算法计算并输出滤波信号,该信号越接近真值,则滤波器的性能就越好。数字滤波器的运行应体现两个特点:
(1) 周期性进行采样和计算,这个周期是可调的;
(2) 能够实现差分方程的运算,因为几乎所有的数字滤波器都是通过求解差分方程来实现数字滤波。
本文中,为了更加真实地模拟实际情况,连续系统采用SIMULINK模块进行搭建。数字滤波则由SIMULINK基本模块库中的带有脉冲信号发生器的触发子系统模块来模拟,如图5所示。
该模块为SIMULINK中端口与子系统模块库中的触发子系统(Triggered Subsystem)。它是一个执行外部输入触发的子系统模块,其中的触发端口决定着该模块是否执行,在外接周期矩形脉冲输入下,可模拟采样量化的特性。在触发子系统输入输出端之间添加用户自定义函数模块库中的MATLAB函数模块,在该模块可填写编写好的实现差分方程运算的M函数文件名称,从而实现对数字滤波器的调用。
图5 数字滤波器的SIMULINK实现
利用SIMULINK/SIMSCAPE各个组件搭建起来的数字滤波器仿真系统如图6所示。
图6 SIMULINK/SIMSCAPE搭建的数字滤波器仿真系统① 二阶电路系统; ② 脉冲发生电路; ③ 加法电路; ④ 数字滤波器
该仿真系统涉及到的电路部分都是由SIMSCAPE搭建起来的。SIMSCAPE是MathWorks公司开发的全新的多领域面向对象的物理建模工具[11-15]。目前,SIMSCAPE基础模块库包括电力液压气动磁和热等子模块组,还包含与物理信号及其转换相关的一个子模块组。其中电模块组是本系统构建主要用的模块组,它也由3个子模块组:电元件、电输入源和电传感器,它们包含了基本的电气元件包括电容、电感、电阻、运算放大器等电子元件及受控电压源、电压传感器、电流传感器、接地模块等。本文所建立的系统主要是实现对一个电路系统输出信号进行数字滤波的仿真。
用SIMSCAPE组件搭该系统时,需要注意:在SIMSCAPE仿真框架下将出现两类信号,一类是常用的SIMULINK信号,另一类是物理模型对应的物理信号,这两类信号在仿真框图中是并存的,但由于定义不同,这些信号线不能互相直接连接,它们之间的混用需要调用相应的模块进行转换后才可以实现。即物理信号直接相互转换的模块(PS-SIMULINK Converter和SIMULINK-PS Converter)。为了增加适用性,可对建立的系统进行封装。封装的子系统的输入输出端口都是数值信号。因此输入端口端需要转化为物理信号,再通过受控电压源模块转换为电压信号。而输出端物理信号需要转化为数值信号。另外仿真系统中传递的物理信号的检测必须经过相应的传感器来测量,例如电压信号必须用电压传感器模块来测量得到。
以上提到,数字滤波的仿真关键就是差分方程的实现。本文的数字滤波器仿真就是通过在触发系统模块里嵌入一个MATLAB函数求解差分方程实现的。下面以一阶低通滤波为例介绍一下具体的实现过程。
一阶数字滤波器的传递函数为
利用一阶差分法离散化,可以得到一阶数字滤波器:
(1)
其中:Ts为采样周期;T为滤波器的时间常数。Ts和T应根据信号的频谱来选择。式(1)是一个典型的差分方程,实现求解该差分方程的程序流程图如图7所示。
实现滤波功能的程序主要由两个M文件组成,一个是初始化文件,用来初始化差分方程变量。程序代码如下:
图7 实现差分方程求解的程序流程图
Ts=0.01; %定义采样周期
T=0.5; %定义一阶滤波器的时间常数
yk=0; %初始化输出
另一个是实现差分方程运算的函数。其程序代码为:
function y = MyFilter(x)
[T]=evalin('base', 'T');
%导入滤波器时间常数
[Ts]=evalin('base', 'Ts');
%导入采样周期
[yk]=evalin('base', 'yk');
%导入上一时刻的输出值y(k-1)
y=Ts/T*x+(1-Ts/T)*yk;
%计算数据滤波器的输出值
assignin('base', 'yk',y);
%数据更新
自定义的函数MyFilter(x) 嵌入在触发系统模块里,触发模块由方波的下降沿触发,即每个周期该滤波函数就执行一次,采样周期的调整可以通过方波周期的设定来实现。
该程序的调用方式和运行过程和在实际的硬件上实现滤波器的程序都非常一致,因此只要该程序能够在仿真系统中完美地运行,稍加做一些语法上的改动,滤波程序就可以在单片机、DSP等装置上很好的运行,所以该系统对实际数字滤波器的实现具有很好的借鉴意义。利用该仿真系统可大大缩短数字滤波器的研发周期,尤其是从数字仿真到硬件实现的过程。
假设在图2所示系统的输入端施加2 V的电压信号,脉冲干扰生成电路的输入方波信号的周期为0.25 s,同时设定数字滤波采样周期为0.01 s,即设定触发数字滤波器的脉冲的周期为0.01 s。下面就介绍在该仿真条件下仿真系统的运行过程和运行结果。先运行初始化文件,然后在SIMULINK环境下运行仿真系统,得到如图9所示的仿真结果。
图8 一阶低通滤波仿真效果图
在图8中,上图为电路系统真实输出和干扰的叠加,它模拟受干扰影响的数据。脉冲干扰的大小和周期都是可以通过设定脉冲生成电路中的某些参数来进行调整。下图为经过数字滤波器滤波后的信号,它比较真实地反映了真实数据的情况。当然,可以修改滤波器参数即滤波算法(1)里的滤波器时间常数再次进行仿真,会得到不同的仿真效果,即可利用该系统,能方便地观察滤波器参数对滤波性能的影响。
该系统不仅可以实现简单的一阶低通滤波算法,只要在滤波函数里做相应的修改,任何的具有差分方程形式的滤波算法都可以在该仿真系统中得以实现。
本文基于SIMULINK/SIMSCAPE,建立了一种数字滤波仿真系统。以电路系统中信号滤波为例,介绍了仿真系统的构成和运行方法。仿真系统中的电路都由SIMSCAPE搭建,仿真更形象,更接近工程实际。通过用SIMULINK模块库中的触发子系统实现对数字滤波器周期性采样、迭代求解相应差分方程的工作过程的模拟。本文方法不考虑具体的滤波器结构,只要是通过求解差分方程来实现滤波的滤波算法都适用。设计的数字滤波仿真系统的运行过程包括调用滤波程序的过程和实际的数字滤波器工作过程完全一致,这对实际滤波器的设计与实现都有非常重要的参考价值。
[1] 何方白,张德民,阳 莉,等. 数字信号处理[M].北京:高等教育出版社,2011.
[2] 唐 毅,张学玲,王建中.汽车模拟器体感模拟滤波算法数字化实现[J].计算机仿真,2009,26(7):270-273.
TANG Yi, ZHANG Xue-ling, WANG Jian-zhong. Realization of Digital Filter Based on Poprioceptive Simulation Algorithm for Driving Simulator[J]. Computer Simulation, 2009,26(7):270-273.
[3] 郭 强,李岁劳,贾继超,等.无人机组合导航系统的自适应滤波研究[J].计算机仿真,2012,29(7):51-54.
GUO Qiang, LI Sui-lao, JIA Ji-chao,etal. Adaptive Filter Research on Integrated Navigation System of UAV [J]. Computer Simulation,2012,29(7):51-54.
[4] 王兵锋.FIR数字滤波器设计与仿真研究[D].哈尔滨:哈尔滨理工大学,2009.
[5] 闫晓艳,傅丰林,陈 健,等.FIR 数字滤波器的设计及其在 MATLAB 中的仿真实现[J].电子科技,2004(5):43-46.
YANG Xiao-yan, FU Feng-lin, CHEN Jian,etal. A Design of the FIR Digital Filter and Its Simulation in the MATLAB [J]. Electronic Science and Technology, 2004(5):43-46.
[6] 马月红,马彦恒,王雪飞.基于 MATLAB的 FIR数字滤波器设计与仿真[J].电子测量技术,2010,33(11):66-69.
MA Yue-hong, MA Yan-heng, WANG Xue-fei. MATLAB-based FIR figure wave filter design and emulation[J]. Electronic Measurement Technology, 2010, 33(11): 66-69.
[7] 李茂清,王 洁,陈 强,等.基于MATLAB 程序的 FIR 滤波器设计实现[J].电力学报,2008,23(2):87-90.
LI Mao-qing, WANG Jie, CHEN Qiang,etal. The Accompl ishment of the Design of FIR Electric Filter Based on MATLAB Program[J]. Journal of Electronic Power, 2008,23(2):87-90.
[8] 赵普渡.无限冲激响应数字滤波器的设计与MATLAB 仿真[J].工业控制计算机,2011, 24(10):97-98.
ZHAO Pu-du. Infinite Impulse Response in Design of Digital Filter and Simulation of MATLAB[J]. Industrial Control Computer, 2011, 24(10):97-98.
[9] 严小军,赵 妮,秦泓江.基于 MATLAB的 IIR数字滤波器设计与仿真[J].计算机与现代化,2007(6):110-112.
YAN Xiao-jun, ZHAO Ni, QIN Hong-jiang. Design and Simulation of IIR Digital Filter Based-on MATLAB[J]. Computer and Modernization, 2007(6):110-112.
[10] 吴四清,熊 钢.基于SIMULINK的数字滤波器系统仿真与分析[J].咸宁学院学报,2008,28(6):41-43.
WU Si-qing, XIONG Gang. The Simulation and Analysis of Digital filter System Based on Simulink[J]. Journal of Xianning University, 2008,28(6):41-43.
[11] 薛定宇,陈阳泉.基于MATLAB/SIMULINK的系统仿真技术与应用[M].北京:清华大学出版社,2011.
[12] 钱 森,訾 斌,曹建斌,等.基于MATLAB/SIMSCAPE的汽车起重机变幅机构的优化与仿真[J].机械传动,2012,36(8):40-43.
QIAN Sen, ZI Bin, CAO Jian-bin,etal. Optimization and Simulation of Luffing Mechanism of Truck Crane based on Matlab/ Simscape[J]. Journal of Mechanical Transmission, 2012,36(8):40-43.
[13] 陈柏松,伍先俊,李 兢.基于SIMSCAPE的2级双作用液压缸的建模仿真研究[J].机械制造,2009,47(4):6-8.
CHEN Bai-song, WU Xian-jun, LI Jing. Research on Modeling and Simulation of 2 Stage Double Acting Hydraulic Cylinder [J]. Machine Building, 2009,47(4):6-8.
[14] 马 钧,何娅伶,于玉真.基于SIMSCAPE的塑料-钢螺旋蜗轮蜗杆稳态热分析[J].燕山大学学报,2011, 35(5):413-416.
MA Jun, HE Ya-ling, YU Yu-zhen. Steady state heat analysis of plastic-steel material worm gear based on Simscape[J]. Journal of Yanshan University, 2011, 35(5):413-416.
[15] 姚 磊.基于SIMULINK的流体管网仿真[J]. 大功率变流技术,2010(5):5-8.
YAO Lei. Simulation of Fluid Pipe Net Based on Simulink[J]. Converter Technology & Electric Traction, 2011(5):5-8.