主要内容

动态系统的仿真阶段

模型编译

仿真的第一阶段发生在系统模型是开放的,您模拟模型时。在仿真软件万博1manbetx®编辑器中,单击跑步。运行模拟会导致Simulink引擎调用模型编译器。万博1manbetx模型编译器将模型转换为可执行文件,该过程称为编译。特别是编译器:

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

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

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

  • 执行块减少优化。

  • 通过用它们包含的块替换虚拟子系统来平衡模型层次结构(参见解决比较).

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

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

这些事件基本上与更新图表时发生的事件相同(更新图并运行模拟).不同之处在于,Simulink软件将模型编译作为模型仿万博1manbetx真的一部分启动,其中编译直接导致链接阶段,如中所述链接阶段。相比之下,您将显式模型更新作为模型上的独立操作。

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

链接阶段

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

方法执行列表

在Link阶段,Simulink引擎还创建方法万博1manbetx执行列表。这些列表列出了调用模型的块方法来计算其输出的最有效顺序。在模型编译阶段生成的块执行顺序列表用于构造方法执行列表。

块优先事项

您可以为块分配更新优先级。在较低优先级块之前执行较高优先级块的输出方法。这些优先级才能享受与其块执行顺序一致的。

仿真环阶段

一旦链接阶段完成,仿真会进入模拟环路阶段。在该阶段,Simulink引擎连续地将万博1manbetx系统的状态和输出从模拟开始时间从模拟开始时间计算到结束时间,使用由模型提供的信息。计算状态和输出的连续时间点称为时间步长。步骤之间的时间长度称为步长。步长取决于求解器的类型(参见解决比较)用于计算系统的连续状态,系统的基本采样时间(见系统中的样本时间),以及系统的连续各州是否有不连续性(见零交叉检测).

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

在仿真开始时,该模型指定要模拟系统的初始状态和输出。在每个步骤中,计算系统输入,状态和输出的新值,并且更新模型以反映计算值。在模拟结束时,该模型反映了系统输入,状态和输出的最终值。Simu万博1manbetxlink软件提供数据显示和日志记录块。您可以通过在模型中包含这些块来显示和/或记录中间结果。

下面的流程图解释了模拟循环是如何工作的K.表示主要步长计数器:

循环迭代

在每次步骤中,Simulink引擎:万博1manbetx

  1. 计算模型输出。

    Simu万博1manbetxlink引擎通过调用Simulink模型Outputs方法来启动这个步骤。模型的Outputs方法反过来调用模型系统的Outputs方法,后者按仿真的Link阶段生成的Outputs方法执行列表指定的顺序调用模型包含的块的Outputs方法(请参阅解决比较).

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

  2. 计算模型的状态。

    Simu万博1manbetxlink引擎通过调用求解器来计算模型的状态。它调用的哪个求解器取决于模型是否没有状态,只有离散状态,只有连续状态,或连续和离散状态。

    如果该模型仅具有离散状态,则Simulink引擎调用用户选择的离散求解器。万博1manbetx求解器计算击中模型采样时间所需的时间步长的大小。它然后调用模型的更新方法。模型更新方法调用其系统的Update方法,该方法调用系统包含在链路阶段中生成的更新方法列表指定的顺序中包含的块的更新方法。

    如果模型只有连续状态,那么Simulink引擎将调用模型指定的连续求解器。万博1manbetx根据解算器,解算器要么反过来调用衍生品方法模型的一次或进入子循环小时间步的解算器反复调用模型的输出方法和衍生品的方法计算模型的输出和衍生品在连续的时间间隔内的主要步骤。这样做是为了提高状态计算的准确性。模型的Outputs方法和Derivatives方法依次调用它们相应的系统方法,这些系统方法按照在Link阶段生成的Outputs和Derivatives方法执行列表指定的顺序调用块Outputs和Derivatives。

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

    一种称为过零检测的技术被用来检测连续状态中的不连续。看到零交叉检测了解更多信息。

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

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

相关的话题