主要内容

控制和显示执行顺序

执行顺序对于一个模型是顺序的Simulink金宝app®在模拟期间调用块输出方法。金宝appSimulink在模型更新期间确定该顺序,您可以通过单击来启动该顺序更新模型在这一点造型选项卡。金宝appSimulink还在仿真过程中更新模型。

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

请注意

有关块方法和执行的更多信息,请参见:

执行顺序查看器

调试选项卡,选中信息覆盖>执行顺序.执行顺序查看器将在Simulink编辑器右侧的窗格中打开。金宝app

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

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

列表中列出的每个任务任务ID列对应于共享一个抽样率的一组块。对于固定步长,则对待每个离散速率作为单独的任务配置参数决定Simulink是否在一个或多个任务中以离散的速率执行块。金宝app

选择执行顺序观众的亮点属于任务,并显示他们的执行顺序块的任务。默认情况下,Simuli金宝appnk中选择第一任务对应于活性框图。

当活动块关系图不包含作为给定任务一部分执行的任何块时,您不能在“执行顺序”查看器中选择任务。活动框图可能包含虚拟块,例如轮廓尺寸块,作为此任务的一部分。

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

从导航到块任务

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

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

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

为了比较的任务块之间,选择多块。

执行顺序符号

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

例如,在vdp模型,该块执行次序的范围是从19,与每个非虚块接收执行顺序。

虚拟和非虚拟子系统

虚拟子系统块只在图形上存在,不执行。因此,它们不属于执行命令的一部分。虚拟子系统中的块在根级模型的上下文中有一个执行顺序。对于虚拟子系统,子系统中的块执行顺序用花括号{}列出。

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

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

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

所述非虚拟离散巡航控制器子系统具有一个单一的执行顺序(5),这表明该子系统和其内的块是在根级别以执行相对于所述块的第五位。

请注意

根据您的模型配置,Simulink可以在模型中插入隐藏的、非虚拟的子系统。金宝app因此,可见块内隐藏子系统块可以具有从当前系统索引不同的系统的索引。例如,如果您选择条件输入分支执行配置参数,Simulink中会创建隐藏的,非虚子系金宝app统,其可影响排序执行顺序。

代数循环

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

函数调用子系统和动作子系统

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

在出口的函数模型的根级,函数调用执行的订单有F字首。

欲了解更多信息,请参阅导出功能模型概述

总线和多个启动器

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

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

  • 具有多个引发剂A的函数调用或动作子系统具有对应于每个启动器的执行顺序。

如何金宝app决定执行顺序

金宝appSimulink中使用基于任务的排序,以设置基于它们的来源的样品时间信息块和端口的执行顺序。基于任务的排序提供了用于确定块的执行顺序的有效和简单的方法。

基于任务的排序:

  • 任务是基于样本时间单独排序的。

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

  • 速率转换操作被简化。

  • 涉及不同的任务模块虚假数据依赖问题被避免。

  • 代码生成的结果是高效率分组。

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

在执行顺序直接直通港口的影响

为了确保执行顺序反映块之间的数据依赖性,Simulink中根据该块的输入端口的块输出的依赖关系进行分类块输入端口。金宝app一个输入端口,其电流值确定块输出中的一个的电流值是一直接馈通端口。具有直接馈通端口的区块示例包括:

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

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

  • 常数—无输入。

  • 内存-输出依赖于前一个时间步长的输入。

确定块执行顺序的规则

为了排序块,Simulink使用金宝app以下规则:

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

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

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

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

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

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

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

  • 在根级模型速度块

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

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

在模拟中,异步函数调用启动器在确定任务中的块排序顺序时具有最高的优先级。欲了解更多信息,请参阅异步采样时间速率转换和异步块(金宝app仿真软件编码器)

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

  • 如果异步函数调用引发剂通过由相应的速率过渡块共享的离散速率触发,则在共用离散速率的任务时,异步函数调用启动器将第一排序。

    例如,在下面的模型中,是受所述离散速率触发一个异步函数调用引发剂D1.在离散任务中,异步函数调用发起者首先被排序。的速率转换块之间的转换异步率,A1,离散率,D1

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

    例如,在上述模型中,RTB2减少到无操作,因此其在排序后的顺序位置被转移到下游获得块。

  • 如果两个异步函数调用启动器都有一个共同的离散率的任务,具有较高优先级,然后异步函数调用发起者首先执行离散率的任务范围内。

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

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

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

型号升级

使用基于任务的排序代替传统的(块)排序可以改变相关的执行顺序数据存储内存块。Upgrade Advisor检查检测更改,并提供一个选项,以在从早期版本的Simulink升级模型时保持原始的执行顺序。金宝app

  1. 打开升级顾问。在造型选项卡,选中型号顾问>升级顾问

  2. 选中的复选框检查“数据存储读”和“数据存储写”块的相关执行顺序

  3. 点击运行此检查

  4. 检查所有的变更结果桌子。如果你想保持原来的执行顺序,请点击调整

代码生成

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

  1. 打开模型顾问。在造型选项卡,选中型号顾问>通过产品>金宝appSimulink的编码器

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

  3. 点击运行此检查

  4. 检查所有的变更结果桌子。如果列出的差异,你想改变在正常仿真的执行顺序在生成的代码的执行,以符合,请点击修改块优先级

相关的话题