主要内容

控制和显示执行顺序

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

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

请注意

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

执行命令查看器

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

Execution Order查看器显示当前系统的任务列表。

每个非虚拟子系统都有自己的子系统系统指标在模型中惟一的值。直接在非虚拟子系统中的块具有相同的属性系统指标值作为子系统。在模型引用层次结构中,也是如此系统指标值可以被多次使用,但是它在该层次结构中的每个模型中都是唯一的。要确定子系统是否是模型中相同系统的一部分,请比较它们系统指标值。

每个任务都列在任务ID列对应于在同一任务中执行的一组块。对于固定步长,将每个离散速率视为单独的任务配置参数决定Simulink在一个或多个任务中执行离散速率的块。金宝app

在“执行顺序”查看器中选择一个任务,突出显示属于该任务的块并显示它们的执行顺序。默认情况下,Simuli金宝appnk选择与活动框图对应的第一个任务。

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

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

从块到任务的导航

若要显示某个块正在执行的任务,请单击该块。

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

标签中的任务编号是可以单击以在Execution Order查看器中选择相应任务的链接。当一个模型有很多任务时,这些链接提供了一种替代方案,可以在Execution Order查看器中滚动任务列表。

如果需要在多个block中进行任务比较,请选择多个block。

执行顺序符号

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

例如,在vdp模型,块执行顺序范围为19,每个非虚拟块接收一个执行命令。

虚拟子系统和非虚拟子系统

虚拟子系统块仅以图形形式存在,不执行。因此,它们不是执行顺序的一部分,虚拟子系统中的每个块仍然作为一个原子单元执行。虚拟子系统中的块在根级模型的上下文中有一个执行顺序,如果虚拟子系统在非虚拟子系统中,则在父非虚拟子系统的上下文中有一个执行顺序。对于虚拟子系统,子系统内的块执行顺序用花括号{}表示。

Nonvirtual子系统块在功能上存在并作为一个单元执行。与根级模型或任何父非虚拟子系统相比,它们具有单一的执行顺序和不同的系统索引。非虚拟子系统内部的块有它们自己的执行顺序,这些执行顺序独立于根级模型或任何父非虚拟子系统。

例如,该模型包含一个名为Car Dynamics的虚拟子系统和一个名为Discrete Cruise Controller的原子的非虚拟子系统。

虚拟Car Dynamics子系统为它所包含的块显示了一个花括号内的执行顺序列表。的块在同一级别上执行一步总和,范围块和离散巡航控制器非虚拟子系统。的积分器块首先执行,并将其输出发送到范围块,它执行秒。

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

请注意

根据您的模型配置,Simulink可以在您的模型中插入隐藏的非虚拟子系统。金宝app因此,可见的方块里面隐藏了子系统块可以有一个不同于当前系统索引的系统索引。例如,如果您选择条件输入分支执行配置参数时,Simulink可能会创建隐藏的、非虚金宝app拟的子系统进行优化,这可能会影响排序的执行顺序。

代数循环

代数循环中的块被移动到一个隐藏的非虚拟子系统中。金宝appSimulink首先确定隐藏子系统在其他块上下文中的执行顺序,然后确定隐藏子系统中块的执行顺序。看到代数循环概念

函数调用和动作子系统

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

金宝appSimulink忽略设置的任何块优先级函数调用子系统If动作子系统,或开关案例动作子系统块,但是您可以在初始化这些子系统的块上设置块优先级。

在导出函数模型的根级别,函数调用执行命令具有一个F前缀。

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

总线和多个启动器

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

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

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

如何金宝app确定执行顺序

金宝appSimulink使用基于任务的排序来根据块和端口派生的示例时间信息设置它们的执行顺序。基于任务的排序为确定块的执行顺序提供了一个高效且简单的过程。

基于任务的排序:

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

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

  • 简化了速率转换处理。

  • 避免了不同任务中涉及块的错误数据依赖违反。

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

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

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

为了确保执行顺序反映块之间的数据依赖关系,Simulink根据块输出对块输入端口的依赖关系对块输入端口进行了分类。金宝app输入端口的当前值决定了其中一个块输出的当前值direct-feedthrough输入。看到代数循环概念.具有直接馈入输入的块的例子包括:

没有直馈输入的块的例子包括:

确定块执行顺序的规则

为了对块进行排序,Simulin金宝appk使用以下规则:

  • 如果一个块驱动另一个块的直馈输入,驱动块必须以它驱动的块的执行顺序出现。

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

  • 如果一个块驱动另一个块的输入,而这个块不是直接馈送的输入,那么两个块之间没有数据依赖关系,所以它们的相对执行顺序并不重要。

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

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

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

离散巡航控制器非虚拟子系统被视为具有直馈输入的块,因为它的输出取决于通过分支的输入的当前值Kp获得块。在子系统内部,所有的获得块,具有直接馈送输入,运行在总和阻止他们开车。

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

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

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

  • 如果异步函数调用启动器是由对应速率转换块共享的离散速率触发的,那么在通用离散速率的任务中,异步函数调用启动器将被优先排序。

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

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

    例如,在上面的模型中,RTB2被简化为无操作,因此其在排序顺序中的位置被转移到下游获得块。

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

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

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

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

模型的升级

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

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

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

  3. 点击运行此检查

  4. 检查中的任何更改结果表格如果需要保持原执行顺序,单击修改

代码生成

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

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

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

  3. 点击运行此检查

  4. 检查中的任何更改结果表格如果列出了不一致之处,并且希望更改正常模拟中的执行顺序,使其与生成代码中的执行顺序一致,请单击修改块优先级

相关的话题