張煦冬,呂良慶,安軍社
(1.中國科學院復雜航天系統(tǒng)電子信息技術重點實驗室 國家空間科學中心,北京 100190;2.中國科學院大學 計算機與控制學院,北京 100049)
針對不同的任務需求,航天器設計出現(xiàn)了種類繁多的接口方式和通信方案,工程項目中的星上數(shù)據(jù)管理系統(tǒng)往往是個性化設計,使得跨項目重用設備、部件、軟件的難度增大。為解決這一問題,特別是跨組織的互聯(lián)互通,空間數(shù)據(jù)系統(tǒng)咨詢委員會(consultative committee for space data systems, CCSDS)開展了航天器接口業(yè)務(space onboard interface services, SOIS)領域的研究工作[1]。SOIS領域主要解決的是航天器數(shù)據(jù)管理的接口服務問題。SOIS架構針對航天器系統(tǒng)設計提出了標準的層次劃分,使得個性化設計的設備、部件可以在幾乎不更改軟件的情況下連入系統(tǒng)。為此SOIS工作組提出了基于SOIS架構的EDS(SEDS)的相關建議標準。
為解決異構部件的兼容使用問題,每個部件需要一個自描述EDS,內(nèi)容是數(shù)據(jù)格式、接口、功能、協(xié)議等[2]。當一個部件要接入一個系統(tǒng)時,系統(tǒng)通過解析這個部件的EDS,獲得它在系統(tǒng)中運行所需要的信息,實現(xiàn)對部件的識別和配置。符合CCSDS SOIS 876.0[3]規(guī)定的EDS稱為SOIS EDS(SEDS)。在SEDS文件中按照SOIS的層次劃分描述部件的信息,支持SOIS架構的實現(xiàn)。SEDS所使用的元素和類型的抽象概念及其之間的關系如圖1所示。
圖1 SEDS的關鍵元素和抽象類型[3]
SEDS文件使用可擴展標記語言(eXtensible Markup Language, XML)[4]按照圖1描述系統(tǒng)定義,構建XML文件。
圖1中,SEDS以Datasheet元素為根元素,Package元素包含Data Type、Interface、Component這3部分,其中Data Type包括9種數(shù)據(jù)類型的定義:兩種復雜數(shù)據(jù)類型,數(shù)組類型、容器類型;6種標量類型變量,整型、二進制型、枚舉型等;一種范圍數(shù)據(jù)類型,表示變量的取值范圍。
SEDS元素類型分為兩類,語法類型和語義類型。語法類型指SEDS元素的拼寫語法規(guī)則,比如特定的字符串、變量的比特數(shù)、變量的編碼方式等。語義類型指SEDS元素代表的行為和含義[1]。在SEDS XML文件中使用的元素和屬性的標簽所對應的這兩類類型在術語字典(dictionary of terms, DoT)[5]中定義。DoT以XML Schema的形式供用戶使用。
文件對象模型(document object model, DOM)[6]是解析XML文件的方法之一。XML和DOM都是萬維網(wǎng)聯(lián)盟(world wide web consortium, W3C)的推薦標準。DOM解析文件的方法是將XML文件的元素作為節(jié)點組成樹形數(shù)據(jù)結構[7],通過對樹的通用訪問,實現(xiàn)對信息的歸納。很多程序設計語言(如java,python)都支持DOM方法。
采用EDS進行星載軟件設計的路線需要解決工具鏈的建設和EDS的設計問題。
EDS的編輯、傳遞和解析,以及系統(tǒng)內(nèi)部的管理信息庫(management information base, MIB)[8]配置過程應該是工具化的,即工具鏈設計。異構系統(tǒng)之間交換EDS需要的轉(zhuǎn)換工具如圖2所示。
異構系統(tǒng)是由不同機構組織按照自身的需要設計的,在需要進行互聯(lián)互通時,異構系統(tǒng)及其軟件系統(tǒng)提供的功能業(yè)務都需要繼承使用,而不是重新設計。這也是引入EDS概念的應用背景之一。為此,異構系統(tǒng)之間傳遞的EDS應遵循統(tǒng)一的標準(如CCSDS由space assigned numbers authority(SANA)統(tǒng)一管理的、用XML描述的SEDS[9])。通常設備方將自身的信息(requirement list, RL)按照系統(tǒng)要求的實現(xiàn)一致性聲明(implementation conformance statement, ICS)的規(guī)則,使用ICS編輯工具或手工填寫數(shù)據(jù)表單。876.0中有ICS的推薦內(nèi)容,可以根據(jù)需要補充設計,類似于接口數(shù)據(jù)單(interface data sheet, IDS)。設備方可以通過SEDS編輯工具,或直接手工編輯,生成SEDS的XML文件。
系統(tǒng)方接收的個性化EDS文件用以繼承系統(tǒng)內(nèi)部的數(shù)據(jù)設計。道理上EDS文件是對外的數(shù)據(jù)隔離墻,可以進行統(tǒng)一設計。但是由于繼承系統(tǒng)內(nèi)部原有的設計未必是規(guī)范化的,而且不同業(yè)務的MIB和使用的EDS內(nèi)容千差萬別,使得EDS文件難以統(tǒng)一設計。因此這一點只能通過規(guī)范化ICS來針對性、逐一、積累完成。其設計的有限性則取決于系統(tǒng)架構的規(guī)范性,如規(guī)范的CCSDS SOIS架構和歐空局的包應用標準(package utilization standard, PUS)業(yè)務[10]。
數(shù)據(jù)解析工具的作用是將SEDS XML文件解析成系統(tǒng)可以識別的個性化EDS文件。這一解析過程是按照SEDS的XML編輯語法進行的,包括提取信息、綜合屬性和組織數(shù)據(jù)對象等過程,可以采用常規(guī)的XML解析工具軟件(函數(shù))來完成。最后按照系統(tǒng)內(nèi)部的數(shù)據(jù)設計生成實例化EDS文件,供系統(tǒng)直接使用,實現(xiàn)對系統(tǒng)已有部分的繼承。而在進行系統(tǒng)新增業(yè)務設計時,直接按照個性化ICS、SEDS XML文件和實例化EDS的思路進行規(guī)范化設計,從而實現(xiàn)新增部分和繼承部分在EDS表達方式上的統(tǒng)一,方便系統(tǒng)業(yè)務的積累。
在EDS設計方面,EDS的產(chǎn)生可以來自于模型化業(yè)務需要的數(shù)據(jù)結構,包括業(yè)務的輸入、輸出,以及內(nèi)部的MIB管理的信息,因服務模型不同而不同。其主要思路是服務模型的MIB應有明確的格式,內(nèi)容可以配置。EDS在格式設計上應具有可修改性和可擴充性,以允許同屬一個服務模型的不同實例業(yè)務的設計,從而實現(xiàn)業(yè)務的即插即用,適應不同系統(tǒng)的不同配置需要。
圖2 異構系統(tǒng)之間的EDS轉(zhuǎn)換過程
圖2中有兩種工具使用場景。一種是互聯(lián)雙方是對等機構組織,則以SEDS XML文件為界,各自開發(fā)各自的工具。這種情況下,雙方各自有自己的ICS編輯工具、SEDS編輯和解析工具,輸出的SEDS XML文件是對外表達的自描述信息,就如同個人的名片那樣,可以被任何可識別這種信息的系統(tǒng)所接納。另外一種是單純的設備接入系統(tǒng)的場景。這種情況下,設備方可以直接使用系統(tǒng)方提供的ICS和SEDS編輯工具,規(guī)范ICS表單和SEDS XML文件的生成,也可以直接手工編寫SEDS XML文件,從而最大限度地降低了設備方使用EDS的難度和工作量,也不改變約定IDS的工作習慣。通過這一基于工具的過程,互聯(lián)雙方可以表達自身的需求,了解對方提供的服務能力,達到需求自動匹配的效果。而上述兩種場景既有利于接口標準化,也有利于非標準化設備繼承使用。
表1將CCSDS 876.0推薦的ICS表進行補充和整理,這些內(nèi)容所使用的數(shù)據(jù)元素和圖1中SEDS規(guī)定的內(nèi)容對應。
表1 在CCSDS 876.0推薦的ICS基礎上的補充設計
表1(續(xù))
在ICS的基礎上,經(jīng)過編輯過程,將用戶填寫好的個性化需求ICS轉(zhuǎn)化為SEDS的XML文件。編輯過程依據(jù)SEDS和DoT的規(guī)則進行。這一過程可以手工完成,也可以建造相關的編輯工具,以方便項目使用。
SEDS XML文件解析工具實現(xiàn)從SEDS個性化XML文件到實例化EDS文件的轉(zhuǎn)化,即二者之間的映射過程。它的轉(zhuǎn)化過程和使用的數(shù)據(jù)結構如圖3所示。
圖3 SEDS XML文件的解析過程
圖3中使用DOM方法讀入XML文件中的元素數(shù)據(jù)作為節(jié)點,形成樹形數(shù)據(jù)結構,稱為文檔樹。文檔樹和XML文件之間有嚴格元素數(shù)據(jù)的對應關系。通過文檔樹可以添加、更改、刪除、查找XML文件中的元素。
XML文件中的所有元素標簽都要在解析工具中識別,相同標簽的節(jié)點組成鏈表。在SEDS規(guī)則下,標簽相同的元素具有一致的屬性,為下一步提取元素屬性的值,形成SEDS數(shù)據(jù)對象做準備。每種數(shù)據(jù)類型定義所需的元素構成一個SEDS數(shù)據(jù)類型定義實體。圖3中以數(shù)組類型為例,數(shù)組類型包含2種元素,ArrayDataType元素和Dimension元素,后者是前者的子元素,因此SEDS數(shù)組類型定義包括2個鏈表,是由這2種元素節(jié)點組成的。從SEDS元素、ICS到解析過程的對應關系見表2。從表中可以看出解析過程需要對所有的SEDS元素進行針對性處理,而ICS的填寫只關心內(nèi)容。
圖3中的SEDS數(shù)據(jù)對象是對SEDS XML元素定義的實現(xiàn),例如,SEDS對數(shù)組數(shù)據(jù)對象的定義是標簽為ArrayDataType的元素,其中的屬性定義了每個數(shù)據(jù)單元的數(shù)據(jù)類型,它的子元素Dimension定義了數(shù)組的長度。相同SEDS XML元素定義對應的SEDS數(shù)據(jù)對象是同一類型的,它們的集合對應于圖3中的SEDS對象鏈表。
表2 SEDS標簽對應關系
一個SEDS數(shù)據(jù)對象中包含對應的SEDS XML元素的所有信息,但輸出文件是根據(jù)系統(tǒng)需要,對ICS中填寫的數(shù)據(jù)值選擇輸出后的實例化EDS,可以直接提供給系統(tǒng)使用。因此從ICS的內(nèi)容開始反映的就是用戶的個性化需求,此后的XML文件中的數(shù)據(jù)與ICS內(nèi)容是等價的,而實例化EDS則是針對某個系統(tǒng)的輸出。這種針對性表現(xiàn)在某個系統(tǒng)的特定數(shù)據(jù)格式和選擇的內(nèi)容上。(例如4.2節(jié)所舉示例)
EDS的概念源于即插即用技術。在網(wǎng)絡環(huán)境下,首先需要在鏈路協(xié)議層解決EDS的傳送交換問題,然后是反映傳輸需求的EDS內(nèi)容設計,即插即用的傳輸協(xié)議設計。在此以1553B總線為例進行說明。
1553B總線是總線型、主從式的單工通信方式,總線上的總線控制器(bus controller, BC)控制著全部的通信協(xié)議過程[11]。為不影響接入的設備終端(remote terminal, RT)原有的通信設計,1553B總線即插即用協(xié)議[12]是在已有的鏈路層通信協(xié)議基礎上,增加在初始階段交換RT EDS的協(xié)議過程,由BC根據(jù)RT EDS動態(tài)配置和調(diào)度總線,實現(xiàn)RT的自動加入和撤出,并滿足其通信需求,系統(tǒng)仍然能夠穩(wěn)定運行。而RT方只需要遵守初始握手協(xié)議要求,其設計重點放在了RT EDS的內(nèi)容設計上[13,14]。
根據(jù)1553B總線通信協(xié)議的特點,BC方需要了解的RT傳輸需求包括兩個部分,即如何握手和子地址消息配置需求。這兩部分通過RT EDS定義,首先反映在用戶填寫RL完成后的ICS中,見表3。
根據(jù)用戶填寫的1553B總線ICS,可以編輯相應的1553B總線的RT SEDS XML文件,如圖4所示。
圖4中,第6行至10行定義了矢量字數(shù)據(jù)域是數(shù)組類型。第11至19行定義了子地址定義的第1個字為容器類型。第20至25行規(guī)定了子地址定義是容器類型。第26至30行為子地址定義數(shù)組規(guī)定了發(fā)送子地址定義和接收子地址定義這2個域的格式。第31行至第144行定義了矢量字和子地址消息定義的各個字段的值。
圖5為1553B總線SEDS實例的文檔樹結構,元素的屬性數(shù)據(jù)作為元素節(jié)點的葉子節(jié)點。解析過程是將XML文檔樹的節(jié)點轉(zhuǎn)化為SEDS數(shù)據(jù)對象的過程。例如,圖5中的ArrayDataType節(jié)點是SEDS定義的數(shù)組類型變量,該節(jié)點及其所有子孫節(jié)點所構成的分支樹對應于SEDS的數(shù)組類型數(shù)據(jù)對象。需要說明的是圖3中的節(jié)點鏈表是元素節(jié)點組成的鏈表,不包含屬性節(jié)點,因為通過元素節(jié)點即可訪問屬性節(jié)點,不需要將屬性節(jié)點組成鏈表。
表3 1553B總線即插即用協(xié)議所需的ICS
圖4 1553B總線RT SEDS XML文件
圖5 1553B實例的文檔樹結構
在收到圖4的XML文件后,系統(tǒng)根據(jù)自身使用的RT EDS的格式定義(見表4),進行針對性的信息提取和轉(zhuǎn)換,生成實例化的EDS文件(如圖6所示)。
本文設計的SEDS解析工具輸出的結果如圖6所示,為了方便理解增加了注釋。
表4 RT EDS格式[13-15]
圖6 二進制文件結果
圖6中矢量字定義數(shù)組的前5個值,發(fā)送子地址定義數(shù)組前2個值,以及接收子地址前3個值見表5。
在航天器數(shù)據(jù)系統(tǒng)中使用EDS,使系統(tǒng)能夠?qū)€性化需求做出通用性設計。通用性表現(xiàn)在處理方法上,是指對每個部件的數(shù)據(jù)設計上,都要包括3個數(shù)據(jù)對象(ICS、SEDS XML文件、EDS),以及對它們進行轉(zhuǎn)換的工具鏈設計思路。3個數(shù)據(jù)對象內(nèi)容是系統(tǒng)針對性選擇的信息結果。正因為如此,EDS技術可以解決異構系統(tǒng)之間的信息傳遞和互聯(lián)互通問題,以及新增設計和原有設計的兼容、繼承、重用等問題。工具鏈的設計和使用能夠進一步擴充EDS內(nèi)容和應用范圍,并方便使用。本文介紹的1553B總線即插即用SEDS實例設計說明了這一思路的可行性。
由于星上和地面EDS都可以采用XML進行描述,因此SEDS與XML Telemetric and Command Exchange (XTCE)[15]可以銜接。XTCE主要描述遙測遙控,這恰與PUS的請求與報告可以掛鉤,應作為EDS內(nèi)容的一部分,加入EDS工具鏈中的數(shù)據(jù)庫,供通用設計使用。當積累的標準服務、請求、報告的內(nèi)容足夠多時,可以支持重用、數(shù)據(jù)挖掘,作為深度學習的數(shù)據(jù)源使用。再擴展,可以支持星地一體化智能信息系統(tǒng)的設計和建設。
表5 實例化EDS結果含義