前言
Simulink中模型设置是关乎着整个模型的运行模式以及代码生成样式,不同的设置关乎着不同的结果,今天就给大家讲解下作者对整个模型设置的理解,有疑问的地方还需要大家多多指出,谢谢
使用版本:MATLAB 2022a
相关文章:
【Simulink专题】Simulink模型设置(二):诊断、硬件实现、模型引用、仿真目标
【Simulink专题】Simulink模型设置(三):代码生成
求解器
仿真时间:
开始时间与结束时间分别代表仿真模块的开始时间与停止时间,这部分设置中,指定仿真或生成的代码的开始时间,双精度值,以秒为单位,默认值为0.0,结束时间随着个人习惯设置而定,其中 inf 代表仿真停止时间为无限
注意:
1、 开始时间必须小于等于停止时间。
2、 具有初始条件的模块参数的值必须在指定的开始运行时间与初始条件设置相匹配。
3、 仿真时间与时钟时间不同。总仿真时间取决于模型的复杂度、求解器步长大小和计算机速度等因素。
求解器选择
求解器类型
选择用于模型仿真的求解器类型。包含:Variable-Step(变步长)、Fixed-Step(固定步长)。默认为可变步长。
当选择变步长求解器时,需要设置的参数如下:
1、 最大步长:解算器可以采用的最大步长;
2、 最小步长:解算器可以采用的最小步长;
3、 初始步长:解算器第一步采用的步长;
4、 相对容差:可接受的最大相对误差容限;
5、 绝对容差:可接受的最大绝对误差容限;
6、 形状保持:开启时使用微分信息提升积分的精确度;
7、 连续最小步数:当步长超出了最大步长或小于最小步长时称为步长违例,此选项用于设置连续出现步长违例的步数,一旦超过这个步数就报警或者报错。默认为1。
8、 过零控制:过零检测功能,对大部分模型而言,可以提升仿真速度,因为精确定位过零点,便可增大变步长解算器的步长。
9、 时间容差:时间容限,规定过零检测要在容限相关的时间范围内检测连续性,用于控制过零检测发生频度。
10、算法:指定一种过零检测的算法,分为自适应算法(Adaptive)与非自适应算法(Non-adaptive)
当选择固定步长求解器时,需要设置的参数如下:
1、 固定步长+:固定步长;
求解器
选择用于仿真或代码生成期间用于计算模型状态的求解器。
分类 | 步长 | 离散连续 | 显隐式 | 解算步数 | 阶数 |
---|---|---|---|---|---|
1 | 固定步长 | 离散 | 显式 | 单步 | 单阶 |
2 | 可变步长 | 连续 | 隐式 | 多步 | 多阶 |
对于固定步长,步长是固定常数,可变步长的步长在每一个采样点计算时都可能是变化的,具体增大还是减小取决于每个采样点模型状态值变化的快慢:当模型状态值变化很快时减小步长,反之增大步长。
模型用于生成嵌入式代码并下载到硬件中去实时执行,解算器必须采用固定步长,因为实时硬件的时钟源都是提供稳定频率的时钟源,无法提供变步长解算器的采样时刻计算方式。
固定步长求解器:
对于固定步长,没有误差控制,所以其计算精度完全靠步长大小来决定。步长越小,计算精度越高,花费的时间也越长。Simulink提供的算法从1阶欧拉算法到8阶Dormand-prince算法,在积分计算的复杂度上有区别。
可变步长求解器:
求解器 | 应用说明 |
---|---|
ode45(显式) | 推荐用于模型的首次仿真,该求解器具有最好的普遍适用性以及不错的精度。一般情况下比ode23具有更高的计算精度和速度,如果发现仿真运行速度极慢,很可能遇到了刚性模型,届时可以更换为隐式可变步长ode15s |
Ode23(显式) | 在误差要求不是特别严格或者模型中存在轻微刚性时具有比ode45更高的效率 |
ode113(显式) | 对于具有严格误差容限和计算密集的问题,此方法比ode45更适合更高效 |
ode15s(隐式) | 基于数值差分方程(NDFs)求解,产生雅克比矩阵,通常从阶数2开始尝试 |
ode23s(隐式) | 一步求解器,在粗差问题上比ode15s更高效。 |
ode23t(隐式) | 适用于无阻尼的中度刚性模型求解 |
ode23tb(隐式) | 与ode23s类似 |
数据导入/导出
1、输入:在仿真开始之前从工作区加载输入数据
2、初始状态:在仿真开始之前从工作区加载模型初始状态
3、时间:在仿真期间将仿真时间数据保存到指定的变量
4、状态:在仿真期间将状态数据保存到指定的变量
5、输出:在仿真期间将信号数据保存到指定的变量
6、最终状态:在仿真结束时的模型状态保存到指定的变量
7、格式:选择用于保存状态、输出和最终状态数据的数据格式
8、保存最终工作点:仿真结束时,similink会将完整的模型状态集保存到指定的MATLAB变量
9、信号记录:全局启用或禁用模型的信号日志记录
10、数据存储:全局启用或禁用模型的Datastores Memory模块变量的日志记录
11、将数据集数据记录到文件:将数据记录到MAT文件中
12、单一仿真输出:启用sim命令的单输出的时间
13、记录间隔:设置日志记录的时间间隔
14、在仿真数据检查其中记录所记录的goon工作区数据:指定在仿真暂停或完成时是否向仿真数据检查器发送记录的数据
数学和数据类型
1、非正规数的模拟行为:为算术运算的非正常结果指定所需的行为。需要定点设计器许可证。
2、使用针对行优先数组布局优化的算法:启用用于行主格式代码生成的算法和用于模拟的相应行主算法。
3、数据类型未定时默认使用的类型:如果Simulink®软件在数据类型传播期间无法推断信号的数据类型,则指定用于继承数据类型的默认数据类型。
4、使用除法进行定点净斜率计算:定点设计器软件在满足简单性和准确性的条件下,采用除法处理净斜率进行净斜率计算。
5、增益常熟继承无损的内置整数类型:当满足某些条件时,增益参数的数据类型为内置整数。
6、使用浮点乘法处理净斜率校正:定点设计器软件使用浮点乘法来执行浮点到定点转换的净斜率校正。
7、继承小于单精度的浮点输出类型:当输入是小于单个精度的浮点数据类型时,指定所需的继承输出数据类型行为。
8、应用程序生命周期(天):指定一个包含块的应用程序在计时器溢出之前应该能够执行多长时间(以天为单位),块取决于经过的时间或绝对时间。
9、将逻辑信号实现为布尔数据:控制生成逻辑信号的块的输出数据类型。