史宏亮 張 東 劉春來
(北京自動(dòng)測試技術(shù)研究所 100088)
20世紀(jì)60年代以來,國內(nèi)外學(xué)者已對模擬電路故障診斷提出了傳統(tǒng)故障診斷方法和現(xiàn)代故障診斷方法兩大類診斷辦法。傳統(tǒng)電路故障診斷通常利用電路原理分析及相應(yīng)物理量的計(jì)算,通過電路對正弦信號、階躍信號、方波信號等典型信號的暫態(tài)響應(yīng)或穩(wěn)態(tài)響應(yīng)的情況分析診斷可能存在的故障[1]。傳統(tǒng)模擬電路故障診斷方法主要有:故障字典法,元件參數(shù)辨識法,故障驗(yàn)證法等;現(xiàn)代模擬電路故障診斷方法主要是模式識別法,不需要對電路原理進(jìn)行分析,采用的技術(shù)包括神經(jīng)網(wǎng)絡(luò)故障診斷法、專家系統(tǒng)故障診斷法、模糊故障診斷法、小波變換故障診斷法等[2]。
采用如神經(jīng)網(wǎng)絡(luò)、模糊、小波變換等故障診斷方法,在MATLAB仿真環(huán)境中對其算法進(jìn)行設(shè)計(jì)和研究是比較方便的,而從算法到實(shí)際代碼的生成還有一個(gè)中間過程,這個(gè)代碼如要開發(fā)人員自己編寫的話,其工作量是比較大的,首先要求開發(fā)者對算法自身的理解要有一定深度,那么在這一由理論到實(shí)際的過程中,近年來出現(xiàn)的一種叫做快速原型方法,是算法在仿真環(huán)境中進(jìn)行快速驗(yàn)證的很好解決方案。
快速原型(Rapid Control Prototyping,RCP),即控制系統(tǒng)的快速功能原型測試。是指在產(chǎn)品開發(fā)的初期,將工程師開發(fā)的算法下載到計(jì)算機(jī)硬件平臺中,通過實(shí)際I/O與被控對象實(shí)物連接,用實(shí)時(shí)仿真機(jī)來模擬控制器與實(shí)物相連進(jìn)行實(shí)時(shí)仿真,檢測與實(shí)物相連時(shí)控制算法的性能,并在控制算法不理想的情況下可以進(jìn)行快速反復(fù)設(shè)計(jì)以找到理想的控制方案;在確定控制方案后,通過代碼的自動(dòng)生成及下載到硬件系統(tǒng)上,形成最終的控制器產(chǎn)品,并通過對這個(gè)功能原型裝置的實(shí)物實(shí)驗(yàn)來檢驗(yàn)和修改設(shè)計(jì)。快速原型仿真與半實(shí)物仿真(HILS)這兩方面應(yīng)用的區(qū)別是:前者的仿真對象是控制器,實(shí)現(xiàn)了控制器的功能;而后者仿真對象是設(shè)備或環(huán)境,實(shí)現(xiàn)了某一設(shè)備或整個(gè)外環(huán)境的功能??焖僭拖到y(tǒng)真正使設(shè)計(jì)人員不必為研發(fā)各階段的功能檢測實(shí)驗(yàn)環(huán)境而煩惱,減少設(shè)計(jì)過程中信息交流和共享中存在的困難,可以將精力更多集中在產(chǎn)品功能和品質(zhì)的研究上,而不是枯燥的手工編碼工作上[3]。
實(shí)時(shí)混合仿真平臺是結(jié)合 MATLAB 實(shí)時(shí)仿真機(jī)制RTW(Real-Time Workshop)工具箱,并在 RTWT (Real-Time Windows Target)工具箱提供的實(shí)時(shí)內(nèi)核的支持下,實(shí)現(xiàn)的實(shí)時(shí)仿真。
RTW是MATLAB圖形建模、仿真和樣機(jī)開發(fā)環(huán)境Simulink的一個(gè)重要功能補(bǔ)充模塊,是基于Simulink的代碼自動(dòng)生成環(huán)境。它能直接從Simulink的模型中產(chǎn)生優(yōu)化的、可移植的和個(gè)性化的C代碼,并根據(jù)目標(biāo)配置自動(dòng)生成多種環(huán)境下的程序,在硬件上運(yùn)行動(dòng)態(tài)系統(tǒng)模型,同時(shí)還支持基于模型的調(diào)試。當(dāng)用戶在Simulink環(huán)境下建模,并得到較滿意的仿真結(jié)果后,可利用RTW針對某種目標(biāo)機(jī)來創(chuàng)建整個(gè)系統(tǒng)或是部分子系統(tǒng)可下載執(zhí)行的C代碼, 并結(jié)合一個(gè)快速原型化目標(biāo)(例如RTWT目標(biāo))與用戶的物理系統(tǒng)連接在一起,使用Simulink模型作為連接物理目標(biāo)的接口,利用生成的代碼在實(shí)時(shí)環(huán)境中測試與驗(yàn)證自己的設(shè)計(jì)。
RTWT是MATLAB 提供和發(fā)行的一個(gè)基于RTW體系框架的附加產(chǎn)品,它可將PC機(jī)轉(zhuǎn)變?yōu)橐粋€(gè)實(shí)時(shí)系統(tǒng),其目的是引入一種快速原型設(shè)計(jì)的方法,用于控制器的實(shí)時(shí)測試和開發(fā)[4]。在這個(gè)環(huán)境里,一臺PC機(jī)既作為宿主機(jī),又作為目標(biāo)機(jī)存在。RTWT應(yīng)用一個(gè)實(shí)時(shí)內(nèi)核來保證應(yīng)用程序的實(shí)時(shí)運(yùn)行,實(shí)時(shí)內(nèi)核運(yùn)行在CPU的最高優(yōu)先級,利用PC的內(nèi)部時(shí)鐘作為自己的時(shí)間信號源。由于目標(biāo)應(yīng)用程序被編譯為具有平面存儲模式(flat memory model)Windows NT應(yīng)用程序,提供了完全的32位功能,無須在16位內(nèi)存段與DOS擴(kuò)展器間進(jìn)行切換,因而執(zhí)行效率高,具有相當(dāng)快的運(yùn)算速度,這樣就可以在較短的時(shí)間內(nèi)計(jì)算仿真模型,從而可以滿足實(shí)時(shí)系統(tǒng)對時(shí)間的要求。對于較小的Simulink模型,其采樣頻率可以達(dá)到10KHz。
RTWT支持多種做作的驅(qū)動(dòng)程序庫,從Simulink移植到外部硬件的參數(shù)可以在系統(tǒng)運(yùn)動(dòng)過程中進(jìn)行在線調(diào)整,所以用其進(jìn)行實(shí)時(shí)控制系統(tǒng)開發(fā)時(shí),周期短、費(fèi)用低、效率高。RTW和RTWT的關(guān)系以及工作原理如圖1所示。
圖1 實(shí)時(shí)窗口目標(biāo)工作原理框圖
系統(tǒng)中虛擬控制器部分由 MATLAB 結(jié)合 Simulink 工具箱實(shí)現(xiàn),以Simulink模型作為連接物理目標(biāo)的接口。Simulink的外部模式與 RTWT 結(jié)合提供了一個(gè)圖形用戶接口。.利用RTW將搭建好的Simulink模型自動(dòng)轉(zhuǎn)換為C代碼并編譯成可Windows NT可執(zhí)行程序,在底層運(yùn)行,與RTWT通過對應(yīng)的驅(qū)動(dòng)程序連接,完成系統(tǒng)的實(shí)時(shí)采集和故障診斷工作。
PCB故障檢測系統(tǒng)主要包括主控IPC、測試儀器(硬件模塊構(gòu)成)、系統(tǒng)軟件、測試連接裝置等部分。系統(tǒng)整體框圖如圖2所示。
圖2 功能測試系統(tǒng)硬結(jié)構(gòu)框圖
PCB故障檢測系統(tǒng)的硬件平臺由主控計(jì)算機(jī)、測試儀器、通用測試接口連接裝置等部分構(gòu)成。主控計(jì)算機(jī)完成測試控制、故障診斷、控制用戶界面、和數(shù)據(jù)顯示系統(tǒng)管理等任務(wù)。測試儀器通過測試總線與主控計(jì)算機(jī)連接,在主控計(jì)算機(jī)的控制下完成測試任務(wù)。通用測試接口連接裝置由通用接口電路、接口適配電路和連接裝置構(gòu)成,通過信號轉(zhuǎn)接等將被測電路板的信號接入測試系統(tǒng),必要時(shí)還需要對信號進(jìn)行調(diào)理、變換。
在故障診斷算法設(shè)計(jì)和仿真驗(yàn)證階段,則主要利用MATLAB的快速控制原型RCP方式來實(shí)現(xiàn)算法參數(shù)的不斷優(yōu)化和調(diào)試,以達(dá)到更好的診斷效果。其中最主要用到的工具箱就是RTW和RTWT對象。
Simulink 提供了各種各樣的模塊集合,在 Simulink 提供的圖形用戶界面上,只要進(jìn)行簡單拖拉操作,就可利用這些模塊集合構(gòu)造出復(fù)雜的控制器模型。此外 Simulink 還提供了諸如模糊邏輯工具箱與神經(jīng)網(wǎng)絡(luò)工具箱之類的高級算法控制工具箱,利用這些工具箱,結(jié)合其他模塊,可搭建出各種與之相關(guān)的故障診斷算法,如模糊診斷方法、神經(jīng)網(wǎng)絡(luò)診斷等。利用工具箱的圖形用戶界面編輯控制器,可方便地設(shè)計(jì)故障診斷器的框圖式系統(tǒng),這使系統(tǒng)的算法設(shè)計(jì)過程圖形化,更為簡單和直接。
(1)在Windows 2000下安裝RTW 5.0需要系統(tǒng)首先安裝MATLAB 6.5.1和Simulink 5.1,還要安裝RTWT需要的首先安裝Watcom C編譯器,并在定義Watcom環(huán)境變量,定義Watcom環(huán)境變量的方法是在autoexec.bat中加入如下設(shè)置:
set WATCOM=<編譯器安裝路徑>
重啟計(jì)算機(jī)后在MATLAB命令行窗口鍵入mex–setup,根據(jù)提示設(shè)置Watcom C編譯器為默認(rèn)編譯器。
(2)在MATLAB命令行窗口鍵入rtwintgt–setup,對于“是否安裝RTWT內(nèi)核”問題,鍵入Y;
(3)再次打開MATLAB,打開Simulink,并新建一模型文件,保存為PCBtest.mdl;
(4)在模型庫中找到Real-Time Windows Target,將Analog Output、Analog Input和Scope拖到新建的模型文件中;
(5)雙擊Analog Input,在彈出的窗口中點(diǎn)“Install new board”按鈕,找到所用采集卡的驅(qū)動(dòng)程序,確認(rèn)后,出現(xiàn)采集卡輸入端口調(diào)整窗口,可以調(diào)整和確認(rèn)采集卡的地址和各通道的輸入電壓范圍;例如對于NI公司的板卡,驅(qū)動(dòng)選擇過程如圖3所示。
圖3 RTWT下NI板卡驅(qū)動(dòng)安裝示例
(6)在PCBtest.mdl模型文件的菜單中選擇Simulation→Simulation Parameters→Solver→Solver options中Type對應(yīng)的下拉框中選擇定步長(Fixed-step),定步長大小設(shè)置為0.001,模式選擇為單任務(wù)(Single Tasking);
(7)Tools→RTW Options中系統(tǒng)目標(biāo)文件,利用瀏覽(Browse)按鈕選擇實(shí)時(shí)視窗目標(biāo)所對應(yīng)的rtwin.tlc;
(8)按下Tools→RTW Build按鈕,進(jìn)行代碼生成和目標(biāo)文件的創(chuàng)建;
(9)在Simulation菜單選擇External;
(10)在Simulation菜單下,確認(rèn)Connect to target選項(xiàng);
(11)在Simulation菜單下,單擊Start real-time code。即開始快速控制原型法對系統(tǒng)進(jìn)行測試。
本文提出一種將快速控制原型應(yīng)用到PCB故障診斷系統(tǒng)中的方法,利用實(shí)時(shí)視窗目標(biāo)(RTWT)可方便完成診斷算法的驗(yàn)證。確定好相應(yīng)的診斷策略后,還可利用RTW自動(dòng)生成代碼,將控制器對應(yīng)的代碼嵌入到用C/C++編寫的故障診斷軟件中,進(jìn)而完成快速原形化控制和設(shè)計(jì)到代碼的自動(dòng)化。
[1]萬喜新.基于信息融合技術(shù)的模擬電路故障診斷方法研究[D].湖南大學(xué),2006.
[2]王啟寧,李永紅.基于人工智能算法的印刷電路板測試與診斷系統(tǒng)研究[J].山西電子技術(shù),2011,(1):85-87.
[3]許志,唐碩.基于RTX實(shí)時(shí)環(huán)境的快速原型系統(tǒng)設(shè)計(jì)[J].西北工業(yè)大學(xué)學(xué)報(bào),2010,28(2):176-181.
[4]李永富,楊鵬,張燕等.基于MATLAB的高級過程控制實(shí)時(shí)混合仿真平臺[J].系統(tǒng)仿真學(xué)報(bào),2007,19(18):4150-4153.