領兄



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