MATLAB与VisualC_混合编程在电动汽车仿真中的应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
收稿日期:20020906
项目名称:电动汽车整车研制及配套技术(H020*********)
作者简介:孙立清(1967-),男,工学博士,副教授,从事电动汽车整车及车辆动力学研究.
文章编号:10094687(2003)02001604
MAT LAB 与Visual C ++混合编程
在电动汽车仿真中的应用
孙立清, 白文杰, 孙逢春
(北京理工大学机械与车辆工程学院,北京 100081)
摘 要:较为全面地列举了MA TLAB 与Visual C ++混合编程的各种方式.重点介绍并
举例说明了其中两种方式在电动汽车仿真软件中的应用.将MA TLAB 与Visual C ++的
特点结合起来对开发可独立执行的且具有良好维护性和扩充性的电动汽车仿真计算软件
具有重要意义.
关键词:MA TLAB ;Visual C ++;混合编程;电动汽车仿真
中国分类号:TP311154 文献标识码:A
1 引 言
MA TLAB 是美国Math Works 公司自80年代中期推出的数学软件,它在矩阵运算、二维和三维图形的绘制、数值拟合等方面均有极强的功能.MA TLAB 的突出特点是简洁.但MA TLAB 解释性语言执行效率低,局限于MA TLAB 环境而不利于商业开发,源代码公开不利于算法与数据的保密性等,限制了MA TALB 的推广应用[1].
Visual C ++(以下简称VC )是Microsoft 公司推出的强大的可视化集成编程环境,从底层软件直到上层直接面向用户的软件都可以用VC 来完成开发,而且强大的调试功能也为大型复杂软件的开发提供了有效的排错手段.同时用VC 开发的系统具有界面友好、代码效率高和执行速度快等一系列优点.并且C ++语言支持面向对象的软件设计,而利用面向对象方法设计的软件具有良好的可重用性、可维护性和可扩充性等[2].
电动汽车仿真软件的作用是对电动汽车的动力性和经济性等性能进行仿真和评价.在软件中要涉及到大量的计算和分析,数据的二维、三维的可视化输出等.同时作为一个复杂的仿真软件,具有优良的用户交互界面、高效快速的执行特性,以及良好的可重用性、可维护性和可扩充性等是非常重要的.利用MA TLAB 与VC 混合编程是实现以上特性的一个有效的途径[3].
2 MAT LAB 与VC 混合编程的几种方式
MA TLAB 与VC 混合编程主要有以下几种方式:
2003年第2期 车辆与动力技术Vehicle &Power Technology
总第90期
1)在VC 中启用MA TLAB EN GIN E (引擎),采用客户机/服务器(Client/Server )的计算模式,通过MA TLAB 的应用程序接口(API )中有关MA TLAB EN GIN E 的函数,编程者可以在VC 中调用MA TLAB 函数.但这种方法要同时启用MA TLAB 环境,因此要求系统中必须安装MA TLAB ,在实际开发中很少采用.
2)利用MA TLAB COMPIL ER (编译器),将MA TLAB 的函数编译成脱离MA TLAB 环境的可执行程序(.exe 文件),在VC 中调用.这种方法简单、方便,但运行时出现一个控制台窗口.另外,函数的输出参数难以直接连接到VC 的函数中.
3)通过DLL 实现混合编程.DLL 是动态连接库的英文缩写,是一个可执行的二进制文件.把很多通用的功能放在DLL 中,可以供多个应用程序调用,而不是每个应用程序在连接时都要增加一个库中目标代码的拷贝.可以整体减少文件外部存储空间的占有量,并实现了代码的共享.具体的实现过程是利用MA TLAB COMPIL ER ,将MA TLAB 函数编译成可以脱离MA TLAB 环境使用的C 函数,在VC 中将此C 函数编译成动态连接库,在VC 中加载这个动态连接库.
4)利用MA TLAB 的数学函数库.
5)用Matcom (M IDEVA )将.m 文件翻译为CPP 代码,并编译为EXE 或DLL 文件.M IDEVA 是Mathtools 公司推出的一种MA TLAB 集成编译开发平台,提供对MA TLAB 程序文件(M 文件)的解释执行和开发环境支持.经过简单设置后,M IDEVA 可以将M 源文件转换为C/C ++,然后添加到VC 的工程中.
6)在VC 中实现C ++与Matlab 语言混编.
下面将重点介绍(4)(6)两种方式.
3 在VC 中调用MAT LAB C/C ++数学函数库[4]
MA TLAB 中包含内容丰富的数学函数库,同时它还提供了C 语言和C ++语言的数学函数接口,用户可以很方便地在VC 的IDE (集成开发环境)中调用.但是要想顺利地将C ++源程序编译成可执行程序,只有在正确地设置C ++的编译环境后才能完成.
(1)设置include 搜索目录,加入c/c ++math 的头文件,在Tools ->Options ->
Directories ->Include files 中加入:
(2)定义预处理宏MSVC ,MSWIND ,在Project ->Setting ->C/C ++页中的Category ->Preprocessor 中加入MSVC ,MSWIND
(3)设置运行时动态连接库,在Project ->Setting ->C/C ++页中的Category ->Code G eneration 中选择Multithreaded DLL.
(4)加入lib 文件,在Project ->Add to Project ->Files …中加入:
\extern \lib \win32\microsoft \msvc60\
3.lib 以及
libmatpm.lib (5)运行时(发布)所需文件,
・71・ 第2期 孙立清等:MA TLAB 与Visual C ++混合编程在电动汽车仿真中的应用