摘 要:為了提高伺服系統(tǒng)的性能,在分析伺服結(jié)構(gòu)的基礎(chǔ)上,分別采用μC/OS-Ⅱ和TI公司的DSP/BIOS嵌入式操作系統(tǒng)進行了某無刷電機伺服系統(tǒng)的軟件開發(fā)。介紹了系統(tǒng)設(shè)計的硬件組成、軟件結(jié)構(gòu)及運行過程,并對所設(shè)計的伺服系統(tǒng)軟件進行了測試,結(jié)果表明,所開發(fā)軟件滿足伺服控制要求,并對這兩種操作系統(tǒng)在設(shè)計中的使用給出建議。
關(guān)鍵詞:伺服系統(tǒng);無刷電機;嵌入式操作系統(tǒng);μC/OS-Ⅱ;DSP/BIOS
中圖分類號:TJ765 文獻標(biāo)識碼:A 文章編號:1673-5048(2013)05-0045-03
ServoSoftwareDesignBasedonEmbeddedOperationSystem
SONGYang1,ZHUPeihong2,YUEHongda2,NIUZhen2
(1.AviationTechnologyGuaranteeBranchofNED,Beijing100481,China;
2.ChinaAirborneMissileAcademy,Luoyang471009,China)
Abstract:Onthebasisofanalyzingtheconfigrationofservo,respectivelybasedonembeddedoperatingsystemμC/OSⅡandTI’sDSP/BIOS,abrushlessmotorservosystemsoftwaredesignisdonetoimprovesystemperformance.Thisarticlebrieflyintroducesthehardwarecomposition,thesoftwarestructure andoperationprocess.Systemtestresultsshowthecorrectnessofthesoftwaredesign,andsomesuggestionsonhowtousethetwooperatingsystemsindesigningaregivenintheend.
Keywords:servosystem;brushlessmotor;embeddedoperatingsystem;μC/OSⅡ;DSP/BIOS
0 引 言
傳統(tǒng)的空空導(dǎo)彈伺服控制以模擬控制為主,近年來數(shù)字伺服控制得到了迅速的發(fā)展,無刷電機及軟件在導(dǎo)彈伺服系統(tǒng)中的應(yīng)用,提高了伺服系統(tǒng)的性能,是發(fā)展中的主流。由于軟件的引入,也使伺服系統(tǒng)的設(shè)計增加嵌入式軟件研制的內(nèi)容。
伺服軟件是伺服系統(tǒng)的神經(jīng)中樞,為確保其研制質(zhì)量,除做好軟件的工程化開發(fā)和管理外,選擇適當(dāng)?shù)能浖_發(fā)環(huán)境也會取得事半功倍的效果。傳統(tǒng)的嵌入式軟件系統(tǒng)可以稱為前、后臺系統(tǒng),基于嵌入式系統(tǒng)開發(fā)的軟件系統(tǒng)則體現(xiàn)多任務(wù)運行的特點。改變傳統(tǒng)開發(fā)方式,在嵌入式操作系統(tǒng)下進行伺服軟件開發(fā)是否具有一定的優(yōu)越性呢?本文以某伺服系統(tǒng)為背景,在嵌入式操作系統(tǒng)下對伺服系統(tǒng)軟件開發(fā)進行了一些嘗試,以探索其優(yōu)越性。
1 伺服系統(tǒng)結(jié)構(gòu)
某伺服系統(tǒng)由主要TMS320F2812、組合邏輯電路、三相橋功率變換電路、電流采樣及角位置檢測電路、點火、轉(zhuǎn)級控制電路及傳動機構(gòu)等構(gòu)成。系統(tǒng)有兩個獨立運動的通道,兩個通道的結(jié)構(gòu)相同,由一片F(xiàn)2812進行控制,系統(tǒng)主要硬件結(jié)構(gòu)如圖1所示。系統(tǒng)通過F2812的SCI接口接收控制指令;通過位置采樣獲得通道位置信息,輸出的PWM和DIR信號控制各功率管有序?qū)ㄊ篃o刷電機旋轉(zhuǎn);輸出點火、轉(zhuǎn)級控制信號使能點火、轉(zhuǎn)級控制電路;通過SCI接口反饋系統(tǒng)狀態(tài)信息。
2 嵌入式操作系統(tǒng)
常用的嵌入式實時操作系統(tǒng)有μC/OS-Ⅱ、VxWorks、Real-TimeLinux等,TI公司在其DSP集成開發(fā)環(huán)境CCS中也提供了一種簡易嵌入式操作系統(tǒng)DSP/BIOS。由于本文設(shè)計系統(tǒng)的微處理器采用的是F2812且未配置片外存儲器,考慮到資源情況和移植的難易程度,使用μC/OS-Ⅱ和DSP/BIOS進行了伺服軟件開發(fā)的嘗試。
2.1 μC/OS-Ⅱ操作系統(tǒng)及移植
μC/OS-Ⅱ是多任務(wù)、可剝奪型的實時操作系統(tǒng),其內(nèi)核只有任務(wù)管理和任務(wù)調(diào)度,無文件系統(tǒng)、界面系統(tǒng)、外設(shè)管理等。常用的μC/OS-Ⅱ能管理64個任務(wù),并提供任務(wù)調(diào)度與管理、內(nèi)存管理、任務(wù)間同步與通信、時間管理和中斷服務(wù)等功能,具有執(zhí)行效率高、占用空間小、實時性能優(yōu)良和移植簡單等特點。
在F2812上應(yīng)用μC/OS-Ⅱ,需要進行系統(tǒng)移植,移植的主要難點是編寫任務(wù)切換函數(shù)。常用的任務(wù)切換函數(shù)是一個中斷處理函數(shù),該函數(shù)首先將要被掛起任務(wù)的CPU寄存器及程序返回地址推入任務(wù)棧,保存現(xiàn)場,然后將準(zhǔn)備就緒的最高優(yōu)先級任務(wù)寄存器值從任務(wù)棧中恢復(fù)到寄存器中,使其進入運行態(tài)。任務(wù)切換函數(shù)可以用F2812的陷阱中斷TRAP指令觸發(fā)調(diào)用。F2812 CPU有近20個寄存器,TRAP指令觸發(fā)的中斷及中斷退出時會自動保存和恢復(fù)ST0,AL,AH,PL,PH,AR0,AR1,ST1,DP,IER,DBGSTAT寄存器和程序返回地址。按照任務(wù)切換的要求,還需手工保存和恢復(fù)RPC,AR1H,AR0H,XAR2~XAR7,XT,ST1寄存器。任務(wù)級的任務(wù)切換示意性代碼如下:
_OSCtxSw:
將RPC,AR1H,AR0H,XAR2~XAR7,XT,ST1推入當(dāng)前堆棧
OSTCBCur->OSTCBStkPtr=SP OSTCBCur=OSTCBHighRdy OSPrioCur=OSPrioHighRdy
SP=OSTCBHighRdy->OSTCBStkPtr將RPC,AR1H,AR0H,XAR2~XAR7,XT,ST1從新堆棧中彈出IRET
2.2 DSP/BIOS操作系統(tǒng)
DSP/BIOS是一個簡易的嵌入式操作系統(tǒng),是DSP集成開發(fā)環(huán)境CCS提供的一套工具,無需移植即可直接應(yīng)用。DSP/BIOS主要包括以下組成部分:
(1)DSP/BIOS配置工具。該工具可用來創(chuàng)建和配置在應(yīng)用程序中使用的DSP/BIOS內(nèi)核對象、存儲器、線程及優(yōu)先權(quán);
(2)DSP/BIOS系統(tǒng)分析工具。系統(tǒng)分析工具可以對應(yīng)用程序進行各種類型的實時跟蹤,以了解應(yīng)用程序的運行狀態(tài)和時間;
(3)DSP/BIOS實時內(nèi)核與API,通過調(diào)用API函數(shù)應(yīng)用程序?qū)崿F(xiàn)多任務(wù)調(diào)度和運行;
(4)芯片支持庫。用于簡化片上外設(shè)的配置和管理。遺憾的是,各版本的DSP/BIOS并未為F2812提供芯片支持庫。
應(yīng)用DSP/BIOS編制的程序主要特點是多線程調(diào)度及運行。DSP/BIOS支持4種不同優(yōu)先級的線程:硬件中斷(HWI)、軟件中斷(SWI)、任務(wù)線程(TSK)、后臺線程(IDL)。它們的優(yōu)先級即實時性依次從高到低。任務(wù)線程與軟件中斷的區(qū)別在于每個任務(wù)線程都有自己的堆棧,因而占用存儲容量較多;任務(wù)間支持同步和通訊,一個任務(wù)可以掛起,直到必需的條件得到滿足,才得以繼續(xù)運行,軟件中斷則做不到這一點。
基于DSP/BIOS的軟件開發(fā)過程如下:
(1)用配置工具建立應(yīng)用程序要用到的對象,如硬件中斷、軟件中斷和任務(wù)等;
(2)保存配置文件,系統(tǒng)會生成編譯和鏈接應(yīng)用程序時需要的庫文件;
(3)創(chuàng)建一個新的cmd文件,定義需要附加連接的段,DSP/BIOS允許在一個工程中有多個cmd文件;
(4)編寫應(yīng)用程序,可以使用C、C++、匯編語言;
(5)在CCS環(huán)境下編譯并鏈接程序;
(6)使用仿真器和DSP/BIOS分析工具來測試應(yīng)用程序;
(7)軟件開發(fā)好后,修改配置文件以支持硬件,并進行測試。
3 基于操作系統(tǒng)的軟件設(shè)計實現(xiàn)
依據(jù)需求分析,本伺服系統(tǒng)軟件須具備的功能有:接收指令并解碼;位置采樣,對系統(tǒng)輸出位置進行控制;依據(jù)指令要求,完成3種類型的自檢及點火、轉(zhuǎn)級控制;編碼系統(tǒng)狀態(tài)信息并輸出。分解相關(guān)要求形成如表1所示任務(wù)線程表,并編寫對應(yīng)的程序。
伺服系統(tǒng)軟件運行過程為:
(1)系統(tǒng)初始化后,各任務(wù)處于掛起態(tài);
(2)500μs的位置控制中斷輸出上一周期運算得到的PWM、DIR信號、采樣位置,并計算本次的PWM及DIR值,發(fā)出啟動接收指令、解碼任務(wù)線程的消息;
(3)接收指令、解碼任務(wù)線程經(jīng)SCI接收指令并進行解碼,獲得各通道位置要求值,并依據(jù)不同的指令要求,向?qū)?yīng)任務(wù)發(fā)出消息;
(4)各任務(wù)收到消息后,由掛起態(tài)轉(zhuǎn)入運行態(tài),執(zhí)行任務(wù)。
因為DSP/BIOS中的硬、軟件線程實時性要高于任務(wù),因此,采用DSP/BIOS操作系統(tǒng)時,對不需要在運行中掛起的任務(wù)選擇了軟件中斷線程。
4 軟件在片內(nèi)Flash運行的配置
基于DSP/BIOS的軟件通常采用仿真器在RAM中開發(fā)調(diào)試,最終脫離開發(fā)環(huán)境駐留在Flash運行時需要調(diào)整一些配置。
(1)MEM-MemorySectionManager屬性的5個選項卡應(yīng)配置如下:General卡各項配置到RAM;BIOSData卡除DSP/BIOSInitTables(.gblinit)項配置到Flash外,其余配置到RAM;BIOS Code卡除InterruptServiceTableMemory(.hwi_vec)項配置到PIEVECTRAM(0xd00開始)外,其余配置到Flash;CompilerSections卡除CVariables Section(.bss)、(.ebss),DataSection(.Cio)3項配置到RAM外,其余配置到Flash;LoadAddress卡所有項配置到Flash;
(2)將.hwi_vec段從加載地址拷貝到運行地址??截愡^程放在Main()中,DSP/BIOS會生成一些全局符號幫助確定加載地址、運行地址和.hwi_vec段的長度。編譯器運行支持庫包含一個內(nèi)存拷貝函數(shù)memcpy(),可以完成這個任務(wù)。具體程序如下:
EALLOW;
memcpy(&hwi_vec_run_start,&hwi_vec_run_loadstart,&hwi_vec_run_loadend-&hwi_vec_run_loadstart);
EDIS;
(3)將.trcdata段從加載地址拷貝到運行地址。與.hwi_vec段不同,拷貝.trcdata段必須在main()之前進行。為在main()之前執(zhí)行拷貝和DSP/BIOS初始化,配置工具提供了一個初始化函數(shù),在System_GlobalSettings的Properties中選擇CallUserInitFunction,并在UserInitFunction輸入框內(nèi)輸入UserInit,對應(yīng)的拷貝程序如下:
VoidUserInit(void)
{
memcpy(&trcdata_runstart,&trcdata_loadstart,&trcdata_loadend-&trcdata_loadstart)
}
(4)在新的cmd文件中設(shè)置需要在RAM中運行的程序段加載地址和運行地址的鏈接命令。
5 切換時間的比較
多任務(wù)切換及運行的缺點主要是需占用一定的存儲器和CPU資源,為比較μC/OS-Ⅱ和DSP/BIOS在任務(wù)切換時所需的時間,對本軟件一些切換時間進行了粗略的測試和估計。本系統(tǒng)CPU時鐘為100MHz,測試結(jié)果為μC/OS-Ⅱ任務(wù)間切換時間約為2.4μs(程序在RAM中運行)或3.2μs(程序在Flash中運行);DSP/BIOS由硬件中斷切換到軟件中斷3.97μs,軟件中斷切換到軟件中斷7.35μs,任務(wù)線程切換到軟件中斷10.03μs(DSP/BIOS內(nèi)核在ROM中運行)。(下轉(zhuǎn)第57頁)
6 結(jié)論與建議
對所開發(fā)的實際系統(tǒng)進行了要求項目的功能和性能測試,測試結(jié)果表明系統(tǒng)功能及時域和頻域性能指標(biāo)均處在要求的范圍內(nèi),由此認為,基于嵌入式操作系統(tǒng)開發(fā)的伺服系統(tǒng)軟件可以滿足系統(tǒng)的控制要求。
傳統(tǒng)的前、后臺軟件開發(fā)方式完全可以滿足伺服系統(tǒng)軟件的開發(fā)且運行效率較高,但在操作系統(tǒng)下開發(fā)軟件可以提高開發(fā)效率,特別是復(fù)雜的應(yīng)用程序,將整個軟件分解成多個任務(wù)線程分別開發(fā)時不必考慮其他任務(wù)線程的影響,符合軟件工程的解耦原則。同時,軟件的結(jié)構(gòu)清晰,易于維護和管理。主要缺點是增加了額外的系統(tǒng)存儲資源和CPU負荷。對F2812而言,由于DSP/BIOS不必移植,操作系統(tǒng)的API函數(shù)均作為庫函數(shù)提供,因而具有高的可靠性,無特殊要求時應(yīng)優(yōu)先采用,當(dāng)對實時性有較高要求時則可采用μC/OS-
Ⅱ。如DSP/BIOS的內(nèi)核API函數(shù)也能在RAM中運行時,最好選擇DSP/BIOS。
參考文獻:
[1]吳永忠,程文娟,鄭淑麗,等.嵌入式實時操作系統(tǒng)μC/OS-Ⅱ教程[M].西安:西安電子科技大學(xué)出版社,2007.
[2]LabrosseJJ.嵌入式實時操作系統(tǒng)μC/OS-Ⅱ[M].2版.邵貝貝,等譯.北京:北京航空航天大學(xué)出版社,2003.
[3]彭啟琮,管慶.DSP集成開發(fā)環(huán)境—CCS及DSP/BIOS的原理與應(yīng)用[M].北京:電子工業(yè)出版社,2004.
[4]AlterMD.RunninganApplicationfromInternalFlash MemoryontheTMS320F28xxxDSP[M].TISPRA958H,2008.
[5]蘇奎峰,呂強,常天慶,等.TMS320X281xDSP原理及C程序開發(fā)[M].北京:北京航空航天大學(xué)出版社,2008.
[6]曹磊范彩霞.基于DSP/BIOS的門禁系統(tǒng)設(shè)計與實現(xiàn)[J].計算機時代,2010(6):26-28.