【摘要】針對航電測試領(lǐng)域?qū)S米詣訙y試系統(tǒng)通用性差、故障診斷難等問題,本文提出了一種通用自動測試平臺設(shè)計方案。通過儀器驅(qū)動層分層設(shè)計及建立指令轉(zhuǎn)換模型,有效解決了程控儀器時驅(qū)動與指令的兼容性問題。除此之外,依托持久化存儲機制基于FTA構(gòu)建平臺故障診斷模塊,利用測試項異常事件代碼及最小割集算法確定導(dǎo)致故障發(fā)生的基本事件集合及相應(yīng)概率,最后獲取數(shù)據(jù)庫設(shè)備故障診斷信息表中每種事件集合所對應(yīng)的診斷信息,根據(jù)概率排序依次給出用戶排故、維修建議,有效降低了故障診斷的門檻及難度。經(jīng)實際功能驗證,相較于傳統(tǒng)專用自動測試系統(tǒng),本平臺在通用性、故障診斷等多維度均具有較好的優(yōu)勢,可滿足航電系統(tǒng)測試的快速擴展需求,具有良好的實用價值。
【關(guān)鍵詞】航電測試|通用自動測試|FTA|故障診斷|最小割集
航電系統(tǒng)是飛機至關(guān)重要的核心系統(tǒng),其技術(shù)水平的高低直接影響飛機的整體性能[1]。作為檢驗其可靠性保障的地面測試環(huán)節(jié)則顯得尤為重要。傳統(tǒng)測試方式主要以人工測試為主,近年來,航電測試領(lǐng)域自動化程度愈來愈高,人工測試逐步被自動測試系統(tǒng)所取代。然而,現(xiàn)有測試系統(tǒng)大多為針對某個特定任務(wù)研發(fā)的專用定制系統(tǒng),其架構(gòu)設(shè)計缺乏有效的頂層設(shè)計,當(dāng)業(yè)務(wù)需求發(fā)生更迭時,不得不對系統(tǒng)進行二次開發(fā),造成資源的極大浪費。除此之外,專用系統(tǒng)在故障診斷方面多數(shù)并未涉及,排故方式仍然依賴專業(yè)人員個人經(jīng)驗從而導(dǎo)致故障診斷門檻較高且效率低下。
為應(yīng)對上述挑戰(zhàn),本文將通過硬件、軟件兩方面設(shè)計來解決自動測試系統(tǒng)通用性差問題,同時采用故障樹分析法[2](Fault Tree Analysis,F(xiàn)TA)來構(gòu)建故障診斷模塊。
一、平臺概述
(一)平臺的通用性設(shè)計主要體現(xiàn)在以下兩部分
硬件設(shè)計:采用通用化的工控電腦,與之相連的測試儀器則被集成在標(biāo)準(zhǔn)化機柜中,可根據(jù)業(yè)務(wù)需要進行快速組合搭建,布局靈活且擴展性強。
軟件設(shè)計:通過對儀器驅(qū)動層分層設(shè)計及建立指令轉(zhuǎn)換模型從而實現(xiàn)對不同儀器驅(qū)動及指令兼容,完成儀器資源的高效擴展利用。
(二)在故障診斷設(shè)計方面
本文根據(jù)測試設(shè)備相關(guān)設(shè)計文檔、專家知識及歷史測試數(shù)據(jù),基于FTA建立設(shè)備典型故障樹并以此為基礎(chǔ)進行故障樹定性分析,借助算法尋找故障樹最小割集,查找故障發(fā)生的基本事件集合,最終根據(jù)數(shù)據(jù)庫中存儲的設(shè)備故障診斷信息表獲取每種事件集合所對應(yīng)的診斷信息并依據(jù)概率排序依次給出用戶排故、維修建議。
二、總體設(shè)計
(一)通用性設(shè)計
硬件設(shè)計部分非本文重點,相關(guān)內(nèi)容不再詳述,本節(jié)將主要從儀器驅(qū)動層架構(gòu)和儀器指令轉(zhuǎn)換機制兩方面來闡述平臺在軟件部分的通用性設(shè)計。
1.儀器驅(qū)動層架構(gòu)設(shè)計
本文基于應(yīng)用邏輯采用分層架構(gòu)重新設(shè)計儀器驅(qū)動層,將其劃分為驅(qū)動統(tǒng)一接口層、驅(qū)動實例層和物理接口層三個層次,儀器驅(qū)動層架構(gòu)圖如圖1所示。
驅(qū)動統(tǒng)一接口層提供各類儀器(標(biāo)準(zhǔn)儀器和自研儀器)的驅(qū)動配置及執(zhí)行接口。主要功能可分為兩方面:一方面獲取當(dāng)前儀器資源并向驅(qū)動管理模塊傳遞外部連接指令。例如,在連接標(biāo)準(zhǔn)儀器時,首先使用VISA庫中viOpenDefaultRM方法創(chuàng)建與儀器通信的會話句柄以打開資源管理器,接著通過viFindRsrc和viFindNext函數(shù)枚舉并查找當(dāng)前可用儀器資源[3];另一方面向測試應(yīng)用層提供驅(qū)動管理模塊中可用的儀器資源接口。其中,驅(qū)動管理模塊包含多種驅(qū)動管理庫,每種庫管理特定的資源容器,如功率計管理單元、信號發(fā)生器管理單元等,而管理單元則按類型負責(zé)加載和釋放各種驅(qū)動實例庫。
驅(qū)動實例層集成各種類型、型號的儀器驅(qū)動庫,例如頻譜分析儀驅(qū)動庫(4051Driver.dll、FPL1000Driver.dll)、功率計驅(qū)動庫(N1911Driver.dll、E4419BDriver.dll)等,每種驅(qū)動庫即為一個與實體儀器進行交互的獨立實體。
物理接口層融合多種通信接口,如COM接口、LAN接口、RS232接口、GPIB接口等,作為應(yīng)用層軟件與設(shè)備硬件之間交互的橋梁,主要用于實現(xiàn)數(shù)據(jù)傳輸。
綜上所述,驅(qū)動統(tǒng)一接口層對外提供統(tǒng)一配置接口,平臺在其與驅(qū)動實例之間內(nèi)置驅(qū)動管理模塊,將上層儀器指令與底層驅(qū)動進行解耦,從而通過物理接口層中的總線接口實現(xiàn)不同類型、型號儀器的統(tǒng)一調(diào)用。各層之間獨立行使職責(zé),功能耦合性低,有效地實現(xiàn)了應(yīng)用層與驅(qū)動層的分離。用戶測試前僅需從平臺指定位置加載相應(yīng)驅(qū)動文件即可,無須考慮底層驅(qū)動開發(fā)細節(jié)。
2.儀器指令轉(zhuǎn)換機制設(shè)計
航電測試領(lǐng)域使用的儀器按類型可分為標(biāo)準(zhǔn)儀器和自研儀器。標(biāo)準(zhǔn)儀器支持SCPI(Standard Commands for Programmable Instrument,可編程儀器標(biāo)準(zhǔn)命令)指令集[4],而自研儀器指令集則不同于SCPI指令結(jié)構(gòu),通常采用字節(jié)碼通信協(xié)議,我們稱為SDIIS(Self-Developed Instrument Instruction Set,自研儀器指令集)。
(1)指令差異。SCPI指令是基于ASCII字符集、分層結(jié)構(gòu)的命令語言[5],例如“:ACPower:SWEep:TIME
(2)儀器指令轉(zhuǎn)換機制設(shè)計。平臺在儀器指令與偽指令之間內(nèi)置指令轉(zhuǎn)換模塊,測控過程中儀器調(diào)用指令均以偽指令形式出現(xiàn)。測試開始前,用戶可利用平臺提供的指令集自定義功能,根據(jù)儀器類型和型號錄入指令。一個完整的指令集文件包含偽指令、真實指令及備注三部分,以XML格式存儲于本地。測試開始后,平臺會通過測試項綁定的儀器型號定位其對應(yīng)的指令集文件,然后以偽指令形式解析此文件并提取相應(yīng)的真實指令。與此同時,搜索與當(dāng)前測試項鏈接的參數(shù)配置文件并解析提取上述指令中包含的數(shù)值和單位。最后再將指令、數(shù)值及單位三者拼接生成最終的儀器指令,從而借助該指令完成儀器的程控操作。
以標(biāo)準(zhǔn)儀器Ceyear4051E頻譜儀的帶參指令為例,假如偽指令為“設(shè)置中心頻率100MHz”,其對應(yīng)的指令格式是“[:SENSe]:FREQuency:CENTER
基于此設(shè)計,平臺可實現(xiàn)對不同儀器指令的兼容,當(dāng)指令出現(xiàn)變動時,僅需更新指令集、參數(shù)配置文件中的部分真實指令和參數(shù)預(yù)設(shè)值,即可完成對已有配置文件的復(fù)用,從而避免了程序的二次開發(fā)。
(二)故障診斷設(shè)計
FTA是一種以故障樹為工具對復(fù)雜系統(tǒng)安全及可靠性評估的圖形化分析方法[6-7],本文利用FTA進行故障診斷設(shè)計。首先,對航電設(shè)備進行全面系統(tǒng)分析,確定容易出現(xiàn)故障的子系統(tǒng)或子模塊,并基于專家經(jīng)驗和技術(shù)資料,建立設(shè)備典型故障知識庫,包括故障模式、原因、排故方法及維修建議等信息;其次,將知識庫中的內(nèi)容以故障樹的形式存儲于平臺數(shù)據(jù)庫中,并為故障樹及其事件分配編號,設(shè)備測試項異常與故障樹中的頂事件相對應(yīng)。測試過程中設(shè)備出現(xiàn)異常并被確認為故障時,平臺根據(jù)當(dāng)前測試項對應(yīng)的事件代碼定位具體的故障樹。然后,利用算法查找當(dāng)前故障樹的最小割集,即導(dǎo)致當(dāng)前故障發(fā)生的基本事件集合;再次,利用歷史數(shù)據(jù)統(tǒng)計信息對最小割集中每種獨立事件組合的發(fā)生概率進行估算并降序排序以圖表形式展示;最后,獲取數(shù)據(jù)庫設(shè)備故障診斷信息表中每種事件集合所對應(yīng)的診斷信息,依次給出用戶排故及維修建議。
1.構(gòu)造設(shè)備典型故障樹
(1)確立故障樹頂事件。測試項一般檢驗的都是設(shè)備最為關(guān)注的功能、性能指標(biāo),意味著出現(xiàn)問題會造成比較嚴重的后果,因此,本文將測試項異常定為故障樹的頂事件;(2)明確故障原因。根據(jù)故障模式找出所有會導(dǎo)致當(dāng)前故障發(fā)生的事件;(3)建立邏輯關(guān)系。自上而下確定事件之間的邏輯關(guān)系,并使用邏輯門符號來描述,包括“與門”(AND)、“或門”(OR)等。(4)建立故障樹數(shù)據(jù)表。將故障樹中事件代碼、門類型、子節(jié)點等信息存儲到數(shù)據(jù)表中。故障樹數(shù)據(jù)結(jié)構(gòu)如表1所示。
2.查找最小割集算法
本文基于下行法[8]設(shè)計MinCutsetAlgorithm算法實現(xiàn)查找最小割集。選用結(jié)構(gòu)體(包含節(jié)點代號、門類型、子節(jié)點數(shù))來存儲故障樹節(jié)點信息,如圖3所示為一個典型故障樹示例圖,其中,T代表頂事件,M1~M4為中間事件,E1~E6則對應(yīng)故障1~故障6。MinCutsetAlgorithm算法基本思路如下:
(1)首先定義一個鏈表來存儲自上而下遍歷得到的故障樹中的各節(jié)點信息:list,210> ft_ CutSet,即ft_CutSet存放了210個鏈表,具體大小可根據(jù)實際需求進行調(diào)整。
(2)將頂事件T節(jié)點添加到數(shù)組ft_CutSet[ 0 ]中,初始化num作為已使用數(shù)組數(shù)量。然后使用三層for循環(huán)來完成整個故障樹的割集構(gòu)建過程。具體來講,由外層到內(nèi)層分別用i、j、k來控制,i循環(huán)遍歷數(shù)組ft_CutSet,j遍歷i為m值時ft_CutSet[m]中的節(jié)點,最內(nèi)層k則通過搜索ft_List來查找ft_CutSet[m]中節(jié)點對應(yīng)的子節(jié)點。
(3)自上而下開始掃描,邏輯操作主要分為兩種。第一種,當(dāng)掃描節(jié)點門類型為“OR”(或門)時,并且存在子節(jié)點(即此時子節(jié)點數(shù)為cNum)時,在ft_CutSet[m]中復(fù)制cNum個當(dāng)前節(jié)點的ft_CutSet[m]至ft_CutSet[num+1]、ft_CutSet[num+2]、……、ft_CutSet[num+cNum]中,然后刪除當(dāng)前節(jié)點并將其對應(yīng)子節(jié)點分別添加至數(shù)組ft_CutSet[num+1]、ft_CutSet[num+2]、……、ft_ CutSet[num+cNum]中;第二種,當(dāng)掃描節(jié)點門類型為“AND”(與門)時,需復(fù)制該節(jié)點至ft_CutSet[num+1],然后刪除該節(jié)點并將其對應(yīng)的所有子節(jié)點全部添加到ft_ CutSet[num+1]中。i繼續(xù)循環(huán)直至完成對新鏈表的分析。以圖3中典型故障樹為例,平臺查找最小割集循環(huán)過程中數(shù)組ft_CutSet的內(nèi)部存儲圖如圖5所示。其中,紫色代表待分析節(jié)點,紅色代表分析完需刪除節(jié)點,淺藍色代表已分析完成的底層節(jié)點。
(4)分析完成后所得到的鏈表需進行是否為空判斷,非空則認為該鏈表是其中一個割集,但割集之間有可能存在包含關(guān)系,因此,需要再進行集合判斷,丟棄包含其他集合的割集,最終留下的即是故障樹的最小割集。上述故障樹經(jīng)過MinCutsetAlgorithm算法掃描得出最小割集為{E1,E2,{E3,E4,E5},{E3,E4,E6}}。
3.故障診斷流程
(1)測試過程中某測試項出現(xiàn)異常經(jīng)確認為故障后,平臺會立即根據(jù)該測試項異常事件代碼前往數(shù)據(jù)庫搜索其對應(yīng)的設(shè)備故障樹節(jié)點信息表,然后自上而下遍歷獲取節(jié)點信息并將其存入ft_List 鏈表,借助MinCutsetAlgorithm算法找出當(dāng)前故障樹的最小割集,即導(dǎo)致該故障發(fā)生的基本事件集合。
(2)根據(jù)平臺對故障事件的歷史統(tǒng)計信息,給出上述基本事件集合中每種組合所發(fā)生的概率估算。假設(shè)圖3故障樹中的事件E1、E2、E3、E4、E5、E6的發(fā)生概率分別為P1、P2、P3、P4、P5、P6,則該故障樹對應(yīng)的最小割集中的基本事件組合概率分別為P1、P2、P3P4P5、P3P4P6。最后依照概率大小進行降序排序,排序靠前的優(yōu)先進行排故處理。
(3)前往平臺數(shù)據(jù)庫搜索設(shè)備對應(yīng)的故障診斷表,若上述基本事件組合的診斷信息存在,則可根據(jù)其中的診斷建議進行針對性排故。反之,則需尋求工程師或?qū)<医o出排故建議。
(4)故障解決后,更新數(shù)據(jù)庫中相應(yīng)設(shè)備的故障樹節(jié)點信息表和故障診斷信息表,提高診斷準(zhǔn)確性,以備后續(xù)排故使用。平臺故障診斷詳細流程圖如圖6所示。
三、功能驗證
經(jīng)過全流程規(guī)范性測試,本平臺在軟件功能測試環(huán)節(jié)通過全部測試用例,測試結(jié)果符合預(yù)期。以某型放大器模塊無輸出電平為例來驗證平臺的故障診斷功能。該故障樹如圖7所示,當(dāng)該模塊輸出電平測試出現(xiàn)異常后,平臺會根據(jù)該事件代碼立即前往數(shù)據(jù)庫搜索其對應(yīng)的故障樹節(jié)點信息,然后利用MinCutsetAlgorithm算法找出該故障樹的最小割集。因為該故障樹邏輯門類型只有“或門”,故最終得出最小割集為所有底事件組成的集合{E1,E2,E3,E4,E5,E6,E7,E8}。平臺基于故障事件的歷史統(tǒng)計信息給出各事件的發(fā)生概率排序,最后,根據(jù)該模塊故障診斷信息表中相關(guān)內(nèi)容給出排故和維修建議。平臺診斷結(jié)果如圖8所示。
四、結(jié)語
本文提出了一種儀器驅(qū)動層分層設(shè)計方案,有效地實現(xiàn)了應(yīng)用層與驅(qū)動層分離,解決了平臺調(diào)用儀器時的驅(qū)動兼容問題。同時,建立了一種儀器指令轉(zhuǎn)換模型,調(diào)用儀器時基于該模型以偽指令形式解析出真實指令來實現(xiàn)程控儀器,從而解決了調(diào)用儀器時的指令兼容問題。依靠上述設(shè)計,使得平臺具備了良好的通用性。另外,基于FTA將測試項異常作為頂事件建立設(shè)備的典型故障樹及診斷信息庫。異常出現(xiàn)時,利用事件代碼定位具體故障樹,并啟動查找最小割集算法獲取導(dǎo)致當(dāng)前故障發(fā)生的基本事件集合及相應(yīng)發(fā)生概率,最終根據(jù)故障診斷信息表獲取每種事件集合所對應(yīng)的診斷信息并依據(jù)概率排序依次給出用戶排故及維修建議。有效地降低了排故門檻及難度。經(jīng)驗證,相較于傳統(tǒng)專用自動測試系統(tǒng),本平臺在通用性、故障診斷等多維度均具有較好的優(yōu)勢,可滿足航電系統(tǒng)測試的快速擴展需求,具有良好的實用價值。中國軍轉(zhuǎn)民
參考文獻
[1]錢魯森.航電系統(tǒng)自動化測試關(guān)鍵技術(shù)的研究與實現(xiàn)[D].成都:電子科技大學(xué),2018:1-3.
[2]劉鵬.基于AHP與FTA的汽車制動系統(tǒng)故障分析[D].西安科技大學(xué),2018:37-39.
[3]許倩文.LXI-VXI零槽控制器VISA庫的設(shè)計與實現(xiàn)[D].華中科技大學(xué),2017:10-20.
[4]朱興邦,李兵.IEEE488與SCPI解釋[J].儀器儀表標(biāo)準(zhǔn)化與計量,2007(01):15-16,26.
[5]郭威.TCAS測試設(shè)備的SCPI程控命令集設(shè)計[D].電子科技大學(xué),2022:7-10.
[6]吳盡哲,馬知遠,郭月婷,等.基于故障樹分析法的艦載武器裝備電子元器件及PCB的失效研究[J].裝備環(huán)境工程,2024,21(01):19-25.
[7]李鵬飛.基于故障樹分析的柴油機燃油系故障診斷研究[D].長安大學(xué),2017:18-21.
[8]孫紅梅,牟明明,高磊.故障樹分析法的定性和定量分析研究[J].電子產(chǎn)品可靠性與環(huán)境試驗,2023,41(03):22-26.
(作者簡介:王龍濤,中國電子科技集團公司第二十研究所,工程師,碩士研究生,研究方向為自動測試系統(tǒng)設(shè)計)