您可以严格执行模型代码单一任务的方式。虽然这种模式在执行速度方面效率较低,但在某些情况下,它可以简化您的模型。
在单任务模式下,基本采样率必须定义一个足够长的时间间隔,以允许在该时间间隔内执行所有块。
下一个图说明了单任务执行中固有的低效率。
单任务系统执行需要一个足够长的基本采样率,以在整个模型中执行一个步骤。
要使用单任务执行,请清除模型配置参数将每一个离散的速率视为一个单独的任务.选择该参数后,在以下情况下会使用单任务模式:
如果您的模型包含一个示例时间
如果你的模型包含连续样本时间和离散样本时间固定步长等于离散样本时间
这个例子演示了一个简单的多速率模型如何使用固定步长求解器在实时和模拟中执行。它通过设置模型配置参数,同时考虑单任务和多任务模式下的操作将每一个离散的速率视为一个单独的任务.
示例模型如下图所示。讨论将模型的6个块称为A到F,如框图中所示。
通过将更高的优先级分配给块F、E和d,块的执行顺序(在每个块的右上角显示)被强制调整为所示的顺序。所示的顺序是该模型可能的有效执行顺序。有关更多信息,请参见动态系统的仿真阶段.
执行顺序由块之间的数据依赖关系决定。在实时系统中,执行顺序决定了块在给定的时间间隔或任务内执行的顺序。本文将模型的执行顺序看作是给定的,因为它涉及到任务块计算的分配和任务执行的调度。
请注意
本节中的讨论和时序图基于在默认(保护)模式下使用速率转换块的假设,并带有块参数数据传输过程中必须保证数据的完整性和确保确定的数据传输(最大延迟)选择
本例在模型配置参数时考虑上述模型的执行将每一个离散的速率视为一个单独的任务表示为单任务模式。
在单任务系统中,如果选择模型配置参数块减少,从模型中优化出快到慢的速率过渡块。显示默认情况(参数块减少选中),因此区块B不会出现在该部分的时序图中。有关更多信息,请参见块减少.
下表显示了模型中每个块的执行顺序、采样时间以及块是否有输出或更新计算。区块A没有离散状态,因此没有更新计算。
执行顺序和样本时间(单次任务)
块 |
样品时间 |
输出 |
更新 |
---|---|---|---|
E |
0.1 |
Y |
Y |
F |
0.1 |
Y |
Y |
D |
1 |
Y |
Y |
一个 |
0.1 |
Y |
N |
C |
1 |
Y |
Y |
下图显示了在实时系统中部署生成的代码时的计算调度。生成的程序显示在实时运行中,在一个10赫兹定时器的中断控制下。
在时间0.0、1.0和之后的每一秒,慢块和快块都执行它们的输出计算;接下来是对有状态的块的更新计算。在给定的时间间隔内,输出和更新计算按块执行顺序排列。
快速块以0.1秒为间隔,每tick执行一次。输出计算之后是更新计算。
系统将每个时间间隔的一部分(标记为“等待”)空闲。在只有快速块执行的时间间隔期间,大部分时间间隔都是空闲的。这说明了单一任务模式固有的低效率。
下一个图显示了在Simulink中模型的执行金宝app®模拟循环。
因为时间是模拟的,所以刻度的位置表示模拟循环的迭代。块的执行顺序与前面的图完全相同,但是没有实时时钟的约束。因此,模拟样本周期之间没有空闲时间。