竺 瓊,胡志忠,浦建開
(南京航空航天大學 電子信息工程學院,江蘇 南京 210016)
隨著電子技術的迅速發展,電子設備的性能得到了很大的提高。模擬電路是電子設備中最易發生故障的薄弱環節,所以對其進行故障診斷具有重要意義。模擬電路故障診斷中最基本的是故障樣本數據的獲取。最常用的是利用Matlab和PSpice聯合仿真提取故障樣本數據。PSpice是一款電路仿真軟件,可以得到精確的仿真結果;Matlab由主開發環境、工具箱、simulink仿真環境等內容組成,具有強大的數據處理功能。將PSpice和Matlab結合,利用各自優勢完成模擬電路故障樣本的獲取,為故障特征提取做準備。
PSpice軟件運行的數據結果以.out或.txt文本形式輸出,包括輸入文件,元件模型參數等內容。吳昊[1]用的方法是先用Str2num函數去掉.out文件中不相干內容,再通過textread函數讀取所需內容。滿高華[2]先用任選項設置(options)來簡化.out文件內容,再用feof等函數讀取有價值數據。楊博文[3]先將.txt文件中的第一行字段名刪除并保存為.dat格式,再用importdat函數提取有用數據。
上述方法都需要等PSpice仿真文件形成以后再進行數據操作,且后續操作的前提是電路文件不變。如若用故障字典法、神經網絡或遺傳算法等方法來進行模擬電路故障診斷,需要一次次的手動注入故障再進行仿真獲取故障樣本數據。尤其是利用遺傳算法時需要成千上萬次的樣本提取,會消耗大量時間,所以故障注入及故障樣本數據獲取的自動化顯得尤為重要。文中采用基于SLPS的模擬電路故障樣本獲取技術,實現了故障注入,樣本提取的自動化。
SLPS是Cadence Design Systems公司針對PSpice模擬仿真器與Mathworks公司的Matlab建模工具推出的接口軟件。該接口可用于電路系統的仿真。SLPS主要是鏈接PSpice至Matlab中的simulink仿真器。對于完整的機電系統的電子仿真,用戶可通過一個原型來實現一個系統設計。
故障樣本獲取技術流程圖如圖1所示。
1)在PSpice中建立正常電路
在PSpice內部繪制電路圖,設置參數選項。并運行一次仿真,產生.cir文件。
2)建立simulink子系統,加入SLPS模塊
在Matlab中新建model文檔,打開slpslib,加入 SLPS模塊,鏈接其輸入輸出,運行產生.mdl文件。并產生相應的SLPS_*.cir、SLPS_*.net文件。 在 Matlab的 Command Window窗口中輸入open_system('*')即可打開系統查看,并手動修改設置參數。simulink中simulation-configuration parameters選項可按電路設置slover、max step size,仿真時間等參數,確定仿真時間內的采樣點數。數據結果輸出的方式可在simulink下sink中選擇,選擇simout將仿真數據輸出到workspace工作區瀏覽器進行處理[4-5]。
3)建立電路故障表
按照電路元件編號有序列出所有可能存在的故障,建立電路故障表。
4)運行程序自動讀取故障表獲取故障樣本數據
編寫.m文件,運行程序自動讀取故障表,調用子系統生成故障電路樣本數據。

圖1 故障樣本獲取技術流程圖Fig.1 Flow chart of fault samples acquisition technology
上述流程中1)~3)是自動獲取技術實現前的準備工作,而4)是自動獲取技術的關鍵步驟。具體的程序設計實現流程如圖2所示
1)讀取故障表并進行故障注入 讀取故障表,按照故障表逐個設置故障。研究發現.cir文件中又調用了.net文件,實驗證明,直接修改.net文件內容即可修改元器件名稱及參數形成故障電路。編寫.m文件,用fopen語句打開.net文檔并修改其元件參數,形成故障電路。
2)在Matlab中調用系統并運行 用load_system命令重新載入修改參數后的系統,sim命令運行系統。
3)輸出故障樣本數據 將輸出的故障樣本數據存儲在一個矩陣中,每一列為一個故障樣本,行數由周期內采樣點數和采樣時間決定。矩陣列數由故障表內故障個數決定,為故障樣本個數。
4)恢復正常電路 將故障表中的故障作為變量,調用子程序,將故障電路參數修改回正常電路參數。為下次的故障設置做好準備。
文中采用實例驗證上述方法的可行性及樣本數據的精準性。實例采取元件級仿真電路,圖3電路為低通濾波電路。此電路是 International Test Conference(ITC’97)中發布的一個模擬電路基準測試電路[6]。
在PSpice中畫好此電路圖,并進行瞬態仿真。建立testmodel系統,加入SLPS模塊,雙擊SLPS模塊,打開SLPS setting,將sine wave代替PSpice中原本的輸入,選擇 simout方式輸出到Matlab中。Testmodel系統如圖4所示。

圖2 程序設計流程圖Fig.2 Flow chart of program design

圖3 低通濾波電路Fig.3 Low pass filter

圖4 testmodel系統Fig.4 System of testmodel
設置輸入 VAMPL為 1 V,FREQ為 1 k的信號源,max step size為1 μs,仿真時間設為2 ms,即仿真兩個周期。系統建立完成后根據電路圖建立故障表。文中以硬故障為例,每個元件有短路、開路、正常 3 種狀態,現考慮 R1、R2、R3、C44個元件,一共是34=81種狀態,其中80種故障,一種正常狀態。在PSpice中不得出現節點懸空,否則無法通過編譯,所以故障建模時開路狀態選用99 999 kΩ的電阻表示,短路則用0.005 5 μΩ的電阻表示。打開Matlab運行程序,每個狀態能在workspace中得到2002×1的樣本數據矩陣,即單個故障樣本。故障表為81種狀態,則最后得到2002×81的矩陣,即電路樣本數據集[7]。
畫圖對比驗證樣本數據獲取的準確性。舉例設置故障電路:R1開路,R2開路,R3短路,C4正常, 將此故障電路在PSpice中畫出,同樣設置最大步長為1 μs,仿真時長為2 ms,并進行瞬態仿真得出圖5。在matlab中運行系統,得到的樣本數據用plot(tout,testvout)命令畫出波形圖如圖6所示。由對比圖可見,文中采用的方法可以獲得正確的樣本數據。且程序運行結果表明本文采用的方法獲得的數據精準度高,且程序運行一次完成81種故障樣本數據的采集。從修改電路到完成仿真,獲取故障樣本僅需不到30 s的時間。

圖5 PSpice中故障電路波形圖Fig.5 Waveform of fault circuit in PSpice

圖6 自動獲取技術波形圖Fig.6 Waveform of automatic acquisition technology
經實例驗證,文中采用的方法操作簡便,收集到的樣本數據精準,自動化程度高。此方法大大提高了模擬電路故障樣本獲取的速度,為建立故障字典及模擬電路故障診斷提供了極大的方便。
[1]吳昊,寧元中,梁穎.Matlab與Pspice的數據接口技術[J].電氣電子教學學報,2005,27(1):35-38.
WU Hao,NING Yuan-zhong,LIANG Ying.The data transfer from Pspice to Matlab[J].Journal of IEEE,2005,27(1):35-38.
[2]滿高華,胡桂明,金浙良,等.MATLAB結合PSPICE用于模擬電路故障診斷的方法[J].裝備制造技術,2009(4):88-90.
MAN Gao-hua, HU Gui-ming, JIN Zhe-liang, etal.Integrating MATLAB with PSPICE for the simulation of analog circuit fault diagnosis[J].Equipment Manufacturing Technology,2009(4):88-90.
[3]楊博文,劉飛.PSpice與Matlab的數據通訊技術[J].四川兵工學報,2010,31(11):79-80.
YANG Bo-wen,LIU Fei. Statistics communications technology based on PSpice and Matlab[J].Journal of sichuan Ordnance, 2010,31(11):79-80.
[4]Moslehpour S,Kulcu E K,Alnajjar H.Model-based control design using SLPS Simulink PSpice Interface[J].Journal of Communication and Computer,2010,7(5):68-77.
[5]王永龍,張兆忠,張桂紅.MATLAB語言基礎與應用[M].北京:電子工業出版社,2010.
[6]Kaminska B, Arabi K, Bell I,et al.Analog and mixed-signal benchmarkcircuits-firstrelease[C]//ProceedingsofInternational Test Conference,1997:183-190.
[7]戚新波,劉宏飛,鄭先鋒.電路的計算機輔助分析-MATLAB與PSpice應用技術[M].北京:電子工業出版社,2006.