徐 穎
(廈門海洋學(xué)院 信息系計(jì)算機(jī)教研室,廈門 361012)
傳統(tǒng)的嵌入式系統(tǒng)開發(fā)過程大致可分為需求分析、設(shè)計(jì)、執(zhí)行、測試與驗(yàn)證4個(gè)環(huán)節(jié),具有如下特點(diǎn):每個(gè)開發(fā)環(huán)節(jié)孤立地進(jìn)行,“好似一堵堵的墻”;開發(fā)人員不可避免地存在對需求分析與技術(shù)規(guī)范文檔的理解偏差;設(shè)計(jì)必須通過搭建硬件原型進(jìn)行,開發(fā)資金投入大;實(shí)現(xiàn)只能采用手工編程的方式,難度大、效率低、錯(cuò)誤多;測試與驗(yàn)證只能在完成原型樣機(jī)之后才進(jìn)行,查錯(cuò)與修正的費(fèi)用巨大,造成潛在的市場風(fēng)險(xiǎn);對于大型項(xiàng)目,需要眾多的開發(fā)人員手工編程,并且開發(fā)平臺(tái)也不統(tǒng)一,后期整合難度大,開發(fā)周期長等,限制了嵌入式DSP、MSP430單片機(jī)等的應(yīng)用普及。
本文所介紹的基于Matlab的嵌入式系統(tǒng)的開發(fā)過程與傳統(tǒng)方法并無太大差別,與傳統(tǒng)方法比較,具有如下優(yōu)勢:在統(tǒng)一的開發(fā)-測試平臺(tái)上,允許產(chǎn)品從需求分析階段就開始驗(yàn)證,并做到持續(xù)不斷的驗(yàn)證與測試;產(chǎn)品的缺陷暴露在產(chǎn)品開發(fā)的初級階段,開發(fā)者把主要精力放在算法和測試用例的研究上,嵌人式代碼的生成和驗(yàn)證過程則留給計(jì)算機(jī)完成。本文將通過一個(gè)實(shí)際應(yīng)用系統(tǒng)——轉(zhuǎn)差頻率控制的異步電動(dòng)機(jī)矢量控制系統(tǒng)來說明基于Matlab模型的嵌入式系統(tǒng)的開發(fā)方法。
轉(zhuǎn)差頻率控制的異步電動(dòng)機(jī)矢量控制調(diào)速系統(tǒng)的原理如圖1所示。該系統(tǒng)主電路采用了SPWM電壓型逆變器,逆變器所需的PWM由控制器輸出??刂破鞲鶕?jù)設(shè)定轉(zhuǎn)速與實(shí)際轉(zhuǎn)速之差來控制PWM,從而控制電機(jī)的轉(zhuǎn)速,使實(shí)際轉(zhuǎn)速可以自動(dòng)跟蹤設(shè)定轉(zhuǎn)速。
根據(jù)上述系統(tǒng)控制原理,在Matlab-Simulink中建立如圖2所示的模型。
系統(tǒng)的控制部分由給定、PI調(diào)節(jié)器、函數(shù)運(yùn)算、兩相/三相坐標(biāo)變換、PWM脈沖發(fā)生器等環(huán)節(jié)組成。
仿真給定了轉(zhuǎn)速為1 400 r/min時(shí)的空載起動(dòng)過程,在起動(dòng)后0.45 s時(shí)加載TL=65N·m。該系統(tǒng)是比較復(fù)雜的系統(tǒng),收斂是仿真計(jì)算中經(jīng)常出現(xiàn)的問題,經(jīng)試用各種計(jì)算方法,選擇了固定步長算法ode5,步長取10e-50。模型仿真的結(jié)果如圖3所示。
圖3 轉(zhuǎn)速變化
前面介紹的控制模型是連續(xù)系統(tǒng)的模型,而實(shí)際的控制是由DSP來完成的,且大部分的控制器包括DSP都是數(shù)字系統(tǒng),數(shù)字系統(tǒng)只能實(shí)現(xiàn)離散的控制。另外,利用實(shí)時(shí)工作站(RealTimeWorkshop)生成代碼要求不能包含連續(xù)系統(tǒng)的模型,所以必須把連續(xù)系統(tǒng)的模型用離散系統(tǒng)的模型替代。
原來的模型中包含連續(xù)系統(tǒng)模型的有給定環(huán)節(jié)、電流電壓轉(zhuǎn)換及定子電壓矢量轉(zhuǎn)角3個(gè)部分,這些模型中包含的連續(xù)模型有積分模塊、限幅積分模塊和微分模塊。篇幅所限,這里給出給定環(huán)節(jié)的離散模型,給定環(huán)節(jié)中包含了1個(gè)限幅積分模型。由于離散系統(tǒng)沒有相同的模型,所以用1個(gè)積分模型和1個(gè)限幅模型來代替原來的限幅積分模型,替換后將限幅模型的上限下限設(shè)置成與原模型相同。替換后的模型如圖4所示。
圖4 給定環(huán)節(jié)離散模型
模塊更換完成之后,再次對系統(tǒng)進(jìn)行仿真與分析,可以得到同樣的結(jié)果。這說明離散后控制系統(tǒng)的性能沒有損失。
由于目標(biāo)系統(tǒng)處理器F2812不是浮點(diǎn)處理器,雖然非浮點(diǎn)處理器也可以實(shí)現(xiàn)浮點(diǎn)運(yùn)算,但是以犧牲CPU效率為代價(jià)的,為了盡可能提高CPU利用率,可以將模型中的一部分轉(zhuǎn)換成定點(diǎn)模型,之所以是一部分,是因?yàn)镸atlab模型定點(diǎn)化并不是支持所有的模塊。
有2種方法可以將浮點(diǎn)模型轉(zhuǎn)成定點(diǎn)模型進(jìn)行信號(hào)處理:①手動(dòng)設(shè)定字長,再借助Fixed-Point Tool工具檢查設(shè)置是否滿足設(shè)計(jì)要求,如果在運(yùn)算過程中變量發(fā)生溢出,則用Fixed-Point Tool工具自動(dòng)定標(biāo);②利用Fixed-Point Advisor工具自動(dòng)定標(biāo),再借助Fixed-Point Tool工具進(jìn)一步優(yōu)化定標(biāo),本文采用了這種方法完成了模型的定點(diǎn)處理。
模型定點(diǎn)化之后,需要對定點(diǎn)的結(jié)果進(jìn)行評估驗(yàn)證,這時(shí)可以采用 Fixed-Point Tool。Fixed-Point Tool工具支持對數(shù)據(jù)進(jìn)行手動(dòng)定標(biāo)以及對定標(biāo)后的數(shù)據(jù)和系統(tǒng)性能進(jìn)行分析。由于前面已經(jīng)使用Fixed-Point Advisior工具進(jìn)行了自動(dòng)定標(biāo),這里主要對定標(biāo)的結(jié)果進(jìn)行性能分析和驗(yàn)證。
分析驗(yàn)證的主要方法是對比定標(biāo)前和定標(biāo)后的系統(tǒng)性能。首先選擇待記錄的數(shù)據(jù)并對系統(tǒng)進(jìn)行仿真,以記錄數(shù)據(jù),這里的記錄分2步,分別記錄浮點(diǎn)模型的數(shù)據(jù)(作為對比的參照)和定標(biāo)后的數(shù)據(jù)。然后將二者之間進(jìn)行對比、分析。圖5為wr的對比圖。從圖5中可以看出模型定點(diǎn)化之后,控制的結(jié)果幾乎是一樣的。
圖5 wr對比圖
在做完前面的工作之后,接下來要準(zhǔn)備進(jìn)行代碼生成。Matlab與幾大公司合作推出的目標(biāo)支持包Target Support Package可以為代碼生成帶來幾大便利。
目標(biāo)支持包支持為各種微處理器、控制器及DSP執(zhí)行從Matlab模型產(chǎn)生代碼。這使用戶花費(fèi)更少的精力在生成代碼的修改上,甚至不需要修改就可以在目標(biāo)系統(tǒng)上執(zhí)行。利用目標(biāo)支持包,可以整合周邊設(shè)備和實(shí)時(shí)操作系統(tǒng)與Matlab創(chuàng)建的算法模型、Stateflow狀態(tài)圖及Embeded Matlab語言子集,而無需編寫驅(qū)動(dòng)程序和運(yùn)行時(shí)的代碼。由此產(chǎn)生的可執(zhí)行文件可應(yīng)用到嵌入式硬件,進(jìn)行目標(biāo)快速原形設(shè)計(jì),實(shí)時(shí)性能分析以及現(xiàn)場生產(chǎn)。
本文中控制系統(tǒng)的輸入有電機(jī)的轉(zhuǎn)速、接收設(shè)定轉(zhuǎn)速,這2個(gè)分別用支持包中的QEP和SCI RCV模塊來處理,而控制系統(tǒng)的輸出用GPIO模塊來處理。應(yīng)用支持包后的控制系統(tǒng)如圖6所示。
需要說明的是,如果輸入輸出在目標(biāo)支持包中沒有對應(yīng)的模塊,可以利用RTW Toolbox或SFunction編寫硬件的驅(qū)動(dòng)模塊,再將它加入目標(biāo)支持包中。
圖6 應(yīng)用目標(biāo)支持包后的控制系統(tǒng)
接下來可以生成代碼了,在執(zhí)行代碼生成之前,可以先利用Embedded IDE Link建立Matlab與CCS IDE的連接。這樣做的好處是,生成代碼的同時(shí)會(huì)生成對應(yīng)的工程,并且在CCS顯示工程的同時(shí)將工程生成可執(zhí)行文件,通過仿真器下載到DSP中。
將前面生成的可執(zhí)行代碼,通過IDE環(huán)境下載到目標(biāo)板上,將目標(biāo)板連接到驅(qū)動(dòng)板,驅(qū)動(dòng)板通過電源接入電機(jī)。啟動(dòng)電源,可以看到通過Matlab開發(fā)的程序可以很好地完成控制任務(wù)。開機(jī)時(shí)將設(shè)定轉(zhuǎn)速設(shè)為 1 400,電機(jī)在1 s內(nèi)達(dá)到1 401,改變設(shè)定轉(zhuǎn)速后,電機(jī)也可以快速地跟蹤設(shè)定轉(zhuǎn)速。關(guān)掉電源,將一個(gè)飛輪接到電機(jī)轉(zhuǎn)軸上,再次進(jìn)行實(shí)驗(yàn),電機(jī)在2 s內(nèi)啟動(dòng)到1 400。實(shí)驗(yàn)結(jié)果證明,轉(zhuǎn)差率控制的電機(jī)控制系統(tǒng)可以較好地實(shí)現(xiàn)電機(jī)轉(zhuǎn)速控制功能,也可以使電機(jī)自適應(yīng)扭矩的變化,與在模型仿真時(shí)的效果一致。
除了上面介紹的之外,在開發(fā)過程中,還可以使用model advisor對模型進(jìn)行檢查、使用SIL進(jìn)行軟件在環(huán)測試、硬件在環(huán)測試。所有這些工具使開發(fā)結(jié)果的可靠性得到大大提高。
應(yīng)用Matlab進(jìn)行系統(tǒng)建模并在此基礎(chǔ)上進(jìn)行程序的開發(fā)可以大大提高開發(fā)效率,工程師可以將主要精力放在模型的建立上而不是代碼的編寫上。系統(tǒng)的測試不需要等到產(chǎn)品樣例制作完成之后才能進(jìn)行,而是在開發(fā)過程中隨時(shí)都可以進(jìn)行?;谀P偷拈_發(fā)方式從經(jīng)濟(jì)性、可靠性、開發(fā)效率上都優(yōu)于傳統(tǒng)方法。
[1]Documentation for MathWorks Products,R2010a[EB/OL].[2010-01-12]. http://www.mathworks.com/access/helpdesk/help/helpdesk.html.
[2]The MathWorks.Inc.Embedded IDE Link 4 User’s Guide For Use with Texas Instruments’Code Composer Studio[Z].[S.l.]:The MathWorks,2009.
[3]The Math Works.Inc.Embedded MATLAB User’s Guide[Z].[S.l.]:The Math Works,2010.
[4]The Math Works.Inc.Real-Time Workshop 7 User’s Guide[Z].[S.l.]:The Math Works,2010.
[5]The Math Works.Inc.Real-Time Workshop Embedded Coder 5 User’s Guide[Z].[S.l.]:The Math Works,2010.
[6]The MathWorks.Inc.Target Support Package 4 User's Guide For Use with Texas Instruments C2000[Z].[S.l.]:The MathWorks,2010.
[7]General Motors Powertrain.Automatic Code Generation Process[EB/OL].[2010-02-03].http://www.mathworks.com/'automotive/iac/presentations/michaels.pdf.
[8]陳陽,徐曉光,陳躍東.基于嵌入式系統(tǒng)的電能采集終端設(shè)計(jì)與實(shí)現(xiàn)[J].重慶理工大學(xué)學(xué)報(bào):自然科學(xué)版,2011(2):97-101.
[9]陳明,全厚德,寇超.嵌入式系統(tǒng)中低速組網(wǎng)協(xié)議的研究與設(shè)計(jì)[J].四川兵工學(xué)報(bào),2010(6):74 -76.
[10]蔣承延,賈晅.基于USB的嵌入式遠(yuǎn)程視頻監(jiān)控系統(tǒng)設(shè)計(jì)[J].重慶工商大學(xué)學(xué)報(bào):自然科學(xué)版,2009(6):558-562.