文档

控件并显示已排序的顺序

什么是有序的顺序?

在更新仿真阶段,Simulink万博1manbetx®确定在模拟期间调用块方法的顺序。此块调用顺序为排序订单

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

请注意

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

显示已排序的顺序

的排序顺序vdp模型:

  1. 打开van der Pol方程模型:

    vdp
  2. 在模型窗口中,选择展示>>执行顺序排序

万博1manbetxSimulink在每个非横向块和每个非virtual子系统的右上角显示表示法。这些数字表示块执行的顺序。执行的第一个块有一个排序的顺序0

例如,在van der Pol等式模型中,集成器块具有排序顺序0:0先执行。Out1块,以排序的顺序0:1,执行第二个。类似地,剩余的块以数字顺序执行0:20:8

您可以使用模型保存排序后的订单设置。要在重新打开模型时显示已排序的顺序,请选择模拟>更新图

顺序的符号

排序的顺序符号取决于块的类型。下表总结了排序顺序表示法的不同格式。每一种格式都在下面的章节中详细描述。

块类型 顺序的符号 描述
Nonvirtual块 年代b
  • 年代是块驻留在块的模型或子系统的系统索引。对于根级模型,年代总是0

  • b指定指定执行上下文的排序顺序中的块位置。

  • xy是子系统的系统索引,子系统的执行由该块控制。

年代bxy
非凡子系统(不包括函数调用和操作子系统) 年代b
  • 年代为模型或子系统的系统指标。

  • b指定指定执行上下文的排序顺序中的块位置。

虚拟块和子系统 不适用 不执行虚拟块。
行动子系统 年代b”
  • 年代是块驻留在块的模型或子系统的系统索引。对于根级模型,年代总是0

  • b”是动作块(但不是动作子系统)的块索引。

函数调用子系统和函数调用模型

一个非接地启动程序:

年代b:

  • 年代是块驻留在块的模型或子系统的系统索引。对于根级模型,年代总是0

  • b是子系统层次结构中的根启动器的块索引。

两个或多个启动器:

  • 年代b:i1年代b:i2,......,年代b:其中n为不接地启动器个数。

  • 年代是块驻留在块的模型或子系统的系统索引。对于根级模型,年代总是0

  • bn是子系统层次结构中第n根启动器的块索引。

启动器为接地块或未连接:

  • 年代: G

  • 年代是块驻留在块的模型或子系统的系统索引。对于根级模型,年代总是0

  • G指示所有函数调用启动器都已接地。

扩展函数调用信号 S:B.[Bk
  • 年代是块驻留在块的模型或子系统的系统索引。对于根级模型,年代总是0

  • b是子系统层次结构中的根启动器的块索引。

  • Bk表示它是一个分支索引为k的分支函数调用子系统。

功能呼叫反馈锁存块 S:B.[B
  • 年代是块驻留在块的模型或子系统的系统索引。对于根级模型,年代总是0

  • b是子系统层次结构中的根启动器的块索引。

  • B表示它是一个分支子系统,分支索引为m。

具有异步功能呼叫输入的模型中的块 函数调用根级导入和输出块:F
  • F指示它在函数调用上下文中执行。

  • 是函数调用索引。

根级数据导入块:如果它们驱动函数调用子系统,那么它就是子系统的函数调用索引。

如果它们不是由异步函数调用输入驱动的模型的一部分,则不会显示函数调用索引。

根级函数调用:F

根级分支函数调用块:F[Bk

  • F指示它在函数调用上下文中执行。

  • 是函数调用索引。

块内部的导出函数模型(参见函数调用根级导入块的执行顺序 函数调用根级导入和输出块:F
  • F指示它是一个函数调用块。

  • 是函数调用根级导入或Outport块在普通模拟模式下的执行顺序。

根级函数调用子系统:F

根级分支函数调用子系统:F[Bk

  • F指示它是一个函数调用块。

  • 是正常仿真模式下函数调用root级Inport块的执行顺序。

  • Bk指示一个索引为k的分支函数调用子系统。

合并和数据存储内存块:FFj,......
  • F指示它是一个函数调用块。

  • 为块执行索引。

根级数据导入和输出块:与它们所连接的函数调用子系统的执行顺序相同。
Bus-Capable块 年代B:
  • 年代是块驻留在块的模型或子系统的系统索引。对于根级模型,年代总是0

  • B表示总线能力的块。

Nonvirtual块

在van der Pol方程模型中,模型中所有的非虚块都有一个排序的顺序。顶层模型的系统索引是0,块执行顺序范围08

非凡子系统

下面的模型包含一个原子的、非虚拟的子系统,名为离散巡航控制器。

当您为根级系统启用排序顺序显示时,Simulink将显示块的排序顺序。万博1manbetx

这个模型中的Scope块排序顺序最低,但它的输入依赖于Car Dynamics子系统的输出。Car Dynamics子系统是虚拟的,因此它没有排序的顺序,也不作为一个原子单元执行。但是,子系统中的块在根级别执行,因此Car Dynamics子系统中的Integrator块首先执行。Integrator块将其输出发送到根级模型中的Scope块,后者将在第二步执行。

离散巡航控制器子系统有一个排序的顺序0:5

  • 0表示该原子子系统是由主系统和两个子系统组成的分层系统的根级的一部分。

  • 5表示原子子系统是Simulink相对于根级别内的块执行的第六块。万博1manbetx

离散巡航控制器子系统内的每个块的排序顺序具有表单1b, 在哪里:

  • 1是那个子系统的系统索引。

  • b为执行顺序中的块位置。在离散巡航控制器子系统中,排序顺序为08

请注意

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

虚拟块和子系统

虚拟块,如Mux块,只在图形上存在而不执行。因此,它们不是排序顺序的一部分,也不显示任何排序顺序表示法。

虚拟子系统不执行为单位,如虚拟块,也不是排序顺序的一部分。虚拟子系统内的块是根级系统排序顺序的一部分,因此共享系统索引。

在模型中非凡子系统,虚拟子系统Car Dynamics没有排序顺序。但是,子系统中的块在根级模型的执行上下文中有一个排序的顺序。这些块具有与根级模型相同的系统索引。汽车动力学子系统内部的积分器块有一个排序的顺序0:0,表示Integrator块是在顶级模型上下文中执行的第一个块。

函数调用子系统

单引发剂。当启动器调用函数调用子系统(或模型)时,函数调用子系统(或模型)就会执行,因此,函数调用子系统(或模型)没有独立于其启动器的排序顺序。特别地,对于连接到一个启动器的子系统,Simulink使用这种符号万博1manbetx年代b:, 在哪里年代系统的索引中是否包含启动器和b是子系统层次结构中的根启动器的块索引。

例如,子系统f和g的排序顺序是0:0,因为它们的根启动器Chart的排序顺序是0:0

多个发起者。对于连接到多个发起者的函数呼叫子系统,排序的顺序表示法是年代b:i1年代b:i2,......,年代b:式中n为不接地启动器数量,年代块所在的模型或子系统的系统索引,以及bn是子系统层次结构中第n根启动器的块索引。

例如,打开sl_subsys_fcncall6模型。在子系统的层次结构中,f子系统有三个来自同一层次的启动器。两个来自statflow®图,Chart1,和状态流图,chart。

因为图表1有一个排序的订单0:2和图表有一个排序的顺序0:4,函数呼叫子系统f有一个排序的顺序符号0:2, 0:4

扩展函数调用信号

当函数调用信号使用函数调用拆分块时,Simu万博1manbetxlink显示连接到分支的子系统(或模型)在启动器调用函数调用时执行的顺序。万博1manbetxSimulink使用这种符号S:B.[Bk来表示这个顺序。年代是块所在的模型或子系统的系统索引,b是子系统层次结构中根启动器的块索引,Bk表示它是一个分支索引为k的分支函数调用子系统。

例如,打开sl_subsys_fcncall11模型和显示排序的顺序。排序后的顺序表明子系统f (B0)在子系统g (B1).

Bus-Capable块

能够执行总线的块作为一个单位执行,因此没有唯一的排序顺序。这样的块显示其排序顺序年代B:在哪里B代表公共汽车。

例如,打开sldemo_bus_arrays模型和显示排序的顺序。打开每个子系统,看看总线分配块的排序顺序显示为1: B

有关更多信息,请参见Bus-Capable块

如何万博1manbetx确定排序顺序

直通港口对分拣订单的影响

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

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

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

  • 常数- 没有输入。

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

排序块的规则

要对块进行排序,Simulink万博1manbetx使用以下规则:

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

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

  • 没有直接馈通输入的块可以按照排序顺序出现在任何位置,只要它们位于它们所驱动的任何直接馈通块的前面。

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

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

以下模型,来自非凡子系统,说明了这一结果。以下块没有直接馈通,因此出现在根级系统的排序顺序的开头:

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

  • 在根级模型中的速度块

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

分配块优先级

您可以为非虚拟块或整个子系统分配优先级。按照排序顺序,高优先级块出现在低优先级块之前。数字越小,优先级越高。的块优先级一般的选项卡的“块属性”对话框。

块优先事项规则

万博1manbetxSimulink尊重您指定的块优先级,除非它们违反数据相关性。(块优先级违规描述导致块属性违反的情况。)

在评估优先级分配时,Simulink试图创建一个排序的顺序,以便根级系万博1manbetx统或非虚拟子系统中各个块的优先级相对于彼此得到尊重。

有三条规则与优先级有关:

重点是相对的

重点是相对的;块的优先级与同一系统或子系统中的块的优先级相关。

例如,假设您在模型中的离散巡航控制器子系统中设置了以下优先级非凡子系统

优先级
获得 3.
Gain1 2
Gain2 1

更新图后,增益块的排序顺序如下。

的排序顺序值获得Gain1,Gain2分块反映了各自分配的优先事项:Gain2优先级最高,在Gain1和Gain之前执行;Gain1具有第二优先级,在Gain2之后执行;和Gain在Gain1之后执行。万博1manbetxSimulink会考虑相对于子系统中的其他块所分配的优先级。

获得块不是执行的第一,第二和第三个块。他们也没有连续排序的订单。排序的订单值不一定对应于优先级值。万博1manbetxSimulink排列块,以便它们的优先级相对于彼此荣誉。

优先级层次

在Car Dynamics虚拟子系统中,假设您按照如下方式设置增益块的优先级。

优先级
获得 2
Gain1 1

在更新图表之后,增益块的排序顺序如图所示。有了这些优先级,Gain1总是在Gain之前执行。

您可以设置优先级为1由于模型中各子系统的层次化特性,所以将其转换为两个子系统中的每一个块。万博1manbetxSimulink从不将一个子系统中的块的优先级与任何其他子系统中的块的优先级进行比较。

例如,再考虑一下这个模型。

Car Dynamics虚拟子系统中的块是根级系统层次结构的一部分,也是根级排序顺序的一部分。离散巡航控制器子系统具有独立的排序顺序,各分块依次排列1:01:7

缺乏优先事项可能不会导致优先级

对于给定块,缺乏优先级不一定会导致低优先级(更高的排序顺序)。在具有直接馈通端口的块之前,没有直接馈通端口的块,无论其优先级如何。

如果模型有两个原子子系统,A和B,则可以分配优先级12这个优先级使得A中的所有块在b中的任何块之前执行。原子子系统中的块作为一个单独的单元执行,所以子系统有自己的系统索引和自己的排序顺序。

块优先级违规

万博1manbetxSimulink软件尊重您指定的块优先级,除非它们违反数据相关性。如果S万博1manbetximulink无法尊重一个块优先级,它会显示一个块优先违反诊断信息。

作为一个例子:

  1. 打开sldemo_bounce模型。

    请注意,存储器块的输出为恢复系数增益块提供输入。

  2. 设置恢复系数块系数的优先级1,并设置Memory块的优先级为2

    设置这些优先级指定恢复系数块在内存块之前执行。然而,恢复系数块依赖于Memory块的输出,因此您刚才设置的优先级违反了数据依赖关系。

  3. 在“模型”窗口中,通过选择启用排序顺序格式>块显示>排序订单

  4. 选择模拟>更新图

    块优先级违反警告出现在诊断观众.打开诊断观众窗口,点击看法>诊断观众.该警告包含了相应块的优先级:

    警告:无法尊重用户指定的优先级。'sldemo_bounce/Memory' (pri=[2])必须在'sldemo_bounce/恢复系数' (pri=[1])之前执行,以满足数据相关性
  5. 从恢复系数和内存块中删除优先级并再次更新图表以查看正确的排序顺序。

相关话题

这个话题有用吗?