基于Matlab引擎的反舰导弹三维动画实时驱动

基于Matlab引擎的反舰导弹三维动画实时
驱动
论文与报告?《战术导弹控制技术》2004年No.4(总47期)
膨胀螺栓基于Matlab引擎的反舰导弹三维动画实时驱动
徐新林吴进华
海军航空工程学院自动控制系,山东烟台264001
摘要Matlab引擎是在Vc++中使用Matlab的接口方式之一,在详细分析了Matlab 引擎的工作
机理及其在VC++中的调用方法后,提出了利用Matlab引擎来实现VC++与dSPACE仿真计算机之间
实时通信的方法,从而实现了导弹半实物仿真系统中三维动画的实时驱动.
关键词Matlab引擎实时三维动画反舰导弹半实物仿真dSPACE
Real-timeDrivingof3DAnimationBasedonMatlabEngineforASM
ccyv
XuXin-lin,WuJin-hua
DepartmentofAutomaticControlEngineering,NavalAeronauticalEngineeringInstitute,Y antai264001,China
Abstract:TheMatlabEngineisoneoftheapplicationprograminterface(API)usingMatlabin VC++.
Afterthedetailedanalysis,thepaperproposestomakeuseofMatlabEnginetorealizethereal-t ime
communicationbetweenVC++anddSPACE.Thereby.thereal-timedrivingof3Danimation isrealized
inthehardware-in-the-loopsimulationofmissile.
Keywords:MatlabEngine,Real-Time,3DAnimation,Anti-ShipMissile(ASM),HILSHar dware—in-the-
LoopSimulation),dSPACE
1引言
在某型反舰导弹半实物仿真系统中,导弹飞
行的可视化是系统必不可少的一个组成部分,实
时动画驱动是可视化实现中必须解决的一个问交流使人生更美好
题.所谓实时性是指利用实体的仿真模型所获得
的各类参数驱动实体的三维可视模型在一个虚拟
空间中运动,以达到再现实体的真实运动情况.
在半实物仿真系统中采用的dSPACE仿真计
算机是由dSPACE公司开发的一套控制系统开发
敦煌拳及测试的工作平台,并且实现了与Matlab/
Simulink之间的完全无缝连接.dSPACE提供的
测试软件主要有:ControlDesk综合试验环境,
MUB/MTRACE实现了在Matlab中进行自动试
验及参数调整,RealMotion实时动画软件以及
车刀刃磨
CLIB是使处理器与PC机的通信软件.
由于缺少RealMotion和CUB,我们采用了
Microsoft公司的Direct3D实现动画,并利用
Matlab引擎和MLIB/M耵认CE实现三维动画的
实时驱动.本文将着重探讨利用Matlab引擎和
MLIB/MTRACE达到三维实时动画的实现.
2Matlab引擎及其接口调用
Matlab引擎是Mathworks公司提供的用于外
部程序和Matlab交互的一组函数库和程序库,
它采用了客户机//ll~务器(Client/Server)的体系
结构,通过Windows的ActiveX通道和Matlab进
行连接.其实质是利用了ActiveX自动化和DDE
徐新林:(1978年~l,男,海军航空工程学院研究生二队硕士研究生;主要从事:导航,制导与控制专业及导弹飞行三维视
景可视化仿真技术的研究oE-mail:*****************
49_一
论文与报告?《战术导弹控制技术》2004年No.4(总47期) (DynamicDataExchange)技术,来实现VC++
与Mallab之间的动态数据交换m.具体在VC++
中使用Matlab引擎来编制程序时,VC++是作为
客户端出现的,即负责用户接口和提出数据请
求;而Matlab则属于服务器端,即向客户端提
供数据服务.VC++客户端通过调用MaⅡab引擎
与Matlab服务器建立连接,从而实现动态通信.
具体过程如图l所示.
1用户数据请求(vc数据类型)
2mxArray矩阵(数据参数)
3Ma上lab命令
4Ma上lab变量(数据参数)
5Ma上lab命令
6Ma上lab变量(数据结果)
7mxAn.ay矩阵(数据结果)
8VC客户端响应(vc数据类型)
图1引擎调用过程
2.1Matlab引擎库函数
引擎接口为在VC++中调用Matlab服务提供
了应用程序接口(API),主要由表l中的引擎
(Engine)库函数来实现,完成VC客户端与
Matlab服务器的连接建立与撤销,数据的传递与
接收.
2.2数据类型转换
在VC++中使用Matlab引擎编程的一个重要
问题是VC++数据类型与mxArray矩阵的相互转换,即数据组织.Matlab对所有的VC++数据类
型均使用同一种专门的mxArray矩阵结构来描述和存储.每个mxArray矩阵结构包含类型,维
度,数据,稀疏矩阵,非零元索引,结构等字段
说明.Matlab通过mxArray矩阵结构及其相关函数来实现对数据的组织.具体的实现函数见参考文献[21.可以说,Matlab的数据组织是利用Mat—lab引擎进行VC++编程的核心.不同的VC++数据类型对应着不同的数据组织方式.数据组织方式正确与否直接影响着对Matlab引擎的调用是否成功,决定着VC++客户端与Matlab服务器之间动态数据交换的有效性.Matlab支持的矩阵类型有:双精度,数值,字符串,单元数组,结构
和对象.它们与VC++数据类型之间的相互转换见表2.
水平潜流人工湿地
5一
表1Matlab引擎库函数
函数名功能
engOpen启动引擎,请求建立与服务器的连接
e.gClose请求释放与服务器的连接,关闭引擎
从Matlab引擎的工作区中获取一个矩engGetV ariable
阵数据
执行一个用字符串表示的Matlab表达engEvalstring
表2数据类型转换表
VC++数据类型Matlab矩阵类型doubleDouble-PrecisionMatrices
float|int|unsignedNumericMa~ces
char|CStringMatlabSngs
stmctStructs
class0bjects
2_3编程环境设置
在VC++6.0中调用Madab引擎必须正确地
进行环境设置,步骤如下:
1)在Matlab\extemkinclude下用lib命令生
成库文件libeng.1ib(引擎函数库)和libmx.1ib (应用程序接口库)
lib/deftlibeng.def/machine:ix86/out:libeng.1ib
lib/deftlibmx.def/machine:ix86/out:libmx.1ib
2)在VC++6.0环境工程设置中修改link属
性页下的General项,添加库文件libeng.1ib和libmx.1ib.
3)在VC++6.0的tools菜单中选择select
项,然后在directory标签下添加一个指向Mat—lab\extemkinclude目录的includefiles和一个指向Matlab\extem~lib目录的libraryfiles.
4)在需要使用Matlab引擎服务的VC++6.0
源文件中包含engine.h头文件.
经过以上一系列设置,就可以成功在VC++
6.0中对C语言引擎程序进行编译,调试和运行. 3实时动画驱动
3.1数据采集原理
三维动画设计是利用Microsoft公司的Di—

本文发布于:2024-09-20 16:29:49,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/687700.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:引擎   实现   数据   矩阵
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议