主要内容

动态系统中的仿真阶段

模型编译

仿真的第一阶段发生在打开系统模型并对模型进行仿真时。在Simuli金宝appnk中®编辑器中,单击运行。运行仿真将导致Simulink引擎调用模型编译器。金宝app模型编译器将模型转换为可执行的形式,这个过程称为编译。特别是编译器:

  • 计算模型的块参数表达式以确定它们的值。

  • 确定信号属性,例如名称、数据类型、数字类型和维度,这些不是由模型显式指定的,并检查每个块是否可以接受连接到其输入的信号。

  • 将源信号的属性传播到它驱动的块的输入,以便计算块中先前未指定的属性。

  • 执行块缩减优化。

  • 通过将虚拟子系统替换为它们所包含的块(参见解决比较)。

  • 通过基于任务的排序确定块执行顺序。

  • 确定模型中未显式指定采样时间的所有块的采样时间(参见传播如何影响继承的样本时间)。

这些事件本质上与更新图表时发生的事件相同(更新图和运行仿真)。不同之处在于,Simulink软件将模型编译作为模型仿金宝app真的一部分开始,其中编译直接导致链接阶段,如链接阶段。相反,您可以将显式模型更新作为对模型的独立操作来启动。

当您编译模型或模型层次结构时,您可以通过单击取消进度条旁边的按钮。

链接阶段

在这个阶段,Simulink引擎为工作金宝app区域(信号、状态和运行时参数)分配执行框图所需的内存。它还为存储每个块的运行时信息的数据结构分配和初始化内存。对于内置块,块的主要运行时数据结构称为SimBlock。它存储指向块的输入和输出缓冲区以及状态和工作向量的指针。

方法执行列表

在链接阶段,Simulink引擎还创建方法执行金宝app列表。这些列表列出了调用模型的块方法以计算其输出的最有效顺序。在模型编译阶段生成的块执行顺序列表用于构造方法执行列表。

块优先级

您可以为块分配更新优先级。高优先级块的输出方法在低优先级块的输出方法之前执行。只有当这些优先级与它的块执行顺序一致时,这些优先级才被尊重。

仿真回路阶段

一旦链接阶段完成,仿真就进入仿真循环阶段。在这个阶段,使用模型提供的信息,Sim金宝appulink引擎以从仿真开始时间到完成时间的间隔依次计算系统的状态和输出。计算状态和输出的连续时间点称为时间步长。步长之间的时间长度称为步长。步长取决于求解器的类型(参见解决比较)用于计算系统的连续状态,系统的基本采样时间(见系统中的采样时间),以及系统的连续状态是否具有不连续(参见讨论二阶导数过零检测)。

仿真循环阶段有两个子阶段:循环初始化阶段和循环迭代阶段。初始化阶段在循环开始时发生一次。从模拟开始时间到模拟停止时间,每个时间步重复迭代阶段一次。

在仿真开始时,模型指定要仿真的系统的初始状态和输出。在每一步中,计算系统输入、状态和输出的新值,并更新模型以反映计算值。在模拟结束时,模型反映系统输入、状态和输出的最终值。Simu金宝applink软件提供数据显示和测井模块。您可以通过在模型中包含这些块来显示和/或记录中间结果。

下面的流程图解释了仿真循环是如何工作的k表示主要步长计数器:

循环迭代

在每个时间步,Simulink引擎:金宝app

  1. 计算模型输出。

    Simu金宝applink引擎通过调用Simulink模型输出方法启动此步骤。模型输出方法依次调用模型系统输出方法,该方法调用模型包含的块的输出方法,其顺序由模拟的Link阶段生成的输出方法执行列表指定(参见解决比较)。

    系统输出方法将以下参数传递给每个块输出方法:一个指向块数据结构和SimBlock结构的指针。SimBlock数据结构指向output方法计算块的输出所需的信息,包括其输入缓冲区和输出缓冲区的位置。

  2. 计算模型的状态。

    Simu金宝applink引擎通过调用求解器来计算模型的状态。它调用哪个求解器取决于模型是没有状态,只有离散状态,只有连续状态,还是既有连续状态又有离散状态。

    如果模型只有离散状态,则Simulink引擎调用用户选择的离散求解器。金宝app求解器计算达到模型样本时间所需的时间步长。然后调用模型的Update方法。模型Update方法调用其系统的Update方法,该方法按照Link阶段生成的Update方法列表指定的顺序调用系统包含的每个块的Update方法。

    如果模型只有连续状态,则Simulink引擎调用模型指定的连续求解器。金宝app根据求解器的不同,求解器依次调用模型的Derivatives方法一次,或者进入小时间步长的子循环,求解器在其中重复调用模型的Outputs方法和Derivatives方法,以在主要时间步长的连续间隔计算模型的输出和导数。这样做是为了提高状态计算的准确性。模型output方法和Derivatives方法依次调用它们相应的系统方法,这些系统方法按照链接阶段生成的output和Derivatives方法执行列表指定的顺序调用块output和Derivatives。

  3. 可选地检查块的连续状态中的不连续。

    一种称为过零检测的技术被用来检测连续状态中的不连续。看到讨论二阶导数过零检测了解更多信息。

  4. 计算下一个时间步长的时间。

重复步骤1到步骤4,直到达到模拟停止时间。

相关的话题