朱靜靜,黃海于
(西南交通大學(xué) 信息科學(xué)與技術(shù)學(xué)院,四川 成都 611756)
隨著計(jì)算機(jī)技術(shù)的發(fā)展,計(jì)算機(jī)仿真技術(shù)逐漸應(yīng)用于國(guó)防、工業(yè)、交通、物聯(lián)網(wǎng)、教育等各個(gè)領(lǐng)域[1]。分布式仿真平臺(tái)也越來(lái)越多地應(yīng)用于各個(gè)應(yīng)用和科研領(lǐng)域。高速列車數(shù)字化仿真平臺(tái)就是一個(gè)基于分布式計(jì)算架構(gòu)的分布式系統(tǒng)[2]。現(xiàn)有的高速列車數(shù)字化仿真平臺(tái)是由圖形化建模子系統(tǒng)、計(jì)算工況、調(diào)度器軟件、耦合器軟件、執(zhí)行機(jī)、監(jiān)控子系統(tǒng)等構(gòu)成的一個(gè)分布式仿真平臺(tái)[3]。計(jì)算工況是整個(gè)仿真系統(tǒng)的關(guān)鍵部分,目前存在的工況管理方式不夠靈活,項(xiàng)目和工況的管理上易操作性不強(qiáng),可視化程度不高,在選取模板及其工況仿真參數(shù)配置上具有局限性,只能對(duì)指定的模塊組成的模型進(jìn)行工況仿真,功能比較單一,大大降低了系統(tǒng)建模功能的可用性。如果對(duì)計(jì)算工況的管理方式進(jìn)行應(yīng)用功能擴(kuò)展,不僅能應(yīng)用于高速列車的仿真領(lǐng)域,在多種仿真領(lǐng)域也可以使用該仿真平臺(tái),對(duì)整個(gè)仿真平臺(tái)實(shí)現(xiàn)更加有效的通用性。
文中以高速列車數(shù)字化仿真平臺(tái)為背景,針對(duì)以上問(wèn)題,主要討論了用戶端計(jì)算工況的管理方式,計(jì)算工況管理是基于用戶端仿真軟件的一個(gè)功能模塊。在用戶登錄仿真軟件后,項(xiàng)目和工況的創(chuàng)建和信息管理及其二者關(guān)系采用項(xiàng)目管理器窗口中樹形結(jié)構(gòu)層次化展示方式提供可視化程度,根據(jù)耦合連接圖進(jìn)行工況仿真參數(shù)配置,可以提高軟件的可視化和通用性,進(jìn)行模塊的功能擴(kuò)展。生成工況配置文件,進(jìn)行工況保存和耦合仿真。同時(shí)具有錯(cuò)誤警告提示機(jī)制,具有良好的用戶交互界面。用戶可以在該平臺(tái)進(jìn)行多種應(yīng)用的仿真計(jì)算。
分布式仿真平臺(tái)用戶端仿真軟件是以高速列車數(shù)字化仿真平臺(tái)為研究背景,設(shè)計(jì)并實(shí)現(xiàn)的一個(gè)基于Oracle數(shù)據(jù)庫(kù)的通用仿真軟件,是整個(gè)仿真系統(tǒng)中重要的組成部分。圖1為仿真平臺(tái)框架圖。
用戶運(yùn)用仿真軟件可以為整個(gè)仿真系統(tǒng)提供原始模板,運(yùn)用模板創(chuàng)建計(jì)算工況,與調(diào)度器、耦合器、執(zhí)行機(jī)之間進(jìn)行系統(tǒng)的仿真,并將仿真結(jié)果通過(guò)監(jiān)控示波器顯示出來(lái),更好地體現(xiàn)實(shí)時(shí)動(dòng)態(tài)的繪制曲線的特性[4]。
圖1 仿真平臺(tái)框架
仿真軟件主要分為圖形化建模、計(jì)算工況、多用戶管理三大功能模塊,如圖2所示。
圖2 仿真軟件功能結(jié)構(gòu)
仿真軟件是使用仿真平臺(tái)的用戶接口軟件,界面的美觀、可視化,界面友好和操作方便為用戶提供了良好的用戶體驗(yàn)。仿真軟件由項(xiàng)目管理器窗口、屬性窗口、仿真模型窗口、模型耦合參數(shù)設(shè)置窗口組成,所有的操作都是通過(guò)菜單項(xiàng)和工具條完成的。采用多文檔(MDI)的MFC框架[5],可以進(jìn)行多個(gè)模型的創(chuàng)建或者工況的仿真,采用派生CDockablePane類實(shí)現(xiàn)選項(xiàng)卡式窗口,從而實(shí)現(xiàn)窗口的動(dòng)態(tài)切分功能,可以更加方便地實(shí)現(xiàn)窗口的浮動(dòng)、停靠、隱藏[6]。
系統(tǒng)建模主要是為整個(gè)仿真平臺(tái)提供仿真模型[7]。采用視圖窗口和對(duì)話框結(jié)合的方式,模塊化的建模方式[8],主要是模型的創(chuàng)建和管理,模塊間耦合關(guān)系的設(shè)置以及模塊的屬性設(shè)置。用戶利用模塊庫(kù)中的模塊創(chuàng)建模型,建模完成后生成模型文件:模塊配置文件、模型配置文件、模型位圖文件。
計(jì)算工況主要包括項(xiàng)目和工況的層次化管理,仿真結(jié)果的圖形化顯示。主要是根據(jù)仿真模型創(chuàng)建工況,加載耦合連接圖,設(shè)置工況仿真參數(shù),生成工況配置文件,通過(guò)網(wǎng)絡(luò)提交仿真工況信息注冊(cè)到相應(yīng)的耦合器,同時(shí)將工況文件上傳到數(shù)據(jù)庫(kù),調(diào)度器、耦合器、執(zhí)行機(jī)分別解析相應(yīng)的配置文件進(jìn)行耦合計(jì)算,將仿真結(jié)果存儲(chǔ)到數(shù)據(jù)庫(kù),最后監(jiān)控仿真結(jié)果并顯示。文中重點(diǎn)討論項(xiàng)目和工況的層次化管理部分。
用戶管理是為了便于管理多種用戶的訪問(wèn),不同的用戶具有不同的操作權(quán)限,登錄系統(tǒng)后,有相應(yīng)權(quán)限的操作模塊[9-10]。多用戶包括系統(tǒng)管理員、項(xiàng)目負(fù)責(zé)人、工況創(chuàng)建人、模型創(chuàng)建人。
項(xiàng)目和工況的層次化展示是在項(xiàng)目管理器視圖窗口中將項(xiàng)目和工況信息以樹形列表的形式展示出來(lái),從項(xiàng)目表cs_projecttable和工況表cs_conditiontable中讀出用戶權(quán)限內(nèi)的項(xiàng)目和工況信息,保存在數(shù)組CArray
項(xiàng)目管理器窗口從上到下依次展示項(xiàng)目號(hào)和項(xiàng)目名,工況創(chuàng)建人ID和創(chuàng)建人名,工況號(hào)和工況名,以及工況下模板包含的模塊信息,這種展示方式便于用戶操作。
雙擊列表中的項(xiàng)目列,即可對(duì)選中的項(xiàng)目進(jìn)行項(xiàng)目的查詢和修改、項(xiàng)目下新建工況等。雙擊工況列,即可對(duì)選中的工況進(jìn)行工況查詢和修改、耦合計(jì)算、加載仿真模型等,加載仿真模板到仿真模型窗口,并與對(duì)話框結(jié)合,對(duì)工況設(shè)置仿真參數(shù)等,將創(chuàng)建成功的工況信息上傳到數(shù)據(jù)庫(kù)并提交工況進(jìn)行仿真。
由于每個(gè)項(xiàng)目下有多個(gè)不同工況,不同的用戶創(chuàng)建的工況也有區(qū)別,因此采用創(chuàng)建項(xiàng)目,在項(xiàng)目下再新建工況的方式進(jìn)行工況的管理,這種方式便于工況的查詢、仿真等。
項(xiàng)目的創(chuàng)建主要指項(xiàng)目負(fù)責(zé)人新建一個(gè)項(xiàng)目,配置項(xiàng)目的參數(shù),包括項(xiàng)目的編號(hào)、項(xiàng)目名稱、項(xiàng)目創(chuàng)建時(shí)間、項(xiàng)目存儲(chǔ)路徑、項(xiàng)目描述、項(xiàng)目創(chuàng)建人等信息,項(xiàng)目新建成功后在項(xiàng)目管理器窗口中顯示。
用戶登錄仿真軟件后,在菜單欄中有新建項(xiàng)目子菜單,點(diǎn)擊菜單彈出新建項(xiàng)目對(duì)話框,設(shè)置項(xiàng)目參數(shù),保存項(xiàng)目信息到項(xiàng)目表cs_projecttable,如表1所示。如要新建工況,下一頁(yè)即可顯示新建工況窗口,進(jìn)行工況參數(shù)的設(shè)置。
表1 項(xiàng)目表(cs_projecttable)
項(xiàng)目管理主要包括新建工況,查詢項(xiàng)目,修改項(xiàng)目。新建工況是指用戶在指定項(xiàng)目下,創(chuàng)建新的工況進(jìn)行耦合仿真;查詢項(xiàng)目是通過(guò)在屬性窗口中顯示項(xiàng)目的參數(shù)信息,并能夠更改指定的項(xiàng)目參數(shù),項(xiàng)目編號(hào)是唯一標(biāo)識(shí)的,不能更改。
新建工況是用戶對(duì)權(quán)限內(nèi)的項(xiàng)目下創(chuàng)建仿真工況,創(chuàng)建工況有兩種方式:
(1)在新建項(xiàng)目窗口,點(diǎn)擊新建工況按鈕,進(jìn)入下一頁(yè)創(chuàng)建工況的窗口。
(2)在項(xiàng)目管理器窗口,雙擊項(xiàng)目列表,點(diǎn)擊新建工況菜單,進(jìn)入創(chuàng)建工況的窗口。
窗口采用對(duì)話框的方式來(lái)設(shè)置工況信息,包括所在的項(xiàng)目編號(hào)、項(xiàng)目名稱、項(xiàng)目描述、工況名稱、工況號(hào)、工況創(chuàng)建時(shí)間、工況創(chuàng)建人、工況目錄、工況描述、工況模板號(hào)、設(shè)置模板信息等。其中模板信息的設(shè)置是在創(chuàng)建工況窗口中點(diǎn)擊選取模板按鈕,彈出模板窗口,模塊窗口采用ListControl控件列出可選取的模型,PictureControl控件顯示模型關(guān)系圖。用戶左鍵單擊某一模型可查看模型關(guān)系圖,判斷模型是否正確,如果保存的模板信息沒(méi)有合適的,用戶可以自己創(chuàng)建新的模型作為工況的模板,該模型也可以保存到模型表cs_modeltable中作為下次的模板使用,這樣可以更加靈活地進(jìn)行模板的選取。當(dāng)模板選取后,加載模板關(guān)系圖到模型窗口中,工況創(chuàng)建窗口中顯示工況模板號(hào)。保存工況基本信息,配置工況仿真參數(shù),最后生成工況配置文件(.ini、.txt),提交工況信息并將工況信息寫入相應(yīng)的數(shù)據(jù)表中進(jìn)行耦合仿真。
工況仿真參數(shù)的合理配置是工況能夠正確仿真的關(guān)鍵。新建工況的過(guò)程中,選取模板后,加載耦合連接圖到仿真模型窗口中,開始設(shè)置工況的仿真參數(shù)。這樣配置仿真參數(shù)的最大優(yōu)點(diǎn)就是更好地實(shí)現(xiàn)了軟件的通用性、提高了可視化程度,可以根據(jù)模板中實(shí)際的模塊個(gè)數(shù)靈活設(shè)置參數(shù)。
具體的操作如下:
(1)雙擊模塊彈出工況仿真參數(shù)對(duì)話框,顯示拾取的模塊的任務(wù)號(hào)和任務(wù)名,配置模塊仿真文件、仿真基本參數(shù),比如積分步長(zhǎng)、輸出步長(zhǎng)、操作系統(tǒng)、IP地址等的設(shè)置。每個(gè)模塊的仿真基本參數(shù)從數(shù)據(jù)表cs_condtasksimparatable中讀出,以comb-box控件顯示出來(lái),用戶能直接選取默認(rèn)的值添加到參數(shù)列表CStringArray m_ModuleParaList中,并能修改參數(shù)的值和描述,顯示已經(jīng)配置好的參數(shù),點(diǎn)擊已有參數(shù)列表即可對(duì)參數(shù)進(jìn)行重新修改,雙擊即可刪除參數(shù)。這樣的操作過(guò)程,方便用戶對(duì)每個(gè)模塊的獨(dú)立設(shè)置,更加清晰明了。
(2)單個(gè)模塊的參數(shù)設(shè)置完畢,點(diǎn)擊工況全局仿真參數(shù)設(shè)置子菜單,設(shè)置工況的全局仿真參數(shù),包括總積分步長(zhǎng),列車數(shù)量,總積分時(shí)間。在全局仿真參數(shù)窗口中,顯示參數(shù)的默認(rèn)值,也可以對(duì)各個(gè)參數(shù)的值和描述進(jìn)行更改。
(3)保存模塊仿真參數(shù)和全局仿真參數(shù),生成工況目錄文件夾,寫入到工況配置文件(.ini、.txt)中,保存在本地,便于用戶查看。
工況保存是指工況創(chuàng)建完成后,把工況基本信息以及仿真參數(shù)信息和配置文件保存到數(shù)據(jù)庫(kù)中。采用多線程的方式將文件上傳到數(shù)據(jù)庫(kù)中,提高系統(tǒng)性能,不會(huì)出現(xiàn)界面“死機(jī)”現(xiàn)象[11]。新建的工況保存在本地,每個(gè)工況對(duì)應(yīng)一個(gè)目錄文件夾,方便多工況的管理。工況目錄下包括模塊的子文件夾即模塊的模型文件信息,工況的配置文件(.ini、.txt)。工況保存的具體實(shí)現(xiàn)過(guò)程如下:
(1)根據(jù)項(xiàng)目號(hào)、工況號(hào)、工況創(chuàng)建人id判斷是否已經(jīng)保存過(guò)該工況的信息,如果保存過(guò),提示是否重復(fù)保存,否則直接進(jìn)行工況信息保存。
(2)根據(jù)路徑查找到指定工況的目錄文件夾,讀取工況配置文件(后綴為.ini),將工況的基本信息寫入到工況表cs_conditiontable中,以及相應(yīng)的仿真信息分別寫入任務(wù)工況表、任務(wù)輸入?yún)?shù)表、任務(wù)輸出參數(shù)表、模塊輸入輸出表、模塊輸入文件表等數(shù)據(jù)表中。工況表如表2所示。
耦合仿真是先判斷工況是否已經(jīng)保存到數(shù)據(jù)庫(kù)中,如果沒(méi)有保存,提示需要先提交相應(yīng)工況。如果已保存,將工況的項(xiàng)目號(hào)、工況號(hào)、工況創(chuàng)建人ID通過(guò)網(wǎng)絡(luò)提交給調(diào)度器,將各個(gè)模塊調(diào)度到各個(gè)計(jì)算資源上進(jìn)行仿真。仿真模型窗口中模型的線條顏色的變化說(shuō)明工況的仿真狀態(tài)。
表2 工況表
工況的管理是對(duì)已建好的工況進(jìn)行工況查詢,工況修改和下載耦合連接圖,工況授權(quán)。
在工況列表下,雙擊某一工況,在屬性窗口中顯示工況的基本信息,可以在該窗口中對(duì)工況參數(shù)進(jìn)行查詢和修改,可以修改模板,最終更新工況的信息。
下載耦合連接圖有4個(gè)用途:可以直接查詢工況的模板信息;用于配置工況的仿真參數(shù);在工況仿真過(guò)程中,通過(guò)模型線條的顏色變化顯示工況的仿真狀態(tài);用于對(duì)仿真工況的數(shù)據(jù)結(jié)果進(jìn)行監(jiān)控,仿真結(jié)果以圖形化的方式動(dòng)態(tài)展示在窗口中[12-13],更加直觀、方便地對(duì)數(shù)據(jù)進(jìn)行分析和管理[14]。
工況授權(quán)是指用戶可以將自己創(chuàng)建的工況授權(quán)給其他用戶使用,自己創(chuàng)建的工況和其他用戶授權(quán)給自己的工況都能在項(xiàng)目管理器窗口中顯示出來(lái)并對(duì)其進(jìn)行操作,提高了工況使用的安全性。
為了驗(yàn)證該工況管理方式的有效性,對(duì)軟件進(jìn)行了測(cè)試仿真。根據(jù)仿真模型創(chuàng)建工況并進(jìn)行提交仿真,主要討論工況的參數(shù)配置和查詢方式。通過(guò)采用MFC程序框架模式進(jìn)行界面設(shè)計(jì),實(shí)現(xiàn)了一個(gè)界面友好,便于操作的軟件,整個(gè)軟件的主界面如圖3所示。左側(cè)的項(xiàng)目管理器窗口對(duì)項(xiàng)目和工況進(jìn)行層次化展示,仿真模型窗口可以查看工況的模板信息,屬性窗口可以顯示仿真工況的信息及其模板信息。在高速列車仿真領(lǐng)域和分布式人臉識(shí)別領(lǐng)域運(yùn)用該工況創(chuàng)建方式在平臺(tái)上進(jìn)行仿真測(cè)試,都可以實(shí)現(xiàn)系統(tǒng)的仿真,這種工況管理方式很好地體現(xiàn)了可視化和通用性。
圖3 仿真軟件主界面
以高速列車數(shù)字化仿真平臺(tái)為研究背景,從用戶端仿真軟件中對(duì)計(jì)算工況的管理方式進(jìn)行討論,對(duì)系統(tǒng)建模和用戶權(quán)限管理不作詳細(xì)討論,討論項(xiàng)目和工況的創(chuàng)建、模板的選取、參數(shù)配置方式以及層次化展示,工況保存和耦合仿真,實(shí)現(xiàn)了一種更加直觀、便捷的工況仿真方式,能應(yīng)用于多種領(lǐng)域進(jìn)行仿真計(jì)算,對(duì)平臺(tái)的應(yīng)用進(jìn)行了擴(kuò)展,增強(qiáng)了軟件使用的可視化和通用性。
[1] 崔懷林,蕭化昆,楊云川,等.通用一體化仿真平臺(tái)軟件的設(shè)計(jì)與實(shí)現(xiàn)[J].系統(tǒng)仿真學(xué)報(bào),2004,16(3):436-440.
[2] 張 宇.基于分布式的耦合仿真平臺(tái)的研究與實(shí)現(xiàn)[D].成都:西南交通大學(xué),2012.
[3] 杜志強(qiáng).高速列車數(shù)字化協(xié)同計(jì)算及仿真平臺(tái)的研究與改進(jìn)[D].成都:西南交通大學(xué),2015.
[4] 李 濤,陶春榮.實(shí)時(shí)連續(xù)動(dòng)態(tài)曲線在VC中的實(shí)現(xiàn)[J].雷達(dá)與對(duì)抗,2006(2):66-70.
[5] 孫 鑫.VC++深入詳解[M].北京:電子工業(yè)出版社,2012.
[6] 肖晨帆,肖 揚(yáng). 在VS2012下創(chuàng)建類似Visual Studio界面的方法[J].電腦編程技巧與維護(hù),2014(19):34-40.
[7] 萬(wàn)春陽(yáng).仿真平臺(tái)圖形化建模及數(shù)據(jù)顯示系統(tǒng)的研究與實(shí)現(xiàn)[D].成都:西南交通大學(xué),2013.
[8] ZHENG Y C,FAN Y S,TAN W.Interactive-event-based workflow simulation in service oriented computing[C]//5th international conference on grid and cooperative computing.[s.l.]:[s.n.],2006.
[9] 史 杰.基于RBAC的雙層權(quán)限管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].西安:西安電子科技大學(xué),2011.
[10] 張志強(qiáng),葉安勝,古沐松.基于Web軟件的權(quán)限動(dòng)態(tài)管理設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2010,33(12):47-50.
[11] HORTON I.Windows programming with the Microsoft foundation classes (MFC)[M].[s.l.]:John Wiley&Sons,Inc.,2014:635-658.
[12] FLAMNINI F,GAGLINE A,OTTELO F,et al.Towards wireless sensor networks for railway infrastructure monitoring[C]//Electrical systems for aircaft,railway and ship prospulsion.[s.l.]:[s.n.],2010.
[13] 萬(wàn)春陽(yáng),黃海于.分布式仿真系統(tǒng)的數(shù)據(jù)監(jiān)控軟件的實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2013,23(9):14-17.
[14] LIANG S H L,GROITORU A,TAO C V.A distributed geospatial infrastructure for sensor web[J].Computer & Geosciences,2005,31(2):221-231.