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