主要内容

多任务执行建模

多任务和伪多任务模式

在多任务模式下执行周期性任务时,默认情况下,采样率最快的块由优先级最高的任务执行,次快的块由优先级较高的任务执行,依此类推。处理高优先级任务之间的可用时间用于处理优先级较低的ta这将导致高效的程序执行。

如果任务是异步的而不是周期性的,那么在抽样率和任务优先级之间可能不一定有关系;优先级最高的任务不需要有最快的采样率。使用异步中断任务同步阻碍。您可以通过选择或清除模型配置参数来切换优先级编号的含义优先级值越高,任务优先级越高

在多任务环境中(即在实时操作系统下),您可以定义单独的任务并为其分配优先级。对于裸机目标硬件(即不存在实时操作系统),不能创建单独的任务。然而,生成的应用程序模块使用重叠中断并伴随编程上下文切换来实现有效的多任务执行方案。

这意味着一个中断可以在另一个中断正在进行时发生。当这种情况发生时,当前中断被抢占,浮点单元(FPU)上下文被保存,高优先级中断执行其高优先级(即更快的采样率)代码。一旦完成,控制权就会返回到被抢占的ISR。

下面的图说明了多速率系统中的任务计时是如何由多任务、伪多任务和单任务环境中的代码生成器处理的。

下一个图显示了如何使用重叠中断来实现伪多任务。在这种情况下,中断0直到中断1、2和3之后才返回。

构建一个多任务执行程序

要使用多任务执行,请选择模型配置参数将每一个离散的速率视为一个单独的任务.只有设置了该参数,该参数才会被激活解算器类型固定步汽车如果模型有两个或更多不同的采样时间,则模式将导致多任务环境。如果固定步长等于离散采样时间,则具有连续和离散采样时间的模型以单任务模式运行。

执行多任务模型

如果模型的连续部分以不同于离散部分的速率执行,或者模型具有不同采样速率的块,则Simulink金宝app®引擎分配每个块a任务标识符tid)将该块与以该块的采样率执行的任务关联起来。

你设置了抽样率和它们的限制条件解算器“模型配置参数”对话框的窗格。要生成代码,请选择固定步对于解算器类型。某些限制适用于您可以使用的采样率:

  • 块的采样率必须是基本采样周期(即最快采样周期)的整数倍。

  • 设置模型配置参数时周期性样本时间约束无约束,基准采样周期由参数的设置决定固定步长

  • 设置参数时周期性样本时间约束明确规定,基本速率固定步长是为参数指定的采样时间矩阵的第一个元素样品时间属性这个解算器来自示例模型的窗格rtwdemo_mrmtbb显示了一个示例。

  • 使用以基本采样率运行的积分算法执行连续块。只有在设置模型配置参数时,基本采样周期才是模型中费率的最大公分母周期性样本时间约束无拘无束和参数固定步长汽车

  • 只有当离散部分以与连续部分相同或更低的速率执行,并且是基本采样率的整数倍时,模型的连续部分和离散部分才能以不同的速率执行。

多任务执行

此示例检查了一个简单的多速率模型如何使用固定步长解算器在实时和模拟中执行。它考虑了单任务和多任务模式下的操作,这取决于设置模型配置参数将每一个离散的速率视为一个单独的任务

示例模型如下图所示。讨论将模型的6个块称为A到F,如框图中所示。

通过将更高的优先级分配给块F、E和d,块的执行顺序(在每个块的右上角显示)被强制调整为所示的顺序。所示的顺序是该模型可能的有效执行顺序。有关更多信息,请参见动态系统的仿真阶段

执行顺序由块之间的数据依赖关系决定。在实时系统中,执行顺序决定了块在给定的时间间隔或任务内执行的顺序。本文将模型的执行顺序看作是给定的,因为它涉及到任务块计算的分配和任务执行的调度。

请注意

本节中的讨论和时序图基于在默认(保护)模式下使用速率转换块的假设,并带有块参数确保数据传输期间的数据完整性确保确定性数据传输(最大延迟)挑选出来的

本例在模型配置参数时考虑上述模型的执行任务模式设置为多任务处理.块计算在两个任务下执行,按速率排序:

  • 较慢的任务(其优先级较低)被安排每秒运行一次。这叫做1秒任务

  • 更快的任务具有更高的优先级,计划每秒运行10次。这叫做0.1秒任务。0.1秒的任务可以抢占1秒的任务。

下表显示了模型中每个块的执行顺序、块运行的任务以及块是否有输出或更新计算。块A和B没有离散状态,因此没有更新计算。

多任务执行中块的任务分配

阻碍
(在执行命令中)

任务

输出

使现代化

E

0.1秒任务

Y

Y

F

0.1秒任务

Y

Y

D

速率转换块使用基于端口的采样时间。
输出在0.1秒任务下的输出端口采样时间运行。
更新运行在输入端口样本时间小于1秒的任务。
有关基于端口的示例时间的更多信息,请参见参考模型采样时间

Y

Y

一个

0.1秒任务

Y

N

B

速率转换块使用基于端口的采样时间。
输出在0.1秒任务下的输出端口采样时间运行。
有关基于端口的示例时间的更多信息,请参见参考模型采样时间

Y

N

C

1秒任务

Y

Y

实时多任务执行

下图显示了中的计算调度多任务处理在实时系统中部署生成的代码时的解算器模式。生成的程序显示为在10 Hz定时器中断控制下的两个任务实时运行。

模拟多任务执行

下图显示了同一模型的Simulink执行,以金宝app多任务处理解算器模式。在这种情况下,Simulink引擎在一个执行线程中金宝app运行块,模拟多任务处理。没有先占权发生。

相关话题