馬 苗 , 朱 巖
(1.中國(guó)科學(xué)院大學(xué) 北京 100190;2.中國(guó)科學(xué)院空間科學(xué)與應(yīng)用研究中心 北京 100190)
近年來(lái),我國(guó)空間技術(shù)發(fā)展迅速,在軌航天器呈現(xiàn)出如下特點(diǎn):數(shù)量大、數(shù)據(jù)多、運(yùn)行姿態(tài)多、通信速率高、飛行程序復(fù)雜等。這對(duì)飛行器的體系結(jié)構(gòu)、數(shù)據(jù)處理與傳輸提出了更高的需求[1]。
為了增大空間飛行器的測(cè)控覆蓋范圍,提高飛行安全性,充分利用有限的空間資源,降低空間飛行成本,更為了促進(jìn)廣泛的國(guó)際合作交流,空間數(shù)據(jù)系統(tǒng)咨詢委員會(huì)(CCSDS)建立了一整套空間數(shù)據(jù)系統(tǒng)的標(biāo)準(zhǔn)。其中,遙測(cè)和遙控技術(shù)建議定義了數(shù)據(jù)傳輸?shù)母袷胶头绞?;遙控建議定義了地面至航天器的指令信息傳輸?shù)臉?biāo)準(zhǔn)數(shù)據(jù)單元;分包遙測(cè)建議定義了航天器至地面的遙測(cè)信息傳輸?shù)臉?biāo)準(zhǔn)數(shù)據(jù)單元;高級(jí)在軌系統(tǒng)建議定義了地面和高級(jí)空間系統(tǒng)間的指令和遙測(cè)信息傳輸?shù)臉?biāo)準(zhǔn)數(shù)據(jù)單元[2-3]。
CCSDS系統(tǒng)采用動(dòng)態(tài)數(shù)據(jù)管理的方式,使用不同的虛擬信道時(shí)分復(fù)用主信道,增強(qiáng)了信源的自主性和靈活性,有效提高了信道帶寬的利用率[4-5]。
文中基于CCSDS遙測(cè)遙控標(biāo)準(zhǔn)建議的數(shù)據(jù)格式,詳細(xì)介紹了某衛(wèi)星數(shù)傳系統(tǒng)數(shù)據(jù)處理軟件的設(shè)計(jì)與實(shí)現(xiàn)。
在實(shí)際衛(wèi)星通信系統(tǒng)中,發(fā)送端先根據(jù)CCSDS分包遙測(cè)的規(guī)定,將多個(gè)信源產(chǎn)生的多路數(shù)據(jù)組織為長(zhǎng)度不同的源包,再經(jīng)信源編碼后,分別選取不同的服務(wù)方式以生成虛擬信道傳輸幀,每個(gè)虛擬信道對(duì)應(yīng)一個(gè)虛擬信道標(biāo)識(shí)符(Virtual Channel Identifier,VCID)。多個(gè)虛擬信道傳輸幀時(shí)分復(fù)用同一個(gè)物理信道,根據(jù)需求選擇當(dāng)前需要傳輸?shù)奶摂M信道幀。該傳輸幀經(jīng)過(guò)信道編碼、加擾、加幀同步碼后,形成物理信道訪問(wèn)單元(Channel Access Data Unit,CADU),再進(jìn)行物理層的基帶、中頻和射頻處理,最后送入物理信道進(jìn)行傳輸。相應(yīng)地在接收端,首先將接收到的信號(hào)進(jìn)行射頻、中頻和基帶處理,得到二進(jìn)制串行碼流,然后對(duì)二進(jìn)制碼流進(jìn)行幀同步處理、去擾、信道解碼,提取出可用的傳輸幀。之后,數(shù)據(jù)處理軟件根據(jù)傳輸幀中的VCID將不同虛擬信道的幀區(qū)分開,并根據(jù)該傳輸幀在發(fā)送端采取的服務(wù)類型,將幀中的有效數(shù)據(jù)提取出來(lái),即為源包格式的數(shù)據(jù),再經(jīng)過(guò)對(duì)源包格式的解析,提取出最終的有效數(shù)據(jù)交給相應(yīng)的用戶[6]。如圖 1所示為實(shí)際衛(wèi)星通信系統(tǒng)的數(shù)據(jù)處理流程。
該數(shù)據(jù)處理軟件要完成的任務(wù)是實(shí)現(xiàn)圖 1中的數(shù)據(jù)解幀解包的全過(guò)程,包括:幀同步、去擾、RS譯碼、解幀、解包等步驟,最終得到原始數(shù)據(jù),從而驗(yàn)證數(shù)傳系統(tǒng)組幀組包和數(shù)據(jù)下傳的正確性。此外,為了實(shí)現(xiàn)軟件的靈活性、可復(fù)用性,以使其應(yīng)用于多種衛(wèi)星的數(shù)據(jù)處理需求,軟件設(shè)計(jì)需要增加
圖1 衛(wèi)星通信系統(tǒng)數(shù)據(jù)處理流程Fig.1 Data processing flow of the satellite communication system
本系統(tǒng)使用Microsoft Visual Studio 2010開發(fā),類型為MFC應(yīng)用程序。應(yīng)用程序采用模塊化設(shè)計(jì),大致分為4個(gè)模塊:配置項(xiàng)模塊、解幀模塊、解包模塊、界面顯示模塊。本節(jié)將通過(guò)流程圖的形式介紹該衛(wèi)星數(shù)據(jù)處理軟件各個(gè)模塊的設(shè)計(jì)。
為了提高軟件的生產(chǎn)效率,提高軟件質(zhì)量、提高互操作性和減少系統(tǒng)維護(hù)量,設(shè)置了多種可配置項(xiàng)。
大致分為兩種配置文件。第一個(gè)是對(duì)CCSDS數(shù)據(jù)格式的配置文件,如虛擬信道數(shù)目,虛擬信道名稱,虛擬信道標(biāo)識(shí)符,每個(gè)虛擬信道下的應(yīng)用過(guò)程數(shù)目,應(yīng)用過(guò)程名稱,應(yīng)用過(guò)程標(biāo)識(shí)符。該配置文件主要采用CMap數(shù)據(jù)結(jié)構(gòu)來(lái)存儲(chǔ)。這些配置在同一個(gè)型號(hào)任務(wù)中基本保持不變,因此,只需在程序初始化時(shí)讀取,而程序執(zhí)行過(guò)程中對(duì)配置文件的修改無(wú)效。另一個(gè)配置文件是處理過(guò)程中的一些選項(xiàng)和生成的解析報(bào)告文件的存放位置。如是否去擾,是否RS譯碼,是否產(chǎn)生詳細(xì)日志等。這些配置的修改較為頻繁,因此在程序運(yùn)行當(dāng)中可通過(guò)配置選項(xiàng)對(duì)話框多次修改,及時(shí)生效。
圖2 數(shù)據(jù)處理流程Fig.2 Data processing flow
CCSDS建議的傳輸幀格式如表1所示。傳送幀是由幀同步碼、幀主導(dǎo)頭、幀數(shù)據(jù)域及RS校驗(yàn)填充4部分組成的長(zhǎng)度固定的數(shù)據(jù)塊,也就是通常型號(hào)任務(wù)中航天器上遙測(cè)系統(tǒng)下傳的幀結(jié)構(gòu)數(shù)據(jù)流。傳輸幀主導(dǎo)頭又由版本號(hào)、航天器標(biāo)識(shí)符、虛擬信道標(biāo)識(shí)符等8部分組成。幀數(shù)據(jù)域中是按照一定規(guī)則置入數(shù)據(jù)包,這里的數(shù)據(jù)包就是按照CCSDS源包結(jié)構(gòu)的定義規(guī)則構(gòu)成的。數(shù)據(jù)源包過(guò)長(zhǎng)時(shí)需要分段。分段使各個(gè)數(shù)據(jù)源能夠較均勻地、分時(shí)交替地占有物理信道,避免長(zhǎng)數(shù)據(jù)壟斷信道的現(xiàn)象發(fā)生[7]。
解一幀的處理流程如圖 3所示。首先進(jìn)行幀同步,找到幀同步碼。由于一幀的長(zhǎng)度是固定的512字節(jié),若一幀結(jié)束后也是幀同步碼,則這一幀的長(zhǎng)度是對(duì)的,就可以進(jìn)行之后的去擾、RS譯碼等解析操作;若不是幀同步碼,則認(rèn)為前面這一幀是錯(cuò)誤的,記錄下它的位置即可,不必進(jìn)行后面的解析。
表1 CCSDS傳輸幀格式Tab.1 CCSDStransmission frame format
2.2.1 幀同步處理
幀同步處理就是從數(shù)據(jù)流中定位并提取同步碼的過(guò)程。首先找到幀同步碼,如此才能確定一個(gè)幀的位置。由于接收端是按位流來(lái)接收數(shù)據(jù),接收到的數(shù)據(jù)可能存在一定的位偏移,因此需要將數(shù)據(jù)進(jìn)行循環(huán)移位來(lái)查找同步碼。
圖3 解幀流程圖Fig.3 Deframing flowchart
2.2.2 去擾處理
為了保證信道的轉(zhuǎn)變密度,避免長(zhǎng)時(shí)間出現(xiàn)“0”或“1”,組幀時(shí)用偽隨機(jī)序列h(x)=x8+x7+x5+x3+1與除同步碼以外的每一位進(jìn)行異或,這稱之為“加擾”。因?yàn)锳⊕0=A,A⊕A=0,異或操作具有結(jié)合性,假設(shè)原始數(shù)據(jù)為D,用來(lái)加擾的偽隨機(jī)序列為K,加擾后的數(shù)據(jù)為P,則P⊕K=(D⊕K)⊕K=D⊕(K⊕K)=D⊕0=D。因此,解幀時(shí)就需要用同樣的偽隨機(jī)序列再次與除同步碼以外的每一位進(jìn)行異或,從而恢復(fù)原數(shù)據(jù)[8]。
2.2.3 RS編譯碼
為降低傳輸中的誤碼干擾與增強(qiáng)糾錯(cuò)能力,需要對(duì)數(shù)據(jù)域的數(shù)據(jù)進(jìn)行信道編碼。信道編碼采用兩級(jí)數(shù)據(jù)交織和CCSDS規(guī)定的標(biāo)準(zhǔn)糾錯(cuò)碼方式,即RS(255,223)編碼。它可糾正16字節(jié)的錯(cuò)誤。
本項(xiàng)目中,數(shù)據(jù)編碼采用如下的流程:首先把數(shù)據(jù)分為222字節(jié)的奇偶兩路,每一路分別填充一個(gè)字節(jié)構(gòu)成223字節(jié);然后經(jīng)過(guò) RS(255,233)編碼器,對(duì)編碼后的數(shù)據(jù)進(jìn)行兩級(jí)交織;最后重新組裝成數(shù)據(jù)幀,將原來(lái)虛擬填充部分換成同步碼,將剩余的字節(jié)分成VCDU導(dǎo)頭、VCDU數(shù)據(jù)域和RS校驗(yàn)符號(hào)。圖4所示為CCSDS標(biāo)準(zhǔn)建議的數(shù)據(jù)流RS編碼流程。發(fā)射端采用這種編碼方式,接收端的RS譯碼流程與編碼相反。
圖4 數(shù)據(jù)流的RS編碼流程Fig.4 RScoding process of the data stream
2.2.4 解析幀格式
經(jīng)過(guò)去擾、RS譯碼后,即可開始解析。解析內(nèi)容包括:版本號(hào)、航天器標(biāo)識(shí)符、虛擬信道標(biāo)識(shí)符等是否正確;虛擬信道傳輸幀計(jì)數(shù)是否連續(xù);信道分路,根據(jù)虛擬信道標(biāo)識(shí)符,把B-PDU數(shù)據(jù)域存儲(chǔ)到不同的文件中,以供后面解包處理使用。同時(shí),記錄下每種虛擬信道的傳輸幀個(gè)數(shù)、RS譯碼錯(cuò)誤計(jì)數(shù)等信息。
將同一個(gè)虛擬信道的數(shù)據(jù)域組合在一起,即是源包格式的數(shù)據(jù)。每個(gè)虛擬信道又分為多種應(yīng)用過(guò)程,根據(jù)應(yīng)用過(guò)程標(biāo)識(shí)符來(lái)區(qū)分,源包結(jié)構(gòu)如表 2所示。遙測(cè)源包由同步碼、主導(dǎo)頭、時(shí)間碼、E_PDU數(shù)據(jù)域組成,主導(dǎo)頭又由版本號(hào)、類型、副導(dǎo)頭標(biāo)志等7部分組成。解包的過(guò)程與解幀類似,但不需要去擾、譯碼。此外,傳輸幀長(zhǎng)度是固定的512字節(jié),而包長(zhǎng)度則不固定,需要根據(jù)“包數(shù)據(jù)長(zhǎng)度”的2個(gè)字節(jié)來(lái)確定包長(zhǎng)。解包的過(guò)程可分為如下的4個(gè)步驟:
1)找到包同步碼,根據(jù)主導(dǎo)頭中的“包數(shù)據(jù)長(zhǎng)度”字段確定包長(zhǎng);
2)根據(jù)包長(zhǎng),判斷包尾后面是否為包同步碼:若是包同步碼,轉(zhuǎn)步驟3);若不是包同步碼,轉(zhuǎn)步驟4);
3)判斷版本號(hào)、類型、副導(dǎo)頭標(biāo)志等是否正確,包序列計(jì)數(shù)是否連續(xù);根據(jù)應(yīng)用過(guò)程標(biāo)識(shí)符,分別把E-PDU數(shù)據(jù)域存儲(chǔ)到不同的文件中,轉(zhuǎn)步驟1;
4)記錄下這個(gè)錯(cuò)包,向后繼續(xù)查找包同步碼,轉(zhuǎn)步驟1)。
表2 源包數(shù)據(jù)結(jié)構(gòu)Tab.2 The packet data structure
在本實(shí)際項(xiàng)目中,某特定應(yīng)用過(guò)程的源包結(jié)構(gòu)中還有一層數(shù)據(jù)格式,即E-PDU數(shù)據(jù)域中的數(shù)據(jù),其格式如圖5所示。在解包過(guò)程中,還需對(duì)該特定數(shù)據(jù)進(jìn)行CRC校驗(yàn)。
圖5 E-PDU數(shù)據(jù)域中的數(shù)據(jù)格式Fig.5 Data format of the E-PDU data field
界面顯示模塊負(fù)責(zé)將解幀、解包過(guò)程中的信息及時(shí)更新顯示出來(lái)。當(dāng)打開應(yīng)用程序時(shí),根據(jù)配置項(xiàng)模塊顯示參數(shù)列表;數(shù)據(jù)處理時(shí)提示處理日志信息,同時(shí)利用MFC自帶的定時(shí)器定時(shí)更新統(tǒng)計(jì)數(shù)據(jù),比如文件處理進(jìn)度、RS譯碼錯(cuò)誤計(jì)數(shù)、幀計(jì)數(shù)不連續(xù)次數(shù)、正確包計(jì)數(shù)等信息。
由于數(shù)據(jù)處理過(guò)程占用CPU較多,若整個(gè)程序只用一個(gè)線程,在處理數(shù)據(jù)時(shí)點(diǎn)擊界面則會(huì)響應(yīng)緩慢,甚至無(wú)響應(yīng)。因此,程序采用多線程,界面顯示作為主線程,開始數(shù)據(jù)處理時(shí)新建一個(gè)線程,專門負(fù)責(zé)解幀解包等操作。
在VS2010環(huán)境下,軟件設(shè)計(jì)采用MFC編程。之所以不使用VC6.0,是因?yàn)楫?dāng)文件大小超過(guò)4G時(shí),必須用_fseeki64函數(shù),而不能用一般的fseek函數(shù),VC6.0不支持_fseeki64函數(shù)。
程序的處理結(jié)果分為兩種,一是數(shù)據(jù)類文件,二是報(bào)告類文件。其中,數(shù)據(jù)類文件有4種:1)frm文件,該類文件是將原始文件按虛擬信道標(biāo)識(shí)符區(qū)分所生成的幀格式的文件;2)frd文件,該類文件是將對(duì)應(yīng)的.frm文件中每一幀的B_PDU數(shù)據(jù)域的數(shù)據(jù)取出來(lái)而生成的文件,為源包格式;3)pkg文件,該類文件是將每個(gè).frd文件按應(yīng)用過(guò)程標(biāo)識(shí)符區(qū)分所生成的源包格式的文件;4)pkd文件,該類文件是將對(duì)應(yīng)的.pkg文件中每一源包的E_PDU數(shù)據(jù)域的數(shù)據(jù)取出來(lái)而生成的文件,無(wú)格式,是真正的有效數(shù)據(jù)。報(bào)告類文件包括:解幀報(bào)告、解包報(bào)告、RS譯碼報(bào)告、CRC校驗(yàn)報(bào)告等。解幀、解包報(bào)告中記錄被解析的文件名、錯(cuò)誤幀/包的位置信息、無(wú)效幀/包的個(gè)數(shù)、幀/包計(jì)數(shù)不連續(xù)的個(gè)數(shù)、正確的幀/包的個(gè)數(shù)等。RS譯碼報(bào)告記錄解幀時(shí)RS譯碼的相關(guān)錯(cuò)誤信息。CRC校驗(yàn)報(bào)告記錄解包時(shí)對(duì)特定數(shù)據(jù)進(jìn)行CRC校驗(yàn)時(shí)的相關(guān)錯(cuò)誤信息。
舉例說(shuō)明,CCSDS數(shù)據(jù)格式配置文件如圖6所示,共有4種信道,每個(gè)信道又分為幾種應(yīng)用過(guò)程。其中,填充信道的數(shù)據(jù)只是作為填補(bǔ)帶寬所用,不區(qū)分應(yīng)用過(guò)程,因此不需要進(jìn)行解包處理。經(jīng)過(guò)本軟件處理后,生成的數(shù)據(jù)類文件如圖7所示。
圖6 CCSDS數(shù)據(jù)格式配置Fig.6 CCSDSdata format configuration
以A1_信道_Frame_20140217-130915.frm文件為例,它的內(nèi)容如圖 8所示,幀同步碼為“1ACFFC1D”,可以看出是由多個(gè)512字節(jié)的傳輸幀組成。
對(duì)CCSDS數(shù)據(jù)的解析是驗(yàn)證數(shù)傳系統(tǒng)組幀、組包、傳輸?shù)裙δ艿闹匾緩健1緮?shù)據(jù)處理軟件已成功應(yīng)用于某型號(hào)衛(wèi)星數(shù)傳系統(tǒng)的測(cè)試工作中。后期待改進(jìn)的工作有:使解幀、解包可以并行處理,從而提高處理速度。
圖7 解析后生成的數(shù)據(jù)文件Fig.7 The data files generated by parsing
圖8 A1信道的幀數(shù)據(jù)文件Fig.8 The frame data files of A1 channel
[1]張麗萍.CCSDS在我國(guó)航天領(lǐng)域的應(yīng)用展望 [J].飛行器測(cè)控學(xué)報(bào),2011(30):1-4.ZHANGLi-ping.Prospect of application of CCSDSin China[J].Journal of Spacecraft TT&CTechnology,2011(30):1-4.
[2]揚(yáng)奕飛,叢波,李強(qiáng).CCSDS標(biāo)準(zhǔn)在新一代航天測(cè)控系統(tǒng)中的應(yīng)用研究[J].電訊技術(shù),2007,47(5):166-168.YANG Yi-fei,CONG Bo,LI Qiang.Application of CCSDS standard in new space TT&C systems[J].Telecommunication Engineering,2007,47(5):166-168.
[3]張琛,李愛紅,張爾楊.CCSDS遙測(cè)遙控空間數(shù)據(jù)系統(tǒng)通信協(xié)議及其應(yīng)用[J].航天返回與遙感,2004,25(2):23-28.ZHANGChen,LIAi-hong,ZHANGEr-yang.CCSDStelemetry/telecommand space data systems protocols and their applications[J].Spacecraft Recovery&Remote Sensing,2004,25(2):23-28.
[4]張?jiān)?CCSDS數(shù)據(jù)地面接收系統(tǒng)軟件設(shè)計(jì)[J].遙測(cè)遙控,2008,29(3):1-5.ZHANG Yuan.Design of CCSDS ground data acquisition system software[J].Journal of Telemetry,Tracking and Command,2008,29(3):1-5.
[5]杜國(guó)明,陳逢田.CCSDS遙測(cè)包處理分析[J].航天器工程,2007,16(5):110-114.DU Guo-ming,CHEN Feng-tian.Analysis of CCSDStelemetry packet processing[J].Spacecraft Engineering,2007,16(5):110-114.
[6]王森.衛(wèi)星高速CCSDS數(shù)據(jù)的軟件處理過(guò)程改進(jìn)研究[D].北京:北京航空航天大學(xué),2010.
[7]杜冬梅.航天器CCSDS遙測(cè)數(shù)據(jù)包處理方法研究 [J].電訊技術(shù),2007,47(2):176-180.DU Dong-mei.Processing method of the telemetry data packet for spacecrafts[J].Telecommunication Engineering,2007,47(2):176-180.
[8]易茂祥,張浩,郭紅衛(wèi),等.m-序列數(shù)據(jù)擾碼技術(shù)及其在SATA中的應(yīng)用[J].微電子學(xué),2012,42(4):502-505.YI Mao-xiang,ZHANG Hao,GUO Hong-wei,et al.m-Sequence data scrambling and its application to SATA interface[J].Microelectronic,2012,42(4):502-505.