论文部分内容阅读
【摘要】 输油管道实验仿真系统开发过程中,采用Visual C++设计程序框架,用Flash设计用户界面,MATLAB做后台数值计算以及曲线的输出,EXCEL作为数据的表格输出,实现的多种语言及应用程序的混合编程,取得了较好的仿真效果。该仿真系统可以作为学科教师的辅教工具,也可以结合实验课程供学生自主学习时使用。
【关键词】 混合编程;实验仿真;Visual C++;Flash;MATLAB;软件开发
【中图分类号】JE973 【文献标识码】A 【文章编号】1001-4128(2010)09-0187-02
1 概述
工科专业通常重视实验环节,强调动手操作能力,但是限于实验、实习条件的限制,多数学校都存在着实验无法开设或达不到预期效果的情况,影响教学效果。目前很多实验难以实现或无法实现的原因主要有:
实验设备价格昂贵,动辄近百万的设备很常见。因此,受经济条件制约,只能有选择的进行部分实验,而很多对教学及科研颇具意义的实验无法开设,即使能勉强开设,实验效果也不理想;
实际应用中的设备尺寸一般较大,而实验室中通常采用较小尺寸的设备模拟,这必然对实验结果造成一定程度的影响,有时甚至会出现不准确的模拟结果;
有些专业的实验介质具有危险性,如易燃易爆、有毒等等,有的费用较高,只能采用其它介质代替,但是由于介质间物性存在区别,影响实验效果;
很多具有危险性或破坏性的实验无法采用真实装置进行,如管道高压下破裂爆炸等。
因此,利用计算机模拟实验过程,开发实验仿真系统是十分必要的。
2 混合编程技术应用的意义
开发实验仿真系统,常见的计算机编程语言或工具包括VC、VB等高级可视化语言,Flash等界面设计工具以及MATLAB等专业软件,每种语言都有自己的特点,但是又都不是万能的,VC在程序设计方面具有较大的优势,但是利用它开发漂亮美观的界面,尤其是动画就有较大的难度了,这一点Flash就很合适,而在后台计算方面,MATLAB又有着前两者都不具备的优势,所以,开发一套计算速度快、界面美观、结果准确的实验仿真系统,最好的办法是能将多种开发工具结合起来,利用各自的优势和特长,这样才能轻松的开发出高水准的实验仿真系统。
下面以输油管道实验仿真系统为例,简单介绍利用VC++、Flash、MATLAB以及Ms Office等工具混合编程的方法。
3 输油管道实验仿真系统的结构及特点[1,2]
输油管道是油气储运工程专业最重要的专业课程之一,其实验教学主要包括离心泵性能实验,输油管道稳态、瞬态实验等,据此开发的仿真系统结构参见图1。
在仿真系统主界面内,对实验装置及具体参数进行了介绍,并且配有装置的实物图片,使用户建立对装置的感性认识。在主界面之下,各个实验项目自成系统,主要内容均包括:
3.1 实验原理和实验内容的介绍;
3.2 实验中涉及的工艺流程的动画演示;
3.3 实验的仿真操作。在这里可以通过鼠标控制实验设备的状态,进行仿真实验操作,并根据系统提示记录实验数据,进行数据处理。
输油管道仿真系统具有如下特点:
①仿真系统是以Windows作为开发与应用平台,采用面向对象编程的Visual C++搭建程序框架,采用Flash制作用户界面,MATLAB进行后台主要计算,Excel输出数据表格,实现了多种应用程序混合编程,结合众多软件的优势,为仿真系统功能的实现提供了可能性;
②各实验操作界面模仿了真实的实验环境和设备,立体感、真实感强;
③仿真系统结合油气储运工程综合实验室的环道设计实验流程,可以将仿真结果与真实实验结果相对照,检验实验效果,实验前的预习过程,方便同学理解实验流程图等。另外,系统允许自主修改实验设定,如环道长度、管径、实验介质等等,又提供高度的灵活性,在各实验中均可独立进行参数设置,丰富了仿真实验的内容;
④进行实验操作时不必学习和记忆任何复杂的手册或功能键。操作时犹如身临其境,只要利用鼠标按动“开”或“关”即可开启实验设备,且可以点击“实验步骤”按钮查看实验步骤提示。
实现了“无实验手册操作”,显著提高了实验效果;
⑤实验原始数据记录和数据处理结果显示等功能齐全,做到了边实验、边进行数据分析处理、边显示。
4 输油管道实验仿真系统开发中的关键技术问题[3-9]
4.1 VC与Flash联合编程
将Flash动画嵌入自己的程序中,使用Shockwave Flash Object控件就可以实现。
首先,确认系统上已经注册了Shockwave Flash Object控件。如果系统上装有Flash,则就有这个控件,否则,可以到网上下载后安装。flash5.0以下的文件名是swflash.ocx,5.0以上版本的名字是flash.ocx。
和使用Button、Edit等其它Windows控件一样,将其拖动到对话框上,给它关联一个对象,对象的类就是插入控件时所生成的类。假设关联的对象名为m_Flash。使用成员函数LoadMovie和Play来导入并播放动画。
导入Flash动画:m_Flash.LoadMovie(0,strMovieUrl);strMovieUrl为要播放的flash路径,要用绝对路径。
播放Flash动画:m_Flash.Play()。
Flash和VC程序间的消息传递问题通过Flash的动作脚本语言Action Script(简称AS)实现,里面有个命令叫FSCommand,Flash就是通过这个命令向外部发送消息的。这个命令有两个参数,都是字符串,可以在flash脚本中指定任意的字符串。比如用户按下flash动画的一个按钮就发送FSCommand (“bt”,“bt1”)这样一个消息,按下另一个按钮发送FSCommand(“bt”,“bt2”),而程序收到FSCommand消息后就对通过两个参数的不同字符串来判断用户按下的是哪个按钮。
4.2 VC与MATLAB联合编程
MATLAB在仿真系统中主要用于方程组的求解、曲线拟合以及函数曲线的输出,常用的方法是通过引擎(Engine),采用客户机服务器的计算模式,通过Window的ActiveX通道和Matlab进行连接,通过调用Matlab引擎在后台实现与服务器的连接,实现动态通信。主要代码如下:
#include “engine.h” //包含引擎头文件
Engine *ep; //定义引擎
ep=engOpen(NULL); //引擎初始化
mxArray *T = NULL; //变量定义
T = mxCreateDoubleMatrix(1, 5, mxREAL);
mxSetName(T, “T”);
memcpy((char *) mxGetPr(T), (char *) tab, 5*sizeof(double));
engPutArray(ep, T);
//以下是执行MATLAB命令
engEvalString(ep, “plot(T,D,'o',T,a)”);
CWnd* pWnd=FindWindow(NULL,“Figure No. 1”);
engEvalString(ep, “title('油温和地温');”);
engEvalString(ep, “xlabel('距离(公里)');”);
engEvalString(ep, “ylabel('温度 (摄氏度)');”);
mxDestroyArray(T);//变量释放
}
4.3 VC与EXCEL联合编程
VC与EXCEL数据传递的方法有很多,比较简单的方法是首先在EXCEL中制作模板,然后在生成报表时调用模板。简单代码如下:
_Application ExcelApp;
Workbooks wbsMyBooks;
_Workbook wbMyBook;
Worksheets wssMysheets;
_Worksheet wsMysheet;
Range rgMyRge;
//创建Excel 2000服务器(启动Excel)
if (!ExcelApp.CreateDispatch(“Excel.Application”,NULL)) {
AfxMessageBox(“创建Excel服务失败!”); exit(1); }
//利用模板文件pipe.xlt建立新文档
wbsMyBooks.AttachDispatch(ExcelApp.GetWorkbooks(),true);
wbMyBook.AttachDispatch(wbsMyBooks.Add(_variant_t(sss+“\\pipe.xlt”)));
wssMysheets.AttachDispatch(wbMyBook.GetWorksheets(),true); //得到Worksheets
wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t(“sheet1”)),true); //得到sheet1
//得到全部Cells,此时,rgMyRge是cells的集合
rgMyRge.AttachDispatch(wsMysheet.GetCells(),true);
//向EXCEL单元格 (i,j) 中写入数据预先指定好格式的Text
rgMyRge.SetItem(_variant_t((long)(i)),_variant_t((long)(j)),_variant_t(Text));
wbMyBook.SetSaved(true);
ExcelApp.SetVisible(true);
//释放对象
rgMyRge.ReleaseDispatch();
wsMysheet.ReleaseDispatch();
wssMysheets.ReleaseDispatch();
wbMyBook.ReleaseDispatch();
wbsMyBooks.ReleaseDispatch();
ExcelApp.ReleaseDispatch();
5 结论
输油管道实验仿真系统,模拟了真实的实验场景,满足了实验学习的需求,主要包括实验原理、实验内容、实验工艺流程等相关内容的介绍,实验操作过程的仿真模拟以及实验数据的在线处理。经过使用验证,实验计算结果与实测数据基本吻合,使用过实验仿真系统的学生普遍反应,对于实验过程的了解明显加深,学习效果得到大幅的提升。
参考文献
[1] 杨筱蘅.输油管道设计与管理[M].中国石油大学出版社,2006:23-75
[2] 潘霞等.管道泄漏检测实验系统设计与实现[J].船海工程,2007,36(2):44-47
[3] 罗卫东.用Flash AS3设计与实现电路实验仿真课件[J].物理教师,2008,9:48-49
[4] 王明福等.Visual C++ 程序设计[M],高等教育出版社,2003
[5] 张培等.Flash 8入门与提高实例教程[M],机械工业出版社,2007
[6] 王沫然.MATLAB与科学计算[M],电子工业出版社,2003
[7] 刘素心等.基于Matlab的通信系统的实验仿真设计[J], 实验室科学,2008,3:101-103,105
[8] 曾朝霞等.用Flash MX 2004开发离心泵实验仿真课件[J],计算机与应用化学,2007,24(8):1127-1130
[9] 胡涛等.VB结合Flash制作化工原理离心泵实验CAI课件[J].宁波工程学院学报.2007.19(2):57-62
Development of Oil Pipeline Experiment Simulation System Based on Mixed Programming Technology
【Abstract】: During the development period of the pipeline experiment simulation system, we use Visual C++ to establish the frame, Flash to design the GUI,MATLAB to calculate at background and show the figure, and EXCEL to display the data table, thus form the mixed programming technology. The experiment simulation system can use as an assistant tool of experiment teachers, and be supplied to students to self-study.
【Key Words】: Mixed Programming;Experiment Simulation;Visual C++;Flash;MATLAB;Software Development
【关键词】 混合编程;实验仿真;Visual C++;Flash;MATLAB;软件开发
【中图分类号】JE973 【文献标识码】A 【文章编号】1001-4128(2010)09-0187-02
1 概述
工科专业通常重视实验环节,强调动手操作能力,但是限于实验、实习条件的限制,多数学校都存在着实验无法开设或达不到预期效果的情况,影响教学效果。目前很多实验难以实现或无法实现的原因主要有:
实验设备价格昂贵,动辄近百万的设备很常见。因此,受经济条件制约,只能有选择的进行部分实验,而很多对教学及科研颇具意义的实验无法开设,即使能勉强开设,实验效果也不理想;
实际应用中的设备尺寸一般较大,而实验室中通常采用较小尺寸的设备模拟,这必然对实验结果造成一定程度的影响,有时甚至会出现不准确的模拟结果;
有些专业的实验介质具有危险性,如易燃易爆、有毒等等,有的费用较高,只能采用其它介质代替,但是由于介质间物性存在区别,影响实验效果;
很多具有危险性或破坏性的实验无法采用真实装置进行,如管道高压下破裂爆炸等。
因此,利用计算机模拟实验过程,开发实验仿真系统是十分必要的。
2 混合编程技术应用的意义
开发实验仿真系统,常见的计算机编程语言或工具包括VC、VB等高级可视化语言,Flash等界面设计工具以及MATLAB等专业软件,每种语言都有自己的特点,但是又都不是万能的,VC在程序设计方面具有较大的优势,但是利用它开发漂亮美观的界面,尤其是动画就有较大的难度了,这一点Flash就很合适,而在后台计算方面,MATLAB又有着前两者都不具备的优势,所以,开发一套计算速度快、界面美观、结果准确的实验仿真系统,最好的办法是能将多种开发工具结合起来,利用各自的优势和特长,这样才能轻松的开发出高水准的实验仿真系统。
下面以输油管道实验仿真系统为例,简单介绍利用VC++、Flash、MATLAB以及Ms Office等工具混合编程的方法。
3 输油管道实验仿真系统的结构及特点[1,2]
输油管道是油气储运工程专业最重要的专业课程之一,其实验教学主要包括离心泵性能实验,输油管道稳态、瞬态实验等,据此开发的仿真系统结构参见图1。
在仿真系统主界面内,对实验装置及具体参数进行了介绍,并且配有装置的实物图片,使用户建立对装置的感性认识。在主界面之下,各个实验项目自成系统,主要内容均包括:
3.1 实验原理和实验内容的介绍;
3.2 实验中涉及的工艺流程的动画演示;
3.3 实验的仿真操作。在这里可以通过鼠标控制实验设备的状态,进行仿真实验操作,并根据系统提示记录实验数据,进行数据处理。
输油管道仿真系统具有如下特点:
①仿真系统是以Windows作为开发与应用平台,采用面向对象编程的Visual C++搭建程序框架,采用Flash制作用户界面,MATLAB进行后台主要计算,Excel输出数据表格,实现了多种应用程序混合编程,结合众多软件的优势,为仿真系统功能的实现提供了可能性;
②各实验操作界面模仿了真实的实验环境和设备,立体感、真实感强;
③仿真系统结合油气储运工程综合实验室的环道设计实验流程,可以将仿真结果与真实实验结果相对照,检验实验效果,实验前的预习过程,方便同学理解实验流程图等。另外,系统允许自主修改实验设定,如环道长度、管径、实验介质等等,又提供高度的灵活性,在各实验中均可独立进行参数设置,丰富了仿真实验的内容;
④进行实验操作时不必学习和记忆任何复杂的手册或功能键。操作时犹如身临其境,只要利用鼠标按动“开”或“关”即可开启实验设备,且可以点击“实验步骤”按钮查看实验步骤提示。
实现了“无实验手册操作”,显著提高了实验效果;
⑤实验原始数据记录和数据处理结果显示等功能齐全,做到了边实验、边进行数据分析处理、边显示。
4 输油管道实验仿真系统开发中的关键技术问题[3-9]
4.1 VC与Flash联合编程
将Flash动画嵌入自己的程序中,使用Shockwave Flash Object控件就可以实现。
首先,确认系统上已经注册了Shockwave Flash Object控件。如果系统上装有Flash,则就有这个控件,否则,可以到网上下载后安装。flash5.0以下的文件名是swflash.ocx,5.0以上版本的名字是flash.ocx。
和使用Button、Edit等其它Windows控件一样,将其拖动到对话框上,给它关联一个对象,对象的类就是插入控件时所生成的类。假设关联的对象名为m_Flash。使用成员函数LoadMovie和Play来导入并播放动画。
导入Flash动画:m_Flash.LoadMovie(0,strMovieUrl);strMovieUrl为要播放的flash路径,要用绝对路径。
播放Flash动画:m_Flash.Play()。
Flash和VC程序间的消息传递问题通过Flash的动作脚本语言Action Script(简称AS)实现,里面有个命令叫FSCommand,Flash就是通过这个命令向外部发送消息的。这个命令有两个参数,都是字符串,可以在flash脚本中指定任意的字符串。比如用户按下flash动画的一个按钮就发送FSCommand (“bt”,“bt1”)这样一个消息,按下另一个按钮发送FSCommand(“bt”,“bt2”),而程序收到FSCommand消息后就对通过两个参数的不同字符串来判断用户按下的是哪个按钮。
4.2 VC与MATLAB联合编程
MATLAB在仿真系统中主要用于方程组的求解、曲线拟合以及函数曲线的输出,常用的方法是通过引擎(Engine),采用客户机服务器的计算模式,通过Window的ActiveX通道和Matlab进行连接,通过调用Matlab引擎在后台实现与服务器的连接,实现动态通信。主要代码如下:
#include “engine.h” //包含引擎头文件
Engine *ep; //定义引擎
ep=engOpen(NULL); //引擎初始化
mxArray *T = NULL; //变量定义
T = mxCreateDoubleMatrix(1, 5, mxREAL);
mxSetName(T, “T”);
memcpy((char *) mxGetPr(T), (char *) tab, 5*sizeof(double));
engPutArray(ep, T);
//以下是执行MATLAB命令
engEvalString(ep, “plot(T,D,'o',T,a)”);
CWnd* pWnd=FindWindow(NULL,“Figure No. 1”);
engEvalString(ep, “title('油温和地温');”);
engEvalString(ep, “xlabel('距离(公里)');”);
engEvalString(ep, “ylabel('温度 (摄氏度)');”);
mxDestroyArray(T);//变量释放
}
4.3 VC与EXCEL联合编程
VC与EXCEL数据传递的方法有很多,比较简单的方法是首先在EXCEL中制作模板,然后在生成报表时调用模板。简单代码如下:
_Application ExcelApp;
Workbooks wbsMyBooks;
_Workbook wbMyBook;
Worksheets wssMysheets;
_Worksheet wsMysheet;
Range rgMyRge;
//创建Excel 2000服务器(启动Excel)
if (!ExcelApp.CreateDispatch(“Excel.Application”,NULL)) {
AfxMessageBox(“创建Excel服务失败!”); exit(1); }
//利用模板文件pipe.xlt建立新文档
wbsMyBooks.AttachDispatch(ExcelApp.GetWorkbooks(),true);
wbMyBook.AttachDispatch(wbsMyBooks.Add(_variant_t(sss+“\\pipe.xlt”)));
wssMysheets.AttachDispatch(wbMyBook.GetWorksheets(),true); //得到Worksheets
wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t(“sheet1”)),true); //得到sheet1
//得到全部Cells,此时,rgMyRge是cells的集合
rgMyRge.AttachDispatch(wsMysheet.GetCells(),true);
//向EXCEL单元格 (i,j) 中写入数据预先指定好格式的Text
rgMyRge.SetItem(_variant_t((long)(i)),_variant_t((long)(j)),_variant_t(Text));
wbMyBook.SetSaved(true);
ExcelApp.SetVisible(true);
//释放对象
rgMyRge.ReleaseDispatch();
wsMysheet.ReleaseDispatch();
wssMysheets.ReleaseDispatch();
wbMyBook.ReleaseDispatch();
wbsMyBooks.ReleaseDispatch();
ExcelApp.ReleaseDispatch();
5 结论
输油管道实验仿真系统,模拟了真实的实验场景,满足了实验学习的需求,主要包括实验原理、实验内容、实验工艺流程等相关内容的介绍,实验操作过程的仿真模拟以及实验数据的在线处理。经过使用验证,实验计算结果与实测数据基本吻合,使用过实验仿真系统的学生普遍反应,对于实验过程的了解明显加深,学习效果得到大幅的提升。
参考文献
[1] 杨筱蘅.输油管道设计与管理[M].中国石油大学出版社,2006:23-75
[2] 潘霞等.管道泄漏检测实验系统设计与实现[J].船海工程,2007,36(2):44-47
[3] 罗卫东.用Flash AS3设计与实现电路实验仿真课件[J].物理教师,2008,9:48-49
[4] 王明福等.Visual C++ 程序设计[M],高等教育出版社,2003
[5] 张培等.Flash 8入门与提高实例教程[M],机械工业出版社,2007
[6] 王沫然.MATLAB与科学计算[M],电子工业出版社,2003
[7] 刘素心等.基于Matlab的通信系统的实验仿真设计[J], 实验室科学,2008,3:101-103,105
[8] 曾朝霞等.用Flash MX 2004开发离心泵实验仿真课件[J],计算机与应用化学,2007,24(8):1127-1130
[9] 胡涛等.VB结合Flash制作化工原理离心泵实验CAI课件[J].宁波工程学院学报.2007.19(2):57-62
Development of Oil Pipeline Experiment Simulation System Based on Mixed Programming Technology
【Abstract】: During the development period of the pipeline experiment simulation system, we use Visual C++ to establish the frame, Flash to design the GUI,MATLAB to calculate at background and show the figure, and EXCEL to display the data table, thus form the mixed programming technology. The experiment simulation system can use as an assistant tool of experiment teachers, and be supplied to students to self-study.
【Key Words】: Mixed Programming;Experiment Simulation;Visual C++;Flash;MATLAB;Software Development