saber与matlab协同仿真.docx

上传人:b****8 文档编号:9292253 上传时间:2023-02-04 格式:DOCX 页数:14 大小:426.23KB
下载 相关 举报
saber与matlab协同仿真.docx_第1页
第1页 / 共14页
saber与matlab协同仿真.docx_第2页
第2页 / 共14页
saber与matlab协同仿真.docx_第3页
第3页 / 共14页
saber与matlab协同仿真.docx_第4页
第4页 / 共14页
saber与matlab协同仿真.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

saber与matlab协同仿真.docx

《saber与matlab协同仿真.docx》由会员分享,可在线阅读,更多相关《saber与matlab协同仿真.docx(14页珍藏版)》请在冰豆网上搜索。

saber与matlab协同仿真.docx

saber与matlab协同仿真

Saber可以和Simulink实现协同仿真(Co-Sim),仿真时以Saber为主机,调用Simulink,两个软件以固定时间步长交换数据.运用Saber和Simulink进行协同仿真的关键在于接口定义,需要在两个软件环境中分别进行适当的定义,才能实现Co-Sim.下面以Saber软件自带的实例来介绍一下如何实现Saber/Simulink协同仿真.

首先确定是否已经安装了Saber和Simulink软件,本文Saber的版本是2006.06,Simulink的版本是7.0.接下来需要在Sketch中安装与Simulink版本匹配的Co-Sim文件,具体过程如下:

1在Sketch环境中打开OpentheSaber/Simulinkco-simulationtool出现如下图所示的界面.

2选择File->InstallCosimFiles...命令出现如下图所示的对话框.

3在该对话框中选择合适的MATLAB版本并单击Next按钮,出现如下图所示对话框:

4将需要的文件安装在MATLAB安装目录下的work目录下,共有三个文件,具体如下:

SaberSimulinkCosim.dll

SaberCosim.mdl

saber.jpg

接下来需要在Simulink中定义有Simulink仿真的那部分模型的输入输出接口.本文选择的是Saber软件自带的Saber/SimulinkRTW实例,位于$SABER_HOME\Saber\lib\tool_model\Simulink2SaberRTWexport_Matlab7_1\throttle_controller目录下,对该实例进行适当的修改,就可以用来实现Saber/Simulink的协同仿真.(这里需要注意MATLAB版本,不同的版本有不同的目录,都在$SABER_HOME\Saber\lib\tool_model\目录下),具体过程如下:

1.启动Simulink并打开实例文件THROTTLE_CONTROLLER.mdl,打开以后的文件如下图所示:

2.对该图进行修改,修改完毕后将原理图另存为throttle_controller_cosim.mdl如下图所示:

3.在Simulink中打开SaberCosim.mdl文件,文件位于MATLAB安装目录下的work目录,如下图所示:

4.将SaberCosim图标放入刚才修改另存的throttle_controller_cosim.mdl原理图,完成连线后如下图所示:

5.双击SaberCosim图标,设置输入输出端口数如下图所示:

6.选择Tools/RealTime/Option命令,弹出对话筐,在对话框中的左边选择Solver,在右边SolverOptions栏中设置Type为Variable-step,如下图所示,之后保存文件并关闭MATLAB程序.

接下来需要在Saber中定义输入输出接口以便进行协同仿真,具体过程如下

1.启动Sketch并打开throttle_control_system.ai_sch文件,如下图所示:

2.删除图中的throttle_controler符号,如下图所示:

3在Sketch启动SaberSimulinkCosimTool,并在其界面中选择File/ImportSimulink命令,在弹出的对话框中选择throttle_controller_cosim.mdl文件,SaberSimulinkCosimTool会自动为该MATLAB模型建立相关Saber符号,如下图所示:

注意:

上图中左上方的CosimStepSize(s)栏可以设置Saber和SIMULINK数据同步的步长,默认值为1ms,根据系统时间常数来设置.

4保存上一步创建的符号并利用Sketch中的Schematic/GetPart/BySymbolName命令将该符号放入第2步修改好的原理图中,完成连线后,将该图另存为throttle_control_system_cosim.ai_sch.

接下来可以在Sketch环境中运行Saber/SimulinkCo-Sim了,具体过程如下:

1.对throttle_control_system_cosim.ai_sch执行Design/Netlist命令,之后运行Design/Simulate命令,如果一切顺利,在这一过程中自动会启动MATLAB.

2.设置TR分析,如下图所示:

3.单击OK按钮,分析结束后可以在Scope中查看分析结果,这里就不贴出来了,有兴趣的网友可以自己去试试.

从整个Saber/Simulink协同仿真的过程看,关键是要合理的定义Simulink和Saber的接口,把握好这个环节,协同仿真就能正常工作了.在整个协同仿真过程中,Saber作为主机调用Simlink,从仿真设置到观察结果都可以在Saber环境中完成,Simulink只是做后台运行何处理.那么如果想在Saber中观察Simulink部分仿真的内部信号如误差信号、PID输出等,该如呢?

这就涉及到Saber和Simulink的另一种接口形式-静态数据交换,在Saber中是通过Saberlink接口实现的,在以后的博客中会有这方面的介绍.

 

今天我们来看看如何在Saber里观察CoSim过程中MATLAB部分的内部信号,在SaberScope中提供了一个接口(SaberLink),可以想接受MATLAB命令,同时也可以观察MATLAB中的仿真数据.接着以前Saber/SimulinkCosim的例子(如有不清楚的,可先看看《Saber/Simulink协同仿真(I)(II)(III)》),首先在MATLAB中修改throttle_controller_cosim.mdl原理图,添加两个输出数据端口如下图所示:

其次,设置输入端口的属性,将Saveformat设置为Array,并根据自己的喜好定义VariableName.再次运行以前的Co-Sim,并在Scope中打开仿真结果文件.启动SaberLink(Scope中的MATLAB图标),出现MATLAB命令行接口如下图所示:

在该命令行接口中输入MATLAB命令who并回车,结果如下图所示:

其中pid_out和error是前面所添加的MATLAB部分的内部信号.

用鼠标选中需要查看的信号(如pid_out),在scope中的空白处单击鼠标中键即可将信号显示在scope中,如下图所示:

从上图中观察可以发现,信号的横坐标有问题,并非我们仿真时设置的时间单位,要将该信号的横坐标转换为仿真时间,还需要进行下一步.继续选择tout变量并放置到scope中,如下图所示:

启动waveformcalculator工具,并将两个信号放入其中(注意:

先放置pid_out信号),然后执行wave/f(x)命令,之后执行GraphX命令(waveformcalculator)界面左上角的绿色波形图标),即可在scope中显示与仿真时间一致的MATLAB部分内部信号,如下图所示:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1