控制和显示执行顺序

执行顺序为一个模型是在Simulink中的顺序万博1manbetx®在模拟期间调用块输出方法。Simulink在模型更新期间确定此顺序,您可以通过单击万博1manbetx更新模型建模Simul万博1manbetxink还在模拟过程中更新模型。

无法设置执行顺序,但可以将优先级分配给非虚拟块,以指示它们相对于相应方框图中其他块的执行顺序。除非与数据相关性存在冲突,否则Simulink会尝试遵守块优先级设置。若要确认已设置优先级的结果,请执行以下操作:建模、显示和查看非虚拟块和子系统的执行顺序。万博1manbetx

请注意

有关块方法和执行的详细信息,请参阅:

执行顺序查看器

调试选项卡上,选择信息覆盖>执行顺序。执行顺序查看器将在Simulink编辑器右侧的窗格中打开。万博1manbetx

执行顺序查看器显示当前系统的任务列表。

每一个系统指标值对应于一组独立于其他块执行的块,例如非虚拟子系统中的块系统指标值是唯一的。在模型引用层次结构中也是如此系统指标值可以被多次使用,但它在该层次结构中的每个模型中保持唯一。要确定子系统是否是模型中相同系统的一部分,请比较它们系统指标值。

列表中列出的每个任务任务ID列对应于共享采样率的一组块将每一个离散的速率视为一个单独的任务配置参数决定Simulink是否在一个或多个任务中以离散的速率执行块。万博1manbetx

在执行顺序查看器中选择任务会突出显示属于该任务的块并显示它们的执行顺序。默认情况下,Simuli万博1manbetxnk选择与活动框图相对应的第一个任务。

如果活动框图不包含作为给定任务一部分执行的任何块,则不能在执行顺序查看器中选择该任务。活动框图可以包含虚拟块,例如输入block,这是这个任务的一部分。

要隐藏高亮显示和执行顺序,请单击明显突出按钮

从块导航到任务

要显示块执行的任务,请单击块。

所选子系统块有一个信息覆盖,上面写着“任务:0,1”。该信息覆盖包含每个任务编号的链接。

标签中的任务编号是链接,您可以单击这些链接在“执行顺序”查看器中选择相应的任务。当模型有许多任务时,这些链接提供了在执行顺序查看器中滚动任务列表的替代方法。

要在块之间比较任务,请选择多个块。

执行顺序的符号

万博1manbetxSimulink在每个非虚拟块的右上角显示一个数字。这些数字表示块执行的顺序。要执行的第一个块的执行顺序通常是最低的1.显示的执行顺序可能会跳过数字,但是块总是按照可见数字的顺序执行。假设一个任务显示执行顺序1、2和4。标记为1的块在标记为2的块之前执行,标记为2的块在标记为4的块之前执行。

例如,在vdp模型,块执行顺序从19,每个非虚拟块接收一个执行指令。

虚拟和非虚拟子系统

事实上的子系统块仅以图形方式存在且不执行。因此,它们不是执行顺序的一部分。虚拟子系统内的块在根级别模型的上下文中具有执行顺序。对于虚拟子系统,子系统内的块执行顺序在花括号{}中列出。

Nonvirtual子系统块在功能上存在并作为一个单元执行。它们有一个单独的执行顺序和与父模型不同的系统索引。非虚拟子系统中的块有自己的执行顺序,独立于父模型。

例如,以下模型包含一个名为Car Dynamics的虚拟子系统和一个名为离散巡航控制器的原子非虚拟子系统。

虚拟汽车动力学子系统用花括号显示了它所包含的块的执行顺序列表。它包含的块在根级执行。的积分器块首先执行并将其输出发送给范围块,它执行第二步。

非虚拟离散巡航控制器子系统只有一个执行顺序(5),这表明子系统及其内部的块相对于根级别的块是第五个要执行的。

请注意

根据您的模型配置,Simulink可以在模型中插入隐藏的非虚拟子系统。因此,将万博1manbetx隐藏内部的可见块子系统块可以具有与当前系统索引不同的系统索引。例如,如果您选择条件输入分支执行配置参数时,Simulink会创建隐藏的、非虚拟的万博1manbetx子系统,这可能会影响排序后的执行顺序。

代数循环

代数循环中的块被移动到一个隐藏的非虚拟子系统中。隐藏子系统的执行顺序在其他块的上下文中确定;然后,确定隐藏子系统中各块的执行顺序。

函数调用和动作子系统

对于函数调用和操作子系统,子系统的执行与启动器的执行绑定在一起。因此,子系统和它的启动器共享一个执行顺序。

在导出函数模型的根级上,函数调用执行顺序具有F前缀。

有关更多信息,请参见导出功能模型概述

总线和多个启动器

当块基于到该块的不同执行路径多次执行时,该块具有多个执行顺序。例如:

  • 连接到总线的块具有与总线包含的每个信号相对应的执行顺序。

  • 具有多个启动器的函数调用或操作子系统具有与每个启动器相对应的执行顺序。

如何万博1manbetx决定执行顺序

万博1manbetxSimulink使用基于任务的排序来设置块和端口的执行顺序,基于它们派生的样本时间信息。基于任务的排序为确定块的执行顺序提供了一个有效而简单的过程。

基于任务的排序:

  • 任务根据采样时间进行单独排序。

  • 生成多个排序列表,而不是在所有任务中生成一个扁平的、排序的块列表。

  • 速率转换处理是简化的。

  • 避免了涉及不同任务中的块的虚假数据依赖关系违反。

  • 代码生成结果以有效速率分组。

  • 一个子系统可以属于多个任务中的不同排序列表。

直接馈通端口对执行顺序的影响

为了确保执行顺序反映块之间的数据依赖关系,Simulink根据块输出对块输入端口的依赖关系对块输入端口进行分类。万博1manbetx一个输入端口,其电流值决定一个块输出的电流值direct-feedthrough端口。具有直接馈通端口的模块示例包括:

具有非直接馈通输入的模块示例包括:

  • 积分器-输出是其状态的函数。

  • 常数-没有输入。

  • 内存-输出取决于上一时间步的输入。

确定块执行顺序的规则

为了排序块,Simulink使用万博1manbetx以下规则:

  • 如果一个块驱动另一个块的直接馈通端口,则该块必须在其驱动的块之前以执行顺序出现。

    该规则确保了当Simulink调用需要当前输入的块方法时,到块的直接馈通输入是有效的。万博1manbetx

  • 没有直接馈通输入的块可以出现在执行顺序的任何地方,只要它们在它们驱动的任何直接馈通块之前。

    在执行顺序的开始处放置所有没有直接馈通端口的块满足这一规则。这种安排允许Simulink在排序过程中忽略这些万博1manbetx块。

应用这些规则会产生执行顺序。没有直接馈通端口的块以没有特定顺序出现在列表的开头。这些块之后是直接馈通端口安排的块,以便它们可以向它们驱动的块提供有效的输入。

下面的模型说明了这个结果。下面的块没有直接馈通,因此出现在根级系统的执行顺序的开头:

  • 汽车动力学虚拟子系统中的积分器模块

  • 在根级模型中的速度块

在离散巡航控制器子系统内,所有获得具有直接馈通端口的块在总和阻挡他们开车。

在包含异步任务的模型中确定块执行顺序的规则

在模拟中,异步函数调用启动器在确定任务内的块排序顺序时具有最高优先级。有关详细信息,请参阅异步采样时间速率转换和异步块(万博1manbetx仿真软件编码器)

要确定包含异步采样时间的模型中的块执行顺序,Simulink使用以下规则:万博1manbetx

  • 如果异步函数调用发起者是由相应的速率转换块共享的离散速率触发的,那么在共同离散速率的任务中,异步函数调用发起者将首先被排序。

    例如,在下面的模型中,有一个由离散速率触发的异步函数调用启动器D1。在离散任务中,首先对异步函数调用启动器进行排序率转换块在异步速率之间转换,A1,以及离散速率,D1

  • 如果一个率转换块被简化为努普,率转换块不执行,其在离散任务中按排序顺序的位置被转移到与其连接的上游或下游离散块。

    例如,在上面的模型中,RTB2减少到努普,则其在排序后的位置被转移到下游获得块。

  • 如果两个异步函数调用启动器共享一个共同的离散速率任务,那么具有较高优先级的异步函数调用启动器将首先在离散速率任务中执行。

    例如,在下面的模型中,两个异步函数调用启动器由相同的离散速率触发,D1.任务优先级较高的优先排序。

  • 基于任务的排序不支持异步样例时间的并集。万博1manbetx包含多个异步样例时间联合的模型默认为全局执行顺序,其中所有块都在单个任务中排序。

检查涉及数据存储内存块的执行顺序更改

模型的升级

使用基于任务的排序而不是传统(块)排序可以更改相关的执行顺序数据存储存储器块。Upgrade Advisor检查检测更改,并提供一个选项,以在从早期版本的Simulink升级模型时保持原始的执行顺序。万博1manbetx

  1. 打开升级顾问。在建模选项卡上,选择模型的顾问>升级顾问

  2. 选中该选项的复选框检查数据存储读取和数据存储写入块的相对执行顺序

  3. 点击运行这个检查

  4. 查看文档中的任何更改后果表格如果您想保持原来的执行顺序,请单击修改

代码生成

当编译模型以生成代码时数据存储读取数据存储写生成代码中的块可能与正常模拟模式中的顺序不同。Model Advisor检查可检测到这些差异,并提供一个选项来更改正常模拟模式中的执行顺序,以匹配生成代码中的顺序。

  1. 打开Model Advisor。在建模选项卡上,选择模型的顾问>通过产品>万博1manbetx仿真软件编码器

  2. 选中该选项的复选框检查数据存储读和数据存储写块的相对执行顺序变化

  3. 点击运行这个检查

  4. 查看文档中的任何更改后果表格如果列出了差异,并且您希望更改正常模拟中的执行顺序以符合生成代码中的执行顺序,请单击修改块优先级

相关话题