Simulink 0基础入门教程 P3 仿真时间、求解器、数据类型、delay模块介绍

目录

1. 模型仿真时间的设置

2. 求解器 Solver 的设置

3. 数据类型的设置和显示

4. delay模块的使用


本篇文章搭配如下视频进行介绍,读者可以以视频为主,文章为辅,视频讲解更具体更清晰。

CSDN观看视频体验一般,建议读者直接跳转到B站观看视频。

欢迎添加VX happyyuhangboy 进行更多资料的分享和建模经验的交流。

Simulink 0基础入门教程 P3 仿真时间、求解器、数据类型、delay模块介绍

B站视频链接如下:

Simulink 0基础入门教程 P3 仿真时间、求解器、数据类型、delay模块介绍

1. 模型仿真时间的设置

模型的仿真时间,可以理解为模型在仿真系统中被执行的时长,比如10s,但是由于matlab进行模型仿真的速度比较快(模型不是特别复杂的情况下),因此10s的仿真时间,在simulink中只需要非常短的时间就运行完了,这也是仿真的高效率的优点。如果模型很复杂,运算量很大,那么实际仿真的时间超过10s也是有可能的。

仿真时间的设置,根据开发人员自己的需要进行设置,不影响生成的代码。

在如下位置可设置模型运行的时间:

也可以在模型的设置页面进行设置:

如下设置模型的仿真时间为10s,scope中显示的最大时间也是10s

2. 求解器 Solver 的设置

求解器Solver的设置,对模型仿真的结果影响很大,每个新建的模型,都应进行求解器的配置,在模型的配置页面的Solver标签下,都是关于这部分的配置。一般关注Type、Solver、Fixed-step size三个配置项即可。

求解器的类型Type有变步长和定步长两种选择,一般选择定步长。在进行嵌入式软件开发的时候,模型开发的应用层软件一般为周期函数,在Task中按照固定周期进行调用的,因此,使用定步长更符合实际情况,也容易让开发者进行调试和仿真。

如果选择变步长,则Matlab会根据模型的计算情况,兼顾模型仿真的精度和效率,自行决定步长的大小。

Type后面的Solver是选择具体的求解算法,这里其实有离散(discrete)和连续的两种solver,如果选择了离散类型,则一些连续模块不可使用,一般选择auto即可。

选择Type为Fixed-step后,会出现Fixed-step size的配置项,即仿真步长,可以理解为函数(模型)的调用周期。以嵌入式软件开发为例,如果你开发的模型是一个周期函数,则此处的仿真步长就是函数被调用的周期。例如仿真步长设置为0.1s,那么每100ms,这个模型会被执行一次。

3. 数据类型的设置和显示

如同C语言中的数据类型有int / float / unsigned int等,Simulink中也有类似的数据类型,常数模块或者运算模块都可以设置其输出的数据的数据类型。Simulink中的数据类型,根据嵌入式系统的特点,相比于C语言,更加细化了。

simulink中常用的数据类型有:

浮点型:double / single

布尔型:boolean

无符号整型:uint8 / uint16 / uint32 / uint64

有符号整型:int8 / int16 / int32 / int64

定点数据类型:fixdt(1,16)等

single类似于C语言中的float,为32位浮点数。

无符号整型中的uint8,表示该数据在内存中占用的长度为8个bit,所以其可以表示的范围是0~255,其他无符号类型类似。

有符号整型中的int8,表示该数据在内存中占用的长度为8个bit,其可表示的范围为-128~127.

定点数据类型,用整型数表示有小数的数据,如果软件使用的芯片支持浮点运算,则可以不必关注和使用定点数据类型。

可以看到有符号和无符号整型数,在Simulink中有了更加细化的分类,我们在进行嵌入式软件开发时,由于硬件的资源有限,应当根据实际软件的需要,选择更合理的数据类型,兼顾需求和资源的占用。

所有的模块都应当进行数据类型的设置,或者经过检查。包括constant和各类运算模块。

开发人员应养成良好的建模习惯,建模时将所有信号的数据类型显示出来,可以更方便的观察和纠错。在模型空白处右键,如下菜单处勾选即可。

4. delay模块的使用

delay模块的作用是将输入信号延迟指定个步长后再输出。

如下图所示,双击delay模块,可以设置其Delay length和Initial condition,Delay length即对输入信号延迟的步长数量,Initial condition即delay模块的初始值,因为delay模块是对输入信号延迟输出,那么当软件第一次运行时,此时应输出的值,即由此处的初始值决定。

如下的例子,输入信号是一个阶跃信号,信号值在1s时跳变为1,delay模块的Delay Length为2,模型的step-size为0.1s,因此输出相比于输入应延迟0.2s,通过scope观测到的结果符合这个规律。

delay模块生成代码后对应着全局变量。

delay模块的一个常用功能,是用来搭建累加计数器,如下模型可实现每个仿真步长输出的数据加1的效果。

delay模块的输出,即上一次的加法器输出值,在本次运行,加1后,再输出,并作为delay模块的输入,因此,模型每次运行,都是在上一次的累加和的基础上再加1并输出。scope观测的结果如下:

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值