收藏 分销(赏)

MFC对SIMULINK的二次开发及其在喷水推进系统仿真中的应用.doc

上传人:仙人****88 文档编号:9375253 上传时间:2025-03-24 格式:DOC 页数:6 大小:459.50KB 下载积分:10 金币
下载 相关 举报
MFC对SIMULINK的二次开发及其在喷水推进系统仿真中的应用.doc_第1页
第1页 / 共6页
MFC对SIMULINK的二次开发及其在喷水推进系统仿真中的应用.doc_第2页
第2页 / 共6页


点击查看更多>>
资源描述
MFC对SIMULINK的二次开发及其在喷水推进系统仿真中的应用 摘要:提出了使用MFC对Matlab/SIMULINK进行二次开发的方法,该方法是通过MFC编写程序驱动SIMULINK模型转换来的C++源代码而实现的。这既可以发挥SIMULINK仿真能力强的优势,又可以充分利用MFC编程的高效性、灵活性,提高仿真软件开发的效率。文中以某喷水推进船仿真程序为研究对象实现了MFC对SIMULINK的二次开发,得到了适用于该喷水推进船各种工况的仿真软件。最后以回转过程与加速过程为例进行了仿真。 关键词:二次开发 MFC SIMULINK 喷水推进系统 A Method of Using MFC to Develope SIMULINK and the Use of It in Waterjet Propulsion System Simulation Abstact: A method of using MFC to develop Matlab/SIMULINK is proposed, which uses MFC compiling procedure to drive the C++ source code generated form SIMULINK model. This method not only makes full use of the powerful simulation advantage of SIMULINK, but has the high efficient and flexible programming capability of MFC, which can improve the software developing efficiency. Then this method is applied in the waterjet propulsion system simulation, the simualtion software is developed which could run independent and simulate most work conditions of the waterjet propulsion system. In the end the turning process and accelerating process are simulated using this programme. Key words:Second development MFC SIMULINK Waterjet Propulsion system 1 前言 Matlab/SIMULINK为用户提供了用框图进行仿真的图形接口,使得系统仿真更直观、方便。但SIMULINK是一种解释性执行语言,对于一个综合性的仿真程序来说,其执行效率和UI界面的设计往往不能满足要求。当前大多数软件的开发,主要是采用目前应用广泛的MFC (Microsoft Fundation Class),利用它可以开发拥有优越的人机交互界面的软件,而且执行效率高。对于船舶推进系统来说,在仿真时经常需要将数学模型离散化,转化成计算机所能识别的仿真模型,这经常会涉及到大型矩阵运算,如直接用MFC进行编程将会很繁琐。因此,利用MFC对SIMULINK仿真程序进行二次开发,有助于发挥各自的优势,开发出高效、实用的仿真程序。本文以某喷水推进系统为对象,实现MFC对SIMULINK的二次开发。 2 MFC调用SIMULINK的方法 通常,MFC对SIMULINK的调用是通过MFC调用Matlab引擎实现的。Matlab引擎采用的是客户机/服务器计算模式。如图1所示。其实质是利用ActiveX自动化和DDE 技术来实现MFC与 Matlab之间的动态数据交换, MFC 作为客户端向Matlab提出数据请求,而SIMULINK通过 Matlab的Workspace向客户端提供仿真结果。MFC客户端通过调用Matlab引擎与SIMULINK服务器建立连接,从而实现与SIMULINK的动态通信。 图1 MFC对Matlab引擎的调用过程 这种数据通信方式的缺点在于,每次进行仿真计算时都要启动SIMULINK,相当于只是在SIMULINK仿真程序上面覆盖了一层人机交互界面,虽然增强了SIMULINK仿真程序的人机交互功能,但是程序的执行效率不高,且无法开发出独立的仿真软件。 鉴于以上原因,本文采用了另一种MFC与SIMULINK集成方法,该方法的实质是SIMULINK仿真程序源代码的转换与集成。该方法利用SIMULINK软件包自带的RTW(Real-Time Workshop)工具箱,将设计好的SIMULINK仿真程序转换为C++源代码,并利用MFC为程序框架来对仿真程序源代码进行二次开发,最终得到在Windows平台下可独立执行的仿真软件。 3 MFC与SIMULINK集成实现 下面以某型船的喷水推进系统为研究对象,实现MFC对SIMULINK仿真模型的二次开发。该喷水推进系统的主要组成部件有:柴油机、减速齿轮箱、轴系及传动系统、喷水推进器、主动力装置监控系统(由喷水推进器监控系统和主机组监控系统组成)。分别对上述各个子部件进行数学建模,并利用SIMULINK软件进行仿真程序的设计。最后将各个子部件的仿真模型通过输入输出的关系联系在一起,成为SIMULINK平台下的整个喷水推进系统的仿真程序。如图2所示。 图2 喷水推进系统仿真程序示意图 利用MFC对SIMULINK仿真程序进行二次开发之前,要将仿真程序转换为C++源代码,这个工作是在Matlab/SIMULINK集成开发环境的Simulation/Configuration Parameters/ Real- Time Workshop菜单下完成的。将SIMULINK模型转换为C++源代码的过程分为三步:即:输出信号的设定、输入参数的标识以及代码的生成。 3.1 输出信号的设定 将SIMULINK模型转换为源代码之前。首先要选择仿真时需要输出的数据变量。在SIMULINK软件中,仿真信号是通过信号线在各个仿真模块之间相互传递的。因此,可以在信号线上设定输出信号。 具体方法是:选择与数据变量连接的任意一条信号线。在Signal Properties选择菜单里面设置该信号线为检测点,RTW存储类型设置为“ExportedGlobal”。并给该信号取一个名称,这个信号会在模型生成的C++源代码中被表示为相同名称的变量。设置完毕后的状态如图3所示。图3中将柴油机力矩(DETorque)设置为了需要输出的信号,以供MFC程序的调用。 图3 输出信号的设置 3.2 输入参数的标识 在仿真计算前,需要设定仿真的初始参数,在仿真过程中,有时也需要根据仿真结果对某些运行参数进行实时调整。 在SIMULINK仿真程序中给需要调整的参数设定一个标识即可,这个标识就会在后续生成的C++源代码中以特定的结构体Model_P表示出来(Model为SIMULINK仿真程序的程序名)。具体的设定如图4所示。图4是柴油机调PI速器模块的一部分,图中将两个增益模块分别标识为P和I。在MFC中通过对C++变量Model_P.P和Model_P.I赋值,就可以对仿真参数进行调节。 图4 输入参数的标识 3.3 SIMULINK仿真模型C++代码的生成 完成输入输出的设定以后,就可以利用RTW工具箱生成C++源代码。生成的源代码分为4个C++源文件和5个C++头文件,分别为:Model.cpp、Model_Data.cpp、ert_main.cpp、rt_nonfinite.cpp、rt_nonfinite.h、rtwtypes.h、Model_private.h、Model.h和Model_types.h。这9个文件就包含了原SIMULINK仿真程序的全部内容。在转换而来的C++源代码中,有三个函数起着仿真的主导作用。这三个函数是: Initialize、Terminate和rt_OneStep在程序中的代码段如下: /* Model initialize function */ void Model _initialize(boolean_T firstTime) /* Model terminate function */ void Model _terminate(void) /* Model step function */ void Model_step(int_T tid) 其中Model_step(int_T tid)函数在rt_OneStep函数中被调用。显然,这三个函数分别实现了模型的初始化、停止和单步运算的功能。在程序设计过程中,可以通过Windows消息响应来驱动这三个函数:Initialize和Terminate函数可以用WM_COMMAND类型的消息驱动,控制仿真的初始化和结束;rt_OneStep函数可用WM_TIMER消息驱动。程序中每产生一次WM_TIMER消息,就会计算出一组结果,可以在WM_TIMER消息相应函数中对计算结果进行实时的提取。 完成C++源代码的生成以后,剩余的工作就是利用MFC框架程序为C++源代码编写驱动程序、开发人机交互界面、加入必要的控制程序(主要是加入仿真过程中各个参数的设定与调整程序)。最终通过调试、编译、链接生成可独立运行的仿真程序。MFC对SIMULINK进行二次开发的主要流程如图5所示。 图5 MFC对SIMULINK二次开发的步骤 4 仿真实例 本文利用MFC对上述喷水推进系统SIMULINK仿真程序进行了二次开发,编写了能独立运行的仿真软件,将仿真程序的功能封装成了几个独立的功能模块。参数设定模块如图6所示。该仿真软件将程序的功能分为9个独立的模块,相比于图2所示的SIMULINK仿真程序有更优越的人机交互界面。 图6 某喷水推进船仿真系统参数设定模块 下面以该喷水推进船的回转工况和加速工况的计算为例来说明该仿真系统的使用及主要功能。 4.1 回转过程仿真 回转过程仿真的第一次参数设定如图6所示,主要是设定回转前的主机转速、工作的喷泵以及船体的负荷状态。第二次参数设定需要确定回转泵、回转泵的舵角和回转方向。另外可以设置开启艏向角限制(当艏向角达到某个限制值时,自动停止)和设定自动回转航速(当航速达到某个设定值时,自动开始回转)。如图7所示。 图7 回转工况计算参数设定模块 设定回转过程使用1~4号喷泵,喷泵舵角为30度,回转方向设定为右转。仿真的结果如图8和图9所示, 图8 回转过程喷泵工况曲线仿真结果 图9回转过程航迹仿真结果 图中的部分数据已经过归一化处理。图8是喷泵工况曲线实时显示模块,该模块可以对回转过程中喷泵的转速随航速的变化曲线进行实时的显示,由仿真结果可见,回转过程中船的航速迅速下降,喷泵的转速也有略微降低。图中有三条喷泵的工况限制线,其定义见文献[3]。本文已将限制线数值化后编译到MFC程序中。图9是航迹曲线的实时显示模块,该模块可以对船的航迹进行实时的显示,仿真结果显示了回转过程中船的航迹。 本仿真系统通过将由SIMULINK模型转换的C++源代码进行编程和功能的扩充,实现了将仿真结果存储到硬盘,仿真系统可将仿真结果输出为txt文本格式,需要存储的项目可以由使用者按需要勾选。本例选择存储的项目有:仿真时间、航速、总阻力,如图10所示。 图10 仿真结果数据输出 4.2 加速过程仿真 加速过程中,柴油机转速的加速速率受到图8所示的三条喷泵工况限制线制约,加速过快会使得喷泵的工况点进入限制区,导致喷泵性能的下降。仿真系统通过对喷泵工况点的实时监测,可以得到给定加速初始转速和目标转速时的柴油机最短的加速时间。加速工况仿真的参数设定见图11,需要设定的参数为:柴油机初始和目标转速、加速方式、负荷状态以及喷泵的工况限制级别(即工况点相对于三条工况限制线的位置)。 图11加速工况计算参数设定模块 仿真时取加速方式为同步加速方式,即加速工程中柴油机转速和航速同步变化;柴油机转速由600rpm加速至2000rpm;负荷状态取为标准负荷;限制级别取为最高限制,即加速工程中,喷泵的工况点贴近工况限制线并始终在三条工况限制线的右侧。仿真计算得到柴油机最短加速时间为54秒,加速过程喷泵的工况曲线仿真结果如图12所示。 图12加速过程喷泵工况曲线仿真结果 可见,利用MFC与SIMULINK混合编程的方法构建的喷水推进系统仿真程序可以很直观地对该推进系统进行稳、动态特性的仿真。 5 结语 通过MFC对SIMULINK仿真程序进行二次开发,既可以充分发挥MFC灵活的编程机制,开发出优越的人机交互环境,又兼顾了SIMULINK软件强大的仿真功能。这种多工具、多平台联合开发的方法可以大大的缩短软件开发周期,提高软件的开发效率。 参 考 文 献 [1] 丁江明,王永生.喷水推进双体船回转性能初探[J].中国造船,2004 Vol.45 增刊:1-6. [2] 丁江明,王永生.喷水推进船转弯过程中柴油机负荷变化规律的研究[J].中国造船, 2004.10. [3] 李雁飞,陈国钧,张卫东.喷水推进双体船回转工况下船机泵动态配合仿真分析[J].系统仿真学报,17(03),2005.735-738. [4] 常广辉,王永生,梁述海.基于RTW和VC的半物理仿真系统的开发[J].计算机工程,2007.17:283-285. [5] 孙鑫.VC++深入祥解[M].电子工业出版社,2007.7. [6] 任传俊,蒋志文.Real-TimeWorkshop实时仿真研究与应用[J].计算机仿真,2007.8:268-271.
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服