Simulink仿真与调试

  • 1.仿真配置
    • 1.1求解器的概念
    • 1.2仿真的设置
    • 1.3诊断设置
  • 2.优化仿真性能
    • 2.1提高仿真速度
    • 2.2提高仿真精度
  • 3.模型调试
    • 3.1启动调试器
    • 3.2调试器的图形用户接口
    • 3.3调试器的命令行接口
    • 3.4调试器命令
  • 4.显示模型信息
    • 4.1显示模型中模块的执行顺序
    • 4.2显示模块
  • 总结

1.仿真配置

1.1求解器的概念

Simulink求解器是Simulink进行动态系统仿真的核心所在,因此欲掌握Simulink系统仿真原理,必须对Simulink的求解器有所了解。
离散系统的动态行为一般可以由差分方程描述。众所周知,离散系统的输入与输出仅在离散的时刻上取值,系统状态每隔固定的时间才更新一次;而Simulink对离散系统的仿真核心是对离散系统差分方程的求解。因此,Simulink可以做到对离散系统的绝对精确(除去有限的数据截断误差)。
与离散系统不同,连续系统具有连续的输入与输出,并且系统中一般都存在着连续的状态设置。连续系统中存在的状态变量往往是系统中某些信号的微分或积分,因此连续系统一般由微分方程或与之等价的其它方式进行描述。这就决定了使用数字计算机不可能得到连续系统的精确解,而只能得到系统的数字解(即近似解)。

1.2仿真的设置

在使用Simulink进行动态系统仿真时,用户可以直接将仿真结果输出到MATLAB基本工作区中,也可以在仿真启动时刻从基本工作区中载入模型的初始状态,所有这些都是在仿真配置的工作区属性对话框中完成的。
构建好一个系统的模型后,在运行仿真前,必须对仿真参数进行配置。仿真参数的设置包括:仿真过程中的仿真算法、仿真的起始时刻、误差容限及错误处理方式等的设置,还可以定义仿真结果的输出和存储方式。
1.Solver(算法)的设置
该部分主要完成对仿真的起止时间,仿真算法类型等的设置,如下图所示。

2.DataImport/Export(数据输入/输出)的设置
仿真时,用户可以将仿真结果输出到MATLAB工作区中,也可以从工作区中载
入模型的初始状态,这些都是在仿真配置中的DataImport/Export中完成,如下图所示。该部分有4个选项区

3.Diagnostics/Optimization/Real-TimeWorkshop项的设置
Diagnostics:主要设置用户在仿真的过程中会出现各种错误或报警消息。用户可以在该项中进行适当的设置来定义是否需要显示相应的错误或报警消息。
Optimazation:该项主要让用户设置影响仿真性能的不同选项:比如说选择Blockreductionoptimization选项表示用合成模块代替模块组,从而加快模型的执行。
Real-timeWorkshop:该项的设置和选项影响实时工作间从模型中生成代码的方式。一般采用默认设置,这里就不作说明。设置好仿真参数后,就可以启动仿真了。
提示:启动仿真的方法有两种,一种是在模型窗口以菜单方式直接启动仿真,一种是在MATLAB命令行窗口采用命令行方式启动仿真。

1.3诊断设置

如果模型在仿真过程中有错误产生,则Simulink在终止仿真的同时会打开仿真诊断查看器,如下图所示。

2.优化仿真性能

影响仿真速度的因素很多,这里给出可能减慢仿真速度的一些原因,用户可以根据自己的模型试着改变某些设置,也许可以改进模型的仿真性能。

2.1提高仿真速度

影响仿真速度的因素很多,主要有以下几个情况:
当模型中包含了MATLABFcn模块时,在仿真的每个时间步上,Simulink都会调用MATLAB解释器,这样就大大减慢了仿真速度。因此,只要有可能,可以使用内嵌的Fcn模块或MathFunction模块,而避免使用MATLABFcn模块。
M文件的S函数也会使Simulink在每个时间步上调用MATLAB解释器,可以考虑把S函数转换为子系统或者转换为C-MEX文件的S函数。

2.2提高仿真精度

若要检查模型的仿真精度,可先在一段合理的时间范围内运行一次仿真,然后,或者把相对误差减小到1e-4(缺省时为1e-3),或者减小绝对误差,再重新运行一次仿真,比较这两次的仿真结果。如果仿真结果没有明显的差异,则可以确信这个仿真结果是收敛的。
如果模型仿真在初始时刻就错过了模型中的某些重要动作,则应减小初始步长,以保证仿真过程不会越过这些重要动作。
如果仿真结果在一段时间内不稳定,则有可能是因为系统本身可能就是不稳定的。
如果用户使用了ode15s算法,则可能需要把最高阶数限制到2,或者试着使用ode23s算法。

3.模型调试

3.1启动调试器

Simulink调试器有两种模式:图形模式(GUI)和命令行模式。若要在GUI模式下启动调试器,可首先打开希望调试的模型,然后选择模型窗口中Simulation菜单下的Debug命令,即可打开调试器窗口,如下图所示。

3.2调试器的图形用户接口

当在GUI模式下启动调试器时,可单击调试器工具栏中的“开始/继续”按钮来开始仿真,Simulink会在执行的第一个仿真方法处停止仿真,并在SimulationLoop选项面板中显示方法的名称,同时在模型方块图中显示当前的方法标注,如下图所示。

3.3调试器的命令行接口

在调试器的命令行模式下,用户可以在MATLAB命令行窗口中键入调试器命令来控制调试器,也可以使用调试器命令的缩写方式控制调试器。用户可以通过在MATLAB命令行中输入一个空命令(也就是按下Return键)来重复某些命令。
当用命令行模式启动调试器时,调试器不是在调试器窗口中显示方法名称,而是在MATLAB命令行窗口中显示方法名称。下图就是在MATLAB命令行窗口中输入sldebug’S12_2’命令后显示的调试器信息。

3.4调试器命令

右表列出了调试器命令。表中的“重复”列表示在命令行中按下Return键时是否可以重复这个命令;“说明”列则对命令的功能进行了简短的描述。

4.显示模型信息

4.1显示模型中模块的执行顺序

在模型初始化阶段,Simulink在仿真开始运行时就确定了模块的执行顺序。在仿真过程中,Simulink支持按执行顺序排列的这些模块,因此,这个列表也就被称为排序列表。
在GUI模式下,调试器在它的SortedList面板中显示被排序和执行的模型主系统和每个非纯虚子系统,每个列表列出了子系统所包含的模块,这些模块根据模块的计算依赖性、字母顺序和其用户模块的排序规则进行排序。
这个信息对于简单系统来说可能无所谓,但它对于大型、多速率系统来说是非常重要的,如果系统中包含了代数环,那么代数环中涉及到的模块都会在这个窗口中显示出来。

4.2显示模块

为了在模型方块图中确定指定索引值的模块,可在命令提示符中输入bshows:b。这里,s:b是模块的索引值,bshow命令用来打开包含该模块的系统(如果需要),并在系统窗口中选择模块。
(1)显示模型中的非纯虚系统
Simulink中的systems命令用来显示一列被调试模型中的非纯虚系统。
(2)显示模型中的非纯虚模块
Simulink中的slist命令用来显示一列模型中的非纯虚模块,显示列表按系统分组模块。
(3)显示带有潜在过零的模块
Simulink中的zclist命令用来显示在仿真过程中可能出现非采样过零的模块。
(4)显示代数循环
Simulink中的ashow命令用来高亮显示特定的代数环或者包括指定模块的代数环。
(5)显示调试器状态
在GUI模式下,用户可以利用调试器的Status选项面板来显示调试器状态。


总结

以上就是今天学习的内容,坚持打卡!

【Simulink仿真与调试】新手入门第二十三天相关推荐

  1. simulink仿真及代码生成技术入门到精通_Simulink仿真零基础入门到精通实用教学教程 自学全套...

    Simulink仿真零基础入门到精通实用教学教程 自学全套,以教程文字为主,毕业论文和报告均可以借鉴. Simulink是电气工程必学的模型仿真专业工具软件,非常的实用.小编在全网中搜索都没有找到非常 ...

  2. simulink仿真及代码生成技术入门到精通_行星排混动从入门到精通(结构)

    ​希望关注本专栏的朋友,也能一并关注微信公众号. ​原文地址:行星排混动从入门到精通(结构) 行星齿轮机构结构在我们的行业生产中有着广泛的运用.如:AT变速箱(带变矩器的那种).电机减速器.后桥差速器 ...

  3. 第一章 - 新手入门 - 第二课 Arduino 简介

    前言 Hello 大家好,你们心爱的马老师又满血回来了,今天我们开始Arduino系列大讲堂第一章.第二讲,也就是咱们的第二课:Arduino 简介,不知道大家还有没有印象,我们上一节课讲的啥,有没有 ...

  4. Avalonia跨平台入门第二十三篇之滚动字幕

    在前面分享的几篇中咱已经玩耍了Popup.ListBox多选.Grid动态分.RadioButton模板.控件的拖放效果.控件的置顶和置底.控件的锁定.自定义Window样式.动画效果.Expande ...

  5. MC新手入门(十三)------ 添加游戏角色

    我们使用之前介绍的游戏开发工具MC来添加游戏角色.下面我们添加两个角色,一个为动态图片的角色,一个为静态图片的角色.如图4-1-1-1: 图4-1-1-1(左静右动) 首先,准备两组图片放在MC的根目 ...

  6. Simulink仿真入门到精通(五) Simulink模型的仿真

    本系列教程是根据孙忠潇编著的<<Simulink仿真及代码生成技术入门到精通>>学习笔记. 目录 Simulink仿真入门到精通(一) Simulink界面介绍 Simulin ...

  7. Simulink仿真入门到精通(四) Simulink子系统

    本系列教程是根据孙忠潇编著的<<Simulink仿真及代码生成技术入门到精通>>学习笔记. 目录 Simulink仿真入门到精通(一) Simulink界面介绍 Simulin ...

  8. 适合新手入门的漏洞调试与分析—CVE-2010-3333

    这是第二次在tools发帖,为了响应管理猿的号召,也为了爱好应用程序安全新手的需要.在此,我初步研究了一下微软3333漏洞的成因,并试着定位到了样本中的shellcode,现在就对这个入门级的漏洞做个 ...

  9. Simulink仿真入门到精通(十) S函数

    Simulink仿真入门到精通(十) S函数 10.1. S函数的概述 10.2 S函数的类型 10.3 S函数的要素 10.4 S函数的组成及执行顺序 10.5 使用不同的语言编写S函数 10.5. ...

最新文章

  1. early EOF fatal: index-pack failed
  2. 检查用户显示器的分辨率
  3. DSP平台实现图像识别算法总体来说不如嵌入式?
  4. 5.TCP和UDP的区别
  5. csrf漏洞防御方案_变量覆盖漏洞利用及防御方案
  6. docker --- 使用docker-compose.yml生成redis,并连接redis-cli
  7. python教程--__init_.py的作用
  8. linux登录交换机备份脚本,如何从Linux上备份和恢复许多Cisco路由器和交换机的配置?...
  9. (转)Docker 基础 : Dockerfile
  10. oracle 11.2.0.4 make 报错,linux7安装oracle11.2.0.4RAC注意事项
  11. python读取udp数据包内容_python – 解析UDP数据包
  12. 通过路由器高速使用校园网(sdust)
  13. 高斯混合模型(GMM)实现和可视化
  14. Python入门到精通(4):关系与逻辑表达式
  15. 决胜b端产品经理学习笔记01(持续更新版)
  16. 盘点76个当下全球免费、优质机器学习数据集获取资源
  17. 百年孤独 - 那令人震撼的死亡(1)
  18. 苹果cms vod_list修改
  19. html5国际证书,免费获得微软MCSD证书赶快行动吧!
  20. 子元素自动填充父容器, 并且会自动折行- dispaly: grid

热门文章

  1. oracle财务云案例,Oracle ERP云助力财务团队提升业务弹性
  2. 防火墙内外网隔离实例
  3. multisim14 电流探针在哪儿
  4. 数字孪生白皮书_透过数字孪生白皮书2020,看平行世界的当下与未来
  5. php 调用微信收货地址,php微信自动获取收货地址api用法实例详解
  6. python程序打包为exe,并压缩体积最小!
  7. SqlServer数据库置疑的解决办法
  8. 阿里大文娱深耕科幻片赛道,上线新片《芬奇》
  9. elasitcsearch从安装到集成springboot
  10. 2023 Data数据分析岗前景如何?0基础学习数据分析成功上岸,3个月掌握令人惊叹的sql能力!...