張志國,劉學
(91550 部隊,遼寧 大連 116023)
在飛行實驗結束后,需要對1553B 數(shù)據(jù)進行事后處理與分析[1]。傳統(tǒng)做法是首先將1553B 控制文檔(Interface Control Document,ICD)錄入到數(shù)據(jù)庫中,然后調用ICD數(shù)據(jù)庫進行檢索查詢處理。而ICD一般比較復雜,一條消息需要多層數(shù)據(jù)庫表才能完整表述,因此數(shù)據(jù)庫錄入人員工作量大,維護成本高。在數(shù)據(jù)處理階段,需要調用多層父子表進行查詢,取出基本信息再重新組合出命令字進行檢索,大大影響了數(shù)據(jù)處理速度。針對以上不足,該文設計并實現(xiàn)了1553B總線數(shù)據(jù)快速處理系統(tǒng),內部采用自定義數(shù)據(jù)模型簡化ICD 結構,處理時運用多線程技術,提高了數(shù)據(jù)處理效率。
MIL-STD-1553 全稱為“飛機內部時分制命令/響應式多路復用數(shù)據(jù)總線”,它是一種總線標準,20世紀70 年代由美國軍方公布[2-3],一般縮寫為1553B,其國內對應標準為GJB289A-97。相比于其他總線,其具有高效靈活、配置性較強的特點[4]。隨著武器系統(tǒng)的升級換代和測控裝備、被試品數(shù)據(jù)傳輸能力的提高,1553B 協(xié)議在靶場遙測數(shù)據(jù)處理中得到了廣泛應用。
圖1 1553B總線網(wǎng)絡拓撲結構
終端是使數(shù)據(jù)總線和子系統(tǒng)相連接的電子組件。子系統(tǒng)為從多路數(shù)據(jù)總線上接收數(shù)據(jù)傳輸服務的裝置或功能單元。總線控制器(BC)是總線系統(tǒng)組織信息傳輸?shù)慕K端??偩€監(jiān)視器(BM)是總線系統(tǒng)中指定作接收且記錄總線上傳輸?shù)男畔⒉⒂羞x擇地提取信息以備后用的終端。遠程終端(RT)是總線系統(tǒng)中不作為總線控制器或總線監(jiān)視器的所有終端[5-6]。1553B 總線的傳輸速度是1 MB/s,采用曼切斯特Ⅱ型編碼,半雙工工作方式。
命令字由20 個信息位組合而成,這些組合信息包括3 位同步頭、5 位遠程終端地址字段、1 位發(fā)送(接收)位(T/R)、5 位子地址(方式)字段、5 位數(shù)據(jù)字計數(shù)(方式代碼)字段及1 位奇偶校驗位(P)[7-9],按照從高到低的順序依次排列,其結構如圖2 所示。在軟件生成命令字時,不考慮同步頭和校驗位作為輸入項,命令字占16 位,共兩個字節(jié)。
圖2 1553B命令字結構
遠程終端地址段占用16 位命令字的高5 位[10]??偩€上的每一個遠程終端分配有一個地址編號,編號范圍從0 到30。地址值31 為廣播地址,其被系統(tǒng)保留不可占用[11-12]。發(fā)送/接收位(即第11 位)定義遠程終端操作模式,邏輯0 表示遠程終端接收數(shù)據(jù),邏輯1 表示遠程終端發(fā)送數(shù)據(jù)。子地址(方式)字段(即第6-10 位)用來表示遠程終端的子地址編號,編號范圍為1~30[13]。數(shù)據(jù)字計數(shù)(方式代碼)字段(即第1-5 位)表示數(shù)據(jù)發(fā)送、接收字節(jié)數(shù)[14],其長度最大值為32 字節(jié)。其中,最大值32 字節(jié)的表示方式比較特殊,用全0 表示。
命令字分為發(fā)送命令字和接收命令字,其區(qū)別僅僅在于發(fā)送/接收位不同,0為接收命令字,1為發(fā)送接收字。在軟件生成命令字時,只需輸入相應的遠程終端地址、T/R、子地址、數(shù)據(jù)字計數(shù),按照相應的位置順序進行組合,采用位移操作即可完成命令字生成。
被測參數(shù)測量值封裝成消息(Message)的形式進行數(shù)據(jù)傳輸,消息最大長度為32 個字長度[15]。消息分別由三部分組成:命令字、數(shù)據(jù)字和狀態(tài)字。每條消息以命令字開頭,命令字分為接收命令字和發(fā)送接收字,根據(jù)傳輸模式不同,確定命令字排列結構。狀態(tài)字位于每條消息結尾或者緊鄰命令字,它用于標識該條消息格式是否正確、消息來自哪條總線等信息[16]。數(shù)據(jù)字位于命令字或狀態(tài)字后面,記錄了所有被測參數(shù)。在事后處理時,一般只考慮BC-RT、RT-BC、RT-RT 這3 種傳輸模式。1553B 消息結構如圖3 所示。
圖3 1553B消息結構
接收命令字和發(fā)送命令字的組合能夠唯一確定一條消息,因此可以此作為全局消息標識。消息定義還應包含參數(shù)個數(shù)、命令長度、傳輸模式,此3 項用以計算接收命令字和發(fā)送命令字。針對消息里的每一個測量參數(shù),通過參數(shù)序號、參數(shù)名稱、代號、單位、數(shù)據(jù)類型、輸出類型、系數(shù)等屬性加以描述。
消息解析的目的是將1553B 文件中的每一條消息提取出來,按照數(shù)據(jù)字協(xié)議進行參數(shù)物理量還原,并按用戶要求的格式進行輸出。首先,將文件讀入到內存中,便于后續(xù)進行數(shù)組下標操作;然后讀取消息配置文件,讀取命令字、參數(shù)個數(shù)、傳輸模式等消息基本信息,包括每個參數(shù)的參數(shù)序號、參數(shù)名稱、代號、單位、數(shù)據(jù)類型、輸出類型、系數(shù)等屬性;最后根據(jù)命令字頭提取每條消息,對消息中每個參數(shù)按處理公式進行物理量還原。為提高處理效率,使用多線程技術對每一個消息單獨啟動一個線程進行消息解析。
把握了上述三類“道”義,我們不難看出作者的思想,這有助于對“道”的英譯。然而,文中“道”的含義廣博,尤其是儒道之“道”,很難在英語世界找到相應的對應詞,獲得傳神達意的得體譯本。筆者姑且選取劉師舜、楊憲益、戴乃迭夫婦以及羅經國這三個經典譯本(以下分別簡稱劉譯、楊譯、羅譯),將對應的“道”的譯文摘出,按上文“道”的釋義及分類順序分別列舉如下(粗體為筆者所加):
軟件系統(tǒng)主要由命令字生成模塊、消息結構定義模塊、消息解析模塊構成。系統(tǒng)的結構如圖4 所示。
圖4 軟件系統(tǒng)結構
命令字生成模塊接收界面輸入的信源信息(遠程終端地址、子地址)、信目信息(遠程終端地址、子地址)、數(shù)據(jù)字計數(shù),根據(jù)命令字編碼規(guī)則生成命令字。操作界面如圖5 所示。
圖5 命令字生成操作界面
命令字生成流程根據(jù)三種不同的消息結構流程有所不同:
1)首先判斷數(shù)據(jù)字計數(shù)是否等于32 字節(jié),若相等,長度變?yōu)?;
2)針對BC-RT 傳輸模式,設置T/R 數(shù)據(jù)位為0,將信目終端地址左移11 位、T/R 左移10 位、信目子地址左移5 位,與數(shù)據(jù)字計數(shù)執(zhí)行按位與操作,得到接收命令字;
3)針對RT-BC 傳輸模式,設置T/R 數(shù)據(jù)位為1,將信目終端地址左移11 位、T/R 左移10 位、信目子地址左移5 位,與數(shù)據(jù)字計數(shù)執(zhí)行按位與操作,得到發(fā)送命令字;
4)針對RT-RT 傳輸模式,首先參照BC-RT 模式得到接收命令字,然后參照RT-BC 模式得到發(fā)送命令字,最后將接收命令字左移16 位與發(fā)送命令字取與得到命令字組合。
命令字生成流程如圖6 所示。
圖6 命令字生成流程
一條1553B 信息由命令字、多個數(shù)據(jù)字、狀態(tài)字組成。狀態(tài)字不參與解析,因此消息結構只需包括基本信息和參數(shù)信息兩大部分。其中命令字是全局唯一的,可以此為關鍵字作為記錄索引。命令字由用戶界面輸入的命令長度、傳輸模式、參數(shù)個數(shù)計算得出,因此基本信息部分包括命令字組合、命令長度、傳輸模式、參數(shù)個數(shù)4 個元素。參數(shù)信息由多個參數(shù)組成,每一個測量參數(shù)包含參數(shù)名稱、代號、單位、數(shù)據(jù)類型、輸出類型、系數(shù)、位控位置等屬性。消息結構如圖7 所示。
圖7 消息結構
考慮到數(shù)據(jù)錄入、查詢的便利性和后續(xù)并行化快速解析,每一條消息結構用ini 配置文件進行存儲,這樣可同時避免命令字與參數(shù)之間的復雜關聯(lián)。
該模塊讀取配置文件的基本信息和參數(shù)信息,對每一條1553B 消息進行解析、處理,并按用戶要求的格式進行輸出。為提高處理速度,以多線程方式調用解析模塊,每一個1553B 配置文件啟動一個線程。其具體流程如下:
1)讀取配置文件,獲取命令字、命令長度、參數(shù)個數(shù)、傳輸模式等消息基本信息和參數(shù)類型、系數(shù)等屬性;
2)讀取原始數(shù)據(jù)文件到內存,并構造CRC 校驗表;
3)以讀入的命令字為查詢條件在內存塊中進行遍歷,定位后將指針以命令長度進行偏移得到CRC校驗碼,并與計算得到的CRC 校驗碼進行比較;
4)按照數(shù)據(jù)類型逐個讀取參數(shù),并調用系數(shù)進行量綱還原??紤]到大量的磁盤I/O 操作會耗時明顯,將結果緩存到一定大小再一次性輸出到文本文件。
消息解析流程如圖8 所示。
圖8 消息解析流程
分三次采集1553B 原始數(shù)據(jù)進行文件存盤,大小分別為58 MB、116 MB、232 MB,每個數(shù)據(jù)包含BC-RT、RT-BC、RT-RT 三種傳輸模式和72 個命令字組合。處理計算機配置為32 GB 內存、1 T 固態(tài)硬盤、雙Intel Xeon 4110 CPU。采用傳統(tǒng)處理方法和快速處理方法兩種方式,對采集的3 次1553B 數(shù)據(jù)進行耗時統(tǒng)計,結果如表1 所示。
表1 處理耗時統(tǒng)計對比
從實驗結果可知,快速處理方法相比傳統(tǒng)處理方法耗時顯著減少,處理效率有較大提升??焖偬幚矸椒ê臅r與數(shù)據(jù)大小、需要處理的命令字數(shù)量正相關。
針對當前1553B 總線消息處理軟件參數(shù)裝訂復雜、處理速度慢的問題,該文提出了一種快速解析處理方法。提前解算命令字,并以此為消息唯一標識符進行多線程檢索;自定義消息結構,取代復雜的ICD 數(shù)據(jù)庫結構。實測處理結果表明,該方法可維護性較強,處理速度快,對1553B 數(shù)據(jù)處理效率有較大的提升。