当周期性任务以多任务模式执行时,默认情况下,具有最高优先级的任务的任务执行具有最快采样率的块,下一个最快的块由下一个更高优先级的任务执行,等等。在高优先级任务的处理之间可用的时间用于处理较低的优先级任务。这导致有效的程序执行。
如果任务是异步的而不是周期性的,那么在抽样率和任务优先级之间可能不一定有关系;优先级最高的任务不需要有最快的采样率。使用异步中断和任务同步块。您可以通过选择或清除模型配置参数来切换优先级编号的意义优先级值越高,任务优先级越高.
在多任务环境中(即在实时操作系统下),您可以定义单独的任务并分配优先级。对于裸机目标硬件(即,没有实时操作系统),您无法创建单独的任务。然而,生成的应用程序模块实现了使用重叠中断的有效的多任务执行方案,其伴随着编程的上下文切换。
这意味着一个中断可以在另一个中断正在进行时发生。当这种情况发生时,当前中断被抢占,浮点单元(FPU)上下文被保存,高优先级中断执行其高优先级(即更快的采样率)代码。一旦完成,控制权就会返回到被抢占的ISR。
下面的图说明了多速率系统中的任务计时是如何由多任务、伪多任务和单任务环境中的代码生成器处理的。
下一个图显示了如何使用重叠中断来实现伪多任务。在这种情况下,中断0直到中断1、2和3之后才返回。
要使用多任务执行,请选择Model Configuration参数将每一个离散的速率视为一个单独的任务.只有设置了该参数,该参数才会被激活解算器类型来固定步
.汽车
如果您的型号具有两个或多个示例时间,模式会导致多任务环境。如果固定步长量等于离散采样时间,则具有连续和离散采样时间的模型在单任务模式下运行。
在模型的连续部分以不同于离散部分的速率执行的情况下,或者模型具有不同的采样率,Simulink金宝app®引擎分配每个块a任务标识符(tid
)将该块与以该块的采样率执行的任务关联起来。
你设置了抽样率和它们的限制条件求解器模型配置参数对话框的窗格。要生成代码,请选择固定步
对于求解器类型。某些限制适用于您可以使用的采样率:
块的采样率必须是基本采样周期(即最快采样周期)的整数倍。
设置模型配置参数时周期性样本时间约束来无约束
,基准采样周期由参数的设置决定固定步长.
设置参数时周期性样本时间约束来指定的
,基本速率固定步长为您指定参数的采样时间矩阵的第一个元素样品时间属性.这求解器来自示例模型的窗格rtwdemo_mrmtbb
显示一个例子。
连续块通过使用以基本采样率运行的集成算法执行。仅当您设置模型配置参数时,基本样本时期仅是模型中的速率最大的常见分母周期性样本时间约束来不受约束的
和参数固定步长来汽车
.
如果分立部分以相同或比连续部分的速度较慢并且是基础采样率的整数倍数,则模型的连续和离散部分才能以不同的速率执行。
此示例使用固定步骤求解器检查如何在实时和仿真中执行简单的多速率模型。它通过设置模型配置参数来确定单个任务和多任务模式中的操作将每一个离散的速率视为一个单独的任务.
示例模型如下图所示。讨论将模型的6个块称为A到F,如框图中所示。
通过将更高的优先级分配给块F、E和d,块的执行顺序(在每个块的右上角显示)被强制调整为所示的顺序。所示的顺序是该模型可能的有效执行顺序。有关更多信息,请参见动态系统中的仿真阶段.
执行顺序由块之间的数据依赖关系决定。在实时系统中,执行顺序决定了块在给定的时间间隔或任务内执行的顺序。本文将模型的执行顺序看作是给定的,因为它涉及到任务块计算的分配和任务执行的调度。
请注意
本节中的讨论和时序图基于在默认(保护)模式下使用速率转换块的假设,并带有块参数在数据传输期间确保数据完整性和确保确定性数据传输(最大延迟)选择
本例在模型配置参数时考虑上述模型的执行任务模式被设定为多任务处理
.块计算在两个任务下执行,优先级速率:
较慢的任务(其优先级较低)被安排每秒运行一次。这叫做1秒任务.
更快的任务具有更高的优先级,计划每秒运行10次。这叫做0.1秒任务.0.1秒任务可以抢占1秒任务。
下表显示了模型中的每个块,执行顺序,块运行的任务,以及块是否具有输出或更新计算。块A和B没有离散状态,因此没有更新计算。
多任务执行中块的任务分配
下图显示了计算的调度多任务处理
在实时系统中部署生成的代码时的求解模式。显示生成的程序实时运行,作为来自10 Hz定时器的中断的两个任务。
下图显示了同一模型的Simulink执行金宝app多任务处理
求解器模式。在这种情况下,Simulink引擎在金宝app一个执行线程中运行块,模拟多任务处理。没有发生抢先。