王 雙,董云峰
(北京航空航天大學 宇航學院,北京100191)
衛(wèi)星姿軌控是星上容易發(fā)生故障的分系統(tǒng),需要對故障診斷技術進行模擬研究。傳統(tǒng)的衛(wèi)星故障模擬一般采用計算機進行數(shù)值仿真的方式,它具有設計周期短,成本低等優(yōu)點,但計算機數(shù)值仿真缺乏真實性和實時性,無法準確模擬出部件的實際接口,可能得出與星上控制系統(tǒng)完全不同的結論,沒有實際意義[1]。基于 ARM7 (advanced RISC machines)和 FPGA (field programmable gate array)的嵌入式衛(wèi)星故障復現(xiàn)平臺,實時性好,成本低,使用方便,在故障診斷專家系統(tǒng)和故障模型庫的支持下,能快速驗證故障假設,有效定位故障源。通過CAN (controlle rarea network)總線連接,該平臺可以方便地構成十幾個甚至幾十個分布式實時仿真節(jié)點。
故障復現(xiàn)嵌入式硬件平臺運行時,因更換嵌入式程序和故障模擬的需要,需要經(jīng)常開關機箱和ARM板。以往的嵌入式硬件大都需要手動控制電源開關,繁瑣且不方面。該平臺的電源系統(tǒng)在穩(wěn)定運行的基礎上,利用AVR單片機數(shù)據(jù)處理能力、FPGA和CPLD (complex programmable logic device)的現(xiàn)場可編程功能,再依據(jù)三極管的電流放大作用和繼電器的原理,實現(xiàn)了機箱和ARM板開關的自動化。電源系統(tǒng)的優(yōu)化設計,保證了平臺其他部分的正常運行。
故障復現(xiàn)嵌入式系統(tǒng)包括3個部分,分別是PC機、調試監(jiān)控箱、衛(wèi)星姿軌控設備模擬器 (以下簡稱模擬器)。三部分共同組裝成一個機柜,來模擬衛(wèi)星的各種故障狀態(tài)。其中,模擬器包括一個執(zhí)行結構箱、兩個姿軌控中心計算機箱、兩個敏感器箱。
PC機運行MFC控制程序和環(huán)境模擬程序,進行數(shù)據(jù)歸檔。調試監(jiān)控箱裝有一個開關電源,給模擬器供電,并對其機箱中各個電路板的程序進行更新。模擬器采用相同的模塊化的設計,各機箱在硬件上保持一致。每個機箱依次安裝兩塊轉接板、4塊總線板、2塊FPGA板、8塊ARM板。ARM板運行仿真程序,模擬不同的星上部件,如動量輪、地球敏感器等;FPGA板實現(xiàn)邏輯動態(tài)分配;總線板進行TTL電平和差分信號電平之間的轉換;轉接板按照實際接口實現(xiàn)信號的分配。下面將詳細介紹電源系統(tǒng)的軟硬件設計方案。
故障復現(xiàn)硬件系統(tǒng)是按照一定的信號轉接協(xié)議,來實現(xiàn)機箱和ARM板電源開關的自動化。通訊編碼格式為0xff+Command+BOXn+BOARDn+CRC。其中0xff為起始碼,Command為信號選擇指令,例如ARM開為0x05、ARM關為0x06、機箱開為0x08、機箱關為0x09,BOXn為模擬箱中FPGA板的ID號,BOARDn為ARM板的編號。
PC機MFC程序按照此協(xié)議產(chǎn)生控制信號,信號按照路徑調試監(jiān)控板→轉接板→總線板→FPGA板→ARM板進行傳輸,實現(xiàn)控制功能。
在電源系統(tǒng)中,調試監(jiān)控板控制模擬器5個機箱的開關,F(xiàn)PGA板控制相對應的4個ARM板的開關,轉接板和總線板只輸送控制信號、電源。下面將介紹調試監(jiān)控板、FPGA板和ARM板電源部分的硬件設計。
調試監(jiān)控箱裝有一個開關電源,給硬件平臺供電。為保護電路板,12V和5V線路各串聯(lián)一個貼片保險。EPM240T100C5、ATmega8等需要供電3.3V,添加相應的線性穩(wěn)壓器LM1084IS-3.3,把5V電壓轉變成3.3V[2]。電源引腳連接一些濾波電容,降低交流脈動波紋系數(shù),提升高效平滑直流輸出,給芯片提供一個穩(wěn)定的電壓。繪制PCB圖時,根據(jù)電流的大小,硬件平臺所有電路板的電源線寬度盡量加粗,減少環(huán)路電阻[3];不同層之間的電源線,要經(jīng)過多過孔處理,增加電源輸送能力。
PC機MFC程序,按照信號轉接協(xié)議,產(chǎn)生控制信號,經(jīng)USB傳輸?shù)秸{試監(jiān)控板。USB的數(shù)字信號,經(jīng)芯片CP2102轉化成異步串行數(shù)據(jù)。其SUSPEND引腳串聯(lián)一個發(fā)光二極管接地。觀看二極管的亮滅,可以得知CP2102與電腦USB通信是否正常[4]。
ATmega8-16AC是AVR系列單片機,使用精簡指令集,使其具有高速處理能力,在一個時鐘周期內可執(zhí)行復雜的指令[5]。SPI接口使它與各種外圍設備以串行方式進行通信以交換信息。經(jīng)過解析控制信號,ATmega8執(zhí)行相關指令,改變其I/O引腳的電平,進而控制EPM240T100C5I/O引腳的邏輯。
EPM240T100C5屬于復雜可編程邏輯器件 (CPLD),有復雜的I/O單元互連結構,可由用戶根據(jù)需要生成特定的電路結構,完成一定的功能[6]。通過JTAG接口,對EPM240T100C5進行在線編程。EPM240T100C5共有100個I/O引腳,讓I/O77連接三極管的基極,進而控制繼電器的開關。
調試監(jiān)控板使用電磁繼電器[7]控制模擬器5個機箱的供電,5個機箱對應5個繼電器。為了簡潔,軟硬件設計只講述調試監(jiān)控板控制執(zhí)行機構箱的供電。根據(jù)三極管的電流放大作用,圖1中的SET1被拉高時,引起基極電流的微小變化,集電極電流必定會發(fā)生較大的變化[8]。此時,繼電器開啟,輸出+12V電壓,機箱上電。作為冗余設計,圖1中的IDC10的1、2引腳之間用一個按鈕開關相連,手動控制機箱電源開關。

圖1 調試監(jiān)控板電源部分原理框架
接插件IDC40用特制電線與轉接板相連。運行狀態(tài)下,機箱需要的電流相對較大,這里采用三根線輸送電流。EPM240T100C5的TTL電平信號通過SP3490,轉化為差分電壓信號,進行信息傳輸,能對外部干擾能夠起到很強的抗干擾能力。PCB布線時,差分信號被安排成 “密近平行線”。
12V的電壓從調試監(jiān)控板輸送到轉接板后,經(jīng)LM2596-5V開關電壓調節(jié)器,產(chǎn)生5V電壓。通過四條電源線,電源輸送到圖2的大四P插頭。線性穩(wěn)壓器LM1084IS-3.3、LM1084IS-1V2,分 別 把 5V 電 壓 轉 變 成3.3V、1.2V,滿足了EP2C20F484C8、ATmega8等對電壓的需求。繪制PCB圖時,為了給EP2C20F484C8穩(wěn)定供電,對其3.3V、1.2V、GND進行局部多邊形敷銅處理。此外,電源經(jīng)接插件1、2,分別傳輸?shù)紸RM板、總線板。
FPGA是現(xiàn)場可編程門陣列的英文縮寫。為滿足引腳數(shù)量的需要,該板使用芯片EP2C20F484C8。差分信號由總線板轉化成TTL電平信號,經(jīng)接插件2,傳輸?shù)紽PGA板。ATmega8解析控制信號,改變EP2C20F484C8I/O引腳的邏輯,最終控制ARM板的開關。一塊FPGA板插有4塊ARM板。為了簡潔,軟硬件設計只講述控制執(zhí)行機構箱的第一塊ARM板。接插件1和ARM板相連,SET是ARM電源開啟信號,RESET是關閉信號。

圖2 FPGA板電源部分原理框架
ARM是一個32位元精簡指令集處理器架構,其廣泛地使用在許多嵌入式系統(tǒng)設計。ARM7系列整合了Thumb16位指令集,使得能以8/16位系統(tǒng)的成本實現(xiàn)32位的性能[9]。ARM板采用芯片AT91SAM7X25作為CPU,18.432MHZ的低頻晶振為其提供時鐘頻率。在PCB布線時,晶振應盡量靠近芯片的引腳,以減少對其它芯片的高頻干擾。晶振旁的電容選用15pF的無極電容,在芯片內部經(jīng)PLL電路倍頻后,達到48MHZ的工作主頻,以提高CPU 的工作速度[10]。
圖3中的62針公頭接插件DB62ML和FPGA相連,傳輸信號和電壓。ARM板用磁保持繼電器控制電源,其開關狀態(tài)的轉換是靠一定寬度的脈沖電信號觸發(fā)而完成的。SET有脈沖電信號時,磁保持繼電器開啟,Vout輸出12V電壓。相反,RESET有脈沖電信號時,繼電器關閉。LM1084IS-3.3 把 12V 電 壓 轉 變 成 3.3V, 給AT91SAM7X25 供 電。 繪 制 PCB 圖 時, 在AT91SAM7X256中間放置填充,其電源引腳和填充相連。
MFC控制程序的人機界面的一部分如圖4所示。
圖4中的BOX1對應執(zhí)行機構箱,BOX2、BOX3對應兩個AOCC箱,BOX4、BOX5對應兩個敏感器箱。8個Radio Button按鈕依次對應機箱中的8塊ARM板。
人機界面具有多項控制功能。點擊功能按鈕后,程序按照制定的協(xié)議,產(chǎn)生控制信號。核心代碼是SendUARTMessage(ucChannelNo,chrSendMessage,iLength),uc-ChannelNo表示通道號,chrSendMessage是要發(fā)送的信息,iLength是信息的長度。

4.2.1 ATmega8-16AC
在CodeVisionAVR軟件上,用Verilog HDL編寫AT-mega8的控制代碼,程序用AVR_fighter下載到芯片中。主要代碼如下:
定義引腳名稱
#defineBOXSwitch0 PORTD.3
編寫信號解析函數(shù)[12]
void ProcCMD (unsigned charCommand,unsigned charBOXn,unsigned charBOARDn)
{
switch (Command)
{
case 0x08: //機箱開信號
if((BOXn>>4)==0x01)BOXSwitch0=0;break;
case 0x09: //機箱關信號
if((BOXn>>4)==0x01)BOXSwitch0=1;break;
}
}
把函數(shù)ProcCMD()寫入中斷函數(shù),在主函數(shù)中添加代碼#asm ("sei"),使能全局中斷[13]。當控制信號傳輸?shù)紸Tmega8中時,產(chǎn)生中斷,執(zhí)行函數(shù)ProcCMD (),改變引腳PD3的電平。
4.2.2 EPM240T100C5
EPM240T100C5屬于CPLD器件,使用 Quartus II[14]軟件編寫代碼,程序需用USB Blaste下載到芯片中。具體程序如下:
用Quartus II新建一個工程,選定芯片EPM240T100C5。按照原理圖,定義相關引腳的名稱,如圖5所示。

圖5 EPM240T100C5部分引腳名稱
定義引腳的I/O類型[15]
inputUSB_COM1_TX,UART1_RX,AVR_TX,[4:0]AVR;
outputUSB_COM1_RX,UART1_TX,AVR_RX,[4:0]BoxSwitch;
對I/O引腳進行邏輯連線
assignUSB_COM1_RX=UART1_RX&AVR_TX;
assignUART1_TX=USB_COM1_TX;
assignAVR_RX=USB_COM1_TX;
變量賦值
assignBoxSwitch[0]= (AVR[0]?1'bZ:1'b1);
手動打開調試監(jiān)控箱的開關電源,使用USB線連接調試監(jiān)控板和電腦的USB接口后,再按照MFC控制程序,在設備管理器設置通訊端口號為COM3,波特率為38400 bps,數(shù)據(jù)位為8,無奇偶校驗,停止位為1,無控制流。運行PC機MFC控制程序,點擊按鈕打開串口3。此時,控制程序就可以給硬件板發(fā)送信號轉接協(xié)議。
選中BOX1、SOC1,單擊機箱開按鈕,MFC程序發(fā)送0xff+0x8+0x11+0x0+0x19信號。信號傳輸?shù)秸{試監(jiān)控板的 ATmega8,執(zhí)行函數(shù)ProcCMD ()。0x11>>4=0x01,即判斷條件 (BOXn>>4)==0x01為真,BOXS-witch0賦值為零,ATmega8的PD3引腳為低電平。相應的,EPM240T100C5的引腳AVR[0]為邏輯0。式子AVR[0]?1'bZ :1'b1的值等于邏輯1,引腳BoxSwitch[0]輸出高電平。這時,調試監(jiān)控板上對應的電磁繼電器開啟,輸出+12V電壓,執(zhí)行機構箱上電。同理,單擊機箱關按鈕,相對應的機箱斷電。
4.3.1 ATmega8-16AC
使用ID號識別FPGA板,按照制定的規(guī)則定義執(zhí)行機構箱第一塊FPGA板的ID號
#defineID0x11
定義引腳名稱
#defineAVR1 PORTC.0
#defineAVR2 PORTC.1
#defineAVR3 PORTC.2
#defineAVR4 PORTC.3
#defineSCKPORTB.5
編寫信號解析函數(shù)ProcCMD()
switch (Command)
{
case 0x05: //ARM開信號
if(ID==BOXn)
{
AVR1=BOARDn&0x01;
AVR2= (BOARDn>>1)&0x01;
AVR3=1;SCK=0;SCK=1;
delay_ms(200);SCK=0;AVR3=0;
}
elseAVR3=0;
break;
case 0x06: //ARM關信號
if(ID==BOXn)
{
AVR1=BOARDn&0x01;
AVR2= (BOARDn>>1)&0x01;
AVR4=1;SCK=0;SCK=1;
delay_ms(200);SCK=0;AVR4=0;
}
elseAVR4=0;
break;
}
把函數(shù)ProcCMD()寫入中斷函數(shù),在主函數(shù)中添加#asm ("sei"),使能全局中斷。當PC的ARM開關控制信號傳輸?shù)紸Tmega8中時,通過解析信號,改變相應引腳的電平。
4.3.2 EP2C20F484C8
EP2C20F484C8屬于FPGA,使用Quartus II軟件編寫代碼,程序需用USB Blaste下載到芯片中。核心操作如下:
用Quartus II新建一個工程,選定芯片EP2C20F484C8。按照原理圖,定義相關引腳的名稱如圖6所示。

圖6 EP2C20F484C8部分引腳名稱
定義引腳的I/O類型
inputSCK,AVR3,AVR4, [1:0]AVR,RX0,AVR_TX;
outputAVR_RX,SOCSET0,SOCRESET0;
output regTX0;
對I/O引腳進行邏輯連線
assignAVR_RX=RX0;
assignTX0=AVR_TX;
變量賦值
assignSOCSET0= ((AVR3)&& (AVR= =2'b00))?SCK:1'b0; //ARM ON
assignSOCRESET0= ((AVR4)&& (AVR==2'b00))?SCK:1'b0; //ARM OFF
運行PC機MFC控制程序,選中BOX1、SOC1,單擊ARM開按鈕,發(fā)送0xff+0x5+0x11+0x0+0x16信號。信號傳輸?shù)紽PGA板的ATmega 8,產(chǎn)生中斷,執(zhí)行函數(shù)ProcCMD()。ID和BOXn都等于0x11,判斷條件ID==BOXn為真。BOARDn&0x01=0x0, (BOARDn>>1)&0x01=0x0,所以該程序中的變量AVR1、AVR2都賦值為0。AVR3、SCK先賦值為1,200ms后,它們又賦值為0。相應地,EP2C20F484C8程序中的AVR等于0,AVR3、SCK先等于1,200ms后,二者又等于0。所以,原先為0的SOCSET0會先賦值為1,200ms后又清零,即引腳SOCSET0產(chǎn)生了一定寬度的脈沖電信號。此電信號傳輸?shù)紸RM板,開啟磁保持繼電器,第一塊ARM板上電。相反,單擊MFC控制程序的ARM關按鈕,相對應的ARM板斷電。
電源系統(tǒng)是嵌入式硬件平臺的關鍵部分。在設計電路板時,連接保險、濾波電容,電源線加粗、多過孔、多線傳輸,局部多邊形敷銅,填充等處理措施[16],保證了電源系統(tǒng)穩(wěn)定、安全、可靠地運行。另一方面,系統(tǒng)的軟硬件使操作者只要點擊上位機MFC程序按鈕,就可以控制機箱和ARM板的開關,實現(xiàn)了電源開關自動化。
此外,系統(tǒng)軟硬件還實現(xiàn)了ARM板更新程序、打印ARM輸出信息、ARM板復位的自動化,滿足了仿真的需要。該故障模擬平臺無需損壞硬件,通過改變軟件就可以模擬出故障行為,為提高航天器故障處理能力起到積極的作用。
[1]LI Zhi-bing.Fault simulation platform of satellite attitude control system based on embedded simulation [J].Journal of Shandong U-niversity (Engineering Science),2005,35 (3):88-89 (in Chinese).[李智斌.基于嵌入式仿真的衛(wèi)星姿控系統(tǒng)故障模擬平臺[J].山東大學學報 (工學版),2005,35 (3):88-89.]
[2]National semiconductor corporation.LM1084 5Alow dropout positive regulators [EB/OL].http://www.national.com/ds/LM/LM1084.pdf,2005.
[3]ZHENG A-qi.Protel practical teaching [M].Beijing:Electronic Industry of Press,2010:169 (in Chinese). [鄭阿奇.Protel實用教程 [M].北京:電子工業(yè)出版社,2010:169.]
[4]Silicon Laboratories.CP2102SINGLE-CHIP USB TO UART BRIDGE [EB/OL].http://www.waveshare.net/datasheet/SILABS_PDF/cp2102.PDF,2007.
[5]WU Jian.C language program design and typical example about AVR MCU [M].Beijing:Electric Power Press of China,2008:3-6(in Chinese).[吳健.AVR單片機實用C語言程序設計與典型實例 [M].北京:中國電力出版社,2008:3-6.]
[6]LI Da-she.FPGA/CPLD design example choice based on QuartusⅡ [M].Beijing:Electron Industry Press,2010:1-4 (in Chinese).[李大社.基于QuartusⅡ的FPGA/CPLD設計實例精解 [M].北京:電子工業(yè)出版社,2010:1-4.]
[7]SHEN Chang-sheng.Electron technique self-study teaching[M].Beijing:People Stamp Press,2010:74-75 (in Chinese).[沈長生.電子技術自學寶典 [M].北京:人民郵電出版社,2010:74-75.]
[8]DING Yi-fan.Electrician electron and control technique[M].Tianjin:Tianjin University Press,2011:72-75 (in Chinese).[丁一凡.電工電子與控制技術 [M].天津:天津大學出版社,2011:72-75.]
[9]CHEN Ze.ARM embedded technique theory and application[M].Beijing:Beihang University Press,2011:18-20 (in Chinese).[陳賾.ARM嵌入式技術原理與應用 [M].北京:北京航空航天大學出版社,2011:18-20.]
[10]DONG Yun-feng.Dynamic simulation technique of satellite attitude control[M].Beijing:Science Press,2010:120-122(in Chinese).[董云峰.衛(wèi)星姿態(tài)控制動態(tài)模擬技術 [M].北京:科學出版社,2010:120-122.]
[11]LIU Shu-zhi,LI Lin-na.Visual C++practice and advance-serial port communication and engineering application [M].Beijing:Railroad Press of China,2009:193-229 (in Chinese).[劉書智,李琳娜.Visual C++實踐與提高-串口通信與工程應用篇[M].北京:中國鐵道出版社,2009:193-229.]
[12]CHEN Bo,JI Gen-lin.C language program design teaching[M].Beijing:Railroad Press of China,2010:56-66 (in Chinese).[陳波,吉根林.C語言程序設計教程 [M].北京:中國鐵道出版社,2010:56-66.]
[13]JIANG Zhi-h(huán)ong.Practical case pick of AVR MCU system exploration [M].Beijing:Beihang University Press,2010:94-101(in Chinese).[江志紅.AVR單片機系統(tǒng)開發(fā)實用案例精選[M].北京:北京航空航天大學出版社,2010:94-101.]
[14]ZHOU Jing-h(huán)ua.CPLD/FPGA control system design [M].Beijing:Mechanical Industry Press,2011:71-79 (in Chinese).[周京華.CPLD/FPGA控制系統(tǒng)設計 [M].北京:機械工業(yè)出版社,2011:71-79.]
[15]WU Hou-h(huán)ang.Learn FPGA easily [M].Beijing:Beihang University Press,2010:17-29 (in Chinese).[吳厚航.深入淺出玩轉FPGA [M].北京:北京航空航天大學出版社,2010:17-29.]
[16]DENG Yi,MA Shuang-bao,XIE Long-h(huán)an.Protel 99SE circuit chart and PCB design [M].Beijing:People Stamp Press,2011:263-266 (in Chinese). [鄧奕,馬雙寶,謝龍漢.Protel 99SE原理圖與PCB設計 [M].北京:人民郵電出版社,2011:263-266.]