文档

动态系统的仿真阶段

模型编译

仿真的第一阶段发生在系统模型打开时,您可以在Simulink中模拟模型万博1manbetx®编辑器,选择模拟>运行。运行模拟会导致Simulink引擎调用模型编译器。模型编译器会将模型转万博1manbetx换为可执行形式,该过程称为编译。具体而言,编译器:

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

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

  • 称为属性传播的过程用于确定未指定的属性。这个过程需要将源信号的属性传播到它所驱动的块的输入。

  • 执行块缩减优化。

  • 通过使用虚拟子系统包含的块替换虚拟子系统来展平模型层次结构(请参见解决者).

  • 确定块排序顺序(请参见控件并显示已排序的顺序更多信息)。

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

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

链路相位

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

方法执行列表

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

块优先级

可以为块指定更新优先级(请参见分配块优先级).高优先级块的输出方法在低优先级块的输出方法之前执行。只有当优先级与块排序规则一致时,优先级才会得到尊重。

模拟环路相位

链路阶段完成后,模拟进入模拟循环阶段。在此阶段,Simulink引擎使用模型提供的信息,以从模拟开始时间到结束时间的间隔连续计算系统的状态和输出。计算状态和输出的连续时间点称为时间步。步长之间的时间万博1manbetx长度称为步长。步长取决于解算器的类型(请参见解决者)用于计算系统的连续状态、系统的基本采样时间(参见系统中的采样时间),以及系统的连续状态是否有不连续(见过零检测).

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

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

循环迭代

在每个时间步骤中,Simulink引擎:万博1manbetx

  1. 计算模型的输出。

    Simu万博1manbetxlink引擎通过调用Simulink model Outputs方法启动此步骤。model Outputs方法依次调用model system Outputs方法,该方法按照仿真链接阶段生成的Outputs方法执行列表指定的顺序调用模型包含的块的Outputs方法(参见解决者).

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

  2. 计算模型的状态。

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

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

    如果模型只有连续状态,Simulink引擎将调用模型指定的连续解算器。根据解算器的不同,解万博1manbetx算器依次调用模型的导数方法一次,或进入一个小时间步的子周期,解算器在该子周期中重复调用模型的输出方法和导数方法来计算e主要时间步长内连续间隔的模型输出和导数。这样做是为了提高状态计算的准确性。模型输出方法和导数方法依次调用其相应的系统方法,这些方法按照输出和导数指定的顺序调用块输出和导数在链接阶段生成的方法执行列表。

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

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

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

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

相关话题

这个话题有用吗?