趙萬(wàn)良,趙 俊,劉勝忠,戎蒙恬
(1.上海交通大學(xué) 電子信息與電氣工程學(xué)院,上海 200030;2.上海航天控制工程研究所,上海 200233)
反作用飛輪是衛(wèi)星的關(guān)鍵執(zhí)行機(jī)構(gòu)之一,它接收計(jì)算機(jī)的控制指令,通過(guò)對(duì)輪體的加減速產(chǎn)生反作用力矩,與衛(wèi)星本體進(jìn)行動(dòng)量交換,從而精確控制衛(wèi)星姿態(tài)。反作用飛輪控制系統(tǒng)是一個(gè)直流無(wú)刷電機(jī)控制系統(tǒng),常用的反作用飛輪控制器電路普遍采用單片機(jī)或數(shù)字信號(hào)處理器(DSP)作為中央控制器。如國(guó)內(nèi)某15 N?m?s反作用飛輪,以單片機(jī)為中央控制器,能較好地滿足零動(dòng)量控制衛(wèi)星精確控制姿態(tài)要求,已在多顆衛(wèi)星中使用。但該類控制器除中央控制器外還需要傳感器信號(hào)處理電路、電機(jī)控制電路等模擬或數(shù)字電路的支持,電路復(fù)雜,不易采用小型化設(shè)計(jì)。近年來(lái),隨著衛(wèi)星技術(shù)特別是小衛(wèi)星技術(shù)的發(fā)展,要求反作用飛輪盡可能小而輕。對(duì)一體化反作用飛輪(控制器線路與轉(zhuǎn)動(dòng)部件合為一個(gè)單機(jī))來(lái)說(shuō),小型化的主要難點(diǎn)是控制器線路的小型化。而FPGA技術(shù)及可編程片上系統(tǒng)的SOPC技術(shù)可滿足此種需求。在國(guó)外,FPGA已廣泛用于各類衛(wèi)星、航天飛機(jī)和宇宙飛船;在國(guó)內(nèi),SOPC技術(shù)在民用產(chǎn)品中有廣泛應(yīng)用。本文對(duì)基于FPGA的反作用飛輪控制器設(shè)計(jì)進(jìn)行了研究。
MicroBlaze軟核是一種針對(duì)Xilinx公司FPGA器件設(shè)計(jì)的功能強(qiáng)大的標(biāo)準(zhǔn)32位精簡(jiǎn)指令集計(jì)算機(jī)(RISC)處理器[1]。在FPGA內(nèi)實(shí)現(xiàn)約占用400 Sliecs資源。用EDK軟件在可編程器件中進(jìn)行配置,具較強(qiáng)的靈活性。
MicroBlaze處理器體系結(jié)構(gòu)如圖1所示。與大多數(shù)RISC處理器相同,Mciorblaze有程序計(jì)數(shù)器、指令緩沖區(qū)、指令譯碼、加減運(yùn)算、邏輯運(yùn)算、移位和乘法器等。內(nèi)部有通用寄存器32個(gè)和專用寄存器(PC指針和MSR狀態(tài)標(biāo)志寄存器)2個(gè),均為32位。指令字長(zhǎng)32位,支持3個(gè)操作數(shù)和寄存器-寄存器與寄存器-立即數(shù)尋址2種方式;指令按功能劃分為邏輯運(yùn)算、算術(shù)運(yùn)算、分支、存儲(chǔ)器讀/寫和特殊指令等。MicroBlaze還有指令和數(shù)據(jù)緩存(Cache),指令執(zhí)行分為三級(jí)流水線,分別為取指、譯碼、執(zhí)行。MicroBlaze處理器采用哈佛結(jié)構(gòu)的獨(dú)立總線結(jié)構(gòu),包括本地塊存儲(chǔ)器總線(LMB)、片內(nèi)外設(shè)總線(OPB)和8位輸入8位輸出快速鏈路接口總線(FSL),可響應(yīng)軟件和硬件中斷,進(jìn)行異常處理,通過(guò)外加控制邏輯可擴(kuò)展外部中斷[2]。本文使用6.3版EDK工具進(jìn)行開發(fā)。
圖1 MicroBlaze處理器結(jié)構(gòu)Fig.1 Block diagram of MicroBlazecore
反作用飛輪控制器主要功能是精確控制直流無(wú)刷電機(jī)的電流和轉(zhuǎn)速,故控制器采用速度、電流雙環(huán)控制系統(tǒng)。反作用飛輪控制器組成如圖2所示。其中:控制器將Mciroblaze及其外圍模塊、deltasigma A/D轉(zhuǎn)換器、直流無(wú)刷電機(jī)控制器嵌入一片F(xiàn)PGA;電流采集電路檢測(cè)電機(jī)電流,通過(guò)隔離電路送至FPGA內(nèi)部的A/D轉(zhuǎn)換器采集電流,在FPGA內(nèi)部形成電流閉環(huán)控制;光電編碼器檢測(cè)電機(jī)位置,輸出位置脈沖信號(hào)送FPGA計(jì)數(shù)、運(yùn)算,形成速度閉環(huán)控制。此外,光電編碼器檢測(cè)直流無(wú)刷電機(jī)運(yùn)轉(zhuǎn)時(shí)的角位移和旋轉(zhuǎn)方向,同時(shí)還提供電機(jī)位置信號(hào),供直流無(wú)刷電機(jī)換向使用;隔離電路使用運(yùn)算放大器隔離電路;串行通信使用RS 422電平;A/D轉(zhuǎn)換器使用EDK工具中自帶的可集入FPGA的deltasigma A/D轉(zhuǎn)換器。
圖2 反作用飛輪控制器組成Fig.2 Structureof The controller
FPGA內(nèi)部模塊如圖3所示。其中:UART控制器負(fù)責(zé)與上位機(jī)通信,將上位機(jī)發(fā)送的轉(zhuǎn)速指令nF送至中央處理器(CPU),并將飛輪信息返回上位機(jī);deltasigma A/D轉(zhuǎn)換器采集電機(jī)電流Im,通過(guò)OPB總線送至CPU;速度檢測(cè)模塊檢測(cè)光電編碼器信號(hào),所得反作用飛輪的轉(zhuǎn)速脈沖計(jì)數(shù)值nM和方向信號(hào)DIR送直流無(wú)刷電機(jī)控制器,由直流無(wú)刷電機(jī)控制器通過(guò)OPB總線饋送CPU;CPU軟件通過(guò)nF,nM,Im,DIR進(jìn)行比例積分微分(PID)控制,向直流無(wú)刷電機(jī)控制器輸出控制值ΔI;直流無(wú)刷電機(jī)控制器由直流無(wú)刷電機(jī)位置譯碼模塊對(duì)電機(jī)位置信號(hào)進(jìn)行譯碼,形成直流無(wú)刷電機(jī)控制時(shí)序,再根據(jù)ΔI進(jìn)行脈寬調(diào)制(PWM),產(chǎn)生電機(jī)驅(qū)動(dòng)信號(hào)驅(qū)動(dòng)電機(jī)驅(qū)動(dòng)電路,由此完成一個(gè)反作用飛輪的控制周期。
MicroBlaze軟核處理器的開發(fā)流程如圖4所示。圖中:硬件設(shè)計(jì)(圖左側(cè))與軟件設(shè)計(jì)(圖右側(cè))通過(guò)Data2BRAM連接。Data2BRAM提供了一種簡(jiǎn)便方法以修改Block RAM內(nèi)容而無(wú)需預(yù)編譯整個(gè)設(shè)計(jì)[3]。
圖4 MicroBlaze軟硬件開發(fā)流程Fig.4 MicroBlaze software and hardwaredevelopment flow
1.3.1 硬件設(shè)計(jì)
在配置外設(shè)前先設(shè)計(jì)自定義IP核,可在EDK工具提供的IP核基礎(chǔ)上開發(fā),或利用EDK工具進(jìn)行全新的IP核開發(fā)。EDK軟件中有Create Import Peripheral向?qū)?可幫助設(shè)計(jì)者完成一個(gè)定制的IP核模板[4]。該模板采用超高速硬件描述語(yǔ)言(VHDL)設(shè)計(jì),設(shè)計(jì)僅是在生成的文件中修改或添加程序。用該向?qū)н€可創(chuàng)建ISE工程文件,方便地將IP核導(dǎo)入ISE中進(jìn)行修改、仿真。若有需要還可在ISE環(huán)境中用Xilinx公司的片內(nèi)邏輯分析儀(chipscope)調(diào)試硬件。本文設(shè)計(jì)中僅有直流無(wú)刷電機(jī)控制器IP核需全新設(shè)計(jì),IP核通過(guò)IP界面(IPIF)與OPB總線連接。
反作用飛輪控制器需添加的主要IP核見(jiàn)表1。添加IP核后還需對(duì)各IP核與OPB的連接關(guān)系、地址、端口和參數(shù)進(jìn)行配置。在EDK工具的集成開發(fā)環(huán)境XPS中,通過(guò)微處理器硬件規(guī)范(MHS)文件和微處理器外圍設(shè)備描述(MPD)文件定義包括MicroBlaze處理器軟核的整個(gè)硬件系統(tǒng)。其中,MHS文件定義了嵌入式系統(tǒng)的總線結(jié)構(gòu)、外設(shè)、處理器、系統(tǒng)連接、中斷請(qǐng)求配置和地址空間映射等硬件配置結(jié)構(gòu),該文件還包含了外圍設(shè)備的輸入輸出端口及參數(shù)。EDK工具開發(fā)環(huán)境中有IP核添加/修改向?qū)?Add/Edit Cores)工具,在圖形界面中進(jìn)行IP核添加、修改IP核操作。所有操作均直接與MHS文件關(guān)聯(lián),用戶也可直接修改MHS文件,但建議在Add/Edit Cores工具中修改,以防因考慮不周而出錯(cuò)。
完成上述操作后,硬件平臺(tái)即構(gòu)建完成。結(jié)合用戶約束ucf文件對(duì)整個(gè)系統(tǒng)進(jìn)行綜合和布局布線。如有需要,可用硬件仿真模型產(chǎn)生器(SimGen)產(chǎn)生仿真模型,用Active-HDL等仿真軟件進(jìn)行硬件仿真。
表1 反作用飛輪控制器主要IP核Tab.1 Primary IP coreof reaction wheel controller
1.3.2 軟件設(shè)計(jì)
軟件設(shè)計(jì)分為驅(qū)動(dòng)層和應(yīng)用層兩個(gè)層次。MicroBlaze處理器通過(guò)驅(qū)動(dòng)程序?qū)ν獠磕K進(jìn)行操作,該驅(qū)動(dòng)程序即為驅(qū)動(dòng)層軟件。對(duì)EDK工具提供的IP核,Xilinx公司提供的驅(qū)動(dòng)程序也分為底層和高層兩個(gè)層次??筛鶕?jù)需要選擇合適的API函數(shù)編寫應(yīng)用程序,API函數(shù)可以在API Doc中查閱。自己開發(fā)IP核時(shí),需編寫相應(yīng)的驅(qū)動(dòng)程序,EDK工具在創(chuàng)建IP核模板同時(shí)創(chuàng)建了與該IP核名稱相應(yīng)的頭文件和C語(yǔ)言文件,用戶在這些文件中修改即可完成驅(qū)動(dòng)程序設(shè)計(jì)。EDK軟件提供S/W settings...工具,可用此工具設(shè)置各個(gè)IP核的軟件,所有的設(shè)置均直接與微處理器軟件描述(MSS)文件關(guān)聯(lián)。MSS文件用于描述軟件體系結(jié)構(gòu),它主要定義了系統(tǒng)的內(nèi)核、軟件庫(kù)、驅(qū)動(dòng)程序和文件系統(tǒng)的參數(shù)。與MHS文件相同,MSS文件也可手動(dòng)修改。
應(yīng)用層軟件即為反作用飛輪控制軟件。它在驅(qū)動(dòng)層的基礎(chǔ)上編寫算法程序,完成整個(gè)反作用飛輪的控制。反作用飛輪軟件主流程如圖5所示。反作用飛輪軟件通過(guò)定時(shí)器中斷完成電機(jī)電流和光電編碼器脈沖的采集;在串口中斷程序中接收上位機(jī)的轉(zhuǎn)速指令;在主程序中對(duì)上述兩個(gè)中斷采集的電機(jī)電流、光電編碼器脈沖、上位機(jī)轉(zhuǎn)速指令進(jìn)行必要的運(yùn)算,編制PID算法,對(duì)速度和電流進(jìn)行PID控制。該軟件主流程與單片機(jī)或DSP為核心的反作用飛輪軟件主流程一致,程序代碼用C語(yǔ)言編寫。
圖5 反作用飛輪軟件主流程Fig.5 Main flowchart of reaction wheel software
XPS所集成的軟件工程管理工具允許在一個(gè)硬件平臺(tái)上同時(shí)開發(fā)多個(gè)軟件工程。但編譯時(shí)只允許選用其中一個(gè)。完成軟件代碼編寫后,通過(guò)EDK工具集成的XMD和GDB調(diào)試器對(duì)代碼進(jìn)行仿真和調(diào)試,也可配合ChipScope進(jìn)行硬件及軟件的協(xié)同調(diào)試。XMD通過(guò)微處理器調(diào)試(MDM)模塊和JTAG口連接目標(biāo)板上的CPU,GDB可對(duì)程序進(jìn)行單步調(diào)試或斷點(diǎn)設(shè)置。軟件調(diào)試完成后調(diào)用EDK工具中的GNU工具進(jìn)行編譯。程序編譯后生成為elf文件,通過(guò)Update bitstream工具將程序與硬件配置文件合成為Download.bit文件,下載到目標(biāo)板。FPGA先根據(jù)硬件配置信息建立硬件系統(tǒng),并將程序代碼映射至片內(nèi)BRAM,然后啟動(dòng)MicroBlaze,運(yùn)行程序。
與傳統(tǒng)反作用飛輪控制器相比,本文反作用飛輪控制器在FPGA片內(nèi)實(shí)現(xiàn)了電流環(huán)、電機(jī)控制的高度集成。本文反作用飛輪控制器的關(guān)鍵如下。
a)片內(nèi)電流環(huán)實(shí)現(xiàn)
傳統(tǒng)反作用飛輪控制器電流環(huán)均用模擬電路實(shí)現(xiàn),CPU需通過(guò)數(shù)/模(D/A)轉(zhuǎn)換將電流控制量轉(zhuǎn)換為模擬電壓給電流環(huán)控制,再由電流環(huán)控制電機(jī)控制專用芯片。本文設(shè)計(jì)將CPU、電流環(huán)和電機(jī)控制專用芯片都集入FPGA,避免了模擬式電流環(huán)所需的數(shù)字信號(hào)和模擬信號(hào)的相互轉(zhuǎn)換,實(shí)現(xiàn)全數(shù)字量控制。
b)直流無(wú)刷電機(jī)控制模塊
直流無(wú)刷電機(jī)控制模塊涉及光電編碼器信號(hào)處理、電機(jī)位置信號(hào)譯碼、PWM信號(hào)產(chǎn)生、電機(jī)控制(包括死區(qū)控制、電機(jī)異??刂?、IPIF和OPB總線等。該模塊實(shí)現(xiàn)了本設(shè)計(jì)中除MicroBlaze系統(tǒng)外的其他所有功能。
c)A/D轉(zhuǎn)換
因電機(jī)電流為模擬信號(hào),需通過(guò)A/D轉(zhuǎn)換成數(shù)字信號(hào)。本文設(shè)計(jì)采用可直接集成在FPGA中的deltasigma A/D轉(zhuǎn)換器,外圍只需加少量元器件。EDK工具提供專門的IP核。應(yīng)用此A/D轉(zhuǎn)換可避免外加A/D轉(zhuǎn)換器,既滿足系統(tǒng)需求,又顯著降低了系統(tǒng)軟硬件設(shè)計(jì)的復(fù)雜度。
制作反作用飛輪控制器原理樣機(jī)一套。其中:目標(biāo)芯片采用Xilinx公司Virtex系列30萬(wàn)門的XCV300 FPGA,系統(tǒng)時(shí)鐘頻率為16 MHz。反作用飛輪電機(jī)、輪體組件實(shí)際對(duì)接試驗(yàn)中取各組件參數(shù)為:電機(jī)力矩系數(shù)0.062 N?m/A,電機(jī)單相電阻0.49Ω,電機(jī)驅(qū)動(dòng)電壓28 V,輪體加電機(jī)轉(zhuǎn)動(dòng)慣量為0.040 9 kg?m2,結(jié)果表明:反作用飛輪控制器實(shí)現(xiàn)了反作用飛輪的控制要求。反作用飛輪控制器輸出至電機(jī)驅(qū)動(dòng)電路中的兩路脈沖寬度調(diào)制(PWM)波形輸出如圖6所示,試驗(yàn)時(shí)轉(zhuǎn)速如圖7所示。當(dāng)指令轉(zhuǎn)速為100 r/min時(shí),本文控制器控制的速度偏差小于±1 r/min。該誤差主要是電流采集誤差引起的。
圖6 PWM波形Fig.6 Wavef orm of PWM
圖7 反作用飛輪轉(zhuǎn)速Fig.7 Rotation speed of reaction wheel
本文介紹了一種使用MicroBlaze軟核設(shè)計(jì)的反作用飛輪控制器,在一片F(xiàn)PGA內(nèi)集成了多片專用芯片的功能,實(shí)現(xiàn)了反作用飛輪控制器小型化、集成化。與傳統(tǒng)反作用飛輪控制器相比,該控制器的電路體積和可靠性更優(yōu),且系統(tǒng)可靈活配置,能在不更改電路板條件下對(duì)硬件配置進(jìn)行適當(dāng)修改,如改型成動(dòng)量輪控制器、交流電機(jī)控制器等其他特定的電機(jī)控制器。本文設(shè)計(jì)對(duì)其他航天產(chǎn)品的小型化有一定的參考意義。
[1]Xilinx Company.Xilinx virtex data sheet[M].San Jos'e:Xilinx Company,2004.
[2]Xilinx Company.MicroBlaze processor reference guide(V4.0)[M].San Jos'e:Xilinx Company,2004.
[3]譚積洲,郭 濱.MicroBlaze軟核處理器在遙測(cè)數(shù)據(jù)采集中的應(yīng)用[J].信息與電子工程,2006,4(4):309-313.
[4]楊強(qiáng)浩.基于EDK的FPGA嵌入式系統(tǒng)開發(fā)[M].北京:機(jī)械工業(yè)出版社,2008.