馬 苗 , 朱 巖
(1.中國科學院大學 北京 100190;2.中國科學院空間科學與應用研究中心 北京 100190)
近年來,我國空間技術發(fā)展迅速,在軌航天器呈現(xiàn)出如下特點:數(shù)量大、數(shù)據(jù)多、運行姿態(tài)多、通信速率高、飛行程序復雜等。這對飛行器的體系結構、數(shù)據(jù)處理與傳輸提出了更高的需求[1]。
為了增大空間飛行器的測控覆蓋范圍,提高飛行安全性,充分利用有限的空間資源,降低空間飛行成本,更為了促進廣泛的國際合作交流,空間數(shù)據(jù)系統(tǒng)咨詢委員會(CCSDS)建立了一整套空間數(shù)據(jù)系統(tǒng)的標準。其中,遙測和遙控技術建議定義了數(shù)據(jù)傳輸?shù)母袷胶头绞剑贿b控建議定義了地面至航天器的指令信息傳輸?shù)臉藴蕯?shù)據(jù)單元;分包遙測建議定義了航天器至地面的遙測信息傳輸?shù)臉藴蕯?shù)據(jù)單元;高級在軌系統(tǒng)建議定義了地面和高級空間系統(tǒng)間的指令和遙測信息傳輸?shù)臉藴蕯?shù)據(jù)單元[2-3]。
CCSDS系統(tǒng)采用動態(tài)數(shù)據(jù)管理的方式,使用不同的虛擬信道時分復用主信道,增強了信源的自主性和靈活性,有效提高了信道帶寬的利用率[4-5]。
文中基于CCSDS遙測遙控標準建議的數(shù)據(jù)格式,詳細介紹了某衛(wèi)星數(shù)傳系統(tǒng)數(shù)據(jù)處理軟件的設計與實現(xiàn)。
在實際衛(wèi)星通信系統(tǒng)中,發(fā)送端先根據(jù)CCSDS分包遙測的規(guī)定,將多個信源產生的多路數(shù)據(jù)組織為長度不同的源包,再經信源編碼后,分別選取不同的服務方式以生成虛擬信道傳輸幀,每個虛擬信道對應一個虛擬信道標識符(Virtual Channel Identifier,VCID)。多個虛擬信道傳輸幀時分復用同一個物理信道,根據(jù)需求選擇當前需要傳輸?shù)奶摂M信道幀。該傳輸幀經過信道編碼、加擾、加幀同步碼后,形成物理信道訪問單元(Channel Access Data Unit,CADU),再進行物理層的基帶、中頻和射頻處理,最后送入物理信道進行傳輸。相應地在接收端,首先將接收到的信號進行射頻、中頻和基帶處理,得到二進制串行碼流,然后對二進制碼流進行幀同步處理、去擾、信道解碼,提取出可用的傳輸幀。之后,數(shù)據(jù)處理軟件根據(jù)傳輸幀中的VCID將不同虛擬信道的幀區(qū)分開,并根據(jù)該傳輸幀在發(fā)送端采取的服務類型,將幀中的有效數(shù)據(jù)提取出來,即為源包格式的數(shù)據(jù),再經過對源包格式的解析,提取出最終的有效數(shù)據(jù)交給相應的用戶[6]。如圖 1所示為實際衛(wèi)星通信系統(tǒng)的數(shù)據(jù)處理流程。
該數(shù)據(jù)處理軟件要完成的任務是實現(xiàn)圖 1中的數(shù)據(jù)解幀解包的全過程,包括:幀同步、去擾、RS譯碼、解幀、解包等步驟,最終得到原始數(shù)據(jù),從而驗證數(shù)傳系統(tǒng)組幀組包和數(shù)據(jù)下傳的正確性。此外,為了實現(xiàn)軟件的靈活性、可復用性,以使其應用于多種衛(wèi)星的數(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應用程序。應用程序采用模塊化設計,大致分為4個模塊:配置項模塊、解幀模塊、解包模塊、界面顯示模塊。本節(jié)將通過流程圖的形式介紹該衛(wèi)星數(shù)據(jù)處理軟件各個模塊的設計。
為了提高軟件的生產效率,提高軟件質量、提高互操作性和減少系統(tǒng)維護量,設置了多種可配置項。
大致分為兩種配置文件。第一個是對CCSDS數(shù)據(jù)格式的配置文件,如虛擬信道數(shù)目,虛擬信道名稱,虛擬信道標識符,每個虛擬信道下的應用過程數(shù)目,應用過程名稱,應用過程標識符。該配置文件主要采用CMap數(shù)據(jù)結構來存儲。這些配置在同一個型號任務中基本保持不變,因此,只需在程序初始化時讀取,而程序執(zhí)行過程中對配置文件的修改無效。另一個配置文件是處理過程中的一些選項和生成的解析報告文件的存放位置。如是否去擾,是否RS譯碼,是否產生詳細日志等。這些配置的修改較為頻繁,因此在程序運行當中可通過配置選項對話框多次修改,及時生效。

圖2 數(shù)據(jù)處理流程Fig.2 Data processing flow
CCSDS建議的傳輸幀格式如表1所示。傳送幀是由幀同步碼、幀主導頭、幀數(shù)據(jù)域及RS校驗填充4部分組成的長度固定的數(shù)據(jù)塊,也就是通常型號任務中航天器上遙測系統(tǒng)下傳的幀結構數(shù)據(jù)流。傳輸幀主導頭又由版本號、航天器標識符、虛擬信道標識符等8部分組成。幀數(shù)據(jù)域中是按照一定規(guī)則置入數(shù)據(jù)包,這里的數(shù)據(jù)包就是按照CCSDS源包結構的定義規(guī)則構成的。數(shù)據(jù)源包過長時需要分段。分段使各個數(shù)據(jù)源能夠較均勻地、分時交替地占有物理信道,避免長數(shù)據(jù)壟斷信道的現(xiàn)象發(fā)生[7]。
解一幀的處理流程如圖 3所示。首先進行幀同步,找到幀同步碼。由于一幀的長度是固定的512字節(jié),若一幀結束后也是幀同步碼,則這一幀的長度是對的,就可以進行之后的去擾、RS譯碼等解析操作;若不是幀同步碼,則認為前面這一幀是錯誤的,記錄下它的位置即可,不必進行后面的解析。

表1 CCSDS傳輸幀格式Tab.1 CCSDStransmission frame format
2.2.1 幀同步處理
幀同步處理就是從數(shù)據(jù)流中定位并提取同步碼的過程。首先找到幀同步碼,如此才能確定一個幀的位置。由于接收端是按位流來接收數(shù)據(jù),接收到的數(shù)據(jù)可能存在一定的位偏移,因此需要將數(shù)據(jù)進行循環(huán)移位來查找同步碼。

圖3 解幀流程圖Fig.3 Deframing flowchart
2.2.2 去擾處理
為了保證信道的轉變密度,避免長時間出現(xiàn)“0”或“1”,組幀時用偽隨機序列h(x)=x8+x7+x5+x3+1與除同步碼以外的每一位進行異或,這稱之為“加擾”。因為A⊕0=A,A⊕A=0,異或操作具有結合性,假設原始數(shù)據(jù)為D,用來加擾的偽隨機序列為K,加擾后的數(shù)據(jù)為P,則P⊕K=(D⊕K)⊕K=D⊕(K⊕K)=D⊕0=D。因此,解幀時就需要用同樣的偽隨機序列再次與除同步碼以外的每一位進行異或,從而恢復原數(shù)據(jù)[8]。
2.2.3 RS編譯碼
為降低傳輸中的誤碼干擾與增強糾錯能力,需要對數(shù)據(jù)域的數(shù)據(jù)進行信道編碼。信道編碼采用兩級數(shù)據(jù)交織和CCSDS規(guī)定的標準糾錯碼方式,即RS(255,223)編碼。它可糾正16字節(jié)的錯誤。
本項目中,數(shù)據(jù)編碼采用如下的流程:首先把數(shù)據(jù)分為222字節(jié)的奇偶兩路,每一路分別填充一個字節(jié)構成223字節(jié);然后經過 RS(255,233)編碼器,對編碼后的數(shù)據(jù)進行兩級交織;最后重新組裝成數(shù)據(jù)幀,將原來虛擬填充部分換成同步碼,將剩余的字節(jié)分成VCDU導頭、VCDU數(shù)據(jù)域和RS校驗符號。圖4所示為CCSDS標準建議的數(shù)據(jù)流RS編碼流程。發(fā)射端采用這種編碼方式,接收端的RS譯碼流程與編碼相反。

圖4 數(shù)據(jù)流的RS編碼流程Fig.4 RScoding process of the data stream
2.2.4 解析幀格式
經過去擾、RS譯碼后,即可開始解析。解析內容包括:版本號、航天器標識符、虛擬信道標識符等是否正確;虛擬信道傳輸幀計數(shù)是否連續(xù);信道分路,根據(jù)虛擬信道標識符,把B-PDU數(shù)據(jù)域存儲到不同的文件中,以供后面解包處理使用。同時,記錄下每種虛擬信道的傳輸幀個數(shù)、RS譯碼錯誤計數(shù)等信息。
將同一個虛擬信道的數(shù)據(jù)域組合在一起,即是源包格式的數(shù)據(jù)。每個虛擬信道又分為多種應用過程,根據(jù)應用過程標識符來區(qū)分,源包結構如表 2所示。遙測源包由同步碼、主導頭、時間碼、E_PDU數(shù)據(jù)域組成,主導頭又由版本號、類型、副導頭標志等7部分組成。解包的過程與解幀類似,但不需要去擾、譯碼。此外,傳輸幀長度是固定的512字節(jié),而包長度則不固定,需要根據(jù)“包數(shù)據(jù)長度”的2個字節(jié)來確定包長。解包的過程可分為如下的4個步驟:
1)找到包同步碼,根據(jù)主導頭中的“包數(shù)據(jù)長度”字段確定包長;
2)根據(jù)包長,判斷包尾后面是否為包同步碼:若是包同步碼,轉步驟3);若不是包同步碼,轉步驟4);
3)判斷版本號、類型、副導頭標志等是否正確,包序列計數(shù)是否連續(xù);根據(jù)應用過程標識符,分別把E-PDU數(shù)據(jù)域存儲到不同的文件中,轉步驟1;
4)記錄下這個錯包,向后繼續(xù)查找包同步碼,轉步驟1)。

表2 源包數(shù)據(jù)結構Tab.2 The packet data structure
在本實際項目中,某特定應用過程的源包結構中還有一層數(shù)據(jù)格式,即E-PDU數(shù)據(jù)域中的數(shù)據(jù),其格式如圖5所示。在解包過程中,還需對該特定數(shù)據(jù)進行CRC校驗。

圖5 E-PDU數(shù)據(jù)域中的數(shù)據(jù)格式Fig.5 Data format of the E-PDU data field
界面顯示模塊負責將解幀、解包過程中的信息及時更新顯示出來。當打開應用程序時,根據(jù)配置項模塊顯示參數(shù)列表;數(shù)據(jù)處理時提示處理日志信息,同時利用MFC自帶的定時器定時更新統(tǒng)計數(shù)據(jù),比如文件處理進度、RS譯碼錯誤計數(shù)、幀計數(shù)不連續(xù)次數(shù)、正確包計數(shù)等信息。
由于數(shù)據(jù)處理過程占用CPU較多,若整個程序只用一個線程,在處理數(shù)據(jù)時點擊界面則會響應緩慢,甚至無響應。因此,程序采用多線程,界面顯示作為主線程,開始數(shù)據(jù)處理時新建一個線程,專門負責解幀解包等操作。
在VS2010環(huán)境下,軟件設計采用MFC編程。之所以不使用VC6.0,是因為當文件大小超過4G時,必須用_fseeki64函數(shù),而不能用一般的fseek函數(shù),VC6.0不支持_fseeki64函數(shù)。
程序的處理結果分為兩種,一是數(shù)據(jù)類文件,二是報告類文件。其中,數(shù)據(jù)類文件有4種:1)frm文件,該類文件是將原始文件按虛擬信道標識符區(qū)分所生成的幀格式的文件;2)frd文件,該類文件是將對應的.frm文件中每一幀的B_PDU數(shù)據(jù)域的數(shù)據(jù)取出來而生成的文件,為源包格式;3)pkg文件,該類文件是將每個.frd文件按應用過程標識符區(qū)分所生成的源包格式的文件;4)pkd文件,該類文件是將對應的.pkg文件中每一源包的E_PDU數(shù)據(jù)域的數(shù)據(jù)取出來而生成的文件,無格式,是真正的有效數(shù)據(jù)。報告類文件包括:解幀報告、解包報告、RS譯碼報告、CRC校驗報告等。解幀、解包報告中記錄被解析的文件名、錯誤幀/包的位置信息、無效幀/包的個數(shù)、幀/包計數(shù)不連續(xù)的個數(shù)、正確的幀/包的個數(shù)等。RS譯碼報告記錄解幀時RS譯碼的相關錯誤信息。CRC校驗報告記錄解包時對特定數(shù)據(jù)進行CRC校驗時的相關錯誤信息。
舉例說明,CCSDS數(shù)據(jù)格式配置文件如圖6所示,共有4種信道,每個信道又分為幾種應用過程。其中,填充信道的數(shù)據(jù)只是作為填補帶寬所用,不區(qū)分應用過程,因此不需要進行解包處理。經過本軟件處理后,生成的數(shù)據(jù)類文件如圖7所示。

圖6 CCSDS數(shù)據(jù)格式配置Fig.6 CCSDSdata format configuration
以A1_信道_Frame_20140217-130915.frm文件為例,它的內容如圖 8所示,幀同步碼為“1ACFFC1D”,可以看出是由多個512字節(jié)的傳輸幀組成。
對CCSDS數(shù)據(jù)的解析是驗證數(shù)傳系統(tǒng)組幀、組包、傳輸?shù)裙δ艿闹匾緩健1緮?shù)據(jù)處理軟件已成功應用于某型號衛(wèi)星數(shù)傳系統(tǒng)的測試工作中。后期待改進的工作有:使解幀、解包可以并行處理,從而提高處理速度。

圖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在我國航天領域的應用展望 [J].飛行器測控學報,2011(30):1-4.ZHANGLi-ping.Prospect of application of CCSDSin China[J].Journal of Spacecraft TT&CTechnology,2011(30):1-4.
[2]揚奕飛,叢波,李強.CCSDS標準在新一代航天測控系統(tǒng)中的應用研究[J].電訊技術,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遙測遙控空間數(shù)據(jù)系統(tǒng)通信協(xié)議及其應用[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]張源.CCSDS數(shù)據(jù)地面接收系統(tǒng)軟件設計[J].遙測遙控,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]杜國明,陳逢田.CCSDS遙測包處理分析[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ù)的軟件處理過程改進研究[D].北京:北京航空航天大學,2010.
[7]杜冬梅.航天器CCSDS遙測數(shù)據(jù)包處理方法研究 [J].電訊技術,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ù)擾碼技術及其在SATA中的應用[J].微電子學,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.