高興泉, 王立國
(吉林化工學院 信息與控制工程學院, 吉林 吉林 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.