(陸軍工程大學(xué)石家莊校區(qū) 導(dǎo)彈工程系,河北 石家莊 050003)
新一代ATS(Auto Test System,自動(dòng)測(cè)試系統(tǒng))發(fā)展方向是建立標(biāo)準(zhǔn)、開放、通用的ATS結(jié)構(gòu)體系,采用規(guī)范的測(cè)試診斷知識(shí)描述,建立標(biāo)準(zhǔn)、開放的診斷推理機(jī)接口[1]。而診斷服務(wù)作為自動(dòng)測(cè)試系統(tǒng)體系中的重要組成部分,實(shí)現(xiàn)其開放式的結(jié)構(gòu)以及信息共享和交互能力則是非常必要的。IEEE頒布了AI-ESTATE(Artificial Intelligence Exchange and Service Tie to All Test Environments,全測(cè)試環(huán)境人工智能交換與服務(wù))標(biāo)準(zhǔn),又稱IEEE Std 1232標(biāo)準(zhǔn)。它是下一代ATS診斷服務(wù)系統(tǒng)構(gòu)建依據(jù)的主要規(guī)范,旨在使診斷推理系統(tǒng)相互兼容,測(cè)試診斷知識(shí)可移植、可重用,為故障診斷技術(shù)發(fā)展、開放式診斷系統(tǒng)的建立奠定了良好的基礎(chǔ)[2-4]。AI-ESTATE從制定至今,經(jīng)歷了多次的修正,包括IEEE Std 1232-1990、IEEE Std 1232-1995、IEEE Std 1232.1-1997、IEEE Std 1232.2-1998、IEEE Std 1232-2002以及目前最新版本IEEE Std 1232-2010。
AI-ESTATE是關(guān)于測(cè)試診斷環(huán)境數(shù)據(jù)交換和服務(wù)的規(guī)范集,整個(gè)標(biāo)準(zhǔn)包括體系結(jié)構(gòu)、數(shù)據(jù)知識(shí)以及服務(wù)的定義,以此來實(shí)現(xiàn)符合該標(biāo)準(zhǔn)的系統(tǒng)之間的數(shù)據(jù)和知識(shí)的共享以及系統(tǒng)內(nèi)功能模塊間信息的交互。
AI-ESTATE標(biāo)準(zhǔn)提供如下內(nèi)容[5]:
① AI-ESTATE體系結(jié)構(gòu);
② 診斷信息模型的定義;
③ 診斷模型之間交互格式的標(biāo)準(zhǔn)定義;
④ 診斷推理機(jī)的軟件服務(wù)定義。
在最新頒布的AI-ESTATE標(biāo)準(zhǔn)中,提供了6種信息模型,其中處于對(duì)頂層的是CEM(Common Element Model,公共元素模型),公共元素模型對(duì)測(cè)試診斷領(lǐng)域中用到的常見信息進(jìn)行了規(guī)范化的標(biāo)準(zhǔn)描述。比如Diagnosis(診斷)、Failure(失效)、Repair(維修)和Resource(資源)等實(shí)體以及Costs(成本)、Failure Rates(失效率)等屬性[6]。公共元素模型是基礎(chǔ)的數(shù)據(jù)格式,適用于各種滿足AI-ESTATE標(biāo)準(zhǔn)的環(huán)境。在CEM下面是一系列的數(shù)據(jù)和知識(shí)模型,F(xiàn)TM(Fault Tree Model,故障樹模型)、BNM(Bayes Network Model,貝葉斯網(wǎng)絡(luò)模型)、DIM(D-Matrix Inference Model,D-矩陣推理模型)、DLM(Diagnostic Logic Model,診斷邏輯模型),并且還可以根據(jù)應(yīng)用診斷方法的不同進(jìn)一步擴(kuò)充。這些模型是針對(duì)專門的應(yīng)用環(huán)境,以公共元素模型中元素為基礎(chǔ),進(jìn)行一定的擴(kuò)展或刪減,并遵循一定的診斷規(guī)則將各種資源實(shí)體組織起來,增強(qiáng)某方面的信息支持,以滿足應(yīng)用環(huán)境的需要。
AI-ESTATE標(biāo)準(zhǔn)為規(guī)范故障樹分析方法,把故障樹定義為“決策樹或決策表”[9]。故障樹模型包括4個(gè)實(shí)體: FaultTreeModel實(shí)體、StartingPoint實(shí)體、FaultTreeStep實(shí)體、TestResult實(shí)體。
圖1為其EXPRESS-G圖。
圖1 FTM的EXPRESS-G圖
其中FaultTreeModel實(shí)體是CEM中DiagnosticModel實(shí)體的子類;它的屬性為entryPoints,定義了入口指針,作為一棵故障樹的一個(gè)或多個(gè)入口節(jié)點(diǎn);StartingPoint實(shí)體是Action 實(shí)體的子類,它的屬性first Step,指向故障樹或子樹的根節(jié)點(diǎn);FaultTreeStep實(shí)體代表了其中的一個(gè)決策結(jié)點(diǎn);它的屬性Result,是一組至少由兩個(gè)TestResult實(shí)體組成的集合,用來標(biāo)識(shí)測(cè)試結(jié)果;屬性testStep,屬于Test實(shí)體類型,用于標(biāo)識(shí)當(dāng)前步驟下正在進(jìn)行的測(cè)試行為;TestResult實(shí)體包含了每個(gè)測(cè)試結(jié)點(diǎn)對(duì)應(yīng)的測(cè)試結(jié)果以及下一步?jīng)Q策節(jié)點(diǎn)的信息,它的testOut屬性,用來標(biāo)識(shí)當(dāng)前的測(cè)試結(jié)果;屬性nextStep,屬用來標(biāo)識(shí)TestOutcome的結(jié)果相對(duì)應(yīng)的下一個(gè)決策節(jié)點(diǎn)[7]。
在AI-ESTATE標(biāo)準(zhǔn)中,采用 EXPRESS 語言表述故障診斷模型,但 EXPRESS 語言僅僅用來建模而并非程序設(shè)計(jì)語言,其描述的診斷知識(shí)不能利用程序設(shè)計(jì)的方式來加以實(shí)現(xiàn)。為此,選擇XML(eXtensible Markup Language,可擴(kuò)展標(biāo)記語言)來對(duì)診斷知識(shí)進(jìn)行標(biāo)準(zhǔn)化描述無疑是一種更好的選擇。
XML是由萬維網(wǎng)聯(lián)盟(World Wide Web Consortium,W3C)推出一種專門用來進(jìn)行基于字符數(shù)據(jù)的描述、交換和存檔的結(jié)構(gòu)化的標(biāo)準(zhǔn)規(guī)范[10-11]。XML Schema是繼DTD(Document Type Definition,文檔類型定義)之后,用來規(guī)范和描述XML文檔的第二代標(biāo)準(zhǔn)。XML Schema被稱為XML架構(gòu),是以XML語言為基礎(chǔ),描述了XML文檔的結(jié)構(gòu)[8-9]。
ISO 10303 Part28 定義了用 XML 描述 EXPRESS 模式和數(shù)據(jù)的標(biāo)準(zhǔn),為EXPRESS Schema到XML 語言的轉(zhuǎn)換提供了方法[10]。AI-ESTATE的CEM規(guī)范了測(cè)試、診斷領(lǐng)域的公共元素,其他診斷信息模型是在CEM基礎(chǔ)上擴(kuò)展的,因此只要定義了一致的CEM的XML Schema和數(shù)據(jù)符合診斷信息模型描述的類型和語義,就為其他模型的建立奠定了基礎(chǔ)。
在對(duì)AI-ESTATE標(biāo)準(zhǔn)中給出的故障樹模型進(jìn)行深入分析研究的基礎(chǔ)上,建立故障樹模型,其XML Schema如圖2所示。
圖2 FTM XML Schema文件邏輯視圖
它以FaultTreeModel為根元素,由CEM中 DiagnosticModel實(shí)體上進(jìn)行擴(kuò)展的,主要包含的元素有 RepairItems、Tests、Diagnoses、Functions、 StartingPoint元素以及entryPointID屬性。
Tests元素描述了診斷過程中所需要的所有測(cè)試信息,它包含一個(gè)或多個(gè)Test元素,是在CEM中的Test實(shí)體基礎(chǔ)上擴(kuò)展的。Test元素由Name和ID兩個(gè)屬性和子元素Outcome構(gòu)成,Outcome是在CEM中TestOutcome實(shí)體基礎(chǔ)上擴(kuò)展的。對(duì)于每一個(gè)測(cè)試項(xiàng)最少對(duì)應(yīng)著兩個(gè)診斷結(jié)果,Outcome元素下主要包含ID、Name和StandardTestValue三個(gè)屬性來標(biāo)識(shí)具體的診斷結(jié)果值。為了避免在測(cè)試中出現(xiàn)系統(tǒng)名稱相同的測(cè)試項(xiàng)目引起測(cè)試的沖突,要求Test元素、Outcome元素具有名稱唯一性約束。Test元素的信息描述的XML Schema如圖3所示。
圖3 Test的XML Schema文件邏輯視圖
Diagnosis元素包含Name和ID兩個(gè)屬性,Outcome和FailedItem兩個(gè)子元素。Outcome元素用來描述診斷結(jié)果,它又由三個(gè)屬性來描述,依次為ID、Name和StandardDiagnosisValue用來對(duì)診斷的ID、名稱和標(biāo)準(zhǔn)診斷值進(jìn)行描述;可選的FailedItem、元素描述了失效事件,它下面有RepairItemID屬性,描述了對(duì)應(yīng)相應(yīng)失效事件的維修事件的ID號(hào)描述。Diagnosis元素的XML Schema 如圖4所示。
圖4 Diagnosis的XML Schema文件邏輯視圖
Startingpoint元素表示故障樹模型中根節(jié)點(diǎn),其屬性FirstStepID用來標(biāo)記第一個(gè)步驟ID號(hào),其XML Schema 設(shè)計(jì)如圖5所示。
圖5 Startingpoint的 XML Schema 文件邏輯視圖
元素Step是故障樹模型中的核心元素,它描述了在某一步運(yùn)行的測(cè)試以及可能得到的診斷結(jié)論和測(cè)試動(dòng)作。其 testID 屬性用來說明此步診斷需用到的測(cè)試的ID號(hào);Result元素由兩個(gè)或多個(gè)TestResult實(shí)體來描述,提供測(cè)試的結(jié)果,并指明下一個(gè)步驟。如果下一步還是指向一個(gè)測(cè)試,則重復(fù)由故障樹步驟到測(cè)試結(jié)果的過程;其中屬性testOutcomeID說明此步測(cè)試結(jié)果的ID號(hào);而可選元素NextStepID和CurrentDiagnosisOutcomeID分別說明下一個(gè)診斷步驟的ID號(hào)或當(dāng)前故障結(jié)果的ID號(hào)。Step元素的XML Schema如圖6所示。
在實(shí)際故障診斷過程中,采用上述基于XML Schema的診斷模型的描述,可以實(shí)現(xiàn)診斷模型信息的標(biāo)準(zhǔn)化。但是,如果手動(dòng)編輯XML文檔很容易出錯(cuò),而且開發(fā)效率會(huì)很低。因此,針對(duì)這一問題,開發(fā)了診斷模型配置組件,并在此組件基礎(chǔ)上,開發(fā)了配置工具實(shí)現(xiàn)故障樹診斷信息的自動(dòng)配置,自動(dòng)生成符合AI-ESTATE標(biāo)準(zhǔn)的XML文件。
圖6 Step的XML Schema文件邏輯視圖
故障樹配置組件采用COM(Component Object Model,組建對(duì)象模型)技術(shù)開發(fā),對(duì)外開放IFaultTreeDiagnosis接口,用戶通過調(diào)用該接口中的方法實(shí)現(xiàn)故障樹診斷模型信息的配置。因?yàn)長(zhǎng)abWindows/CVI開發(fā)工具支持對(duì)組件的使用,并提供了對(duì)ActiveX控件的支持能力,可以在LabWindows/CVI開發(fā)環(huán)境中使用標(biāo)準(zhǔn)的ActiveX控件,另外,對(duì)XML文件解析也提供了cvixml.fp輔助工具包,所以選用LabWindows/CVI作為開發(fā)故障樹模型配置組件的工具。利用“ActiveX Controller Wizard”向?qū)傻墓收蠘淠P团渲媒M件IFaultTreeDiagnosis接口的部分IDL描述如下所示:
interface IFaultTreeDiagnosis:IDispatch {
[id(0x1),helpstring("Add Test")] HRESULT AddTest ([in] short TestID,[in] BSTR TestName,[in] short PassOutcomeID,[in] short FailOutcomeID);
[id(0x2),helpstring("Delete Test")] HRESULT DeleteTest ([in] short ShortID);
[id(0x4),helpstring("Add Diagnosis")] HRESULT AddDiagnosis ([in] short DiagnosisID,[in] BSTR DiagnosisName,[in] short OutcomeID,[in] BSTR OutcomeName,[in] BSTR OutcomeStandardDiagnosisValue);
……
[id(0xd),helpstring("Read XML")] HRESULT ReadXML ([in] BSTR filepath);
[id(0xf),helpstring("Query Step ")] HRESULT QueryStep ([in] short StepID,[in,out] short*TestID,[in,out]short* PassNextStepID,[in,out] short *PassDiagnosisOutcomeID,[in,out] short *FailNextStepID,[in,out] short *FailDiagnosisOutcomeID);}
該接口通過AddTest、 DeleteTest和DeleteALLTest方法實(shí)現(xiàn)診斷所需測(cè)試的添加與刪除;通過 AddDiagnosis、DeleteDiagnosis和 DeleteALLDiagnosis方法實(shí)現(xiàn)診斷結(jié)論的添加與刪除;通過AddRepairItem、DeleteRepairItem和DeleteAllRepairItem方法實(shí)現(xiàn)維修事件的添加與刪除;通過AddStep、DeleteStep 和DeleteAllStep方法實(shí)現(xiàn)診斷步驟的添加與刪除;通過ReadXML、SaveXML方法實(shí)現(xiàn)XML文件的讀寫;通過QueryStep、QueryTest、QueryDiagnosis和QueryRepairItem方法實(shí)現(xiàn)對(duì)診斷步驟、測(cè)試項(xiàng)目、診斷結(jié)論和維修事件的查詢。
診斷模型配置工具主要設(shè)計(jì)思想是將所選診斷方法及診斷對(duì)象所包含的所有測(cè)試、診斷結(jié)論、維修事件、診斷步驟等元素映射到相應(yīng)的軟件面板(Panel)上,由用戶根據(jù)診斷模型的設(shè)計(jì)情況對(duì)各元素進(jìn)行命名、設(shè)置或關(guān)聯(lián)等操作。故障樹模型的具體配置界面如圖7所示。
圖7 故障樹模型配置界面
在具體實(shí)現(xiàn)時(shí),首先定義樹節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)如下所示:
typedef struct tagTestPoint
{
short TestID;
char *TestName;
short PassOutcomID;
short FailOutcomID;
struct tagTestPoint *next;
}TestPoint,*pTestPoint;
從中可以看出利用單鏈表將所有測(cè)試節(jié)點(diǎn)數(shù)據(jù)管理起來。定義完數(shù)據(jù)結(jié)構(gòu)之后,就可以對(duì)節(jié)點(diǎn)數(shù)據(jù)進(jìn)行操作,其中關(guān)鍵方法AddTests實(shí)現(xiàn)如下:
HRESULT CVIFUNC Fault Tree ObjectI Fault Tree Diagnosis Add Test (CAServerObjHandle objHandle,short TestID,char * TestName,short PassOutcomID,short FailOutcomID)
{
TestPoint** tp=&g_pTestPointGroup;
TestPoint* nextTestPoint=NULL;
int i=0;
int findFlag=0;
for(i=0;i { if( TestID==(*tp)->TestID) { findFlag=1; break; } tp=&((*tp)->next); } if(findFlag) //該節(jié)點(diǎn)已經(jīng)存在 nextTestPoint=(*tp)->next; (*tp)=(TestPoint*)malloc(sizeof(TestPoint)+1); //分配內(nèi)存 (*tp)->TestID=TestID; //設(shè)置測(cè)試節(jié)點(diǎn)的ID DupStr (TestName,&((*tp)->TestName)); //設(shè)置測(cè)試節(jié)點(diǎn)名稱 (*tp)->PassOutcomeID=PassOutcomeID; //設(shè)置測(cè)試節(jié)點(diǎn)的通過結(jié)果ID (*tp)->FailOutcomeID=FailOutcomeID; //設(shè)置測(cè)試節(jié)點(diǎn)的失敗結(jié)果ID if(!findFlag) //該節(jié)點(diǎn)不存在 { g_iTestPointNumber++; } (*tp)->next=nextTestPoint; return S_OK; } AI-ESTATE作為應(yīng)用于測(cè)試以及診斷領(lǐng)域的國(guó)際通用標(biāo)準(zhǔn),定義了診斷接口、規(guī)范服務(wù)和診斷知識(shí)。在對(duì)標(biāo)準(zhǔn)中公共元素模型(CEM)深入分析與研究的基礎(chǔ)上,利用具有靈活性以及可擴(kuò)展性的XML語言,完成了符合AI-ESTATE的故障樹診斷模型的建模過程并建立了相應(yīng)的模型配置工具,為實(shí)現(xiàn)診斷知識(shí)的共享性、流通性以及測(cè)試系統(tǒng)診斷效率的提升奠定了基礎(chǔ)。5 結(jié)束語