陳志平 董金良
(南京國睿防務(wù)系統(tǒng)有限公司 江蘇省南京市 210012)
機(jī)內(nèi)測試(Build-in test, BIT)是系統(tǒng)或設(shè)備自身為故障檢測、隔離或診斷提供的自動測試能力。近年來,隨著國內(nèi)外雷達(dá)技術(shù)的不斷提高,BIT 已然成為雷達(dá)系統(tǒng)不可或缺的功能項。負(fù)責(zé)監(jiān)測BIT 信息并進(jìn)行可視化顯示的軟件一般稱為BIT 顯示軟件或者監(jiān)控軟件。
作為雷達(dá)系統(tǒng)的重要組成部分,BIT 顯示軟件主要完成設(shè)備狀態(tài)監(jiān)控和故障定位功能:既需要全局監(jiān)視雷達(dá)系統(tǒng)各設(shè)備的運(yùn)行狀態(tài),又需要具備快速定位故障模塊的能力。
國內(nèi)的雷達(dá)BIT 顯示技術(shù)一般存在以下問題:
(1)設(shè)備層級管理混亂,未按照有序?qū)蛹壥崂砀髟O(shè)備模塊;
(2)通用性差,不同雷達(dá)的BIT 顯示方案五花八門,缺乏統(tǒng)一的標(biāo)準(zhǔn);
(3)可移植性差,不同操作系統(tǒng)之間的移植工作常使開發(fā)人員不堪重負(fù)、疲于應(yīng)付。
研制一套通用、易用的雷達(dá)BIT 顯示軟件,不僅可以滿足用戶日益攀升的BIT 功能需求,而且能夠作為其他型號產(chǎn)品進(jìn)行二次開發(fā)的基準(zhǔn),有效減輕移植和復(fù)用的工作量。
層次模型最早用于商用數(shù)據(jù)庫管理系統(tǒng),使用層次模型可以直觀、自然地描述數(shù)據(jù)元素之間一對多的關(guān)系。層次模型在數(shù)據(jù)庫中定義滿足:
(1)有且只有一個結(jié)點沒有雙親結(jié)點,這個結(jié)點稱為根結(jié)點;
(2)根以外的其他結(jié)點有且只有一個雙親結(jié)點。在層次模型中,同一雙親的子女結(jié)點稱為兄弟結(jié)點,沒有子女結(jié)點的結(jié)點稱為葉子結(jié)點或者終端結(jié)點。
在數(shù)據(jù)結(jié)構(gòu)中,通常使用有向樹來表示層次模型的邏輯關(guān)系。本文采用自頂向下的層次模型表示雷達(dá)系統(tǒng)各設(shè)備之間的層級關(guān)系,稱為BIT 模型樹。模型樹中的每一個結(jié)點對應(yīng)雷達(dá)系統(tǒng)中的某個設(shè)備或者模塊。某型號雷達(dá)的BIT 模型樹如圖1 所示。
圖1: 模型樹示例
BIT 模型樹的根結(jié)點對應(yīng)雷達(dá)系統(tǒng),如圖1 所示,示例模型樹的根結(jié)點為YLC 雷達(dá)系統(tǒng);根結(jié)點的子女結(jié)點稱為一級結(jié)點,如YLC 雷達(dá)系統(tǒng)包括陣面、伺服、設(shè)備艙和誘餌設(shè)備;一級結(jié)點的子女結(jié)點稱為二級結(jié)點,如伺服又包括平臺模塊和轉(zhuǎn)臺模塊;依次類推,直到葉子結(jié)點為止。
結(jié)點的唯一性通過結(jié)點編號表示,BIT 模型樹中的每一個模塊結(jié)點都有一個唯一標(biāo)識符,稱為結(jié)點編號。結(jié)點編號是結(jié)點小編號的有序組合。
兄弟結(jié)點間通過小編號相互區(qū)分,同一雙親結(jié)點下的各子女結(jié)點的小編號各不相同。結(jié)合設(shè)備規(guī)模、命名規(guī)范,本文使用兩位數(shù)字來表示小編號,從“01”開始,至“99”結(jié)束。
結(jié)點編號是結(jié)點所有祖先結(jié)點小編號與自身小編號的有序排列。如圖1 所示,YLC 雷達(dá)系統(tǒng)小編號為“01”,伺服設(shè)備小編號為“02”,平臺模塊小編號為“01”,根據(jù)編號規(guī)則,平臺模塊的編號就是上述三個小編號的順序排列,即“010201”。需要注意的是,每一個結(jié)點都需要嚴(yán)格遵守兩位數(shù)字的編號規(guī)則,以保證所有的結(jié)點都不會出現(xiàn)編號沖突情形。例如在不正確的編號方式下,“01-1-201”模塊與“01-12-01”模塊具有相同的結(jié)點編號“011201”。
考慮到不同模塊結(jié)點的關(guān)鍵程度、自檢周期等方面存在一定的差異性,BIT 模型樹中的任一結(jié)點都可以調(diào)整自身的顯示策略。
(1)故障傳遞:在直通模式下,結(jié)點的故障狀態(tài)會傳遞給它的雙親結(jié)點,即只要有一個子模塊顯示異常,則該模塊也會顯示異常;而在普通模式下,結(jié)點是否異常與其子模塊的健康狀態(tài)無關(guān)??紤]到到故障定位的便捷性及故障顯示的統(tǒng)一性,在無特殊需求的情形下,建議所有的結(jié)點均設(shè)置為直通模式。
(2)啟動時間:從軟件啟動開始,結(jié)點不顯示故障的時間段。部分設(shè)備從開機(jī)到正常運(yùn)行需要一定的時間,正常運(yùn)行前的自檢信息可能提示異常。因此有必要為此類結(jié)點設(shè)置一段啟動時間,避免出現(xiàn)虛警。
(3)重置時間:即狀態(tài)重置時間,在未到新的自檢信息的情況下結(jié)點狀態(tài)的最大保留時間。超出重置時間后,結(jié)點所有的自檢信息將被清空。重置時間可參照自檢周期相應(yīng)設(shè)置。
(4)故障記錄:該結(jié)點出現(xiàn)故障時是否記錄故障至文件。對于一些關(guān)鍵模塊,可以設(shè)置故障記錄,便于事后查看、分析。
結(jié)點屬性包括健康狀態(tài)、參數(shù)值和自定義狀態(tài)。
1.4.1 健康狀態(tài)
本文采用4 種不同的顏色來反映設(shè)備的健康狀態(tài),包括綠色、紅色、橙色和灰色。通過不同的顏色,可以直觀地監(jiān)測雷達(dá)系統(tǒng)以及發(fā)現(xiàn)故障。顏色與設(shè)備健康狀態(tài)的對應(yīng)關(guān)系如下。
(1)綠色:狀態(tài)正?;蚰K成功運(yùn)行;
(2)紅色:狀態(tài)異常、模塊出現(xiàn)故障;
(3)橙色:狀態(tài)告警或參數(shù)值異常,暫不影響雷達(dá)使用;
(4)灰色:狀態(tài)未知,未收到有效自檢數(shù)據(jù),設(shè)備離線或模塊未啟動。
健康狀態(tài)屬性的默認(rèn)值依次為0,1,2,3。上述4 種狀態(tài)中,告警狀態(tài)不參與故障傳遞,僅通過結(jié)點自身的參數(shù)值進(jìn)行判斷。其余3 種狀態(tài)按照故障、正常、未知的優(yōu)先級順序進(jìn)行傳遞,并更新雙親結(jié)點的健康狀態(tài)。根據(jù)故障傳遞特性,任一葉子結(jié)點的故障均會觸發(fā)雙親結(jié)點和所有祖先結(jié)點顯示紅色,從一級結(jié)點開始追溯,可迅速定位故障結(jié)點。
1.4.2 參數(shù)值
參數(shù)值是設(shè)備和模塊可以量化顯示的屬性信息,包括溫度、濕度、轉(zhuǎn)速、工作時間、版本號等信息。參數(shù)值顯示又分為單一參數(shù)顯示和聯(lián)級參數(shù)顯示兩類。
(1)單一參數(shù)顯示:顯示值來源于獨(dú)立、完整的一個參數(shù)值,大部分參數(shù)值都是單一參數(shù)類型。結(jié)點的單一參數(shù)使用value 字段進(jìn)行賦值,同時需要設(shè)置值域。
(2)聯(lián)級參數(shù)顯示:顯示值來源于多個參數(shù)值,如版本信息屬性需要由三級版本號聯(lián)級顯示完成,如版本V1.0.2 同時包含一級版本號1、二級版本號0 和三級版本號2,分別使用value/value2/value3 字段進(jìn)行賦值。
1.4.3 自定義狀態(tài)
除了健康狀態(tài)和參數(shù)值,部分模塊結(jié)點還包含自定義狀態(tài)屬性。例如空調(diào)模式包括制冷模式、制熱模式、通風(fēng)模式和除濕模式;伺服狀態(tài)包括等待、搜索和定位。本文使用state 字段存儲結(jié)點的自定義狀態(tài),通過解析規(guī)則實現(xiàn)了狀態(tài)和數(shù)值的映射。自定義狀態(tài)解析示例如表1 所示。
表1: 自定義狀態(tài)解析示例
BIT 顯示軟件需要同時監(jiān)測雷達(dá)多個分系統(tǒng)的自檢信息報文。通過協(xié)議管理功能,軟件能夠識別不同報文協(xié)議,分門別類地完成協(xié)議解析工作。
為了使軟件具備區(qū)分不同協(xié)議的能力,每一條報文協(xié)議需要有一條獨(dú)一無二的識別規(guī)則。不同協(xié)議的識別規(guī)則既要各不相同,又須互不包容。協(xié)議的識別規(guī)則由一個或多個起始字節(jié)、字段長度和字段值組成,通常由報文頭、報文尾和報文長度構(gòu)成。對于每一條監(jiān)測到的自檢信息,會遍歷所有協(xié)議進(jìn)行判別。識別成功的報文數(shù)據(jù)會按照相應(yīng)協(xié)議的解析規(guī)則進(jìn)行解析;而遍歷完所有協(xié)議后仍未能識別的報文將被視為未知報文,不予解析。
本文的協(xié)議解析遵循設(shè)定的語法規(guī)則,類似于一種程序偽代碼。解析過程包括順序解析、選擇解析和循環(huán)解析3 種類型。協(xié)議解析默認(rèn)采用順序解析方式,根據(jù)預(yù)設(shè)的字段名、字段類型、起始字節(jié)、起始比特、比特長度、屬性名和表達(dá)式進(jìn)行解析。
字段名為結(jié)點編號或其他唯一標(biāo)識符,BIT 模型樹中的每一個葉子結(jié)點都需要在協(xié)議解析中添加解析規(guī)則,以實現(xiàn)健康狀態(tài)、參數(shù)值和自定義狀態(tài)的賦值。
每一條解析語句都必須包括一個字段類型。本文支持的字段類型共有12 種,包括8 種基本數(shù)據(jù)類型、2 種選擇數(shù)據(jù)類型和2 種循環(huán)數(shù)據(jù)類型。選擇解析從if 字段所在語句開始,至endif 字段所在語句結(jié)束;循環(huán)解析在滿足循環(huán)條件的情況下,從while 字段所在語句開始,至endwhile 字段所在語句結(jié)束,循環(huán)往復(fù)執(zhí)行解析。字段類型與字段功能的對照表如表2 所示。
表2: 字段類型與功能對照表
起始字節(jié)、起始比特和比特長度決定了報文的解析位置,需要和字段類型一致。
屬性名包括默認(rèn)屬性、value 值和state 值構(gòu)成。其中默認(rèn)屬性對應(yīng)結(jié)點的健康狀態(tài),value 值對應(yīng)結(jié)點的參數(shù)值,而state 值則對應(yīng)結(jié)點的自定義狀態(tài)。需根據(jù)BIT顯示需求對結(jié)點的一個或者多個屬性進(jìn)行解析賦值。
結(jié)點屬性的解析規(guī)則通過表達(dá)式實現(xiàn)。通常情況下,參數(shù)值和自定義狀態(tài)的解析只需根據(jù)相應(yīng)的數(shù)據(jù)類型進(jìn)行賦值,而健康狀態(tài)的解析則需要通過映射轉(zhuǎn)換實現(xiàn)。上文提到,4 種健康狀態(tài)的默認(rèn)值分別為0,1,2,3,健康狀態(tài)解析的表達(dá)式就需要根據(jù)報文協(xié)議的約定實現(xiàn)字段值到狀態(tài)默認(rèn)值的轉(zhuǎn)換。
常見的映射表達(dá)式如表3 所示。
表3: 常見映射表達(dá)式
本文設(shè)計的BIT 模型樹具備開放性和復(fù)用性特征,支持在雷達(dá)系統(tǒng)內(nèi)新增和修改設(shè)備。在BIT 顯示軟件中添加新的設(shè)備BIT 需要遵循以下步驟:
(1)確定設(shè)備層級,在模型樹中添加結(jié)點;
(2)配置每一個葉子結(jié)點的屬性;
(3)錄入設(shè)備BIT 報文協(xié)議;
(4)設(shè)置結(jié)點屬性的報文解析規(guī)則;
(5)設(shè)計顯示界面。
BIT 顯示軟件通過UDP 組播接收各設(shè)備的自檢信息報文,各設(shè)備按照一定的自檢周期向指定的地址和端口發(fā)送數(shù)據(jù)報文。BIT 顯示軟件與其他分系統(tǒng)之間的數(shù)據(jù)交互如圖2 所示。
圖2: 系統(tǒng)運(yùn)行框圖
(1)BIT 顯示軟件運(yùn)行時首先進(jìn)行初始化操作,讀取預(yù)先配置好的模型文件和協(xié)議文件。
(2)運(yùn)行過程中持續(xù)監(jiān)聽指定端口的UDP 網(wǎng)絡(luò)數(shù)據(jù)包,并進(jìn)行報文識別,判定報文類型。
(3)通過指定類型的解析規(guī)則解析報文數(shù)據(jù),并更新模型數(shù)據(jù)結(jié)構(gòu)中的結(jié)點屬性值。
(4)定時驅(qū)動,讀取模型中各結(jié)點的屬性值,實時刷新顯示界面。
軟件工作流程如圖3 所示。
圖3: 工作流程圖
本文提出一個基于層次模型的雷達(dá)BIT 顯示軟件,通過模型管理和協(xié)議解析,實現(xiàn)了雷達(dá)系統(tǒng)內(nèi)各設(shè)備自檢信息的監(jiān)測顯示。軟件具備良好的通用性,已在多個雷達(dá)系統(tǒng)中成功應(yīng)用,重新構(gòu)造BIT 模型亦可應(yīng)用于其他設(shè)備系統(tǒng)。