基于物联网的图形化虚拟仿真实验平台设计

领兄



摘 要: 提出的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.