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