MATLAB_RTW__Engine

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
状态; • 在Save to workspace选区中,
将各项全部选中,并在Final state文本框中输入变量名xFinal, 用于存储每个时间段运行结束时
的终端状态 • 注意数据类型的设置(数组、结
构、带时间变量的结构)
具体实验步骤
• 第二步:编写VC应用程序(以控制台模式为例)
– 创建工程,编辑MATLAB头文件和库文件支持
federate Model 1 RTI
Interface
1
2
N
Interface
Run-Time Infrastructure (RTI)
实验目的
• RTW(Real-Time Workshop)
– MATLAB提供的自动化代码生成工具 – 将Simulink模型框图转化为标准的C代码
• Engine
– MATLAB提供的C语言的调用接口 – 调用MATLAB资源(如SIMULINK模型)
• 实验目的:利用MATLAB RTW及Engine工具,通过两 种不同的方式在Visual C++环境中对Simulink模型进行 集成和调用,从而辅助在科研及工程实践中准确、通用、 快速地建立分布交互仿真体系结构下的复杂系统仿真模 型
– 受限仿真:仿真时间推进与墙钟保持特定关系的仿真,包括实时与非实 时仿真。 • 实时仿真是仿真系统时间推进与真实系统时间推进严格相同的仿真。 • 非实时仿真指超实时、欠实时或按其他受限规律推进仿真时间的仿 真。例如,人在回路和硬件在回路系统都是实时仿真。
– 帧周期:仿真系统中按时间步长递推计算的周期 – 在每个帧周期内完成各个仿真联邦成员的模型解算和联邦成员
以上各函数涉及到对MATLAB引擎的操作,在程序实现时应当置于同 一线程内。详细参数参见MATLAB联机帮助。
具体实验步骤
• 第一步:MATLAB中仿真模型的搭建和配置(以一 个简单二阶连续系统模型为例 )
– 搭建Simulink仿真模型
– 配置模型参数 • 在Solver属性页中将类型设为 定步长(即:Fixed-step),并 设置固定步长大小
基于MATLAB RTW的建模与仿真
RTW实验原理
• 在MATLAB中搭建Simulink仿真模型 • 仿真模型参数及RTW参数配wk.baidu.com • 自动生成C代码 • 在Visual C++环境中集成生成代码,构建仿真模型
具体实验步骤
• 第一步:MATLAB中仿真模型的搭建和配置
– 搭建Simulink模型 Model (以二阶连续系统为例)
Time = $
MATLAB在系统建模仿真中的应用
• MATLAB
– 集成各类应用领域的专用库函数和模块 – 用于数值计算、系统建模、控制和信号处理的软件包
• MATLAB在系统建模与仿真中得到广泛应用
– 系统建模阶段(Design Time):可以利用simulink等工具对分系统或
单个仿真模型进行设计,如制导、控制分系统设计等 – 系统仿真阶段(Run Time):各仿真模型要在分布交互仿真的体系结
τ
Ts Td
Tr T
T ≥ Ts + Td + Tr
应用实例
• 某卫星通讯分布仿真系统
– 高频载波调制 – 考虑信号衰减、噪声影响 – 解调还原 – 信号波形,误码率显示
应用实例
• 某卫星通讯分布仿真系统
实验原理
• Engine常用接口函数
– engOpen——开启MATLAB引擎 – engClose——关闭MATLAB引擎 – engPutVariable——向MATLAB工作空间注入变量 – engGetVariable——从MATLAB工作空间获取变量 – engEvalString——执行MATLAB命令
model() MdlInitializeSizes()
• MdlInitializeSampleTimes():初始化采样次数 • MdlStart():启动模型(初始化条件)
– 模型执行
MdlInitializeSampleTimes() MdlStart()
• MdlOutputs() :计算系统输出
具体实验步骤
• 第一步:MATLAB中仿真模型的搭建和配置(以一个
简单二阶连续系统模型为例 )
– 运行模型
– 配置Workspace I/O属性页
• 在Load from workspace选区, 选中Initial state,并输入变量名 xInitial,用于从工作空间中加载 变量,决定时间段运行时的初始
– 将生成的C代码加入到工程中 – 根据模型执行流程图,编写模型执行的main函数 – Project->Settings点击C/C++标签,在preprocessor
definitions中的最后加入RT 注意RT前用逗号与前一项分开 – 编译执行,并与在simulink中的运行结果进行比较(二者加相同
间片段结束后系统的输出状态变量作为下一个时间片的初始输入,
以实现仿真过程的连续性 – 基于SIMULINK的“From Workspace”和“To Workspace”模块
实现将输出与状态变量导入导出MATLAB工作空间
1 Simulink model
2 Simulink model
Matlab Workspace
• 头文件和库文件目录: %MATLAB%\EXTERN\INCLUDE\CPP; %MATLAB%\EXTERN\INCLUDE; %MATLAB%\EXTERN\LIB\WIN32\MICROSOFT\MSVC60
内容
• 实验目的 • 基于MATLAB RTW的建模与仿真
– 实验原理 – 实现步骤
• 基于MATLAB Engine的建模与仿真
– 实验原理 – 实现步骤
• 实验内容和考核要求
实验目的
建模与仿真技术
• 现代建模与仿真技术是一门多学 科的综合性技术
–技术基础:
• 以相似原理、模型理论、系统技术、 信息技术以及建模与仿真应用领域的 有关专业技术为基础
1 In1
– 配置模型参数
s+1.1 s2+2.2s+3.3 Transfer Fcn
1 Out1
step),
(Fixedstep size)
联olv釐默
(Fixed-
具体实验步骤
• 第一步:MATLAB中仿真模型的搭建和配置
– 配置RTW参数
• grt.tlc:Generic Realtime Target/Target Language Compiler
Matlab Workspace
Matlab Engine
Matlab Engine
simulation routine
simulation routine
RTI
实验原理
• 帧周期的概念与确定
– 简单Simulink模型,解算速度快于真实系统 – 考虑复杂Simulink模型,解算速度慢于真实系统 – 确定帧周期T
为mxArray格式的矩阵 3、MATLAB工作空间中的变量送入MATLAB服务器解算 4、5、通过接口函数的调用运行MATLAB命令 6、MATLAB状态变量与计算结果的反馈,以工作空间中
变量的形式存在 7、通过MATLAB Engine读取变量内容,仍需将其转换
为mxArray矩阵格式 8、VC客户端得到响应,mxArray数据结构转化为VC环
– Vxworks:tornado.tlc
• 只生成代码,不用生成可执行程序
grt.tlc
置釐al-能间验釐 Wo默页s长op
, Generate code
具体实验步骤
• 第二步:分析生成的C代码
– 生成与模型相关的文件列表
model.c
C
model_data.c
model.h
model_types.h model_private.h
内部的数据交换
实验原理
• 帧周期的概念与确定
– MATLAB中SIMULINK模型的运行不考虑仿真时间与墙钟时间的关系,
希望其“尽可能快”,属于非受限仿真的状态 – 在受限仿真或分布交互仿真环境中的一个节点上展开时,SIMULINK模
型的输出直接影响所在节点的输出,属于受限仿真的要求
– 分布式的MATLAB引擎工作结构
– 其他相关生成文件:rt_nonfinite.c, rt_nonfinite.h, rtwtypes和 rtmodel.h ——定义RTW所需的必要参数
具体实验步骤
• 第二步:生成的C代码分析和调用
Start Execution
– 初始化
• model():模型注册 • MdlInitializeSizes():初始化大小
• 将模型的运行过程按一定的仿真帧周期加以划分,在每个帧周期之内对 Simulink模型进行一次调用,再利用HLA提供的联邦成员通信机制RTI实现
节点之间的数据传输
1
2
MATLAB
Simulink model
Simulink model
Matlab Workspace
Matlab Workspace
境中的数据结构
1
8
VC Client
2 47
Matlab Engine Matlab WorkSpace
3 56
Matlab Server
实验原理
• 帧周期的概念与确定
– 非受限仿真:在墙钟时间和仿真推进时间之间没有明显比例关系的仿真, 有时称为“尽可能快”的仿真。例如,利用解析模型构建的仿真通常是 非受限仿真
model_U
• MdlUpdate():更新离散状态向量 • model_derivatives():计算连续模型导数
MdlOutputs()
– 模型中止
MdlUpdate()
• MdlTerminate()
– 输入与输出
• ExternalInputs:model_U
model_derivatives() MdlTerminate()
建建模模与与仿仿真真技技术术的的应应用用
• 工业领域
– 电力、核电站、虚拟制造等等
• 工业领域 • 其他应用领域
– 电力、核电站、虚拟制造等等 – 交通、医学、教育、娱乐等等
• 其他应用领域
– 交通、医学、教育、娱乐等等
虚拟样机工程技术研究与应用
概念
基于虚拟样机的产品开发
产品
基于虚拟样机的设计的开发时间 无虚拟样机的设计的开发时间
构(HLA/RTI)下实时地交互运行,如构建分布式虚拟战场环境,或在
威胁环境中对武器平台虚拟样机进行战技术指标考核 – 实验中要解决的问题:如何将用MATLAB开发的Simulink模型快速集
成并应用到分布交互仿真系统中?(Visual C++)
RTI federate Model N
RTI
RTI RTI
Matlab Engine
Matlab Engine
simulation routine
simulation routine
RTI
实验原理
• 仿真系统的连续性
– 受限仿真或分布式仿真将需要仿真的真实系统中的某段运行时间划 分成若干首尾相接的均匀时间片段,并分段驱动SIMULINK模型
– 定常系统的输出可以由系统的输入和状态变量完全决定,将每个时
的输入) – 注意:extern “C”
基于MATLAB Engine的建模与仿真
实验原理
• MATLAB Engine的调用机制
– C语言调用接口,提供调用MATLAB(.m)程 序和SIMULINK模型的API函数
– VC应用与MATLAB的Client-Server操作方式
1、VC客户端提出数据请求 2、VC要送入MATLAB工作空间的数据结构都必须转化
• ExternalOutputs:model_Y
End
– 生成代码中的模型执行流程
model_Y
具体实验步骤
• 第三步:在Visual C++中对生成的代码进行编译运行
(以控制台模式为例)
– 建立控制台工程程序 – 添加MATLAB头文件、库文件目录
%MATLAB%\SIMULINK\INCLUDE; %MATLAB%\EXTERN\INCLUDE; %MATLAB%\RTW\C\LIBSRC
–工具:
• 以计算机系统、与应用相关的物理效 应设备及仿真器为工具
–工作途径:
• 利用模型对已有的或设想的系统研究、 分析、试验、运行和评估(支持系统 全生命周期活动)
建建模模与与仿仿真真技技术术的的应应用用
• 军事领域 • 军–事武领器装域备研制
–武军器事装训备练研制 –军先事进训概练念与军事需求分析 –先进概念与军事需求分析
基于MATLAB RTW/Engine 的建模仿真实验
自动化学院仿真中心
自我介绍
• 李妮,博士,副教授,硕士生导师 • 先进仿真技术航空科技重点实验室 • 研究方向:系统建模/仿真技术、虚拟样机技术等 • 新主楼E909,13581737778/82339016 • lini@buaa.edu.cn
相关文档
最新文档