Saber与Matlab联合仿真的操作过程介绍

电子说

1.3w人已加入

描述

一、 概述

我们知道,Saber软件在一开始就提供了与Matlab/Simulink的联合仿真功能,工程师们可以在Simulink中验证设计中的软件部分,同时在Saber中验证设计的硬件部分,从而实现软硬件设计验证的完美统一。

联合仿真是通过SaberHDL仿真器和Simulink之间的接口实现的,它允许用户进行交互式设计仿真。Saber协同仿真接口提供以下功能:

1、SaberRD和Simulink仿真算法的耦合。

2、提供用户界面,支持从Saber模型自动生成MAST模板和SaberRD符号。

Saber联合仿真接口是通过仿真引擎之间的同步通信方法启用的。在同步协同仿真方法中,每个仿真引擎在时间上独立进行,并在预定的周期内交换数据,称为协同仿真步长(dt)。

Saber与Simulink协同仿真的采用的同步方法具有以下优点:Simulink用户接口在仿真期间是活动的和可访问的,当Simulink端需要时能够有效采样。

本文通过随附的示例介绍Saber与Matlab联合仿真的操作过程。我们使用的SaberRD版本为2019.06,Matlab版本为2018b。

二、 示例简介

示例文件为throttle_controller.rar压缩包。解压后内容如下:

数据交互

其中:

1、Matlab_ini文件是该工程对应的Saber算法工程文件

2、Only_Saber是使用Saber算法实现的仿真工程,用于比对。

3、Saber_Matlab_ini是Saber和Saber联合仿真初始工程,需要将Saber算法导入Saber仿真工程。

4、Saber_Matlab_ini_final是Saber和Saber联合仿真最终工程,可以实现Saber和Matlab的联合仿真。

5、Saber_use_model_form_Matlab_export是将Simulink模型转换成Saber模型后的Saber工程,该工程仿真时不依赖于Simulink,独立调用Saber仿真器。

三、 Only_Saber工程演示

在Only_Saber工程中,controller_Saber算法由Saber实现,工程文件如下:

数据交互

打开throttle_control_system_saber.ai_dsn工程如下:

数据交互

controller_Saber 模型如下:

数据交互

对throttle_control_system_Saber.ai_dsn电路进行0s~20s瞬态仿真,打开Contrl_out(即controller_Saber模型输出)输出结果如下:

数据交互

四、 Saber和Simulink联合演示

第一步:设置Matlab工作路径

打开Matlab2018b,点击“设置路径”,在弹窗中点击“添加文件夹”,输入“Saber_Matlab_ini”工程所在目录,点击“选择文件夹”如下:

数据交互

下图中框起来的路径即为工作路径,点击“保存”,如下图所示:

数据交互

第二步:在Saber中配置Matlab接口

打开SaberRD2018.09软件,在model菜单中,打开Matlab配置对话框,如下图:

数据交互

在“Simulink Cosimulation Tool”对话框中选择 “edit-Matlab-Setup”,如下图所示:

数据交互

如下图,选择Simulink 9.5版本,Matlab install Root选择所在电脑安装的安装路径,Matlab Work Directory选择Matlab工作路径。设置完成后点击“OK”。

数据交互

选择Edit-Matlab-Start

数据交互

此时在Matlab work路径下会生成如下文件:

数据交互

设置好后,关闭对话框。

第三步:打开Saber算法文件

打开“C:UsersGT_yqDesktopthrottle_controllerSaber_Matlab_ini”路径下的“THROTTLE_CONTROLLER.mdl”文件,如下图:

数据交互

打开后如下图所示:

数据交互

第四步:添加Sabercosim模块

打开“C:Program FilesMATLABR2018bwork(Matlab2018b软件安装路径)”路径下的SaberCosim模块,并拖放到“C:UsersGT_yqDesktop throttle_controller Saber_Matlab_ini(工程所在目录)”下。在仿真工程左侧对话框中找到SaberCosim模块,双击打开,并拖放到“throttle_controller”内,如下图所示:

数据交互

数据交互

双击Sabercosim,设置“Number of input signals”为1、“Number of output signals”为3,点击“OK”,如下图所示:

数据交互

第五步:添加scop

在“throttle_controller”内点击“Library Browser(即图标)”打开“Saber Library Browser”对话框,在搜索框搜索“scop”,并将其拖放到“throttle_controller”内,如下图所示:

数据交互

第六步:添加demux

在“throttle_controller”内点击“Library Browser(即数据交互图标)”打开“Saber Library Browser”对话框,找到“demux”,并将其拖放到“throttle_controller”内,如下图所示:

数据交互

双击demux,设置“Number of outputs”为3,点击“OK”,如下图所示:

数据交互

第七步:保存

按照下图所示电路连接,连接完成后保存。

数据交互

如果算法工程不在Saber仿真工程路径下,将如下四个文件拷贝到响应仿真工程路径下。

Demo中可以解压Saber_Matlab_ini压缩包,将文件拷贝进去。

数据交互

第八步:打开Saber_Matlab_ini下的工程

在Saber中打开“Saber_Matlab_ini”文件夹中的电路,如下图所示:

数据交互

此时工程中没有算法,需要操作关联Simulink算法。

数据交互

在“Model”选项卡中点击数据交互图标,在弹出的对话框中点击新建,再点击图标,选择“THROTTLE_CONTROLLER.mdl”文件,点击打开,如下图所示:

数据交互

可以看到如下界面,已经打开了“THROTTLE_CONTROLLER.mdl”文件,保存后点击图标数据交互放置器件,如下图所示:

数据交互

绘制最终电路如下,保存并进行仿真。

数据交互

第九步:运行仿真

在Simulate选项卡中设置0s~2s瞬态仿真,仿真步长1us,如下图所示:

数据交互

运行仿真,仿真结果如下所示:

数据交互

数据交互

五、 其它说明

Saber与Simulink协同仿真也有一定的不足:

1、仿真器之间没有错误控制。

2、对于连续或非周期的系统,仿真中需要在Saber与Simulink中设定足够小的相同仿真步长,以实现仿真的数据交互。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
评论(0)
发评论
jf_96290902 06-20
0 回复 举报
大神,求原文件!自己操作的时候在连接模块时saber总是显示没有输入口,不是很清楚怎么设置 收起回复

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分