丁玉葉,蘭盛昌,華 伊,李夢立,潘 瑞,徐國棟,
(1.哈爾濱工業(yè)大學電子與信息工程學院,150001 哈爾濱;2.哈爾濱工業(yè)大學 航天學院,150080 哈爾濱)
小衛(wèi)星PD姿態(tài)控制器IP核的FPGA實現(xiàn)
丁玉葉1,蘭盛昌2,華 伊1,李夢立2,潘 瑞1,徐國棟1,2
(1.哈爾濱工業(yè)大學電子與信息工程學院,150001 哈爾濱;2.哈爾濱工業(yè)大學 航天學院,150080 哈爾濱)
針對現(xiàn)代小衛(wèi)星在姿態(tài)控制系統(tǒng)中對運算速度、控制精度等方面提出的更高要求,分析了利用FPGA來實現(xiàn)衛(wèi)星姿態(tài)PD控制器的可行性,提出用輸入使能端及輸出標志符號對內(nèi)部各計算模塊進行控制以解決數(shù)據(jù)同步問題.利用硬件描述語言進行了各模塊功能的實現(xiàn),并最終例化為PD控制器IP核.結(jié)果表明該設計只需34個時鐘脈沖即可完成姿態(tài)控制力矩的計算,控制精度達到10-5量級,速度及精度滿足現(xiàn)代小衛(wèi)星對控制系統(tǒng)的要求.
衛(wèi)星姿態(tài)控制;FPGA;IP核;PD控制律
衛(wèi)星姿態(tài)控制系統(tǒng)是在軌衛(wèi)星保持特定姿態(tài)完成特定功能的重要保障,因此對衛(wèi)星姿態(tài)控制器輸出力矩的計算速度及精度有著較高的要求.
然而小衛(wèi)星在軌運行時,需要處理的數(shù)據(jù)多、任務復雜,加之中斷頻繁發(fā)生,使得單靠傳統(tǒng)處理器對姿態(tài)進行控制時,控制周期受到較大限制,性能難以大幅度提高.現(xiàn)代小衛(wèi)星體積小、重量輕、功耗低[1],如何在有限的資源及重量等方面的要求下設計出結(jié)構(gòu)簡單、計算速度快及可靠性高的姿態(tài)控制系統(tǒng)成為難點問題.利用FPGA可重構(gòu)的特點及并行運算的優(yōu)勢解決航天問題成為研究的熱點[2-4].目前,國內(nèi)外已有多顆衛(wèi)星成功將FPGA用于航天領(lǐng)域,包括澳大利亞2002年12月發(fā)射的FedSat-1衛(wèi)星以及Stuttgart大學實施的一項叫做Stuttgart Small Satellite Program的小衛(wèi)星計劃中的第一顆小衛(wèi)星Flying Laptop,這項計劃主要是對未來小衛(wèi)星的新技術(shù)驗證.基于FPGA的星載計算機便是其中的一項創(chuàng)新技術(shù)[5].將FPGA應用于衛(wèi)星姿態(tài)控制系統(tǒng)也得到了國內(nèi)外航天領(lǐng)域的重視,相關(guān)工作已展開.文獻[6-7]都對該問題進行了探討,并取得了一定成果,但是兩者接口選取的數(shù)據(jù)形式為定點數(shù),與外部系統(tǒng)不宜轉(zhuǎn)換,并且在計算精度方面不能滿足要求,計算速度較慢.
為了更好的解決上述問題,本文所設計的小衛(wèi)星PD姿態(tài)控制器IP核采用輸入使能信號與輸出標志符號進行內(nèi)部計算控制,解決了數(shù)據(jù)不同步問題,避免了模塊間數(shù)據(jù)延遲造成的處理速度的降低,可以快速計算出輸出力矩,滿足速度及精度要求.該IP直接采用32浮點數(shù)數(shù)據(jù)形式進行計算,精度高,同時外部計算機系統(tǒng)的單精度或雙精度轉(zhuǎn)換為浮點數(shù)較為容易.
目前,衛(wèi)星上實際應用的姿態(tài)控制技術(shù)主要為PID或改進PID控制,此外最優(yōu)控制方法、變結(jié)構(gòu)控制方法、魯棒控制方法、自適應控制方法、智能控制等先進控制方法等也逐漸被應用[8-9].PID控制中微分信號的引入可提高系統(tǒng)的通頻帶,加速系統(tǒng)的響應速度,加速消除誤差,積分信號可以提高穩(wěn)定精度,但會出現(xiàn)積分飽和現(xiàn)象,影響控制效果;變結(jié)構(gòu)控制適合非線性系統(tǒng)控制,可靠性強,但是易抖動,影響姿態(tài)控制的精度;魯棒控制適用于將穩(wěn)定性和可靠性作為首選的系統(tǒng),但由于一般不工作在最優(yōu)狀態(tài),因此穩(wěn)態(tài)精度差;全系數(shù)自適應控制方法以其控制品質(zhì)好、適應性強和魯棒性強等優(yōu)點,已在實際工業(yè)控制中取得了成功的應用,但采用FPGA實現(xiàn)控制方法較為復雜;智能控制從提出以來已解決了一些傳統(tǒng)控制技術(shù)難以解決的問題,而且大大提高了控制性能,受到了人們的極大關(guān)注,但缺乏經(jīng)典控制和現(xiàn)代控制理論那些嚴格的理論體系和設計方法.PD控制定律形式簡潔,適合硬件編程實現(xiàn)快速控制,穩(wěn)定精度高,因此本文涉及的衛(wèi)星姿態(tài)控制器主要是對常用的PD控制律利用VHDL進行設計.主要包括PD控制律的數(shù)學模型及接口設計,模塊劃分及設計.
采用歐拉角反饋的PD控制律可以表示如式(1)所示:
其中:kp、kd為比例常數(shù);φc、θc、ψc為3 個控制通道的標準角度;φ、θ、ψ 為3個通道的實時角度;ωx、ωy、ωz為3 個通道的實時角速度,Tcx、Tcy、Tcz為 3個輸出力矩.
由上式可見PD控制律完成的是1個計算功能,因此需要綜合考慮計算速度、精度及數(shù)據(jù)轉(zhuǎn)換難易選取合理的數(shù)據(jù)形式.IEEE標準754有基本的單精度格式浮點數(shù)[10],但是由于規(guī)格化尾數(shù)在小數(shù)點前有隱藏的1,進行計算需要先將其移出,計算麻煩且浪費資源,同時單精度格式階碼表數(shù)在1~254(偏移127),在進行階碼計算操作時需要考慮偏移,增加運算所需時鐘周期數(shù),因此在基本單精度格式上自定義一種32位浮點數(shù),該浮點數(shù)表示精度高、計算過程明確,并且進行單精度或雙精度浮點數(shù)與32位浮點數(shù)轉(zhuǎn)換非常容易,因此設計中數(shù)據(jù)均表示為32位浮點數(shù).
32位浮點數(shù)的基本格式如圖1所示.
圖1 32位點數(shù)的基本格式
圖中S表示符號位,0代表正數(shù),1代表負數(shù);E[30∶23]代表階碼,為指數(shù)項;F[22∶0]代表尾碼.
階碼采用移碼表示,尾碼采用無符號二進制數(shù)原碼表示.
數(shù)字‘0'的意思是只要尾碼 F[22∶0]全為 0,則表示該浮點數(shù)大小為‘0'.其表示的實際數(shù)值為
32位浮點數(shù)在作加、減法運算時,小數(shù)點必須是對齊的,所以階碼不相等的兩個浮點數(shù)不能直接進行加、減運算.浮點數(shù)加減運算的步驟如下:
1)對階.通過比較階碼大小選擇較大者作為結(jié)果階碼,同時通過兩者差值移動階碼較小數(shù)的尾碼,使兩個操作數(shù)小數(shù)點對齊.
2)尾碼求和.將對階后的兩個尾數(shù)按照定點數(shù)的運算規(guī)則求和、差.
3)規(guī)格化.保證尾碼的第1個有效數(shù)字是1.
4)舍入.精度要求較高時考慮.
5)溢出判斷.主要表現(xiàn)為階碼的溢出,由于階碼最大為127,此時表示的十進制數(shù)字很大,因此可以不考慮溢出.
兩個浮點數(shù)相乘,其乘積的階碼是兩個數(shù)的階碼之和,尾碼是兩個操作數(shù)尾碼之積.所以浮點數(shù)的乘法運算也要經(jīng)過如下5個步驟:
1)階碼相加.求出結(jié)果的階碼.
2)尾碼相乘.求出結(jié)果的尾碼.
3)規(guī)格化.由于尾碼相乘結(jié)果尾數(shù)較多,需要通過規(guī)格化選擇23位作為結(jié)果的尾碼,同時移動階碼.
4)舍入.精度要求較高時考慮.
5)溢出判斷.主要表現(xiàn)為階碼的溢出,由于階碼最大為127,此時表示的十進制數(shù)字很大,因此可以不考慮溢出.
由于控制定律在3個方向具有相同的數(shù)學形式,因此在FPGA層次化設計中可以只設計其中1個方向,通過頂層模塊的三次并行調(diào)用完成3個方向的控制功能.
由控制定律的形式可見,整個運算過程中涉及到兩次加減法運算和兩次乘法運算,因此中間模塊包括加法器模塊及乘法器模塊,如圖2所示.利用元件例化語句通過頂層模塊按順序依次調(diào)用加法模塊和乘法模塊可以完成輸出力矩的計算[11].由于選取的數(shù)據(jù)形式為32位浮點數(shù),而浮點數(shù)的加法及乘法是按照特定的步驟完成的,因此最底層模塊可以按照加、乘法的運算步驟共劃分7個模塊.層次劃分、模塊劃分及各模塊完成功能如圖2所示.
圖2 層次劃分、模塊劃分及各模塊完成功能
由圖2可知通過輸入端口輸入數(shù)據(jù)會傳遞給中間加法器及乘法器模塊,中間加法器及乘法器模塊會分別將該數(shù)據(jù)按照流程圖2、3順序或并行的傳遞給底層模塊進行各步驟的計算,底層模塊會將最終的輸出結(jié)果返回給頂層模塊,并最終輸出.整個計算過程中各個模塊設置3個輸入使能信號及1個輸出控制信號,其中1個輸入使能端接全局復位信號,另外兩個接前面模塊的輸出控制信號(當前面只有1個模塊時,兩個使能端均接該模塊),上一個(多個)模塊或頂層的模塊的輸出控制信號接下一個(多個)模塊或底層模塊的使能端,當各模塊完成功能后將輸出控制信號置高電平(及下一模塊使能端置高電平),當所有使能端都為高電平時,模塊才允許計算,這樣可以保證各模塊間的順序或并行運算,解決了中間計算數(shù)據(jù)不同步的問題.
根據(jù)上面定律的數(shù)學形式、選取的數(shù)據(jù)形式以及流程和模塊劃分利用VHDL進行編程,所有底層模塊采用進程并行語句時鐘觸發(fā),首先判斷使能端是否為高電平以決定是否啟動該模塊,其次判斷時鐘是否為高電平,為高電平時進行本模塊計算,保證時序同步;各同級模塊之間通過端口映射級聯(lián);上下級模塊間通過元件例化進行調(diào)用,各模塊編程設計所用時間如表1所示.
表1 底層模塊設計及所用時間
加法器各模塊順序運算,所以完成一次加法需要4時鐘周期;由于乘法器的階碼加與尾碼乘并行運算,所以這兩個模塊所用時間為24時鐘周期,因此完成一次乘法需要25時鐘周期;由圖2(a)知,在最后一次加法完成前,存在并行運算,因此之前3次計算所用時間為一次加法及一次乘法所用時間即29時鐘周期,所以整個計算過程需要34時鐘周期.
仿真結(jié)果如圖3所示(時鐘周期1 μs).由仿真結(jié)果可以看出,在第34個時鐘周期到來時完成整個計算得出輸出力矩.滿足衛(wèi)星姿態(tài)快速控制要求.
綜合后得到RTL圖如圖4所示:RTL圖表明各模塊間運算關(guān)系、頂層與底層模塊的接口連接符合設計的要求,形成了模塊化的PD控制器.
圖3 PD控制律仿真結(jié)果
圖4 綜合所得模塊級聯(lián)RTL視圖
由仿真圖2可知完成計算共需34個時鐘周期,計算速度快,滿足衛(wèi)星姿態(tài)控制器對時間的要求,但是手動輸入角度及角速度效率低,并且不能輸入連續(xù)的角度及角速度,導致無法全面的對該IP核計算準確度進行驗證,另外需要考慮實時性問題.因此需要進行聯(lián)合仿真和實時仿真對所設計IP核的穩(wěn)定精度及實時計算速度進行驗證.
利用Matlab的M文件編寫的S-function和Simulink模塊建立微小衛(wèi)星姿態(tài)控制仿真系統(tǒng),其總體框架如圖5所示.該仿真系統(tǒng)主要包括衛(wèi)星運動學模塊,衛(wèi)星動力學模塊,PD控制定律模塊.其中PD控制模塊內(nèi)部包括輸入輸出轉(zhuǎn)換模塊.PD控制定律模塊鏈接到Modelsim中具體的HDL實體.
將Matlab與Modelsim連接時,Matlab作為服務器,而Modelsim作為客戶端,Matlab對Modelsim仿真器發(fā)出的服務請求做出響應,建立通信連接,并調(diào)用1個具體的封裝函數(shù)對在Modelsim下仿真的HDL模型進行數(shù)值計算和驗證分析[12].
圖5 聯(lián)合仿真模型
由于外部模型數(shù)據(jù)均采用IEEE標準754中基本雙精度浮點數(shù),因此需要進行數(shù)制轉(zhuǎn)換.首先需要將基本雙精度與基本單精度浮點數(shù)進行轉(zhuǎn)換,利用強制轉(zhuǎn)換函數(shù)將基本雙精度浮點數(shù)與基本單精度浮點數(shù)轉(zhuǎn)換.再利用C語言編寫轉(zhuǎn)換函數(shù),將基本單精度浮點數(shù)與32位浮點數(shù)進行轉(zhuǎn)換.轉(zhuǎn)換流程如圖6.
聯(lián)合仿真模塊的參數(shù)對話框包括輸入輸出端口設置、時鐘周期及觸發(fā)方式設置、Simulink與Modelsim仿真時間的對應關(guān)系、Simulink與Modelsim的連接方式,以及仿真前后執(zhí)行的TCL命令5個部分,其中連接方式采用 TCP/IP套接字(TCP/IP socket)方式,TCL命令可以不設置.本硬件姿控仿真模塊其他具體參數(shù)設置如表2~4所示.
圖6 輸入、輸出轉(zhuǎn)換流程
表2 聯(lián)合仿真輸入輸出端口設置
表3 聯(lián)合仿真時鐘設置
表4 聯(lián)合仿真時間對應設置
建立如表5所示的實時仿真參數(shù),仿真后所得結(jié)果如圖7所示.
表5 PD控制實時仿真參數(shù)
圖7 三個通道控制角度仿真
可見,3個方向的姿態(tài)角度都是從0°開始,在經(jīng)過50次計算后使控制角度接近于0.3°,在經(jīng)過100次計算后使衛(wèi)星姿態(tài)角度達到基本等于0.3°,誤差如圖 8.
圖8 3個通道的誤差
由圖8可知達到穩(wěn)定后實時角度與控制標準角度的絕對誤差遠低于10-5數(shù)量級,能夠滿足中高精度指向衛(wèi)星的姿控要求.說明本文設計的姿控算法的FPGA實現(xiàn)可以在精度方面滿足衛(wèi)星對姿態(tài)控制的需要.
前面利用Matlab與Modelsim進行了聯(lián)合仿真驗證,得到較好的結(jié)果,但以上仿真均是非實時性的仿真,與實際系統(tǒng)的工作有一定的差別.建立基于PC/104和FPGA的實時系統(tǒng)仿真平臺,可以很好的檢驗該設計的實用性.
利用CAN總線將xPC實時仿真機和基于FPGA的嵌入式處理器連接起來.并將PC機接入CAN總線,用于監(jiān)視CAN總線上的數(shù)據(jù).在PC機上利用Matlab/Simulink將衛(wèi)星姿態(tài)動力學、姿態(tài)運動學模型轉(zhuǎn)換成RTW代碼,下載到實時仿真機中;同時在PC機上利用Xilinx FPGA EDK軟件,將PD算法IP核添加到MicroBlaze嵌入式處理器中,生成姿態(tài)控制器,下載到 FPGA開發(fā)板中,進行實時仿真驗證.利用CAN總線向處理器發(fā)送姿態(tài)參數(shù),處理器調(diào)用 PD控制器進行100 000次計算,之后將結(jié)果返回給CAN總線,通過時間差可以求得實時計算所需時間,計算時間測試結(jié)果如表6所示.
表6 實時仿真計算時間
通過基于PC/104和FPGA之間的實時系統(tǒng)仿真可以看出實時仿真計算時間較短,說明使用FPGA進行計算速度較快.說明本文設計的姿控算法的FPGA實現(xiàn)可以提高計算速度以滿足衛(wèi)星對姿態(tài)控制的需要.
衛(wèi)星姿態(tài)控制器快速精確的進行輸出力矩計算是姿態(tài)控制的關(guān)鍵,而利用FPGA并行運算的特點來實現(xiàn)衛(wèi)星姿態(tài)控制定律,通過設計輸入使能信號及輸出標志符號解決數(shù)據(jù)同步問題,能夠大大縮短運算時間,滿足了高精度觀測等姿態(tài)控制系統(tǒng)高響應速度的要求,并且所選32位浮點數(shù)精度高,計算舍入誤差小,大大提高了輸出力矩的計算精度.此外采用模塊化實現(xiàn)的PD控制律IP方法可以重復利用,大大縮短了研發(fā)周期,減少了成本,有效地滿足了航天器對時間成本及質(zhì)量的要求.
[1]JILLA C D,MILLERR D W.Satellite design:past,present and future[J].International Journal of Small Satellite Engineering,1997,1(1):234 -240.
[2]SALCIC Z,LEE C R.FPGA-based adaptive tracking estimation computer[J].IEEE Transactions on Aerospace and Electronic Systems,2001,37(2):699 -706.
[3]DEUTSCHMANN J,BAR-ITZHACK I Y.Extented Kalman filter for the ocean topography experiment satellite[C]//Flight Mechanics and Estimation Theory Symposium.Washingtong,DC:NASA,1989:333-345.
[4]SHUSTER M D.Efficient estimation of attitude sensor coalignments[C]//Proceedings of the AIAA/AAS Astrodynamics Conference.Washington,DC:AIAA,1994:45-53.
[5]武文權(quán).可重構(gòu)并行小衛(wèi)星星載計算機體系結(jié)構(gòu)設計[D].上海:中國科學院研究生院,2004:1-9.
[6]謝祥華.微小衛(wèi)星姿態(tài)控制系統(tǒng)研究[D].南京:南京航空航天大學,2007:64-87.
[7]戴彥.基于FPGA的衛(wèi)星姿態(tài)控制系統(tǒng)的設計與仿真[D].哈爾濱:哈爾濱工業(yè)大學,2007:42-50.
[8]WEI X,GUO L.Composite disturbance-observer-based control and H∞control for complex continuous models[J].Int J Robust Nonlinear Control,2010,20(1):106 -118.
[9]BOLONKIN A A,KHOT N S.Optimal bounded control design for vibration suppression[J].Acta Astronaut,1996,38(10):803 -813.
[10]覃霖,曾超.基于VHDL實現(xiàn)單精度浮點數(shù)的加/減法運算[J].電子工程師,2008,34(7):52 -53.
[11]詹仙寧.VHDL開發(fā)精解與實例剖析[M].北京:電子工業(yè)出版社,2009:9.
[12]范靜,陳文藝.基于Modelsim與Matlab/Simulink聯(lián)合仿真技術(shù)的接口與應用研究[J].西安郵電學院學報,2010,15(3):73 -74.
The FPGA implementation of IP core of PD attitude controller for small satellites
DING Yu-ye1,LAN Sheng-chang2,HUA Yi1,LI Meng-li2,PAN Rui1,XU Guo-dong1,2
(1 School of Electronic And Information Engineering,Harbin Institute of Technology,150001 Harbin,China;2.School of Aerospace,Harbin Institute of Technology,150080 Harbin,China)
In the sight of the higher requirement about operation speed and control accuracy in satellite attitude control system,this paper analyzed the feasibility of PD attitude controller by using FPGA,and proposed a method using the input enable and the output control symbol to dominate the internal calculation module to figure out the problem of data synchronization.The paper used hardware description language to achieve the function of each module,and finally instantiated the IP core of PD controller.The result shows that the design is able to accomplish the calculation of attitude control torque by only using 34 clock pulses and the accuracy of control can reach 10-5magnitude.The speed and accuracy meet the needs of the modern small satellite control system and lay the foundation for using FPGA implementation in small satellite attitude control system.
satellite attitude control;FPGA;core of IP;control law of PD
TP3332
A
0367-6234(2012)09-0040-06
2011-09-15.
國家自然科學基金資助項目(60904051);中國博士后科學基金資助項目(20090450126);微小型航天器技術(shù)國防重點實驗室開放基金資助項目(HIT.KLOF2009091).
丁玉葉(1988—),男,博士研究生;
徐國棟(1961—),男,教授,博士生導師.
丁玉葉,dyytianzhijiaozi@gmail.com.
(編輯 張 宏)