劉春來 張 東 史宏亮
(北京自動測試技術(shù)研究所 100088)
在電子電路的發(fā)展進程中,模擬電路比數(shù)字電路出現(xiàn)得早,但是數(shù)字電路的發(fā)展速度卻比模擬電路要高得多。但在一個完整的系統(tǒng)中,模擬電路不可能完全被代替,據(jù)統(tǒng)計,系統(tǒng)中模擬電路與數(shù)字電路的比例變化不大。模擬電子電路故障診斷是網(wǎng)絡理論中一個十分困難的課題,其最主要的原因在于模擬電路中的元件參數(shù)具有容差,以及模擬電路中廣泛存在的非線性問題[1]。
故障字典法是目前模擬電路故障診斷中的常用方法,它具有原理簡單、升級方便的優(yōu)點。根據(jù)故障特征的不同,故障字典分為不同的類型。故障特征的取得,可采用不同的分析方法、不同的激勵和不同的響應。分析方法有穩(wěn)態(tài)分析、頻域分析、時域分析;激勵有直流,周期脈沖,正弦等信號;響應有電壓、電流、傳輸函數(shù)等[2]。
利用字典法作故障診斷的關(guān)鍵步驟是建立故障字典,建立字典的過程,實際上是測試前的分析過程,它主要完成故障集的選擇,激勵信號的選擇,故障特征模糊域的劃分和隔離,故障特征碼的生成等工作。整個設計原理如圖1所示:
圖1 直流故障字典設計原理
所謂模糊集,指的是對任一測試節(jié)點而言,可能有若干種故障使該節(jié)點產(chǎn)生相差很少的電壓值,我們稱這些故障為一個模糊集。模糊集劃分的原則是:
1.1 模糊集應包含所有劃分在集內(nèi)的故障狀態(tài)值;
1.2 任意兩個模糊集的電壓之間不能重疊;
1.3 每一模糊集所覆蓋的具體電壓值依具體情況而定。
因為在實際的模擬電路網(wǎng)絡中元件參數(shù)具有容差和非線性問題,會造成下述兩種情況:
1.3.1 電路在無故障狀態(tài)下,測試向量中的各元素(即各測試點電位)不是一個確定的值,而是一個連續(xù)的區(qū)間,甚至某些元素值落在某種故障狀態(tài)下對應的區(qū)間里,換句話說,如果僅分析一個測試點的測試值,有可能將一個具有容差的無故障電路判為有故障電路,反之,也有可能將一個存在故障的電路判為無故障的正常電路。
1.3.2 對于每個故障狀態(tài),其測試向量中的每個元素值也是一個連續(xù)的區(qū)問,因為在計算時除故障元件外的所有元件的參數(shù)也是都有容差的,如果在兩種不同的故障狀態(tài)下,測試向量中的元素值有交叉重疊的區(qū)間,則可能這兩個故障都不可區(qū)分(隔離)。
為了解決這一問題,引入模糊集和模糊域的概念[3],即當計算結(jié)果出現(xiàn)不同狀態(tài)在同一個節(jié)點上的電壓容差域重疊,無法利用測量值區(qū)分這些狀態(tài)時,將這些狀態(tài)在該節(jié)點劃進同一個集和,成為模糊集。對于某節(jié)點的第N個模糊集中的所有狀態(tài),對應的電壓范圍如果滿足一下條件:第N個模糊集中所有的狀態(tài)在該節(jié)點的電壓容差域都落在該電壓范圍內(nèi),并且該電壓范圍最小,則稱這個最小電壓范圍是該點第N個模糊集對應的模糊域。關(guān)于模糊集劃分的方法,傳統(tǒng)的方法是:
第一步:將正常狀態(tài)的節(jié)點電壓作為第N個(N=1)模糊集的中心;
第二步:檢查所有的故障狀態(tài)電壓值,如果某一電壓值處于第N個模糊集電壓的±0.7內(nèi)(模糊域?qū)挾?,則將該電壓對應的故障分到第N個模糊集中;
第三步:所有故障檢查完后,將第一個未劃分到前面模糊集中的故障作為新的模糊集中心,N=N+1。如果所有的故障都在某一步劃分完,則停止;
筆者提出了一種樁土界面土和孔隙水壓力測試裝置及方法,該測試技術(shù)專門用于現(xiàn)場試驗測試樁土界面土壓力和孔隙水壓力[34].筆者在前期室內(nèi)模型樁沉樁試驗中,首次嘗試在模型樁樁身表面植入光纖光柵傳感器,并在樁身表面安裝微型硅壓阻式土壓力和孔隙水壓力傳感器的測試方法,成功測試了樁身軸力、樁土界面處的土壓力和孔隙水壓力[35-36].
第四步:對于現(xiàn)在的模糊集N,重復步驟2,這是如果模糊域與前面的模糊與區(qū)間發(fā)生重疊,將重疊區(qū)間分半,重疊區(qū)間的任一電壓值代表的故障屬于離中心值較近的一個模糊集,返回步驟3。即完成對故障模糊集的劃分。
由于使用傳統(tǒng)的方法進行故障隔離,需要計算模糊集的交或者對稱差,因此需要的計算量較大,本文則直接利用故障編碼進行故障隔離以及節(jié)點優(yōu)選,有效地減少了模擬電路故障診斷測前仿真中的計算量。
就故障編碼,定義和準則如下:
定義1對于某一測試電壓,若故障Fi落于第S個模糊集內(nèi),則稱S為故障歷的故障編碼。
定理1當且僅當故障Fi和Fj至少對一個測試電壓具有不同的編碼時,F(xiàn)i和Fj可以隔離。
準則1對應于某一測試電壓,如果某一編碼對應的故障只有一個,則該編碼就唯一的確定了該故障。
準則2對應若干測試電壓,如果某一編碼組合所對應的故障只有一個,則該編碼組合就唯一的確定了該故障。
下面就結(jié)合實際例子對如何由故障模糊集形成故障編碼進行詳細的介紹,
例1.設某一電路可測節(jié)點為Vl,V2;故障集為:F1-F7,劃分好的故障模糊集如表1所示:
表1 故障模糊集
其中對于故障F1,屬于測試節(jié)點V1的第一個模糊集和測試節(jié)點V2的第一個模糊集,那么F1對應的故障編碼就是3 3,余此類推可得到故障F1-F7對應的編碼,如表2所示:
表2 故障編碼表
將故障編碼表反過來用,即個V1和V2的測試電壓作為條件,得到故障號F1~F7,再經(jīng)過故障隔離和節(jié)點優(yōu)選等步驟,則完成故障字典的編制工作。
針對模糊邏輯的迅速推廣應用,MathWorks公司在其MATLAB版本中添加了Fuzzy Logic工具箱。該工具箱由長期從事模糊邏輯和模糊控制研究與開發(fā)工作的有關(guān)專家和技術(shù)人員編制。MATLAB Fuzzy Logic工具箱以其功能強大和方便易用的特點得到了用戶廣泛歡迎。模糊邏輯的創(chuàng)始人Zadeh教授稱贊該工具箱“在各方面都給人以深刻的印象,使模糊邏輯成為智能系統(tǒng)的概念與設計的有效工具”。
在MATLAB窗口中輸入“Fuzzy”命令,即可打開如圖2所示的模糊規(guī)則建立窗口,具體建立的方法和步驟可參考文獻[5]。將根據(jù)表2中的模糊規(guī)則建立相應的映射關(guān)系,建立好的模糊集在Simulink的實現(xiàn)方式如圖3所示。
圖2 FIS編輯器的圖形界面
圖3 模糊規(guī)則在Simulink的實現(xiàn)模型
Real-Time Workshop(RTW)從Simulink模型生成優(yōu)化的,可移植的和可定制的ANSI C代碼。利用它可以針對某種目標機來創(chuàng)建整個系統(tǒng)或是部分子系統(tǒng)可下載執(zhí)行的 C代碼,以開展硬件在回路仿真。 RTW支持離散時間系統(tǒng),連續(xù)時間系統(tǒng)和混合系統(tǒng)的代碼生成[6]。實時代碼的生成原理如圖4所示。
下面就具體說明如何在Simulink中進行自動代碼的生成過程,首先應該在MATLAB環(huán)境下鍵入:
mex –setup
安裝和配置編譯器,可選擇的編譯器有WATCOM C或Visual C++,本例中選用的是VC6作為RTW的編譯器。接下來是修改必要仿真參數(shù)[7],確保RTW生成代碼時無錯誤。
單擊菜單Simulation→Simulation parameters打開仿真參數(shù)設定窗口:
圖4 實時代碼生成原理
a) 選中Solver(求解器)一欄:
把Solver options中的Type欄設定為Fix-step(定步長)的discrete (no continuous states),如圖5所示。
b) 選中Real-Time Workshop一欄:
使用默認的通用目標grt.tlc即可,并選中Generate code only復選框。如圖6所示
圖5 求解器一欄的參數(shù)設置
上述參數(shù)設置好后,選擇菜單Tools→Real Time Workshop→Build model來將Simulink模型自動轉(zhuǎn)換為C代碼。
本文的算例的模糊模型在Simulink 5.1環(huán)境下完成,具體下位機控制的CPU為Cortex M3系統(tǒng)ARM,NXP的LPC1758,下位機編程軟件采用IAR 6.3。下位機程序驅(qū)動采用NXP提供的LPC17xx CMSIS庫,用RIT(重復中斷定時器)中斷來實現(xiàn)控制,具體中斷編碼的實現(xiàn)代碼如下:
將自動生成的C代碼和相關(guān)h頭文件加入IAR編寫的工程文件,即完成了模糊運算過程的自動代碼并在ARM上實現(xiàn)了實時的控制。試驗的結(jié)果證明了自動生成的代碼是正確的。
圖6 RTW欄參數(shù)設置圖
本文研究了模擬電路故障診斷中的模糊故障字典法的自動代碼生成問題。首先對故障模糊集的建立、故障編碼和故障字典的編制的原理進行介紹,然后給出如何在MATLAB環(huán)境下搭建上述模糊運算處理過程及其Simulink中的實現(xiàn)方式,在此基礎上,著重研究如何利用RTW工具箱完成自動代碼的生成,到最后如何將生成的算法代碼嵌入基于ARM的下位機控制的實現(xiàn)過程。本文所提出的方法可將工程技術(shù)人員從繁重的編碼過程中解放出來,更多的精力放在更核心的算法和規(guī)則設計層面,從而加快開發(fā)周期。
[1] 陳霖,王清理,全春來等. TPS自動生成平臺上的模糊故障字典法[J]. 計算機工程與設計, 2005, 26(5)
[2] 李平,魏蛟龍. 直流故障字典自動生成系統(tǒng)研究[J]. 艦船電子工程,2006,26(6):99-102.
[3] 王宏. 模擬電路故障診斷故障字典法研究[D]. 西安電子科技大學,2007
[4] 李國勇.智能控制及其Matlab實現(xiàn)[M]. 北京: 電子工業(yè)出版社,2005.
[5] (法)Mohand Mokhtari Michel Marie著,趙彥玲,吳淑紅譯.MATLAB與SIMULINK工程應用[M].北京:電子工業(yè)出版社,2002
[6] Real-Time Workshop for user with Simulink, The MathWorks, Inc.
[7] C. Li, X. Liu, X. Zhou, X. Bao, and J. Huang,“Fuzzy Control of Electro-hydraulic Servo Systems Based on Automatic Code Generation”, in Sixth International Conference on Intelligent Systems Design and Applications, 2006. ISDA’ 06, 2006,vol. 1, pp. 244-247.