領兄
摘 要: 提出的Web環(huán)境下的虛擬仿真平臺基于B/S結構,服務器端采用MySQL數(shù)據(jù)庫,使用Java語言編寫接口程序,從數(shù)據(jù)庫中讀取模型數(shù)據(jù)并生成Simulink仿真程序,運算核心Matlab運行M文件,通過調用Java接口程序對該模型文件進行仿真并返回仿真結果。最后,結合兩個仿真實例來測試基于網(wǎng)絡的虛擬仿真平臺,驗證了該平臺的有效性。
關鍵詞: 虛擬仿真平臺; Matlab; Simulink; 虛擬實驗室
中圖分類號: TN911?34; TM417 文獻標識碼: A 文章編號: 1004?373X(2017)01?0032?04
Abstract: The virtual simulation platform proposed in this paper and working in Web environment is based on B/S structure. The MySQL is adopted by the server. The Java language is used to profile the interface program, read the model data in database, and generate the Simulink simulation program. Matlab as the operation core is used to run the M?file to simulate the model file by calling the Java interface program and feed the simulation results back. The virtual simulation platform based on network was tested by means of two simulation examples to verify the validity of the platform.
Keywords: virtual simulation platform; Matlab; Simulink; virtual laboratory
近年來高校規(guī)模不斷增大,學生人數(shù)的不斷增加造成實驗室設備資源緊張、不能滿足學生要求的現(xiàn)象[1]。同時實驗設備老化嚴重、實驗設備技術上的落后都會影響學生的實驗課質量。虛擬實驗室的提出打破了傳統(tǒng)實驗室的約束,突破了傳統(tǒng)實驗室地域與時間的限制,進一步促進學校教學質量的提升,推進實驗從驗證性到探索性的轉變,實現(xiàn)了教學實驗跨越式的發(fā)展[2]。
1 基于網(wǎng)絡的虛擬仿真平臺的總體設計
1.1 系統(tǒng)的設計思想
隨著網(wǎng)絡應用的日益普及與物聯(lián)網(wǎng)技術的發(fā)展,基于Web仿真已經(jīng)成為仿真領域的研究熱點,課題提供了圖形化的虛擬仿真實驗平臺解決辦法,以FLASH+Servlet+MySQL作為基礎平臺架構[3]。
基于網(wǎng)絡的虛擬仿真平臺的實現(xiàn)方式設計如下:網(wǎng)絡用戶通過瀏覽器就能夠打開該交互界面進行Simulink建模和仿真,網(wǎng)絡平臺以網(wǎng)頁的形式提供FLASH技術搭建的交互式圖形界面;當用戶在圖形界面中完成建模后,將模型數(shù)據(jù)通過訪問Servlet的方式傳送到數(shù)據(jù)庫中,然后Matlab通過Java接口讀取數(shù)據(jù)庫中的數(shù)據(jù)信息并進行仿真,最后將仿真結果返回到數(shù)據(jù)庫中并由客戶端Web瀏覽器讀取數(shù)據(jù)庫中的結果并顯示。
1.2 平臺架構的確定
基于B/S模式的優(yōu)點,本文開發(fā)的基于網(wǎng)絡的虛擬仿真平臺采用B/S結構,B/S結構是以Web技術為基礎,它主要是基于HTTP協(xié)議[4]?;贐/S模式的網(wǎng)絡虛擬仿真平臺如圖1所示。Web服務器的主要作用是提供Web接入服務、開放式交互實驗環(huán)境以及動態(tài)網(wǎng)頁的生成;數(shù)據(jù)分析服務負責數(shù)據(jù)的分析與處理,并將數(shù)據(jù)處理的結果返回數(shù)據(jù)庫服務器進行保存,也可以將處理結果通過Web返回到客戶端;數(shù)據(jù)庫的主要作用是配合動態(tài)網(wǎng)頁的生產(chǎn)以及實驗數(shù)據(jù)的存儲和管理。
1.3 系統(tǒng)的功能模塊設計
從功能結構上說,基于網(wǎng)絡的虛擬仿真平臺由圖形化建模仿真界面模塊、Simulink模型仿真模塊、Simulink模型生成模塊等三大功能模塊組成,具體如圖2所示。
2 虛擬實驗平臺客戶端的設計
2.1 客戶端界面的實現(xiàn)
2.1.1 模塊原件庫的搭建
Simulink的仿真組建是以樹狀系統(tǒng)呈現(xiàn)的,清晰而且方便找到需要的模塊?;谖锫?lián)網(wǎng)的虛擬實驗平臺的圖形化交互界面提供各種對應的模塊,也是以多級樹狀結構展現(xiàn)在用戶面前,確保用戶可以簡單、快速地找到自己需要的模塊[5]。模塊選擇區(qū)域在左上角,每一個子菜單為一個模塊庫。
AS3.0中有許多組件,組件有很多優(yōu)點。優(yōu)點一是使應用程序的設計過程和編碼過程分開,這無疑大大地增加了效率。利用FLASH可以很容易地讀取XML文件的性質,可以將樹形結構的內(nèi)容事先寫進一個XML文檔中,這樣就可以動態(tài)生成一個樹形結構[6]。當然在AS3.0中,也有XML的內(nèi)置類,所以也可以將XML文檔的內(nèi)容直接寫入腳本代碼中。
2.1.2 模型繪制
客戶端左上角是模塊的選擇區(qū),點擊想要選擇的模塊,右邊的繪圖區(qū)會出現(xiàn)一個模塊,它在固定的位置出現(xiàn),可以手動拖動。這些模塊是圖形交互界面的重點內(nèi)容。這些信息被儲存在Tree的XML文件里,通過讀取XML文件中的模塊的幾何參數(shù),就可以在繪圖區(qū)對模塊進行繪制。被拖入工作繪圖區(qū)的模塊需要被記錄下來,它被記錄在block.as腳本文件中。
2.1.3 連線的搭建
2.1.4 主時間軸的功能控制
在圖形化交互界面中設置了三個基本的功能按鈕,分別是“新建”“連線”“提交”。新建按鈕如果被按下,首先,圖像交互區(qū)當時的任何模塊或者連線都會被清空,相應地,在BlockArray和LineArray中的數(shù)據(jù)也會被清空,等待存放新工程中的元素??梢栽诎粹o旁的輸入文本框中為新建的工程取一個名字,系統(tǒng)也會提供一個沒人叫的名稱,接下來就該畫圖了。
“連線”按鈕是用來切換當前狀態(tài)為“連線狀態(tài)”的。當點擊“連線”按鈕時,就會置連線狀態(tài)標志drawflag為1。此時再分別點擊源端口和目標端口就能生成一條從源端口到目標端口的連線,生成這條連線的函數(shù)為drawLine。
當點擊模塊的端口時,需要一個算法讓系統(tǒng)確定是哪一個端口被選定。當選定連線按鈕,點擊一個端口時,開始遍歷每一個模塊和每一個模塊的端口,計算端口到點擊點的距離,選擇到點擊點最短的端口。當源端口和目標端口都確定下來時,即可畫一條從源端口到目標端口的折線[7]??梢詫B線進行修改,以達到美觀的效果,用鼠標點擊連線,拖動就可以移動。
當Simulink框圖建立好之后,這時需要點擊“提交”按鈕,即可將所有的模塊與模塊間連線的信息都存儲到數(shù)據(jù)庫中。
3 虛擬實驗平臺服務器端的設計
3.1 客戶端與服務器交互的實現(xiàn)
3.1.1 FLASH連接Servlet
在將FLASH的內(nèi)容存儲到數(shù)據(jù)庫的階段,Servlet根據(jù)FLASH端發(fā)送的請求生成響應內(nèi)容并將其傳給數(shù)據(jù)庫。在讀數(shù)據(jù)庫的階段,主要使用Servlet讀取數(shù)據(jù)庫的數(shù)據(jù),整個交互流程如圖3所示。
3.1.2 Servlet訪問MySQL
選擇的數(shù)據(jù)庫是MySQL,所以,要先安裝MySQL和MySQL?front。MySQL?front用來建立數(shù)據(jù)庫[8]。建立一個叫webSimulink的數(shù)據(jù)庫,建立四張表status,Simulinkmodel,Simulinkconnection,result,每張表的意義如下所示。
(1) status表
新建工程時會給出一個默認的工程名,如果需要自己命名,可以自定義工程名,也可以輸入文本框修改它[9]。表中包含工程名,除了工程名,還有狀態(tài)變量status。status=1表示工程還未編譯;status=2表示工程成功編譯。status表的結構如表1所示。
(2) Simulinkmodel表
Simulinkmodel表用來存儲被拖入主工作區(qū)的Block,每一個Block都有對應的表,表中存儲的信息是名稱、路徑、坐標值、輸入輸出端口數(shù)目、參數(shù)個數(shù)、參數(shù)值、所屬的工程名等,表的具體結構見表2。
(3) Simulinkconnection表
Simulinkconnection表用來存儲連線信息。每個連線都有一個這樣的表格,它存儲的是連線的源Block名、目標Block名、源端口號、目標端口號以及所屬的工程名等,具體信息見表3。
(4) result表
result表用于存儲Matlab仿真后返回的仿真結果,仿真結果主要包括所屬工程名、生成的圖形文件以及生成的數(shù)據(jù)文件等,result表的結構如表4所示。
3.2 Matlab?Simulink仿真的實現(xiàn)
3.2.1 Matlab與MySQL的通信
數(shù)據(jù)從客戶端傳送到服務器端,數(shù)據(jù)庫接收到數(shù)據(jù)并存儲后,需要做的就是服務器端對數(shù)據(jù)進行仿真。用Java編寫服務器程序,程序任務將存儲在數(shù)據(jù)庫中的數(shù)據(jù)提取出來,轉化成可以進行仿真的程序,仿真結束后,將仿真結果存儲回數(shù)據(jù)庫,最終返回到客戶端。服務器程序首先要查看工程狀態(tài),然后再與數(shù)據(jù)庫建立連接。要保證客戶端出現(xiàn)異常時,仿真在服務器端不受影響。
新建一個Java類:MatservMain.Java的目的是控制Matlab對數(shù)據(jù)庫進行讀取操作和與仿真工作相關的Matlab命令。這樣,在運行Matlab時,可以用調用這個類的方法進行讀寫數(shù)據(jù)庫和仿真。仿真程序能夠調用Simulink功能,并復現(xiàn)出客戶端提交時模型搭建的樣子,并對框圖進行仿真。
3.2.2 運用Matlab?M文件的仿真
服務器端傳輸并存儲在數(shù)據(jù)庫的數(shù)據(jù)用Matlab中的M文件實現(xiàn)仿真。M文件的仿真方式就是用命令行控制Matlab的動作。
仿真調用的是Simulink。傳統(tǒng)的Simulink建模,雙擊模塊,可以在參數(shù)設置框中對模塊進行參數(shù)設置。之后點擊仿真按鈕進行仿真。
輸入過后再單擊命令行窗口菜單中的File?>Open,則可以看到通過Simulink命令新建的sample模型,文件名為sample.mdl。點擊“打開”,則可以看到對應的Simulink系統(tǒng)框圖。
命令行控制Simulink仿真可行,就可以嘗試用服務器程序生成命令行程序。在MatservMain.Java中,主要靠GetBlock函數(shù)和GetConnection函數(shù)提取數(shù)據(jù)庫中的數(shù)據(jù),實現(xiàn)在Matlab中重構系統(tǒng)框圖。
GetBlock函數(shù)和GetConnection函數(shù)的主要任務是從數(shù)據(jù)庫提取之前存儲表中的block和line的數(shù)據(jù),并生成相應的添加模塊和連線的Simulink命令。
最后編寫mdlserver.m。mdlserver.m文件負責調用Java類和數(shù)據(jù)庫驅動,提取數(shù)據(jù)庫數(shù)據(jù)并仿真,最后返回仿真結果并存儲回數(shù)據(jù)庫,再由Servlet反饋給客戶端用戶。
4 多客戶端實例仿真
4.1 前臺
4.1.1 FLASH圖形界面效果圖
客戶端的界面有三部分,左上角是選擇模塊的元件庫,右邊是主工作區(qū),左下角是信息提示和幫助。
在左上方的樹狀原件庫中選取需要的Block模塊,模塊會出現(xiàn)在主工作區(qū),可以對其隨意拖動,點擊菜單欄的line按鈕,切換到連線狀態(tài),點擊源端口和目標端口,生成一條從源端口到目標端口的連線。模型搭建完成后,點擊subit按鈕,系統(tǒng)將數(shù)據(jù)提交給服務器端。運算完成后,在客戶端顯示。
4.1.2 客戶端實例仿真并驗證正確性
設彈簧彈性系數(shù)為阻尼系數(shù)小車質量系統(tǒng)無輸入并使初始位置距平衡點1.0 m。模擬小車系統(tǒng)運動。
(1) 從左側的Simulink中選取所需block:兩個增益模塊,一個求和模塊,兩個積分模塊。
(2) 點擊submit按鈕,工程被提交到后臺交由Matlab運算。編譯完成的界面如圖4所示。
(3) 點擊“OK”,再雙擊scope,則彈出顯示結果的窗口,如圖5所示。
4.2 后臺
Matlab的工作流程如下:
(1) 先打開Matlab,之后打開mdlserver.m。
(2) 運行該文件,屏幕顯示“Waiting for accept a build task????”。Matlab一直在訪問數(shù)據(jù)庫,直至找到一個新提交的狀態(tài)為“1”的工程。
(3) 當有新的工程被提交到數(shù)據(jù)庫后,Matlab開始仿真工程,當Simulink仿真結束后,把結果提交到數(shù)據(jù)庫。
4.3 數(shù)據(jù)庫
完成實例后,查看數(shù)據(jù)庫中的Simulinkmodel表和Simulinkconnection表。發(fā)現(xiàn)兩個實例的Block和line的數(shù)據(jù),如圖6,圖7所示。
5 結 論
本文研究虛擬實驗平臺的搭建,實現(xiàn)了基于網(wǎng)絡的虛擬仿真平臺的搭建。首先利用FLASH技術搭建基于網(wǎng)絡的虛擬仿真平臺圖形交互界面,為用戶提供類似于Simulink的建模環(huán)境,用戶通過鼠標拖放與點擊操作就可以輕松地在瀏覽器上搭建控制系統(tǒng)框圖,利用Servlet訪問數(shù)據(jù)庫的原理,實現(xiàn)了FLASH對數(shù)據(jù)庫的間接訪問,將用戶模型信息存儲在MySQL數(shù)據(jù)庫中,以等待Matlab執(zhí)行仿真。其次,在對Simulink模型生成命令詳細分析的基礎上,利用Java編寫服務器程序實現(xiàn)用戶仿真程序的生成,通過Matlab運行M文件實現(xiàn)模型文件的仿真。最后,設計簡單的實例驗證了仿真平臺的有效性。
參考文獻
[1] 鄭笑建,楊馬英,劉萍先.控制系統(tǒng)網(wǎng)絡虛擬實驗室[J].計算機工程與應用,2004(10):146?149.
[2] 許又泉,譚敏生,鄧軼華.網(wǎng)絡虛擬實驗室及其實現(xiàn)方法研究[J].邵陽學院學報(自然科學版),2004,1(3):83?85.
[3] 喻紅,何嶺松,王峻峰.WWW模式的工程測試遠程教學實驗基地建設[J].實驗技術與管理,1999,16(1):1?3.
[4] 魏紅.動態(tài)網(wǎng)頁技術JSP與ASP、PHP的比較淺析[J].電腦知識與技術,2006(2):88?90.
[5] 李亞祿,郝應光,唐禎安.基于Internet的遠程虛擬實驗室系統(tǒng)的開發(fā)[J].微型電腦應用,2001,17(8):36?38.
[6] 許南山,高峰.基于J2EE架構的企業(yè)在線交易系統(tǒng)設計與實現(xiàn)[J].計算機工程與設計,2004(1):145?148.
[7] ILLTYEFALVI?VITEZ Z, NEMETH P, PINKOLA J, et al. Virtual laboratory support for microelectronics packaging education [C]// Proceedings of 1999 49th Electronic Components and Technology Conference. Budapest: IEEE, 1999: 1068?1073.
[8] 周久艷,賀鵬.基于WWW遠程輔導教學系統(tǒng)的設計與實現(xiàn)[J].航空計算技術,2002,32(3):93?96.
[9] 閔芳,張志先,楊功廷.基于OpenGL的三維建筑可視化研究與仿真[J].現(xiàn)代電子技術,2016,39(2):78?81.