盧廣佑 呂良慶 張峻巍
(1 中國(guó)科學(xué)院國(guó)家空間科學(xué)中心 復(fù)雜航天系統(tǒng)電子信息技術(shù)重點(diǎn)實(shí)驗(yàn)室,北京 100190)(2 中國(guó)科學(xué)院大學(xué),北京 100049)
電子數(shù)據(jù)單(EDS)是為描述一個(gè)系統(tǒng)中某種部件實(shí)體(如設(shè)備、業(yè)務(wù)等)的信息載體,用于解決在信息傳遞過程中的部件信息匹配問題,支持即插即用。不同的部件對(duì)象會(huì)有不同的EDS描述,需要建立專業(yè)領(lǐng)域的EDS標(biāo)準(zhǔn)。例如電氣與電子工程師協(xié)會(huì)(IEEE)為實(shí)現(xiàn)將各種標(biāo)準(zhǔn)或非標(biāo)準(zhǔn)的變換器接入不同網(wǎng)絡(luò),提出了變換器電子數(shù)據(jù)單(TEDS),并廣泛用于地面物聯(lián)網(wǎng)[1]。出于衛(wèi)星平臺(tái)快速集成和測(cè)試的需要,美國(guó)空軍研究實(shí)驗(yàn)室(AFRL)在其空間即插即用架構(gòu)(SPA)中提出使用XML編輯的EDS(xTEDS)來(lái)描述部件(傳感器、執(zhí)行器、處理器、路由器、軟件應(yīng)用等)之間的通信接口,包括元素、屬性和要描述的內(nèi)容[2]??臻g數(shù)據(jù)系統(tǒng)咨詢委員會(huì)(CCSDS)提出了可擴(kuò)展標(biāo)記語(yǔ)言的遙測(cè)遙控交換標(biāo)準(zhǔn)(XTCE),在國(guó)內(nèi)外的航天工程中得到廣泛應(yīng)用[3-5]。除此之外還提出了航天器接口業(yè)務(wù)領(lǐng)域(SOIS)的EDS(SEDS)標(biāo)準(zhǔn)[6],以及用于開放檔案信息系統(tǒng)(OAIS)系統(tǒng)中信息對(duì)象標(biāo)簽的XML格式化數(shù)據(jù)單元(XFDU)標(biāo)準(zhǔn)等[7]。
EDS工具鏈?zhǔn)腔谀骋环NEDS標(biāo)準(zhǔn),結(jié)合實(shí)際應(yīng)用場(chǎng)景設(shè)計(jì)開發(fā)的一組支持EDS設(shè)計(jì)和使用的工具軟件。NASA、ESA以及歐洲的眾多航天領(lǐng)域的專家學(xué)者提出和主導(dǎo)了EDS在航天領(lǐng)域的應(yīng)用[8],已用于詹姆斯韋伯太空望遠(yuǎn)鏡(JWST)項(xiàng)目、木星冰月探測(cè)器(JUICE)等任務(wù)的工程實(shí)踐中。國(guó)內(nèi)對(duì)EDS標(biāo)準(zhǔn)也開展了廣泛的研究和應(yīng)用,內(nèi)容主要集中在對(duì)遙測(cè)、遙控?cái)?shù)據(jù)設(shè)計(jì)的規(guī)范化和一致性方面,開發(fā)了各自不同的EDS工具[9-11]。
電子數(shù)據(jù)單描述的客觀對(duì)象的多樣性決定了會(huì)有各種不同的信息對(duì)象描述,而同樣的信息對(duì)象又會(huì)因部門不同而設(shè)計(jì)不同的工具,來(lái)達(dá)到相同的數(shù)據(jù)描述目的。因此電子數(shù)據(jù)單的作用主要是起到描述信息對(duì)象和在異構(gòu)系統(tǒng)及其工具之間交換的目的,工具的差異性設(shè)計(jì)難以避免,數(shù)據(jù)描述在統(tǒng)一形式的基礎(chǔ)上,內(nèi)容上也會(huì)存在差異。為此CCSDS的空間數(shù)據(jù)系統(tǒng)參考體系架構(gòu)(RASDS)[12]中的信息視角提供了從抽象數(shù)據(jù)結(jié)構(gòu)出發(fā),描述信息對(duì)象和數(shù)據(jù)對(duì)象的方法。按照這一方法論,可以包容工具和數(shù)據(jù)描述的差異性,指導(dǎo)設(shè)計(jì)出各種不同需要的EDS工具,但同時(shí)又可以互聯(lián)互通。本文參照RASDS信息視角的信息對(duì)象建模方法,以XTCE遙控?cái)?shù)據(jù)注入設(shè)計(jì)工具為例,設(shè)計(jì)實(shí)現(xiàn)了可以支持?jǐn)?shù)據(jù)注入指令從模板設(shè)計(jì)到實(shí)例生成,再到可上注指令等轉(zhuǎn)換過程功能的軟件工具,以解決跨任務(wù)的的數(shù)據(jù)注入指令重用和管理的問題。
信息對(duì)象到具體數(shù)據(jù)對(duì)象的轉(zhuǎn)化需要遵循一定的建模過程,RASDS從信息視角描述了從抽象數(shù)據(jù)架構(gòu)到具體數(shù)據(jù)對(duì)象的轉(zhuǎn)換過程,即對(duì)抽象的信息對(duì)象進(jìn)行實(shí)例化和個(gè)性化的過程[12-13],如圖1所示。
圖1 信息對(duì)象的建模過程Fig.1 Modeling process of information object
數(shù)據(jù)對(duì)象是信息對(duì)象的載體。不同的專業(yè)領(lǐng)域會(huì)有不同的信息對(duì)象,而且信息對(duì)象會(huì)隨著系統(tǒng)的每一次狀態(tài)變化產(chǎn)生不同的數(shù)據(jù)。數(shù)據(jù)對(duì)象包含元數(shù)據(jù)和/或信息數(shù)據(jù),元數(shù)據(jù)描述信息對(duì)象的語(yǔ)法和語(yǔ)義規(guī)則?;趫D1,后續(xù)的實(shí)例化過程將抽象的信息對(duì)象轉(zhuǎn)換成數(shù)據(jù)對(duì)象,即數(shù)據(jù)模型、模板,包含數(shù)據(jù)結(jié)構(gòu)、順序邏輯、執(zhí)行方式等信息,實(shí)現(xiàn)“語(yǔ)法”和“語(yǔ)義”上的配置。在設(shè)計(jì)和使用過程中,根據(jù)具體應(yīng)用場(chǎng)景和不同數(shù)據(jù)流轉(zhuǎn)的需要,將數(shù)值填寫到模板中,生成具體的數(shù)據(jù)文件,供實(shí)際使用。上述過程使同一個(gè)信息對(duì)象可以設(shè)計(jì)生成各種不同的數(shù)據(jù)對(duì)象,以允許跨任務(wù)使用。
結(jié)合遙控應(yīng)用場(chǎng)景和數(shù)據(jù)注入生成指令的過程,數(shù)據(jù)注入工具鏈可分為數(shù)據(jù)注入模板設(shè)計(jì)工具、數(shù)據(jù)注入指令生成工具、數(shù)據(jù)格式轉(zhuǎn)換工具,如圖2所示。
圖2 XTCE標(biāo)準(zhǔn)遙控?cái)?shù)據(jù)對(duì)象的生成過程Fig.2 Generation of XTCE standard remote control data object
數(shù)據(jù)注入模板設(shè)計(jì)工具用于定義模板結(jié)構(gòu),支持設(shè)計(jì)者在設(shè)計(jì)階段依據(jù)基于可擴(kuò)展標(biāo)記語(yǔ)言的遙測(cè)遙控信息交換標(biāo)準(zhǔn)模式定義(XTCE Schema)的語(yǔ)法結(jié)構(gòu)[14],將指令需求作為輸入,設(shè)計(jì)數(shù)據(jù)注入格式。XTCE Schema解決了EDS文件的描述符合XTCE標(biāo)準(zhǔn)的規(guī)范化問題,XML語(yǔ)言的采用有助于人機(jī)可識(shí)別。指令需求可以來(lái)自具體任務(wù)的接口控制文件(ICD)中規(guī)定的指令數(shù)據(jù)結(jié)構(gòu),也可以是設(shè)計(jì)者的按需靈活設(shè)計(jì)。
設(shè)計(jì)者使用數(shù)據(jù)注入模板設(shè)計(jì)工具自定義配置所需信息。工具通過獲取指令需求中規(guī)定的數(shù)據(jù)元素,遍歷并檢索XTCE Schema中適合的描述標(biāo)簽,調(diào)用XML讀/寫操作函數(shù)將數(shù)據(jù)元素與標(biāo)簽綁定,并按XTCE標(biāo)準(zhǔn)的規(guī)則和指令執(zhí)行邏輯將標(biāo)簽進(jìn)行序列化,實(shí)現(xiàn)指令模板文件的生成,即XTCE模式定義(XSD)文件。
模板文件是包含了XTCE遙控元數(shù)據(jù)的描述,以及基于這些元數(shù)據(jù)定義的數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)注入模板庫(kù)存放已定義好的模板文件,模板設(shè)計(jì)工具與模板數(shù)據(jù)庫(kù)進(jìn)行關(guān)聯(lián)(如采用動(dòng)態(tài)鏈接庫(kù)(DLL)方式),可對(duì)保存的模板文件進(jìn)行增刪改查等管理操作。模板文件可以作為后續(xù)數(shù)據(jù)注入指令生成工具實(shí)例化指令的輸入,支持應(yīng)用階段人工或自動(dòng)的指令生成過程。
在應(yīng)用階段,主要是航天器的在軌飛行運(yùn)控階段或地面測(cè)試階段,一般不需要再設(shè)計(jì)模板,只需選擇模板和填入?yún)?shù)的操作。數(shù)據(jù)注入指令生成工具用于支持這一操作,生成所需要的指令,并保存到數(shù)據(jù)注入指令庫(kù)中。使用者也可以通過工具使用數(shù)據(jù)注入指令庫(kù)中已有的指令文件,進(jìn)行局部的修改以生成新的指令。數(shù)據(jù)庫(kù)中保存的XML數(shù)據(jù)注入指令文件是指令包、注入包頭和注入包等文件,供數(shù)據(jù)格式轉(zhuǎn)換工具進(jìn)行后續(xù)的組裝和格式轉(zhuǎn)換,生成實(shí)際可上注執(zhí)行的二進(jìn)制數(shù)據(jù)注入文件。由于遵循了XTCE元素的約束,數(shù)據(jù)格式轉(zhuǎn)換工具可以根據(jù)不同航天器的指令格式進(jìn)行轉(zhuǎn)換,從而實(shí)現(xiàn)相同的數(shù)據(jù)注入模板和指令可以跨任務(wù)使用。同時(shí)也可以進(jìn)一步支持批量、自動(dòng)或手動(dòng)配置生成指令的過程。
指令設(shè)計(jì)者使用工具設(shè)計(jì)指令模板時(shí)不一定熟悉XTCE標(biāo)準(zhǔn),為此工具中涉及XTCE元素的標(biāo)簽應(yīng)該與XTCE Schema對(duì)應(yīng),反映在用戶界面中,引導(dǎo)指令設(shè)計(jì)者的填寫。在ICD規(guī)定的指令數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)上,工具自動(dòng)將模板內(nèi)容轉(zhuǎn)化為XTCE的XSD文件,轉(zhuǎn)化過程如圖3所示。
圖3 生成數(shù)據(jù)注入模板轉(zhuǎn)化過程Fig.3 Processing flow of generating data injection template
Map集合是一種數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)[15],使用鍵-值相互唯一對(duì)應(yīng)的方式操作數(shù)據(jù),使得元素和值能一一對(duì)應(yīng),類似字典功能。圖3中使用鍵-值對(duì)的方式將設(shè)計(jì)者使用工具軟件設(shè)計(jì)的數(shù)據(jù)保存起來(lái),形成Map集合。集合中的鍵和XTCE Schema中的標(biāo)簽之間有嚴(yán)格的映射關(guān)系,集合中的值就是用戶填寫的內(nèi)容,或留空表示僅預(yù)留數(shù)據(jù)格式,用于后續(xù)的個(gè)性化實(shí)現(xiàn)。
XTCE Schema中用于描述遙控元數(shù)據(jù)的是CommandMetaDataType,包含的元數(shù)據(jù)按照用途劃分:形參類型集合ParameterTypeSet用于定義指令參數(shù)的實(shí)例化過程;描述Description部分用于定義相關(guān)元數(shù)據(jù)的指令名稱、參數(shù)排列、數(shù)據(jù)形式、校驗(yàn)集、指令容器等;實(shí)參類型集合ArgumentTypeSet用于將實(shí)例化后的遙控指令參數(shù)與特定的值綁定,包括具體數(shù)據(jù)類型、值、范圍等。
工具可以識(shí)別這些XTCE Schema元素標(biāo)簽,通過遍歷XTCE Schema中的標(biāo)簽來(lái)獲取Map集合中的鍵,找到匹配的標(biāo)簽和屬性,使用文檔對(duì)象模型(Document object model,DOM)的API將集合中的值綁定到對(duì)應(yīng)位置,形成模板文件的一部分。DOM API是XML文檔的編程接口,可以實(shí)現(xiàn)對(duì)XML文檔的樹形結(jié)構(gòu)化操作,以樹節(jié)點(diǎn)對(duì)象為基礎(chǔ)添加、修改、刪除、查找XML文件中的元素[16-17]。
在XTCE的規(guī)則下,一個(gè)信息對(duì)象對(duì)應(yīng)一組空間系統(tǒng)標(biāo)簽,作為整個(gè)模板文件的根元素,內(nèi)部包含目標(biāo)信息實(shí)體的基本描述和相關(guān)的指令信息。按照標(biāo)簽所屬功能進(jìn)行劃分,定義一條指令需要格式、描述和值3種信息,每種都有對(duì)應(yīng)的元素和屬性,且它們的排列順序是不確定的,例如元素與元素間存在相互包含的樹形結(jié)構(gòu)。為此需要將已綁定數(shù)據(jù)的標(biāo)簽按照一定規(guī)則(如邏輯先后、執(zhí)行順序等)進(jìn)行序列化處理排列,形成完整的模板文件。
按照?qǐng)D2所述的應(yīng)用場(chǎng)景,數(shù)據(jù)注入工具鏈軟件架構(gòu)的層次劃分如圖4所示。
圖4 數(shù)據(jù)注入工具鏈軟件架構(gòu)Fig.4 Software architecture of data injection tool chain
圖4中的架構(gòu)從上到下分為視圖層、應(yīng)用層、業(yè)務(wù)層和持久層。視圖層是用戶直接操作的軟件界面。應(yīng)用層包括數(shù)據(jù)注入模板定義、指令文件配置、過程文件批量生成和管理等功能,設(shè)計(jì)者可通過視圖層直接看到并操作這些功能。業(yè)務(wù)層是實(shí)現(xiàn)某一功能所需的執(zhí)行、計(jì)算、處理數(shù)據(jù)的中間過程,支持應(yīng)用層中的4個(gè)功能。持久層是對(duì)已生成的文件進(jìn)行保存和管理,可以與數(shù)據(jù)庫(kù)相連接,并提供對(duì)各種文件進(jìn)行增、刪、改、查等操作。
數(shù)據(jù)注入指令的設(shè)計(jì)需要依托任務(wù)需求而定,而任務(wù)需求是多樣化的。為此需要進(jìn)行任務(wù)功能的建模,并在功能模型的基礎(chǔ)上再進(jìn)行數(shù)據(jù)注入指令的設(shè)計(jì)。在這一方面,ESA的包應(yīng)用標(biāo)準(zhǔn)(PUS)作出了很好的實(shí)踐和總結(jié),通過使用CCSDS的空間包協(xié)議,對(duì)星載功能進(jìn)行了標(biāo)準(zhǔn)業(yè)務(wù)化的提煉和總結(jié),經(jīng)過近30年的實(shí)踐,形成了20項(xiàng)標(biāo)準(zhǔn)功能業(yè)務(wù),明確了每項(xiàng)業(yè)務(wù)的數(shù)據(jù)注入指令格式模板[18]。本文的數(shù)據(jù)注入模板設(shè)計(jì)工具按照這一思路,在星載業(yè)務(wù)模型化的基礎(chǔ)上,可以先于任務(wù)需求進(jìn)行數(shù)據(jù)注入模板的設(shè)計(jì)。以事件表指令為例(格式定義見表1),對(duì)XTCE數(shù)據(jù)注入模板設(shè)計(jì)方法進(jìn)行了使用驗(yàn)證。
表1 數(shù)據(jù)注入事件表指令格式定義Table 1 Execution mode of data injection instruction
表2是ICD文件中規(guī)定的某個(gè)事件表指令序列的需求信息。
表2 事件表指令序列Table 2 Event table instruction sequence
將表2的事件表序列分解為名稱、類型等信息輸入到工具中,將數(shù)據(jù)綁定到指令標(biāo)簽上。工具按照?qǐng)D3的序列化過程,生成圖5所示的內(nèi)部數(shù)據(jù)結(jié)構(gòu)。
圖5中,標(biāo)簽從左到右是包含關(guān)系,序列化的過程就是將用戶數(shù)據(jù)轉(zhuǎn)化為符合XTCE規(guī)則和指令執(zhí)行邏輯的模板結(jié)構(gòu)過程。例如,事件表的例子中,空間系統(tǒng)(SpaceSystem)用于描述一條數(shù)據(jù)注入指令的基本信息,內(nèi)容由遙控元數(shù)據(jù)(TelemetryMetadata)統(tǒng)一管理。形參(Parameter)是設(shè)計(jì)者定義的參數(shù)類型、命名等信息,用于后續(xù)個(gè)性化過程中與實(shí)參對(duì)應(yīng)。實(shí)參(Argument)是設(shè)計(jì)者定義的具體數(shù)據(jù)格式、邏輯順序、包裝等信息,用于設(shè)計(jì)者填寫所需的參數(shù)值。需要說(shuō)明的是,參數(shù)集(ParameterSet)中必須參考形參類型集(ParameterTypeSet)定義好的參數(shù)類型,同理,指令包(CommandContainer)和元指令集(MetaCommandSet)中必須參考實(shí)參類型集(ArgumentTypeSet)定義好的類型。
在生成圖5的標(biāo)簽結(jié)構(gòu)后,工具使用DOM API文件讀寫操作生成XSD文件,保存到數(shù)據(jù)庫(kù)中。XSD文件部分結(jié)果如圖6所示。
圖6中的參數(shù)賦值元素(ArgumentAssignment)對(duì)應(yīng)用戶可填寫的值,可將表2中的指令名稱和指令編碼分別填寫到參數(shù)名(argumentName)屬性和參數(shù)值(argumentValue)屬性上,以及其他的個(gè)性化填寫。數(shù)據(jù)注入指令模板設(shè)計(jì)工具模板生成界面如圖7所示。
圖7 數(shù)據(jù)注入指令模板設(shè)計(jì)工具界面Fig.7 Interface of data injection instruction template design tool
由圖7可以看出,通過數(shù)據(jù)注入指令模板設(shè)計(jì)工具,使用者無(wú)需了解XTCE標(biāo)準(zhǔn)和指令編碼方式,只需按照型號(hào)任務(wù)需要定義合適的指令模板,填寫參數(shù)格式信息,工具自動(dòng)完成圖3的數(shù)據(jù)轉(zhuǎn)化過程,生成所需的XSD模板文件。隨后通過指令包生成工具、二進(jìn)制轉(zhuǎn)化工具、注入包生成工具完成實(shí)際指令的生成,同時(shí)該工具軟件還將已定義的模板、指令、注入包等文件保存到數(shù)據(jù)庫(kù)中,供后續(xù)用戶增、刪、改、查。
數(shù)據(jù)注入模板設(shè)計(jì)工具通過某預(yù)研課題的研究和測(cè)試,基于歸納總結(jié)的標(biāo)準(zhǔn)業(yè)務(wù)模型,按課題要求生成了大量不同數(shù)據(jù)格式的指令模板(超過上百條)和指令(超過2000條),并且可以繼續(xù)擴(kuò)展和積累下去。
本文按照RASDS信息視角描述抽象數(shù)據(jù)結(jié)構(gòu)及其轉(zhuǎn)化過程的方法,分析了工具應(yīng)用場(chǎng)景及其劃分,按照XTCE標(biāo)準(zhǔn),采用XML語(yǔ)言和DOM設(shè)計(jì)方法,開發(fā)了數(shù)據(jù)注入指令模板設(shè)計(jì)工具,實(shí)現(xiàn)了基于工具的、豐富多樣的數(shù)據(jù)注入指令模板設(shè)計(jì)和指令設(shè)計(jì),證明從信息對(duì)象到數(shù)據(jù)模型的實(shí)例化轉(zhuǎn)化,再到個(gè)性化文件的轉(zhuǎn)化方法是可行的。與傳統(tǒng)的文檔編輯ICD的方式,以及基于模板填寫生成指令的方式(手工或工具)相比,基于RASDS信息對(duì)象建模方法所設(shè)計(jì)的模板設(shè)計(jì)工具可以有效提高數(shù)據(jù)注入指令設(shè)計(jì)的靈活程度,提高各層次用戶之間文件傳遞效率,簡(jiǎn)化現(xiàn)有數(shù)據(jù)設(shè)計(jì)和協(xié)調(diào)的過程,方便任務(wù)期間的指令快速修改和生成,有利于跨任務(wù)的指令變更和使用。如果星載業(yè)務(wù)具有相應(yīng)靈活解析指令模板的能力,則地面數(shù)據(jù)注入指令模板設(shè)計(jì)工具還可以有更大的應(yīng)用自由度,以應(yīng)對(duì)航天器在軌飛行過程中遇到的突發(fā)、異常和未知的情況。RASDS信息視角的描述方法可以指導(dǎo)對(duì)各種對(duì)象(如航天器上的設(shè)備、業(yè)務(wù)、應(yīng)用等)制定針對(duì)性的建模標(biāo)準(zhǔn)(例如描述設(shè)備和業(yè)務(wù)建模的SEDS標(biāo)準(zhǔn)),解決不同對(duì)象的數(shù)據(jù)化描述、工具設(shè)計(jì)和系統(tǒng)集成等問題。