習(xí)穎慧,滕學(xué)劍
(中國科學(xué)院 國家空間科學(xué)中心,北京100019)
“嫦娥四號(hào)”巡視器有效載荷研制在探月工程實(shí)施以來首次開展了國際合作,引入中性原子探測儀(ASAN 探測儀)。該儀器系目前國際上首個(gè)在月球表面開展中性原子探測的儀器,其主要功能是探知太陽風(fēng)與月球表面的作用機(jī)制以及二者相互作用對(duì)月球環(huán)境的影響。為適應(yīng)月面環(huán)境要求,ASAN 探測儀的工作時(shí)段為月晝上午和月晝下午,每次工作時(shí)間不超過1小時(shí),科學(xué)數(shù)據(jù)產(chǎn)生率最高不超過1 kbit/s;月午和月夜時(shí)段則關(guān)機(jī)。該探測儀屬艙內(nèi)設(shè)備,為降低系統(tǒng)集成復(fù)雜度,減少載荷管理開銷,提高可靠性,探測儀與有效載荷電控箱之間通過RS422 串行總線進(jìn)行通信。
RS422總線具有傳輸距離長、波特率可調(diào)、速度快、抗干擾能力強(qiáng)等諸多特點(diǎn),在航空航天以及工業(yè)控制領(lǐng)域有著廣泛的應(yīng)用[1]?!版隙鹚奶?hào)”有效載荷電控箱與ASAN 探測儀的RS422串行總線通信采用軟件管理RS422接口單元方式[2],RS422通信約定為主從結(jié)構(gòu)——載荷電控箱是主機(jī),ASAN探測儀是從機(jī);每次通信都是由主機(jī)發(fā)起命令,從機(jī)應(yīng)答命令或數(shù)據(jù)。
圖1 外部RS422總線消息傳輸格式Fig.1 External RS422 bus message transfer format
RS422消息指令類型多樣,傳輸格式、性能參數(shù)以及傳輸和響應(yīng)要求各不相同,主機(jī)一方面要保持正常的總線通信,另一方面要對(duì)消息通信結(jié)果做出實(shí)時(shí)處理并反饋。因此RS422總線消息通信具有復(fù)雜多樣性及嚴(yán)格實(shí)時(shí)性[3],合理設(shè)計(jì)RS422的消息通信模式,成為衡量系統(tǒng)優(yōu)劣的重要因素。
本文提出一種基于RS422時(shí)間片管理機(jī)制的通信模式,以滿足有效載荷電控箱與ASAN 探測儀之間的通信時(shí)間響應(yīng)要求,保證數(shù)據(jù)傳輸?shù)挠行蚝陀行浴?/p>
RS422通信的波特率為115.2 kbit/s,消息傳輸格式見圖1。
RS422總線通信中包括的消息類型為:
1)工作模式指令發(fā)消息以及接收的應(yīng)答消息,工作模式消息指令有6種,均為隨機(jī)消息,在收到消息后2 s之內(nèi)轉(zhuǎn)發(fā)即可;
2)周期工程采集指令消息以及接收的工程參數(shù)幀消息,消息周期為4 s;
3)周期科學(xué)數(shù)據(jù)采集指令消息以及接收的科學(xué)數(shù)據(jù)幀消息,消息周期為4 s;
4)周期校時(shí)指令消息以及接收的校時(shí)消息應(yīng)答,消息周期為300 s。
在多條RS422消息指令通信的情況下,目前的嵌入式系統(tǒng)RS422總線通信模塊中一般使用一問一答的模式。從消息開始組織,寫入RS422接口模塊,由RS422總線發(fā)送后,必須等待相對(duì)應(yīng)的應(yīng)答接收結(jié)束后才能交出RS422總線控制權(quán),稱為“一對(duì)一法”。定義消息通信過程中獨(dú)占RS422總線消耗的時(shí)間為TP,每種消息可允許的時(shí)間為TS。通信過程見圖2。
圖2 傳統(tǒng)RS422通信模式圖Fig.2 Diagram of traditional RS422 communication mode
等待接收數(shù)據(jù)的方式有2種,輪流查詢指令接收緩沖區(qū)狀態(tài)或者中斷處理方式。查詢方式控制簡單但效率低,中斷處理方式實(shí)時(shí)性高但占用FPGA資源。嵌入式實(shí)時(shí)控制系統(tǒng)應(yīng)盡量減少中斷的使用,故在查詢接收滿足通信要求且不影響實(shí)時(shí)性的情況下,盡量采用查詢方式接收數(shù)據(jù)[4]。
巡視器有效載荷電控箱與ASAN 探測儀RS422之間的通信特性:
1)ASAN回送的科學(xué)數(shù)據(jù)幀變長,最大長度為4096字節(jié),且大部分情況下ASAN 回送的科學(xué)數(shù)據(jù)的長度為4096字節(jié),傳輸數(shù)據(jù)量大;
2)科學(xué)數(shù)據(jù)幀傳輸時(shí)間長,僅傳輸數(shù)據(jù)時(shí)間就需要大約284 ms;
3)消息類型多樣,包括隨機(jī)消息以及周期消息,且周期消息既有同步的也有異步的;
4)隨機(jī)消息與周期消息,周期消息與周期消息之間發(fā)生碰撞的概率很大,消息處理復(fù)雜耗時(shí)。
以最簡單情況來分析,本系統(tǒng)有Msg1(工作模式)、Msg2(工程參數(shù))、Msg3(科學(xué)數(shù)據(jù))和Msg4(校時(shí))4種類型的消息,均使用RS422總線進(jìn)行通信。Msg1是隨機(jī)消息,Msg2、Msg3、Msg4是周期消息,Msg2、Msg3周期同步。在系統(tǒng)某時(shí)刻,Msg1、Msg2、Msg3、Msg4消息同時(shí)時(shí)間到,處于就緒狀態(tài),每個(gè)消息發(fā)送前若檢測到總線忙碌便處于等待狀態(tài)。等待時(shí)間取決于TP,TP越大等待時(shí)間越長,消息執(zhí)行發(fā)送的時(shí)間就越晚,會(huì)導(dǎo)致不能及時(shí)響應(yīng)消息請求。而“一對(duì)一法”適用于消息數(shù)據(jù)量小,消息等待以及數(shù)據(jù)接收時(shí)間短的系統(tǒng),顯然不適合本系統(tǒng)的RS422總線通信。
本系統(tǒng)CPU 采用單片機(jī)(型號(hào)為80C32)、單線程,由FPGA 實(shí)現(xiàn)的RS422接口單元只提供1個(gè)RS422發(fā)送FIFO,1個(gè)RS422接收FIFO;且RS422通信無法實(shí)現(xiàn)并發(fā)設(shè)計(jì),必須對(duì)發(fā)送進(jìn)行有序控制,才能保證數(shù)據(jù)接收的有效性和完整性。因此,需要重新設(shè)計(jì)支持大數(shù)據(jù)量傳輸、等待時(shí)間充足、并發(fā)處理能力好的RS422通信方案。
針對(duì)巡視器電控箱與載荷ASAN探測儀之間RS422通信的特殊性,提出時(shí)間片通信模式方案。
RS422總線是主從結(jié)構(gòu),任何時(shí)候都是主機(jī)發(fā)起通信,從機(jī)應(yīng)答,任何時(shí)刻只能有1種消息類型得到RS422的控制權(quán),即消息只能互斥使用RS422總線。為優(yōu)化起見,借鑒幀的組織方式以及操作系統(tǒng)時(shí)間片調(diào)度策略,提出一種隨機(jī)多周期消息時(shí)間片排布架構(gòu)[5-6]。以整個(gè)RS422時(shí)間作為1個(gè)大時(shí)間片(時(shí)間周期),大時(shí)間片再以小時(shí)間片方式分配給各消息發(fā)送接收使用。
首先,在系統(tǒng)中如何確定恰當(dāng)?shù)腞S422時(shí)間片(時(shí)間周期),是保證系統(tǒng)運(yùn)行穩(wěn)定可靠,滿足系統(tǒng)性能要求,確保系統(tǒng)正常工作的關(guān)鍵;其次,如何劃分小時(shí)間片確保各消息發(fā)送接收的準(zhǔn)時(shí)完成,需要采取適當(dāng)?shù)恼{(diào)用策略;最后,如何減小周期消息碰撞的概率,減輕數(shù)據(jù)接收處理模塊的壓力,提高總線處理能力和CPU 效率,也是本設(shè)計(jì)的意義所在。
時(shí)間周期設(shè)置太短,會(huì)導(dǎo)致過多的RS422消息交互,占用資源,降低CPU 效率,無法滿足大量RS422消息傳輸?shù)臅r(shí)間要求;而時(shí)間周期設(shè)置太長,又可能引起對(duì)短的交互請求的響應(yīng)變差。本系統(tǒng)隨機(jī)指令的最小發(fā)送間隔為2 s,3種周期指令最小間隔為4 s,因此將時(shí)間周期定為2 s是比較合理的折中選擇。
RS422大時(shí)間片確定后,RS422通信采用時(shí)間周期的方法。2 s的時(shí)間周期到,時(shí)間周期前半段(180 ms)進(jìn)行總線切換、維護(hù)以及所有時(shí)間周期到的指令發(fā)送操作;中間設(shè)置1 s的等待時(shí)間;后半段設(shè)置數(shù)據(jù)接收處理標(biāo)識(shí),主循環(huán)中查詢此標(biāo)識(shí)并統(tǒng)一處理接收到的數(shù)據(jù),此處理時(shí)間預(yù)留820 ms。本設(shè)計(jì)中的時(shí)間片設(shè)置見圖3。
圖3 RS422時(shí)間片劃分Fig.3 RS422 timeslice partition map
2 s時(shí)間周期大體劃分為4個(gè)時(shí)間片:Tm為總線維護(hù)時(shí)間片;Tx為消息發(fā)送時(shí)間片,按照系統(tǒng)最大負(fù)荷量并預(yù)留足夠的硬件處理時(shí)間;Tw為消息等待接收時(shí)間片;TR為接收處理時(shí)間片。
Tx時(shí)間片要處理的消息類型有數(shù)據(jù)注入消息、工程參數(shù)消息、科學(xué)數(shù)據(jù)消息和時(shí)間碼消息4種。如何安排消息的發(fā)送通信時(shí)間片,保證各類型消息通信的時(shí)間度,保證消息通信的一致性、無差錯(cuò)性是確保系統(tǒng)工作的關(guān)鍵。
本系統(tǒng)的消息類型包括隨機(jī)消息(事件驅(qū)動(dòng)型消息)和周期消息[7-8]。
事件驅(qū)動(dòng)型消息安排:地面數(shù)據(jù)注入產(chǎn)生的工作模式消息。每當(dāng)?shù)孛嬗袛?shù)據(jù)注入消息以及工作模式指令發(fā)送錯(cuò)誤并重試時(shí)產(chǎn)生消息,這類隨機(jī)消息會(huì)被立即存入工作模式指令循環(huán)緩沖指令隊(duì)列,利用指令隊(duì)列的先進(jìn)先出特性,避免消息數(shù)量大時(shí)丟失指令。RS422時(shí)間周期到,立即安排這種類型消息指令的發(fā)送,其消息指令優(yōu)先級(jí)為最高。
同周期、不同周期消息安排:通過參考周期任務(wù)調(diào)度的速率單調(diào)調(diào)度(RMS)算法[9],根據(jù)消息的周期設(shè)置消息優(yōu)先級(jí),周期越短優(yōu)先級(jí)越高。本系統(tǒng)中,工程參數(shù)與科學(xué)數(shù)據(jù)消息周期同步,周期為4 s;校時(shí)消息周期為5 min。故優(yōu)先級(jí)由高到低的安排是工程參數(shù)、科學(xué)數(shù)據(jù)、校時(shí)消息。考慮到同周期消息每個(gè)時(shí)間周期勢必會(huì)碰撞(同時(shí)滿足時(shí)間條件,處于就緒狀態(tài)),為減少同一個(gè)時(shí)間周期內(nèi)待發(fā)送消息的數(shù)量,降低時(shí)間周期總線的強(qiáng)度,減輕接收模塊處理壓力,提高RS422通信效率,本系統(tǒng)采用了乒乓設(shè)計(jì)方法,即將工程參數(shù)和科學(xué)數(shù)據(jù)消息采集的起始點(diǎn)錯(cuò)開,使得這2類消息分布在不同的時(shí)間周期,見圖4。
圖4 乒乓設(shè)計(jì)方法Fig.4 Ping-pong design diagram
綜上,對(duì)于隨機(jī)消息和周期消息,按照優(yōu)先級(jí)的設(shè)置形成隊(duì)列,當(dāng)RS422時(shí)間片周期到的時(shí)候,再把RS422控制權(quán)分配給就緒的指令,并令其占用1個(gè)時(shí)間片。時(shí)間片的大小是可調(diào)整的,一般是根據(jù)消息指令的發(fā)送以及傳輸字節(jié)數(shù)的時(shí)間來定,并預(yù)留足夠的硬件發(fā)送指令的時(shí)間。當(dāng)時(shí)間片用完時(shí),通過計(jì)時(shí)器的中斷計(jì)數(shù),停止該類型消息指令的RS422控制權(quán),保留當(dāng)前指令信息狀態(tài),切換到下一種類型消息指令。這樣可保證所有就緒的指令在給定的時(shí)間內(nèi)均能得到處理。
利用單片機(jī)定時(shí)器中斷,設(shè)置其步長為20 ms,產(chǎn)生1個(gè)2 s 的RS422時(shí)間周期。定時(shí)器采用自動(dòng)裝載模式,可避免定時(shí)器翻轉(zhuǎn)手動(dòng)重新裝載數(shù)據(jù)造成的精度誤差。時(shí)間周期中的小時(shí)間片區(qū)是通過定時(shí)器20 ms步長的計(jì)數(shù)實(shí)現(xiàn)的。
本文中RS422時(shí)間片模式實(shí)現(xiàn)的數(shù)據(jù)發(fā)送以及等待功能都在中斷中實(shí)現(xiàn),保證了數(shù)據(jù)的實(shí)時(shí)性和完整性。1個(gè)RS422時(shí)間周期中,數(shù)據(jù)接收時(shí)間片中的數(shù)據(jù)接收處理是在主循環(huán)中完成的,主循環(huán)1次運(yùn)行最長時(shí)間為300 ms,軟件預(yù)留了820 ms的接收處理時(shí)間片,完全能保證該周期中接收數(shù)據(jù)的處理,不會(huì)因?yàn)橄乱恢芷跁r(shí)間片消息發(fā)送而影響數(shù)據(jù)的完整性。軟件架構(gòu)及流程見圖5。
圖5 時(shí)間片管理流程Fig.5 Flow chart of time slice management
經(jīng)過實(shí)踐,時(shí)間片通信模式的新設(shè)計(jì),對(duì)“嫦娥四號(hào)”載荷ASAN 探測儀的RS422總線通信時(shí)間片進(jìn)行了恰當(dāng)?shù)膭澐?,并增加了乒乓的可靠性設(shè)計(jì)方案,確保了各類型消息的準(zhǔn)時(shí)準(zhǔn)確發(fā)送以及完整性接收,滿足了目前RS422總線通信的時(shí)間響應(yīng)要求,保證了系統(tǒng)運(yùn)行穩(wěn)定可靠,取得了良好的效果。