主要内容

控制和显示执行顺序

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

您不能设置执行顺序,但可以为非虚拟块分配优先级,以指示它们相对于相应块图中的其他块的执行顺序。万博1manbetxSimulink试图尊重块优先级设置,除非与数据依赖发生冲突。要确认已设置的优先级的结果或调试模型,请显示并检查非虚拟块和子系统的执行顺序。

请注意

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

执行顺序查看器

调试选项卡上,选择信息覆盖>执行顺序。执行顺序查看器将在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拟的子系统进行优化,这可能会影响排序后的执行顺序。

代数循环

代数循环中的块被移动到隐藏的非虚拟子系统中。Simulink首先确定隐藏子系统在其他块上下文中的执行顺序,然后确定隐藏子系统中块的执行顺序。看见万博1manbetx代数循环概念

函数调用和动作子系统

对于函数调用和动作子系统,子系统的执行由其启动器的执行控制。因此,子系统和它的启动器共享一个执行顺序。

万博1manbetxSimulink忽略设置的任何块优先级函数调用子系统如果行动子系统,或开关箱动作子系统块,但您可以在启动这些子系统的块上设置块优先级。

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

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

总线和多个启动器

当一个块根据到该块的不同执行路径执行多次时,该块有多个执行顺序。例如:

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

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

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

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

基于任务的排序:

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

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

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

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

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

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

直接反馈输入对执行顺序的影响

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

没有直接馈通输入的区块示例包括:

确定块执行顺序的规则

为了对区块进行排序,Simuli万博1manbetxnk使用了以下规则:

  • 如果一个块驱动另一个块的直通输入,驱动块必须出现在它所驱动的块的执行顺序之前。

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

  • 如果一个块驱动另一个非直接馈入的块的输入,那么这两个块之间就没有数据依赖关系,因此它们的相对执行顺序无关紧要。

这个模型说明了这个结果。

  • 积分器1 / s在汽车动力学虚拟子系统中没有直接的馈通输入。因此,即使它的输入连接到获得1 / m,积分器块在获得1 / m.输出积分器块驱动的输入获得b,所以积分器Block在它之前排序获得块。

  • 在根级模型中一步阶跃响应开着总和块,所以一步块在总和块。的总和块驱动离散巡航控制器非虚拟子系统的直馈输入,因此子系统排序后总和块。

离散巡航控制器非虚拟子系统被视为具有直接馈通输入的模块,因为其输出取决于通过带有金伯利进程获得块。在子系统中,所有的获得具有直接馈通输入的块在总和阻挡他们开车。

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

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

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

  • 如果异步函数调用启动器由相应的速率转换块共享的离散速率触发,则在公共离散速率的任务中,将首先对异步函数调用启动器进行排序。

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

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

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

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

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

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

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

模型的升级

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

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

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

  3. 点击运行这个检查

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

代码生成

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

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

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

  3. 点击运行这个检查

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

相关的话题