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

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显示模块
  • 总结

【Simulink仿真与调试】新手入门第二十三天_第1张图片

1.仿真配置

1.1求解器的概念

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

1.2仿真的设置

在使用Simulink进行动态系统仿真时,用户可以直接将仿真结果输出到MATLAB基本工作区中,也可以在仿真启动时刻从基本工作区中载入模型的初始状态,所有这些都是在仿真配置的工作区属性对话框中完成的。
构建好一个系统的模型后,在运行仿真前,必须对仿真参数进行配置。仿真参数的设置包括:仿真过程中的仿真算法、仿真的起始时刻、误差容限及错误处理方式等的设置,还可以定义仿真结果的输出和存储方式。
1.Solver(算法)的设置
该部分主要完成对仿真的起止时间,仿真算法类型等的设置,如下图所示。
【Simulink仿真与调试】新手入门第二十三天_第2张图片
2.DataImport/Export(数据输入/输出)的设置
仿真时,用户可以将仿真结果输出到MATLAB工作区中,也可以从工作区中载
入模型的初始状态,这些都是在仿真配置中的DataImport/Export中完成,如下图所示。该部分有4个选项区
【Simulink仿真与调试】新手入门第二十三天_第3张图片
3.Diagnostics/Optimization/Real-TimeWorkshop项的设置
Diagnostics:主要设置用户在仿真的过程中会出现各种错误或报警消息。用户可以在该项中进行适当的设置来定义是否需要显示相应的错误或报警消息。
Optimazation:该项主要让用户设置影响仿真性能的不同选项:比如说选择Blockreductionoptimization选项表示用合成模块代替模块组,从而加快模型的执行。
Real-timeWorkshop:该项的设置和选项影响实时工作间从模型中生成代码的方式。一般采用默认设置,这里就不作说明。设置好仿真参数后,就可以启动仿真了。
提示:启动仿真的方法有两种,一种是在模型窗口以菜单方式直接启动仿真,一种是在MATLAB命令行窗口采用命令行方式启动仿真。

1.3诊断设置

如果模型在仿真过程中有错误产生,则Simulink在终止仿真的同时会打开仿真诊断查看器,如下图所示。
【Simulink仿真与调试】新手入门第二十三天_第4张图片

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命令,即可打开调试器窗口,如下图所示。
【Simulink仿真与调试】新手入门第二十三天_第5张图片

3.2调试器的图形用户接口

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

3.3调试器的命令行接口

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

3.4调试器命令

右表列出了调试器命令。表中的“重复”列表示在命令行中按下Return键时是否可以重复这个命令;“说明”列则对命令的功能进行了简短的描述。
【Simulink仿真与调试】新手入门第二十三天_第7张图片

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选项面板来显示调试器状态。


总结

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

你可能感兴趣的:(matlab编程,matlab,开发语言)