北京航空航天大学研究生实验报告
图 4
整个软件的操作流程如图5所示:
- 5 -
北京航空航天大学研究生实验报告
选择选项卡RTWENGINE设置模型输入参数设置模型路径、模型名称点击仿真按钮设置仿真步长、仿真时间查看仿真结果确认要发送到ENGINE的指令点击开启ENGINE按钮点击执行按钮查看仿真结果 图 5
(1)基于MATLAB RTW的建模与仿真
基于RTW的仿真的流程主要包括设置仿真模型输入参数、模型的初始化、模型的执行与终止几个部分,要在主函数中声明需要用到的外部函数,软件流程为:
a) 设置仿真模型输入参数; b) 模型注册;
c) 初始化大小和采样时间,启动模型,为输入变量赋值;
d) 计算机输出数据,更新离散状态变量,计算连续模行导数,根据输出数据实时绘制图形,更新进度条,此过程执行3000次; e) 终止模型。
(2)基于MATLAB Engine的建模与仿真
基于ENGINE的仿真流程包括设置仿真参数、Matlab引擎的开启、Simulink模型的调用与关闭引擎的操作几个部分,软件流程为:
a) 设置仿真模型路径、模型名称、仿真步长、仿真时间; b) 开启引擎;
c) 进入模型所在目录;
d) 模型初始化,设置仿真开始时刻,根据输出数据的维数、仿真步长和仿真时间的大小定义一个数组用于存放输出结果;
e) 调用本地模型,根据设置的仿真步长进行逻辑时间推进,记录模型输出,时间推进
之后将前一状态的输出作为下一个状态的输入,继续执行,根据仿真步长和仿真时
- 6 -
北京航空航天大学研究生实验报告
间确定循环次数; f)
画出仿真结果。
4.2程序结构及主要功能模块
(1)基于MATLAB RTW的建模与仿真
基于RTW的仿真主要过程由“Simulate”按钮的响应函数System::Void button1_Click_1(System::Object^ sender, System::EventArgs^ e)实现,其中调用的RTW功能函数及绘图函数主要有:
函数 cw(); MdlInitializeSizes(); MdlInitializeSampleTimes(); MdlStart(); MdlOutputs(); MdlUpdate(); cw_derivatives(); MdlTerminate(); DrawLine() progressBar1->PerformStep()
(2)基于MATLAB Engine的建模与仿真
基于RTW的仿真主要过程由“执行”按钮的响应函数System::Void button2_Click(System::Object^ sender, System::EventArgs^ e),其中调用的Engine引擎的函数主要有:
函数 engOpen() engEvalString() engClose()
功能 开启引擎 执行MATLAB命令 关闭引擎 功能 模型注册 初始化大小 初始化采样时间 启动模型 计算机系统输出 更新离散状态向量 计算连续模型导数 模型终止 绘制图形 更新进度条 5.实验结果分析
(1)基于MATLAB RTW的建模与仿真
仿真时模型的输入参数In_fAAx、In_fAAy、In_fAAz、In_Omega、In_Cita、In_Fi分别设置为6.37、0、-9.8、0、0.6981、0,仿真步长0.01s,仿真时间30s。
MATLAB仿真结果如图6、图7所示,图6显示Out_L1、Out_L2、Out_L3的仿真结果,图7显示Out_L4、Out_L5、Out_L6的仿真结果:
- 7 -
北京航空航天大学研究生实验报告
图 6
图 7
VC程序仿真结果如图8所示:
图 8
- 8 -
北京航空航天大学研究生实验报告
结果分析:通过VC程序得到仿真数据并绘制图形,得到仿真结果,与Simulink仿真模型得到的结果进行比较发现,输出波形是相同,说明可以通过VC对Simulink模型进行仿真,快速准确的得到仿真结果,且仿真时可以配置输入参数,但不可配置仿真步长仿真速度较快。
(2)基于MATLAB Engine的建模与仿真 仿真时模型的输入参数In_fAAx、In_fAAy、In_fAAz、In_Omega、In_Cita、In_Fi分别设置为6.37、0、-9.8、0、0.6981、0,仿真步长0.1s,仿真时间30s。
MATLAB仿真结果如图9、图10所示,图9显示Out_L1、Out_L2、Out_L3的仿真结果,图10显示Out_L4、Out_L5、Out_L6的仿真结果:
图 9
图 10
VC程序调用Engine的仿真结果如图11、图12所示:
- 9 -