馬文臻,鄒自明,黎建輝,李 冰,石 濤,孫小涓
1(中國科學(xué)院 計算機(jī)網(wǎng)絡(luò)信息中心,北京 100190)
2(中國科學(xué)院 國家空間科學(xué)中心,北京 100190)
3(中國科學(xué)院大學(xué),北京 100049)
4(中國科學(xué)院 電子學(xué)研究所,北京 100190)
在衛(wèi)星地面數(shù)據(jù)處理的全部流程中,對正確性和時效性要求最高的一個環(huán)節(jié)就是數(shù)據(jù)預(yù)處理,其中最關(guān)鍵的技術(shù)就是載荷源包排序算法.衛(wèi)星載荷獲取的探測或者實(shí)驗(yàn)數(shù)據(jù),以載荷源包的形式存儲在星上存儲器中,在記錄數(shù)據(jù)之后需要盡快下行到地面執(zhí)行預(yù)處理,去除傳輸層的結(jié)構(gòu),將載荷源包還原成載荷執(zhí)行探測并記錄下來的原始數(shù)據(jù)內(nèi)容序列,并盡最大可能保障數(shù)據(jù)的正確性和完備性,以支持后續(xù)的科學(xué)研究.
從星上各載荷打源包、數(shù)管將各路源包統(tǒng)一組成信道傳輸幀、數(shù)傳發(fā)射機(jī)傳輸數(shù)據(jù)、地面接收站接收數(shù)據(jù)、地面數(shù)據(jù)處理系統(tǒng)進(jìn)行數(shù)據(jù)解幀、源包提取與正確性校驗(yàn)、源包時間碼處理、源包排序到數(shù)據(jù)連續(xù)性及完備性驗(yàn)證[1],每一個步驟都可能發(fā)生異常.地面系統(tǒng)需要識別發(fā)生的各種異常,判斷是否可以通過容錯處理進(jìn)行地面修復(fù),確認(rèn)是否可以還原得到源包順序及內(nèi)容都正確的、連續(xù)而完備的載荷科學(xué)數(shù)據(jù)源包序列[2].如果確認(rèn)存在無法修復(fù)的異常,地面系統(tǒng)需要權(quán)衡缺失數(shù)據(jù)的科學(xué)重要性、星上存儲是否已經(jīng)覆蓋、地面測控站是否有余量進(jìn)行指令上行、地面接收站是否有余量進(jìn)行增量接收等各種情況,盡快決定是否上行指令點(diǎn)播發(fā)生異常的載荷源包數(shù)據(jù),以免在點(diǎn)播完成之前星上存儲器中的數(shù)據(jù)被覆蓋[3].
如果數(shù)據(jù)標(biāo)定處理和數(shù)據(jù)反演處理不夠理想,都可以事后重新進(jìn)行處理和驗(yàn)證.只有預(yù)處理,如果星上數(shù)據(jù)發(fā)生錯誤或者缺失,是無法重新獲取的.關(guān)鍵位置的一個源包的殘缺或者誤碼,都可能導(dǎo)致科學(xué)實(shí)驗(yàn)結(jié)果失效或者觀測事例不完備.例如,在量子科學(xué)實(shí)驗(yàn)衛(wèi)星中,科學(xué)數(shù)據(jù)源包存儲了星地量子密鑰,地面實(shí)驗(yàn)數(shù)據(jù)的分析處理中,需要對密鑰進(jìn)行逐bit的基矢比對,一個bit 都不能錯,否則該次實(shí)驗(yàn)就失效.所以,空間科學(xué)衛(wèi)星對于載荷源包還原的正確性和完備性有著極為嚴(yán)苛的要求,這是不同于其它任何業(yè)務(wù)應(yīng)用衛(wèi)星的.其它的對地觀測衛(wèi)星、氣象衛(wèi)星等,都是允許一定的誤碼率,個別的源碼錯誤或者缺失不影響整張圖片的產(chǎn)出或者探測量的監(jiān)視.
在航天領(lǐng)域,通用的衛(wèi)星數(shù)傳誤碼率指標(biāo)為糾錯后達(dá)到1e–5,這是按照bit 位計算的,換算為幀計數(shù)的異常率平均在幾百分之一.在空間科學(xué)衛(wèi)星數(shù)據(jù)中,誤碼率通常優(yōu)于1e–6,那么每個衛(wèi)星下行原始數(shù)據(jù)文件中發(fā)生幀計數(shù)異常的概率為幾千分之一,也就是在每個文件中都會遇到幾次幀計數(shù)錯誤.衛(wèi)星上對源包賦予計數(shù)和時間碼的時候也可能不定時發(fā)生異常.因此,排序依據(jù)的標(biāo)志位發(fā)生異常情況下,如何能提高處理正確率,是非常值得研究的[4,5].
在與美國航天局(NASA)和歐空局(ESA)地面數(shù)據(jù)處理機(jī)構(gòu)的學(xué)術(shù)交流活動中了解到,其空間科學(xué)衛(wèi)星地面系統(tǒng)對衛(wèi)星數(shù)傳原始數(shù)據(jù)進(jìn)行源包排序處理的整體文件正確率平均達(dá)92%左右.最終發(fā)生錯誤導(dǎo)致失效的源包占總源包的比例大概在百萬分之一的級別.然而,對于空間科學(xué)衛(wèi)星來說,也許失效的那幾個源包,恰好是一個實(shí)驗(yàn)或者一次觀測的關(guān)鍵數(shù)據(jù),會導(dǎo)致一次實(shí)驗(yàn)或者觀測的失敗;也許失效的那幾個源包,正好錯過了百年難遇的重大發(fā)現(xiàn).為了支持科學(xué)發(fā)現(xiàn)上可能的突破,地面數(shù)據(jù)處理領(lǐng)域值得付出持續(xù)不斷的改進(jìn)努力,向著100%的正確率去靠近.
空間科學(xué)衛(wèi)星的數(shù)據(jù)組織與通信采用國際航天領(lǐng)域通用的CCSDS 標(biāo)準(zhǔn).衛(wèi)星數(shù)據(jù)有科學(xué)數(shù)據(jù)、載荷工程數(shù)據(jù)和平臺工程數(shù)據(jù)3 大類,科學(xué)數(shù)據(jù)是載荷設(shè)備通過開展觀測得到的原始觀測數(shù)據(jù)或者開展實(shí)驗(yàn)得到的原始實(shí)驗(yàn)數(shù)據(jù),載荷工程數(shù)據(jù)是表征載荷運(yùn)行狀態(tài)的工程參數(shù),平臺工程數(shù)據(jù)是表征衛(wèi)星平臺設(shè)備運(yùn)行狀態(tài)的工程參數(shù).衛(wèi)星平臺及載荷的各設(shè)備使用應(yīng)用過程標(biāo)識符對衛(wèi)星數(shù)據(jù)采集和傳輸過程中不同數(shù)據(jù)源設(shè)備進(jìn)行區(qū)分,構(gòu)成可變長度的面向應(yīng)用的數(shù)據(jù)包,稱為“源包”.遙測源包的格式如表1所示[6,7].
表1 CCSDS 遙測源包格式
同步碼長度為16 bit,一般用‘E225’h (十六進(jìn)制).每一種不同類型的源包依據(jù)應(yīng)用過程標(biāo)識符(APID)來區(qū)分.硬X 射線調(diào)制望遠(yuǎn)鏡衛(wèi)星(HXMT)有35 個APID,暗物質(zhì)粒子探測衛(wèi)星(DAMPE)有14 個APID,量子科學(xué)實(shí)驗(yàn)衛(wèi)星(QUESS)有11 個APID,實(shí)踐十號返回式科學(xué)實(shí)驗(yàn)衛(wèi)星(SJ-10)有48 個APID.按照APID對飛行器上每個特有的源應(yīng)用過程產(chǎn)生的源包分別進(jìn)行包序列計數(shù),長度14 bit,模16384.
副導(dǎo)頭標(biāo)志長度為1 bit,‘0’b (二進(jìn)制)表示源包內(nèi)沒有副導(dǎo)頭,‘1’b 表示源包內(nèi)有副導(dǎo)頭數(shù)據(jù).空間科學(xué)衛(wèi)星由于科學(xué)數(shù)據(jù)采集頻率極高,源包序列計數(shù)在一次下行中就會回滾很多次,所以必須聯(lián)合使用源包時間碼來區(qū)分源包,副導(dǎo)頭標(biāo)志均為‘1’b.分組標(biāo)志為長度為2 bit,標(biāo)記該源包是獨(dú)立源包還是分組源包,用來提供源包在組內(nèi)位置的信息.副導(dǎo)頭長度8 字節(jié),自定義內(nèi)容,目的是為任何輔助數(shù)據(jù)(如時間,內(nèi)部數(shù)據(jù)域格式,航天器位置/姿態(tài)等)編入源包提供一種CCSDS定義的手段.在空間科學(xué)衛(wèi)星中,副導(dǎo)頭為時間碼,其高2 字節(jié)為0,然后4 字節(jié)為秒計數(shù),最后2 字節(jié)為毫秒計數(shù).
E-PDU 數(shù)據(jù)域是可變長度的N字節(jié),是應(yīng)用過程在每個源內(nèi)運(yùn)行產(chǎn)生的真正的科學(xué)探測或科學(xué)實(shí)驗(yàn)信息.
衛(wèi)星數(shù)管設(shè)備將眾多遙測源包分成幾大類,分別組成不同的虛擬信道數(shù)據(jù)單元(VCDU),每個VCDU包括主導(dǎo)頭和數(shù)據(jù)域,VCDU 加上同步碼就構(gòu)成了數(shù)據(jù)傳輸幀(AOS frame).不同的虛擬信道的AOS 幀用虛擬信道標(biāo)識符(virtual channel identifier,VCID)來區(qū)分.針對工程參數(shù)區(qū)回放數(shù)據(jù)、科學(xué)數(shù)據(jù)區(qū)回放數(shù)據(jù)和實(shí)時工程參數(shù)數(shù)據(jù)等,數(shù)據(jù)傳輸幀劃分不同虛擬信道,以支持不同的數(shù)據(jù)應(yīng)用.第一層的遙測源包的連續(xù)二進(jìn)制碼流截斷填充到第二層AOS 傳輸幀的數(shù)據(jù)域部分.AOS 傳輸幀的格式如表2所示[8–10]:
表2 AOS 傳輸幀格式
數(shù)據(jù)處理系統(tǒng)解析“AOS 幀—遙測源包”的雙層結(jié)構(gòu)的過程如圖1所示.首先依據(jù)虛擬信道標(biāo)識符、虛擬信道幀計數(shù)、回放標(biāo)志等進(jìn)行信道區(qū)分,從一個或多個傳輸幀的數(shù)據(jù)域中解析得到有效的源包數(shù)據(jù),然后解析源包結(jié)構(gòu),依據(jù)應(yīng)用過程標(biāo)識符、源包計數(shù)、包長進(jìn)行分路處理,還原出每一類的遙測源包,對其數(shù)據(jù)內(nèi)容進(jìn)行有效性驗(yàn)證,之后依據(jù)時間碼或源包計數(shù)進(jìn)行源包排序,使其還原為星上探測的原始順序[9–11].只有排序正確、計數(shù)連續(xù)的源包序列,其數(shù)據(jù)域的內(nèi)容依次連接,才可以形成正確的用戶數(shù)據(jù)單元(protocal data unit,PDU),也就是正確、完備的原始科學(xué)探測或?qū)嶒?yàn)數(shù)據(jù).
圖1 傳輸幀與源包組織結(jié)構(gòu)的地面解析過程
在遙感衛(wèi)星、氣象衛(wèi)星等應(yīng)用衛(wèi)星的地面數(shù)據(jù)預(yù)處理工作中,源包排序算法是基于“虛擬信道幀計數(shù)+源包計數(shù)”進(jìn)行的.其基本排序策略為先按照源包計數(shù)進(jìn)行排序,如果源包計數(shù)相同,則按照VCDU 計數(shù)進(jìn)行排序.這種排序策略并未考慮到計數(shù)溢出而重置的情況,也不支持同一軌接收過程中進(jìn)行歷史數(shù)據(jù)點(diǎn)播的操作[12–14].
在空間科學(xué)衛(wèi)星數(shù)據(jù)處理領(lǐng)域,由于兩層計數(shù)循環(huán)速度太快,重置頻率高,單軌數(shù)據(jù)中常出現(xiàn)源包計數(shù)和VCDU 計數(shù)都相同的情況,所以“虛擬信道幀計數(shù)+源包計數(shù)”的雙重計數(shù)排序法不滿足空間科學(xué)衛(wèi)星數(shù)據(jù)的處理需求.所以空間科學(xué)衛(wèi)星在源包結(jié)構(gòu)的副導(dǎo)頭中都增加了“時間碼”字段,擴(kuò)展為“源包時間碼+源包計數(shù)+虛擬信道幀計數(shù)”的源包排序處理策略,時間碼相同的源包按照源包計數(shù)進(jìn)行局部排序,虛擬信道幀計數(shù)和源包計數(shù)僅僅是作為局部變量來使用的.虛擬信道計數(shù)主要用來拼接跨兩個虛擬信道的源包數(shù)據(jù),使其按照下行順序首尾銜接.由于存儲空間有限,CCSDS為避免大量冗余,源包的時間碼一般精確到秒,最多精確到毫秒,而很多觀測數(shù)據(jù)的采集頻率極高,最高情況下1 s 可以產(chǎn)生上萬個源包,源包計數(shù)的深度為14 bit,計滿16 384 條數(shù)據(jù)就會循環(huán)重新開始一個計數(shù)周期,所以源包計數(shù)主要用來區(qū)別時間碼相同的源包的真實(shí)采集順序[15–17].
這種“源包時間碼+源包計數(shù)+虛擬信道幀計數(shù)”的通行方法對于星上數(shù)據(jù)和時間碼都正常的情況下是沒有問題的,但是如果幀計數(shù)、源包計數(shù)和時間碼等關(guān)鍵索引信息由于各種異常發(fā)生錯誤而不能代表源包的真實(shí)采集順序呢?
不同的空間科學(xué)衛(wèi)星,由于載荷對數(shù)據(jù)采集記錄時間的精度要求的不同,給星上時間系統(tǒng)的設(shè)計帶來了不同的要求和實(shí)現(xiàn)難度.源包中的時間碼,一般有兩種來源,有的來源于GPS 設(shè)備,有的來源于自身時鐘累計的相對秒數(shù)和毫秒數(shù).如果載荷組源包的過程發(fā)生通訊或者軟件異常,沒有取到時間碼,那么源包中時間碼字段會變成默認(rèn)值[17].如果時鐘的秒和毫秒計數(shù)不完全同步,會導(dǎo)致時間錯齒跳變.如果受到單粒子時間打翻存儲器的某一位或者某幾位的記錄,那么時間碼會發(fā)生無規(guī)則的跳變.源包計數(shù)和虛擬信道幀計數(shù)也都是如此,當(dāng)接收設(shè)備故障、雨雪天氣、突發(fā)信號干擾等原因造成的誤碼率超出可糾錯范圍時,當(dāng)星上數(shù)傳設(shè)備出現(xiàn)故障時,遭遇單粒子打翻某些bit 位時,當(dāng)點(diǎn)播歷史數(shù)據(jù)時,都可能出現(xiàn)重復(fù)、錯誤、亂序等異常情況,而且有時候多種異常情形會聯(lián)合發(fā)生.這時候,“源包時間碼+源包計數(shù)+虛擬信道幀計數(shù)”的算法就會發(fā)生排序錯誤,而且很難有一種萬全的源包排序算法,能夠保證在所有異常情況下都能百分百正確地實(shí)施源包排序.對于發(fā)生排序錯誤的源包,有的可以通過耗時漫長(可能幾天到幾個月)的人工分析去修復(fù),有的沒有得到徹底修復(fù),造成個別科學(xué)數(shù)據(jù)源包失效.
縱觀國內(nèi)外的主流航天總體機(jī)構(gòu),都針對性地開展了衛(wèi)星數(shù)據(jù)源包提取與排序技術(shù)的研究,盡量提高排序正確率,降低因各種時間碼異常情況而導(dǎo)致的大量人工干預(yù)工作和對科學(xué)研究的負(fù)面影響.
經(jīng)過對我國空間科學(xué)先導(dǎo)專項(xiàng)一期發(fā)射的DAMPE、QUESS、HXMT和SJ-10 四顆衛(wèi)星的星上數(shù)據(jù)組織結(jié)構(gòu)與地面數(shù)據(jù)預(yù)處理過程進(jìn)行研究,本文設(shè)計了一種把諸多異常情形綜合考慮在內(nèi)的“多重索引+時間戳校正”的源包排序方法.
AOS 幀解析、源包提取與多重索引構(gòu)建的整個處理過程如圖2所示.
圖2 多重索引構(gòu)建
首先,構(gòu)建信道級幀索引.獲取數(shù)傳原始數(shù)據(jù)文件后進(jìn)行文件解析與校驗(yàn),之后進(jìn)行AOS 幀的完整性和有效性校驗(yàn),然后進(jìn)行虛擬信道區(qū)分、直傳與回放數(shù)據(jù)的區(qū)分,按照虛擬信道的不同,形成每個信道的幀文件,分別進(jìn)行幀的排序與連續(xù)性校驗(yàn),提取幀索引表所需的信息,構(gòu)建信道級的幀索引,如圖3所示.
圖3 幀索引表
幀索引信息不僅包含傳輸幀的虛擬信道標(biāo)識符(VCID,十六進(jìn)制)、虛擬信道幀計數(shù)(VCDU Count,十六進(jìn)制),還包括直傳回放標(biāo)志(Flag,二進(jìn)制0 或1)、幀B-PDU 數(shù)據(jù)域在原始數(shù)據(jù)文件中的偏移位置(VCDU Offset,十六進(jìn)制字節(jié)數(shù))、下行軌道圈次(Track No,十進(jìn)制)等信息[18].
其次,構(gòu)建應(yīng)用過程級源包索引.對每個虛擬信道的幀文件中的幀進(jìn)行數(shù)據(jù)的連續(xù)性校驗(yàn),在校驗(yàn)正確的情況下從幀中提取源包數(shù)據(jù)域,按照不同的APID拼接形成完成的源包(其中,一個虛擬信道標(biāo)識符VCID 對應(yīng)一個或者多個應(yīng)用過程標(biāo)識符APID),并進(jìn)行源包的有效性校驗(yàn),通過校驗(yàn)的源包,將其信息解析后提取源包索引表所需的信息,構(gòu)建應(yīng)用過程級的源包索引,如圖4所示.
圖4 源包索引表
源包索引信息不僅包括最重要的應(yīng)用過程標(biāo)識符(APID,十六進(jìn)制)、源包時間碼(packet time,轉(zhuǎn)化為統(tǒng)一的時間格式“年月日T 時分秒.毫秒”)、源包計數(shù)(packet count,十六進(jìn)制),還包括源包長度(packet length,十六進(jìn)制字節(jié)數(shù))和源包E-PDU 數(shù)據(jù)域在原始數(shù)據(jù)文件中的偏移位置(packet offset,十六進(jìn)制字節(jié)數(shù))等信息,還包括一個格外重要的字段,就是校正時間戳(corrected time stamp,格式與源包時間碼相同),這個字段存放的是經(jīng)過時間戳校正之后的源包時間碼,本文提出的算法將主要依據(jù)這個校正時間戳進(jìn)行源包排序,此外,還有異常標(biāo)記(anomaly flag,十進(jìn)制),代表不同的時間戳校正策略.
幀索引和源包索引中的信息按照一定規(guī)則組合起來,就構(gòu)成了多重索引.多重索引與數(shù)據(jù)幀及源包中的相關(guān)字段一一對應(yīng),于是把對數(shù)據(jù)本身的處理轉(zhuǎn)化成為對索引的操作,而索引的數(shù)據(jù)量相對于數(shù)據(jù)本身是非常小的,所以可以全部在內(nèi)存中處理,避免了對數(shù)據(jù)本身進(jìn)行處理而產(chǎn)生的大量內(nèi)外存數(shù)據(jù)交換,提高數(shù)據(jù)源包排序處理的效率.
針對不同衛(wèi)星的不同源包,依據(jù)時間碼來源與異常情況的不同,其時間碼提取、時間戳初次標(biāo)記、異常標(biāo)記的策略也有所不同,可以配置不同的處理流程和參數(shù).
以HXMT 衛(wèi)星的幾個典型APID為例進(jìn)行說明,源包時間碼提取與時間戳初標(biāo)的過程如圖5所示.高能望遠(yuǎn)鏡(HE)的科學(xué)和工程參數(shù)源包時間碼來自于GPS 設(shè)備,因此需要判斷GPS 設(shè)備是否處于非定位狀態(tài)來確定時間碼的正確性,當(dāng)其處于正常的定位狀態(tài)時,時間戳初始標(biāo)記為GPS的時間碼,在處于非定位狀態(tài)時,時間戳初始標(biāo)記為0,同時進(jìn)行異常標(biāo)記.中能望遠(yuǎn)鏡(ME)的源包時間來自于UTC 事例,而且多組FPGA 源包與UTC 事例源包輪流排列,因此需要判斷FPGA 分組編號的連續(xù)性并查找對應(yīng)的UTC 事例,時間戳初始標(biāo)記為UTC 事例中的時間碼,存在異常時時間戳初始標(biāo)記為0.平臺工程數(shù)據(jù)由一系列不同類別的源包首位相接組成,需要檢查源包組的完整性,如果恰好有不完整的源包組,則與之前20 軌數(shù)傳下行數(shù)據(jù)的不完整緩存進(jìn)行拼接,內(nèi)容完整的源包從GPS 定位數(shù)據(jù)包或者時間數(shù)據(jù)包中獲取時間碼.
圖5 源包時間碼提取與時間戳初標(biāo)過程
關(guān)鍵參數(shù)之一是隊(duì)列連續(xù)性判別參數(shù).根據(jù)虛擬信道與應(yīng)用過程標(biāo)識符的對應(yīng)關(guān)系、源包的分組特性,對各APID的源包隊(duì)列連續(xù)性判別參數(shù)進(jìn)行分別設(shè)置.舉例如下:
(1)對于HXMT 衛(wèi)星的低能望遠(yuǎn)鏡LE 科學(xué)數(shù)據(jù),判斷隊(duì)列連續(xù)性時使用源包計數(shù)差小于6 且?guī)嫈?shù)差小于FFF 進(jìn)行判定.因?yàn)長E 科學(xué)數(shù)據(jù)包含3 個獨(dú)立的APIDI,分別為LE 科學(xué)1、LE 科學(xué)2、LE 科學(xué)3,它們共用一個虛擬信道,而每一幀數(shù)據(jù)存儲2 個獨(dú)立的源包,各源包最大計數(shù)為0x3FFF,因此每類源包一個計數(shù)循環(huán)最多占用1FFF 個幀計數(shù).為保證源包排序,使用半個源包計數(shù)周期占用的幀計數(shù)FFF.通過對發(fā)現(xiàn)問題當(dāng)軌數(shù)據(jù)比對,兩個源包間幀計數(shù)差未超過FF,因此使用FFF 作為參數(shù)可以滿足要求.
(2)對于HXMT 衛(wèi)星的高能望遠(yuǎn)鏡HE 科學(xué)數(shù)據(jù)、中能望遠(yuǎn)鏡ME 科學(xué)數(shù)據(jù),判斷隊(duì)列連續(xù)性時使用源包計數(shù)差小于6 且?guī)嫈?shù)差小于3 進(jìn)行判定.存儲HE和ME 科學(xué)數(shù)據(jù)的每個虛擬信道僅存儲一類源包,HE 科學(xué)數(shù)據(jù)虛擬信道每幀數(shù)據(jù)存儲1 個源包,ME 科學(xué)虛擬信道每幀數(shù)據(jù)存儲2 個源包,當(dāng)對3 幀數(shù)據(jù)容錯時,可能丟失源包數(shù)應(yīng)不大于6.
(3)對于HXMT的載荷工程數(shù)據(jù),判斷隊(duì)列連續(xù)性時使用源包計數(shù)差小于27 且?guī)嫈?shù)差小于3 進(jìn)行判定.各載荷的工程數(shù)據(jù)虛擬信道僅存儲該載荷的工程數(shù)據(jù)源包,每幀數(shù)據(jù)存儲9 個源包,當(dāng)對3 幀數(shù)據(jù)容錯時,可能丟失源包數(shù)應(yīng)不大于27.
關(guān)鍵參數(shù)之二是成組源包的不完整數(shù)據(jù)回溯文件數(shù)參數(shù).對于分組源包,一組連續(xù)源包共同組成一條探測記錄的情況,占用多個傳輸幀進(jìn)行傳輸,因此需要判斷該組源包的完整性.舉例如下:對于某些類型的源包組不完整的數(shù)據(jù),回溯20 軌數(shù)據(jù)嘗試進(jìn)行源包組的補(bǔ)全.
從衛(wèi)星原始數(shù)據(jù)中提取出來的各種索引字段,沒有一個是隨著源包的真實(shí)順序而永遠(yuǎn)遞增的,幀計數(shù)、源包計數(shù)都會周期性回滾歸零重新累計,源包時間碼可能發(fā)生各種錯誤和亂序而沒有依據(jù)源包真實(shí)的先后順序而遞增,因此作為排序依據(jù)使用起來有一定困難.而想要對亂序下行的多份重復(fù)源包進(jìn)行正確排序,必須建立一個真正隨著源包的先后順序一直遞增的標(biāo)志,基于這種情況,本文設(shè)置了“校正的時間戳”.源包時間戳校正環(huán)節(jié)的主要流程如圖6所示.
圖6 源包時間戳校正
根據(jù)不同的異常標(biāo)記采取不同的時間戳校正策略.
(1)當(dāng)因無法獲取GPS 時間導(dǎo)致源包時間碼變成默認(rèn)的填充碼時,將其時間戳校正為該源包之前的最近一個正常的源包時間碼;
(2)當(dāng)載荷異常開關(guān)機(jī)導(dǎo)致累積秒歸零,造成時間碼復(fù)位到初始位置,重新累積,將發(fā)生復(fù)位后的源包的時間戳校正為當(dāng)前累積秒疊加復(fù)位之前累積秒的總秒數(shù)經(jīng)換算得到的時間碼;
(3)當(dāng)時間的秒部和毫秒部的進(jìn)位不完全同步造成“跳秒”現(xiàn)象,也就是判斷當(dāng)前源包的時間碼小于上一個源包,并且很接近(設(shè)置為2 s 之內(nèi)),那么將當(dāng)前源包的時間戳校正為增加1 s,并判斷校正后的時間碼大于上一個源包的時間碼,且不大于下一個源包的時間碼,如果不滿足則把時間戳校正為上一個源包的時間碼;
(4)當(dāng)源包時間碼因單粒子事件等造成無規(guī)則異常時,檢索當(dāng)前源包時間碼,如果小于上一個正常源包的時間碼或大于下一個相鄰源包的時間碼,將其時間戳校正為上一個正常源包的時間碼;
(5)如果本隊(duì)列中在當(dāng)前源包之前不存在非0 時間戳的正常源包,那么依據(jù)其之后相鄰最近的非0 時間戳的正常源包來進(jìn)行時間戳校正,如果本隊(duì)列時間戳均為0,即時間碼有誤,那么回溯上一軌數(shù)據(jù)繼續(xù)尋找時間戳正常的源包作為校正基準(zhǔn).
源包排序流程如圖7所示.首先依據(jù)校正后的源包時間戳對數(shù)據(jù)進(jìn)行排序,進(jìn)行時間大小比較時,當(dāng)時間戳無法區(qū)分時,借助源包計數(shù)、幀計數(shù)、源包偏移量、軌道圈次等索引信息進(jìn)行聯(lián)合判斷.對于時間差在一定時間內(nèi)的數(shù)據(jù)(這個時間是可以對不同的衛(wèi)星和載荷進(jìn)行區(qū)分設(shè)置的),作為時間相等的數(shù)據(jù)進(jìn)行處理.例如在HXMT 衛(wèi)星中,依據(jù)衛(wèi)星系統(tǒng)的設(shè)計,衛(wèi)星的GPS 非定位時間狀態(tài)不會超過20 min 就會復(fù)位正常,因此設(shè)定時間差在20 min 作為判斷依據(jù).
圖7 源包排序流程
本文使用HXMT、QUESS、DAMPE 三個衛(wèi)星任務(wù)2018年度的全部數(shù)傳原始數(shù)據(jù)進(jìn)行了實(shí)驗(yàn)驗(yàn)證,數(shù)據(jù)資源來自國家科技資源共享服務(wù)平臺-國家空間科學(xué)數(shù)據(jù)中心.
三星共5347 個數(shù)傳原始數(shù)據(jù)文件,總體量22.78 TB,使用傳統(tǒng)的“源包時間碼+源包計數(shù)+虛擬信道幀計數(shù)”源包排序算法處理,源包排序完全正確的文件占比平均為93.55%.處理錯誤的文件中,平均約15%是由多種異常聯(lián)合發(fā)生所引起.使用本文提出的“多重索引+時間戳校正”源包排序處理算法處理,源包排序完全正確的文件占比平均為99.84%,其中排序錯誤的幾個文件均是由于星上本身設(shè)備故障引起的數(shù)據(jù)錯誤.可見,本文提出的算法,大大提升了源包排序處理的正確率,具體實(shí)驗(yàn)結(jié)果如表3所示.運(yùn)行環(huán)境為12 個處理節(jié)點(diǎn)的服務(wù)器集群(4 個CPU Intel Xeon E7-4820v2,主頻2 GHz,內(nèi)存64 GB),由中國科學(xué)院國家空間科學(xué)中心公共技術(shù)服務(wù)中心提供.
表3 原始數(shù)據(jù)文件源包排序處理的正確率
在同一個HXMT 衛(wèi)星數(shù)傳原始數(shù)據(jù)文件中分別截取源包計數(shù)無循環(huán)、源包計數(shù)有3 次不完整循環(huán)的大小為1 GB的數(shù)據(jù)片段,幀長為1024 字節(jié),源包長度為488 字節(jié).使用本文提出的處理方法和傳統(tǒng)處理方法進(jìn)行源包提取與還原排序,分別記錄兩種方法的處理時長及最大占用內(nèi)存,實(shí)驗(yàn)結(jié)果如表4所示.為增加運(yùn)行時長而使性能指標(biāo)對比明顯,選擇低配置的運(yùn)行硬件環(huán)境,在一臺普通臺式計算機(jī)(Intel Xeon CPU E5649 @2.53 GHz 16 GB RAM)上進(jìn)行實(shí)驗(yàn).結(jié)果說明“多重索引+時間戳校正”源包排序算法能夠?qū)崿F(xiàn)源包計數(shù)有不完整多次循環(huán)和無循環(huán)情況下的正確源包提取與排序還原,同時相較于傳統(tǒng)的“源包時間碼+源包計數(shù)+虛擬信道幀計數(shù)”的源包排序算法,所需的處理時間縮短(約3%),內(nèi)存的占用量減小(約28%).這是由于傳統(tǒng)處理算法是對幀數(shù)據(jù)本身進(jìn)行操作的,本文所提算法是對源包的多重索引進(jìn)行操作,而源包多重索引的長度明顯小于幀長,所以在處理時間和內(nèi)存占用量方面有性能優(yōu)勢.
表4 兩種源包排序處理算法的性能比較
使用本文提出的算法對HXMT 衛(wèi)星的不同大小的同類型數(shù)據(jù)進(jìn)行源包提取與排序處理(運(yùn)行環(huán)境同上),測試數(shù)據(jù)大小分別截取或者拼接成1 GB 到12 GB的大小,記錄處理時長和最大內(nèi)存占用量等性能指標(biāo),測試結(jié)果如圖8所示,虛線條代表處理所用的時長與數(shù)據(jù)量之間的關(guān)系,實(shí)線條代表算法的最大內(nèi)存占用量與數(shù)據(jù)量之間的關(guān)系.
圖8 源包排序處理的時間與內(nèi)存占用量
結(jié)果表明,處理時長隨著數(shù)據(jù)量增加而有明顯增長,因?yàn)樵窗判蛩加玫臅r間隨著數(shù)據(jù)量的增加而成倍增加,程序的內(nèi)存占用量隨著數(shù)據(jù)量增加變化不明顯,因?yàn)槎捎诓捎盟饕M(jìn)行處理,而非數(shù)據(jù)本身,索引本身占用內(nèi)存不大,主要是程序運(yùn)行占用的部分,隨著數(shù)據(jù)量的增加變化不大.
“多重索引+時間戳校正”源包排序處理算法,可以解決源包時間碼秒部與毫秒部進(jìn)位不一致導(dǎo)致的“跳秒”問題、兩次地面站接收數(shù)據(jù)之首尾源包不完整導(dǎo)致的丟包問題、源包計數(shù)深度不足導(dǎo)致的源包計數(shù)循環(huán)問題、GPS 非定位狀態(tài)導(dǎo)致源包時間碼缺失的問題、載荷異常導(dǎo)致累積時間碼異常歸零的問題等多種排序困難,是一種相對完備的自動解決方案.經(jīng)過對HXMT、QUESS、DAMPE 三個衛(wèi)星的大量數(shù)據(jù)進(jìn)行實(shí)驗(yàn)驗(yàn)證,結(jié)果表明該算法可以將衛(wèi)星原始數(shù)據(jù)文件的源包排序整體正確率明顯提升,同時有效提升處理效率.此外,該算法從原理上來說適用于所有衛(wèi)星的源包排序處理,具有通用性和推廣價值.