• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

      1 使用工具介紹

      1.1 VAPS XT工具

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

      1.2 GeNie工具

      GeNIe Modeler是由BayesFusion,LLC公司開發(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ǐng)域進(jìn)行了全面測試,在學(xué)術(shù)界和工業(yè)界得到了廣泛認(rèn)可,并在全球擁有數(shù)千名用戶。本文演示使用的貝葉斯網(wǎng)絡(luò)模型采用的是BayesFusion,LLC公司官方網(wǎng)站提供的發(fā)動(dòng)機(jī)燃油系統(tǒng)故障診斷模型(Engine Fuel System)[3]。模型在GeNIe打開的界面如圖2所示。

      1.3 SMILE引擎

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

      2 將VAPS XT與SMILE引擎集成

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

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

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

      2.1 用戶自定義編程對象

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

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

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

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

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

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

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

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

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

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

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

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

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

      圖3:新建用戶自定義編程對象

      圖4:定義輸入輸出接口

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

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

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

      2.4 在VAPS XT的Format中使用新建對象

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

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

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

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

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

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

      接下來就可以在Format中開展設(shè)計(jì),通過圖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中,可以通過運(yùn)行指令,實(shí)時(shí)對Format中的界面進(jìn)行功能驗(yàn)證。對于帶有SMILE用戶自定義對象的Format來說也是一樣的,用戶可以對Format界面的輸出結(jié)果和顯示邏輯進(jìn)行驗(yàn)證,更改分以下幾種情況:

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

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

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

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

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

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

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

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

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

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

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

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

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

      start TestFormat_wogl.exe-noborder-fit

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

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

      4 結(jié)語

      本文對SMILE故障診斷引擎與VAPS XT人機(jī)界面設(shè)計(jì)工具集成的方法進(jìn)行了介紹,在總結(jié)工具基本特點(diǎn)的基礎(chǔ)上,說明了在VAPS XT中利用用戶自定義編程對象調(diào)用SMILE引擎的過程,以及利用生成的插件實(shí)例開展人機(jī)界面設(shè)計(jì)的過程,利用SMILE引擎官方網(wǎng)站提供的模型,對集成過程進(jìn)行了測試,對集成后的調(diào)試和運(yùn)行方法進(jìn)行了說明,表明通過兩種工具的集成,可以在很短的時(shí)間內(nèi)完成SMILE引擎的可視化,為后續(xù)開展基于貝葉斯故障診斷模型的用戶界面設(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)研究
      一種基于貝葉斯壓縮感知的說話人識(shí)別方法
      電子器件(2015年5期)2015-12-29 08:43:15
      無形的引擎
      河南電力(2015年5期)2015-06-08 06:01:46
      基于Cocos2d引擎的PuzzleGame開發(fā)
      CTCS-3級列控車載人機(jī)界面的系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
      IIRCT下負(fù)二項(xiàng)分布參數(shù)多變點(diǎn)的貝葉斯估計(jì)
      嘉定区| 濮阳市| 浦东新区| 邹城市| 安泽县| 普兰店市| 洪泽县| 修水县| 高密市| 闽侯县| 西峡县| 邮箱| 基隆市| 萨迦县| 田林县| 博乐市| 海原县| 永登县| 黄龙县| 西安市| 泸定县| 新化县| 年辖:市辖区| 吉木乃县| 贡觉县| 利川市| 义马市| 微山县| 盐津县| 嘉禾县| 胶南市| 嫩江县| 三江| 上思县| 泽普县| 河津市| 冷水江市| 宜春市| 柞水县| 阿克陶县| 义马市|