国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

SMILE故障診斷引擎與VAPS XT人機(jī)界面設(shè)計(jì)工具的集成

2020-06-12 07:32:16石磊
電子技術(shù)與軟件工程 2020年3期
關(guān)鍵詞:人機(jī)界面貝葉斯引擎

石磊

(中航通飛研究院有限公司 廣東省珠海市 519000)

VAPS XT是一款用于汽車、航空領(lǐng)域人機(jī)界面設(shè)計(jì)的工具,其的優(yōu)勢(shì)在于人機(jī)界面的快速開(kāi)發(fā),SMILE是一個(gè)基于貝葉斯網(wǎng)絡(luò)的仿真接口引擎,其優(yōu)勢(shì)在于貝葉斯網(wǎng)絡(luò)模型的分析,將前者的顯示和后者的處理集成在一起,應(yīng)用到帶有故障診斷功能擴(kuò)展的人機(jī)界面設(shè)計(jì),可以提升故障診斷系統(tǒng)開(kāi)發(fā)、驗(yàn)證的效率。

1 使用工具介紹

1.1 VAPS XT工具

如圖1所示,VAPS XT是加拿大Presagis公司提供的一款商用貨架軟件開(kāi)發(fā)工具,該軟件為開(kāi)發(fā)人員提供了駕駛艙人機(jī)顯示圖像的快速開(kāi)發(fā)平臺(tái),簡(jiǎn)化了開(kāi)發(fā)流程。憑借內(nèi)置的代碼生成工具CODE nGen工具,VAPS XT將開(kāi)發(fā)人員從代碼編寫工作中解放出來(lái),使其專注于圖形界面的設(shè)計(jì)。開(kāi)發(fā)人員無(wú)需將代碼編譯,就可以對(duì)設(shè)計(jì)效果進(jìn)行實(shí)時(shí)的驗(yàn)證,相對(duì)于直接應(yīng)用OpenGL進(jìn)行開(kāi)發(fā),使用VAPS XT可以大大縮短人機(jī)界面開(kāi)發(fā)的時(shí)間[1]。如果有需要,開(kāi)發(fā)的架構(gòu)還允許設(shè)計(jì)人員對(duì)自動(dòng)生成的代碼進(jìn)行調(diào)整。VAPS XT還通過(guò)nCOM接口提供于當(dāng)前各主流仿真設(shè)計(jì)軟件的交互功能,包括DOORs,Simulinks等,實(shí)現(xiàn)顯示與控制人機(jī)界面的實(shí)時(shí)仿真[2]。

1.2 GeNie工具

GeNIe Modeler是由BayesFusion,LLC公司開(kāi)發(fā)的SMILE Engine圖形用戶界面,允許交互式模型構(gòu)建和學(xué)習(xí)。它是為Windows環(huán)境編寫的,但也可以在Wine下的macOS和Linux上使用。GeNIe可以創(chuàng)建和修改故障診斷網(wǎng)絡(luò)模型,定義模型節(jié)點(diǎn)屬性,輸入節(jié)點(diǎn)證據(jù),動(dòng)態(tài)查看診斷結(jié)果。自1998年以來(lái),它已在該領(lǐng)域進(jìn)行了全面測(cè)試,在學(xué)術(shù)界和工業(yè)界得到了廣泛認(rèn)可,并在全球擁有數(shù)千名用戶。本文演示使用的貝葉斯網(wǎng)絡(luò)模型采用的是BayesFusion,LLC公司官方網(wǎng)站提供的發(fā)動(dòng)機(jī)燃油系統(tǒng)故障診斷模型(Engine Fuel System)[3]。模型在GeNIe打開(kāi)的界面如圖2所示。

1.3 SMILE引擎

SMILE是結(jié)構(gòu)化建模、推理和學(xué)習(xí)引擎(Structural Modeling,Inference,and Learning Engine)的縮寫,SMILE引擎也是由BayesFusion,LLC公司推出的一款針對(duì)圖形模型(如貝葉斯網(wǎng)絡(luò),影響圖和結(jié)構(gòu)方程模型等)的推理和學(xué)習(xí)/因果查找引擎。它是一個(gè)C++類庫(kù),可以通過(guò)其API接口被用戶軟件調(diào)用和集成,進(jìn)而通過(guò)決策建模功能增強(qiáng)用戶軟件的功能[4]。通過(guò)對(duì)SMILE引擎的調(diào)用,可以直接應(yīng)用貝葉斯網(wǎng)絡(luò)、動(dòng)態(tài)貝葉斯網(wǎng)絡(luò)和影響圖等工具進(jìn)行故障診斷,快速利用多種推理算法進(jìn)行故障診斷和預(yù)測(cè)。SMILE需要授權(quán)使用,本文使用的是學(xué)術(shù)試用版。

2 將VAPS XT與SMILE引擎集成

圖1:VAPS XT人機(jī)接口設(shè)計(jì)工具軟件界面

圖2:GeNIe建模計(jì)算工具的用戶圖形界面

SMILE的功能集中在貝葉斯網(wǎng)絡(luò)的故障診斷,如果要為SMILE引擎開(kāi)發(fā)可視化界面,需要專門開(kāi)展人機(jī)交互界界面的編程,工作量較大。VAPS XT提供的自動(dòng)代碼生成工具,以及靈活的第三方插件接口功能,為SMILE與VAPS XT的集成提供了條件。

2.1 用戶自定義編程對(duì)象

VAPS XT支持通過(guò)C++編程定制用戶編程對(duì)象,這種方式生成的對(duì)象擁有更靈活的功能。設(shè)計(jì)人員首先要使用VAPS XT創(chuàng)建一個(gè)空的對(duì)象,定義好出入輸出接口后,通過(guò)CodeGEN自動(dòng)生成模板C++工程,然后利用Microsoft Visual Studio對(duì)模板C++工程進(jìn)行補(bǔ)充工程開(kāi)發(fā)。不同版本VAPS XT支持的Visual Studio版本不同,其中VAPS XT4.1支持的Visual Studio版本2012版。在補(bǔ)充開(kāi)發(fā)模板工程時(shí),可以添加引用包括SMILE在內(nèi)的第三方庫(kù),擴(kuò)充VAPS XT的性能[5]。當(dāng)用戶完成代碼編寫、編譯調(diào)試后,就可以生成動(dòng)態(tài)鏈接庫(kù),進(jìn)而被VAPS XT調(diào)用,如果要生成獨(dú)立的界面可執(zhí)行程序,則還要將用戶自定義代碼編譯成靜態(tài)庫(kù)。

2.2 創(chuàng)建并編輯模板工程

生成模板工程的第一步是先定義一個(gè)空對(duì)象,如圖3所示,在VAPS XT中新建——高級(jí)對(duì)象——class,輸入對(duì)象名稱并確定解可。

在編程對(duì)象定義窗口中,可以對(duì)這個(gè)對(duì)象的輸入輸出接口進(jìn)行定義,如圖4所示。其中,Base Class,是新創(chuàng)建的用戶自定義對(duì)象的基類,如果是圖形類的對(duì)象,則基類為GrObject,如果是計(jì)算類的對(duì)象,則基類為Calculator。此處由于是定制基于SMILE的模型處理接口,需要將基類改為Calculator。需要將Has Update Function的選項(xiàng)框選,以便對(duì)象能夠?qū)崟r(shí)根據(jù)輸入證據(jù)的變化給出對(duì)應(yīng)的診斷結(jié)果。

在“Properties”屬性頁(yè)中可以添加新的接口參數(shù),輸入每一個(gè)接口參數(shù)的“名稱”、“類型”、“訪問(wèn)”、“默認(rèn)值”等屬性。其中,名稱就是接口參數(shù)的名稱,類型為接口參數(shù)的數(shù)據(jù)類型,可以在下拉菜單中選擇接口的數(shù)據(jù)類型,包括浮點(diǎn)、整形、布爾、字符串等;訪問(wèn)屬性指明該參數(shù)是作為輸入還是作為輸出,或者雙向訪問(wèn),默認(rèn)值就是該參數(shù)在初始化時(shí)被設(shè)置的值。

在開(kāi)展接口屬性定義前,應(yīng)當(dāng)結(jié)合對(duì)象要實(shí)現(xiàn)的功能、對(duì)象與VAPS XT之間的交互方式等內(nèi)容,對(duì)接口進(jìn)行規(guī)劃,因?yàn)樾薷慕涌诘牟僮鲿?huì)導(dǎo)致后續(xù)一系列工作的反復(fù)。

完成自定義編程對(duì)象的屬性定義后,保存對(duì)象,就可以通過(guò)VAPS XT自帶的CODE nGEN功能生成模板工程。如圖5所示。

自動(dòng)生成的模板工程文件夾的存放位置默認(rèn)在VAPS XT工程目錄下的codedobject文件夾下,使用Visual Studio 2013打開(kāi)Root Project PathCodedObjectclassNamemake下的vxtClsclassName.vcxproj文件,即可打開(kāi)模板工程項(xiàng)目。

生成模板工程項(xiàng)目后,需要添加對(duì)SMILE引擎的引用。首先要更改模板工程項(xiàng)目的屬性,在C/C++,General設(shè)置頁(yè)中,找到Additional Include Directories,將SMILE頭文件存在的路徑添加進(jìn)去。在Linker,General設(shè)置頁(yè)中,找到Additional Library Directories,將SMILE引擎的靜態(tài)庫(kù)文件所在的路徑添加進(jìn)去。

在模板工程的源文件中找到“vxtClsclsFuelModel.h”,在該頭文件中添加對(duì)Smile引擎頭文件的引用。在模板工程的源文件中找到“vxtClsclsFuelModel.cpp”,在該源文件中添加對(duì)SMILE引擎License頭文件的引用。至此,模板工程就可以利用SMILE引擎提供的接口調(diào)用各種貝葉斯網(wǎng)絡(luò)算法開(kāi)展編程了。

分析vxtClsclsFuelModel.cpp源文件的結(jié)構(gòu),除了構(gòu)造函數(shù),和析構(gòu)函數(shù)外,還有一個(gè)主要的函數(shù)就是vUpdate函數(shù)。在構(gòu)造函數(shù)中,主要添加SMILE引擎初始化需要做的工作,如模型文件的讀取,將讀取后的模型對(duì)象保存到一個(gè)全局變量中,然后就是模型對(duì)象屬性的讀取以及輸出??梢栽诖颂幊跏蓟疍SL_network對(duì)象,制定后續(xù)的模型計(jì)算。在析構(gòu)函數(shù)中,主要添加SMILE引擎關(guān)閉后需要做的工作,如文檔對(duì)象的銷毀、內(nèi)存的釋放等。

算法的過(guò)程都包含在vUpdate函數(shù)中,這個(gè)函數(shù)定義了在VAPS XT應(yīng)用更新時(shí),對(duì)象需要處理的工作。對(duì)象需要添加的故障診斷函數(shù)就添加到這里??梢詤⒖糞MILE引擎的接口定義文檔,執(zhí)行模型載入、節(jié)點(diǎn)證明設(shè)置、模型更新、獲取節(jié)點(diǎn)屬性等操作。將圖2中定義的對(duì)象參數(shù),作為vUpdate函數(shù)中模型計(jì)算的輸入和輸出參數(shù),就實(shí)現(xiàn)了數(shù)據(jù)的更新。

2.3 創(chuàng)建用戶自定義插件實(shí)例

圖3:新建用戶自定義編程對(duì)象

圖4:定義輸入輸出接口

圖5:使用CODE nGEN生成模板工程

生成用戶自定義對(duì)象的動(dòng)態(tài)連接庫(kù)之后,還需要在VAPS XT中定義一個(gè)對(duì)象實(shí)體以便“實(shí)例化”這個(gè)自定義對(duì)象,這就需要再定義一個(gè)Coded Implementation對(duì)象。圖6所示為創(chuàng)建Coded Implementation的界面。

在創(chuàng)建頁(yè)面需要輸入對(duì)象的名稱、對(duì)象所在的項(xiàng)目,然后再Class Name下來(lái)菜單中選擇剛剛定義好的用戶自定義對(duì)象class,選擇上一步生成的DLL的路徑,然后VAPS XT會(huì)自動(dòng)選擇CPP和頭文件的路徑。點(diǎn)擊確定后,在VAPS XT的資源窗口中,clsFuelModel對(duì)象下面就生成出了一個(gè)Implementation對(duì)象。

2.4 在VAPS XT的Format中使用新建對(duì)象

完成用戶自定義對(duì)象的創(chuàng)建后,就可以在Format中調(diào)用這個(gè)對(duì)象了,調(diào)用方式與其他VAPS XT中內(nèi)置的對(duì)象類似。需要注意的一點(diǎn)是,如果用戶自定義對(duì)象中使用了內(nèi)置的文件讀取模式,則一定要確保訪問(wèn)路徑下有對(duì)應(yīng)的文件可以被訪問(wèn)到。否則在使用用戶自定義對(duì)象時(shí)將會(huì)出錯(cuò)。建議在用戶自定義對(duì)象的接口定義時(shí),增加文件路徑選擇的輸入接口,然后在實(shí)現(xiàn)

圖6:創(chuàng)建Coded Implementation對(duì)象

圖7:在Format中應(yīng)用新定義的對(duì)象

圖8:SMILE引擎在VAPS XT中可視化的效果

只要把這個(gè)對(duì)象從工程資源窗口中拖進(jìn)Format的Implementation View窗口中即可。如圖7所示。

選中clsFuelModel對(duì)象,可以在他的屬性窗口中看到對(duì)象的輸入輸出參數(shù),可以發(fā)現(xiàn),自定義對(duì)象已經(jīng)輸出了初始化的數(shù)值。

接下來(lái)就可以在Format中開(kāi)展設(shè)計(jì),通過(guò)圖8所示的多狀態(tài)按鈕,將證據(jù)的值傳遞給,然后將SMILE實(shí)時(shí)更新輸出的節(jié)點(diǎn)屬性輸出給Format界面中的數(shù)據(jù)條和數(shù)字文本,實(shí)現(xiàn)故障的診斷。

3 集成后的調(diào)試、編譯及運(yùn)行

3.1 在VAPS XT環(huán)境下的調(diào)試

在VAPS XT中,可以通過(guò)運(yùn)行指令,實(shí)時(shí)對(duì)Format中的界面進(jìn)行功能驗(yàn)證。對(duì)于帶有SMILE用戶自定義對(duì)象的Format來(lái)說(shuō)也是一樣的,用戶可以對(duì)Format界面的輸出結(jié)果和顯示邏輯進(jìn)行驗(yàn)證,更改分以下幾種情況:

(1)Format界面本身設(shè)計(jì)的問(wèn)題,比如數(shù)據(jù)流定義錯(cuò)誤、圖形符號(hào)的樣式不合適,可以隨時(shí)對(duì)Format界面進(jìn)行調(diào)整。

(2)SMILE自定義對(duì)象的問(wèn)題,不涉及到接口的變更;比如診斷結(jié)果不正確,無(wú)法讀取文件等錯(cuò)誤,則需要對(duì)模板工程的源代碼進(jìn)行修改。然后重新編譯生成動(dòng)態(tài)鏈接庫(kù)。

(3)SMILE自定義對(duì)象的問(wèn)題,涉及到接口的變更。如需要增加接口參數(shù),參數(shù)的數(shù)據(jù)類型要更改,這種更改,需要首先修改用戶自定義對(duì)象的接口屬性,再重新生成模板工程。重新生成用戶自定義對(duì)象實(shí)例后,還需要重新加載該實(shí)例到Format中,替換掉原來(lái)的實(shí)例,如果在Format中有默認(rèn)對(duì)象和用戶自定義對(duì)象之間的數(shù)據(jù)流,則還需要重新定義數(shù)據(jù)流。涉及的更改量比較大,因此要盡量在前期定義好接口。

3.2 靜態(tài)鏈接庫(kù)的生成

自定義對(duì)象動(dòng)態(tài)鏈接庫(kù)是為了在VAPS XT環(huán)境下實(shí)時(shí)對(duì)Format界面的設(shè)計(jì)效果進(jìn)行驗(yàn)證。一旦驗(yàn)證設(shè)計(jì)滿足預(yù)期,為了能讓Format界面運(yùn)行在獨(dú)立于VAPS XT的環(huán)境下,則需要將用戶自定義對(duì)象編譯為靜態(tài)庫(kù)。編譯平臺(tái)需要由Release改為StaticOGL。

3.3 代碼自動(dòng)生成

當(dāng)完成用戶自定義對(duì)象的編譯調(diào)試,成功生成動(dòng)態(tài)、靜態(tài)鏈接庫(kù)之后,就可以利用VAPS XT自帶的CODE nGEN功能生成Format的工程代碼,然后編譯生成可執(zhí)行程序。

此時(shí)在VAPS XT中通過(guò)CODE nGEN自動(dòng)生成源代碼,在編譯的時(shí)候,會(huì)提示找到不smile.h,編譯無(wú)法通過(guò)。因?yàn)镃ODE nGEN編譯時(shí)使用的目標(biāo)平臺(tái)使用的是wogl.cfg,指的是Windows環(huán)境下,利用opengl庫(kù)進(jìn)行編譯。該平臺(tái)的編譯設(shè)置,保存在VAPS XT根目錄configwogl.cfg文件中,找到CUSTOM_INCS所在的行,添加SMILE引擎頭文件的引用即可。

$(INCLUDE_DIR_COPTION)$(VAPSXT_ROOT_PRJ_DIR)$(DIR_SEP)smile

將smile的頭文件拷貝至該路徑下,然后將smile的庫(kù)文件拷貝至:

VAPSXT_ROOT_PRJ_DIRCode Gen路徑下,此處的formatName就是通過(guò)CODE nGEN自動(dòng)生成format源程序所在的路徑。再次選擇編譯,可以正常生成formatName_wogl.exe。

3.4 通過(guò)腳本運(yùn)行VAPS XT界面程序

編譯生成的可執(zhí)行程序可以直接運(yùn)行。如果在自動(dòng)生成代碼前未設(shè)置系統(tǒng)參數(shù),則有可能在首次直接運(yùn)行時(shí)出現(xiàn)屏幕未對(duì)準(zhǔn),比例不匹配的問(wèn)題。比較穩(wěn)妥的方式就是通過(guò)腳本程運(yùn)行界面可執(zhí)行程序。新建一個(gè)txt文檔,將下面的腳本程序粘貼進(jìn)去。

start TestFormat_wogl.exe-noborder-fit

文件另存為start.bat,然后就可以通過(guò)雙擊bat文件的方式,啟動(dòng)顯示界面程序。

除了顯示配置的參數(shù),腳本程序啟動(dòng)的方式還可以對(duì)nCom等功能進(jìn)行配置,具體參見(jiàn)VAPS XT的CODE nGEN用戶手冊(cè)。

4 結(jié)語(yǔ)

本文對(duì)SMILE故障診斷引擎與VAPS XT人機(jī)界面設(shè)計(jì)工具集成的方法進(jìn)行了介紹,在總結(jié)工具基本特點(diǎn)的基礎(chǔ)上,說(shuō)明了在VAPS XT中利用用戶自定義編程對(duì)象調(diào)用SMILE引擎的過(guò)程,以及利用生成的插件實(shí)例開(kāi)展人機(jī)界面設(shè)計(jì)的過(guò)程,利用SMILE引擎官方網(wǎng)站提供的模型,對(duì)集成過(guò)程進(jìn)行了測(cè)試,對(duì)集成后的調(diào)試和運(yùn)行方法進(jìn)行了說(shuō)明,表明通過(guò)兩種工具的集成,可以在很短的時(shí)間內(nèi)完成SMILE引擎的可視化,為后續(xù)開(kāi)展基于貝葉斯故障診斷模型的用戶界面設(shè)計(jì)提供了參考。

猜你喜歡
人機(jī)界面貝葉斯引擎
藍(lán)谷: “涉藍(lán)”新引擎
商周刊(2017年22期)2017-11-09 05:08:31
貝葉斯公式及其應(yīng)用
基于貝葉斯估計(jì)的軌道占用識(shí)別方法
CBTC系統(tǒng)車載人機(jī)界面的設(shè)計(jì)與實(shí)現(xiàn)
基于PLC與人機(jī)界面的經(jīng)編機(jī)電子橫移控制系統(tǒng)研究
一種基于貝葉斯壓縮感知的說(shuō)話人識(shí)別方法
電子器件(2015年5期)2015-12-29 08:43:15
無(wú)形的引擎
河南電力(2015年5期)2015-06-08 06:01:46
基于Cocos2d引擎的PuzzleGame開(kāi)發(fā)
CTCS-3級(jí)列控車載人機(jī)界面的系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
IIRCT下負(fù)二項(xiàng)分布參數(shù)多變點(diǎn)的貝葉斯估計(jì)
三江| 泗阳县| 龙南县| 内黄县| 汤原县| 响水县| 尖扎县| 尼木县| 石棉县| 永济市| 泰宁县| 韶关市| 兴隆县| 辉南县| 寿宁县| 如皋市| 河北省| 景谷| 长白| 北流市| 枣庄市| 富阳市| 辛集市| 保山市| 石城县| 东乡族自治县| 汾阳市| 台南县| 咸宁市| 平凉市| 蕲春县| 思茅市| 鄂托克旗| 桂东县| 勃利县| 英山县| 会理县| 宜兰县| 商南县| 田林县| 连平县|