Simulink学习笔记之模型的配置仿真

Simulink学习笔记之模型的配置仿真

 

一、解算器Solver

要仿真动态系统,可以计算其在指定时间跨度内连续时间步的状态。此计算使用系统模型提供的信息。时间步是发生计算的时间间隔。此时间间隔的大小称为步长大小。以这种方式计算模型状态的过程称为解算模型。没有任何一种模型解算方法能适用于所有系统。Simulink® 提供了一组程序,称为求解器。每个求解器代表一种特定的模型解算方法。

求解器运用一种数值方法来解算代表模型的一组常微分方程。通过这种计算,它确定下一个仿真步的时间。在解算此初始值问题的过程中,求解器还满足您指定的准确性要求。

数学家们开发出了多种数值积分方法来解算表示动态系统连续状态的常微分方程 (ODE)。提供了一套全面的固定步长和可变步长连续求解器,其中每个求解器实现一种特定的 ODE 解法(请参阅比较求解器)。在模型配置参数的 Solver 窗格中选择求解器。

Solver是Simulink的重要组成部分,集成不同的数值解算方法。解算器有如下分类。

求解器类型

显式/隐式

离散

连续

变阶

固定步长

显式

不适用

Fixed-Step Continuous Explicit Solvers

不适用

隐式

不适用

Fixed-Step Continuous Implicit Solvers

不适用

可变步长

显式

Variable Step Solvers in Simulink

Variable-Step Continuous Explicit Solvers

单阶与变阶连续求解器

隐式

 

Variable-Step Continuous Implicit Solvers

单阶与变阶连续求解器

 

1、固定、可变步长解算器

步长为两个相邻点之间的时间间隔。固定和可变步长没有绝对的优劣势。

注意:在嵌入式代码中,需要采用固定步长解算器

为方便理解,做如下实验:

(1)搭建一个简单的正弦波形仿真模型

(2)可变步长的波形图

对其进行如下设置:

其波形如下图所示

(3)改为固定步长

更改配置,如下图所示,改为固定步长,步长为0.1

生成的sin图形为下图所示

 

 

2、连续与离散求解器

Simulink 同时提供连续和离散求解器。

两组求解器都包括离散求解器和连续求解器。离散和连续求解器依赖于模型的模块来计算任何离散状态的值。定义离散状态的模块负责计算这些状态在每个时间步的值。

连续求解器运用数值积分方法来计算模块定义的连续状态。

选择求解器时,首先要确定是要使用离散求解器,还是要使用连续求解器。

如果模型没有连续状态,Simulink 将切换到固定步长离散求解器或可变步长离散求解器。

如果模型只有连续状态,或者同时具有连续状态和离散状态,根据模型的动态特性从其余的求解器选项中选择一种连续求解器。否则,将产生错误。

连续求解器使用数值积分方法,根据模型在之前的时间步的状态和状态导数来计算模型在当前时间步的连续状态。连续求解器依赖单个模块来计算模型在每个时间步的离散状态值。

离散求解器主要用于解算纯离散模型。它们只计算模型的下一个仿真时间步。执行这种计算时,它们依赖于模型中的每个模块来更新其各个离散状态。它们不计算连续状态。

 

注意

您必须使用连续求解器来解算同时包含连续和离散状态的模型,因为离散求解器无法处理连续状态。另一方面,如果您对没有状态或只具有离散状态的模型选择连续求解器,Simulink 软件将使用离散求解器。

3、显示、隐示解算器

可以用以下方程表示显式系统:

˙x=f(x)

对于任何给定的 x 值,您可以通过代换 f(x) 中的 x 并求解该方程来计算 ˙x

Fx,x)=0

形式的方程被认为是隐式的。对于任何给定的 x值,您必须求解此方程来计算 x。线性隐式系统可以用以下方程表示

M(x).˙x=f(x)

M(x) 称为质量矩阵,f(x)是外力函数。当您在模型中使用物理建模模块时,系统将变成线性隐式系统。

虽然使用隐式或显式连续求解器都可以解算所有这些系统,但隐式求解器专为解算刚性问题而设计。显式求解器用于解算非刚性问题。对于常微分方程问题,如果所需的解变化缓慢,但存在变化很快的较接近解,则称为刚性问题。数值方法必须执行较小的时间步来解算此类系统。刚度涉及到效率问题。系统的刚度越强,显式求解器执行计算的时间越长。刚性方程组具有缓慢变化和快速变化两种连续动态。

与显式求解器相比,隐式求解器为振动行为提供更高的稳定性。但是,隐式求解器的计算开销也更高。它们在每个时间步使用类牛顿法生成 Jacobian 矩阵并解算一组代数方程。

4、单步、多步解算器

Simulink 求解器库中提供了单步和多步求解器。单步求解器使用上一个时间点 

的解以及 tn 与 tn-1 之间的多个点的导数值来估算 

。这些点是子时间步。

多步求解器使用前面几个时间步的结果来计算当前解。Simulink 提供一个显式多步求解器 ode113 和一个隐式多步求解器 ode15s。二者都是可变步长求解器。

5、变阶解算器

这种区分基于求解器解算方程组时使用的阶次。求解器库中包含两个变阶求解器 

ode15s和 ode113。它们使用多阶来解算方程组。具体来讲,隐式可变步长 ode15s求解器使用一阶到五阶方程,而显式可变步长 ode113求解器使用一阶到十三阶方程。对于 ode15s,您可以通过 Maximum Order参数限制应用的最高阶次。

6、解算器的选用

求解器通过使用模型提供的信息,计算动态系统在指定时间范围内连续时间步的状态,从而对动态系统进行仿真。根据系统模型计算系统连续状态的过程称为解算模型。没有任何一种模型解算方法可满足所有系统需要。

 

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Simulink中,可以使用"模型引用"(Model referencing)功能来实现多个模型仿真模型引用可以帮助我们将大型复杂的系统划分为多个模块化的子系统,每个子系统可以独立开发和测试。具体步骤如下: 1. 创建主模型:首先,我们需要创建一个主模型,用于整合多个子模型。可以通过在Simulink中新建一个空模型开始。 2. 添加模型引用:在主模型中,可以通过右键点击空白处,选择"添加"->"模型引用",然后选择需要引用的子模型。可以一次添加多个子模型。 3. 配置参数:在主模型中,可以选择每个子模型的参数和输入信号。对于子模型的参数,可以在主模型中进行修改;对于输入信号,可以在主模型中创建对应的输入端口。 4. 连接信号:根据需要,可以在主模型中连接不同子模型之间的信号。可以使用Simulink中的信号线进行连接。 5. 运行仿真:完成上述步骤后,可以运行主模型仿真,从而同时运行和联动多个子模型。 需要注意的是,在模型引用功能下,每个子模型在运行时保持独立状态,可以独立调试和修改。同时也可以进行并行仿真,提高仿真效率。如果需要更改模型的结构或参数,可以修改子模型而无需修改主模型。 总结来说,通过使用Simulink模型引用功能,我们可以方便地实现多个模型仿真,提高开发和测试的效率。以上为基本步骤,具体操作可以根据实际情况进行调整和改进。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

义薄云天us

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值