基于时间的调度和代码生成

采样时间考虑因素

万博1manbetx®模型在一个或多个采样时间运行。Simu万博1manbetxlink产品在构建多速系统方面提供了相当大的灵活性,即具有多个采样时间的系统。但是,这种相同的灵活性还允许您构建代码生成器不能在多任务环境中生成实时代码的模型。为了使多速率模型实时按预期运行(即提供正确的答案),有时必须修改模型或指示Simulink引擎为您修改模型。万博1manbetx通常,修改涉及在具有不等采样时间的块之间放置速率转换块。以下部分讨论了您必须在多任务环境中使用多速率模型来解决问题。有关样本时间的全面讨论,包括率过渡,请参阅什么是采样时间?(万博1manbetx模型),子系统中的样本时间(万博1manbetx模型),系统中的采样时间(万博1manbetx模型),解决汇率转换(万博1manbetxSimulink)和相关主题。

任务模式

固定步骤模型有两个执行模式:单任务和多任务处理。这些模式仅适用于固定步骤溶剂。要选择执行模式,请选择Model Configuration参数将每个离散的速率视为一个单独的任务。选择该参数表示多速率模型适用多任务执行。清除该参数时,表示单任务执行。

笔记

使用多任务处理的多速率模型不能引用使用单任务处理的多速率模型。

可以在实时操作系统中执行实时系统中的模型,或者可以完成裸金属目标硬件,其中模型在中断服务程序(ISR)的上下文中运行。

一个系统(例如开放组Unix®或微软®窗户®系统)是多任务并不意味着你的程序可以实时执行。这是因为程序可能不会在需要时抢占其他进程。

在操作系统(例如PC-DOS)中,在给定时间只有一个过程中,中断服务例程(ISR)必须执行保存处理器上下文的步骤,执行模型代码,收集数据和恢复处理器语境。

其他操作系统,例如符合POSIX标准的操作系统,提供自动上下文切换和任务调度。这简化了由此执行的操作ISR。在这种情况下,ISR仅仅启用模型执行任务,这通常是阻塞的。下图说明了这种差异。

模型执行和速率转换

要生成从实时预期执行的代码,您(或Simulink引擎)可能需要识别和处理模型内的采样率转换。万博1manbetx在多任务模式下,默认情况下,如果模型包含无效速率转换,则模拟期间的Simu万博1manbetxlink Engine标记错误虽然您可以使用模型配置参数多任务速度过渡改变这种行为。范围单任务率转换可用于单任务模式的相同目的。

为了避免增加速率转换错误,请在任务之间插入速率转换块。您可以请求Simulink引擎通过插入隐藏的速率转万博1manbetx换块来自动处理速率转换。看自动速度过渡获取此选项的解释。

要理解这些问题,首先考虑Simulink模拟与实时程序有何不同。万博1manbetx

在期间执行万博1manbetx模型仿真

在Simulink引擎万博1manbetx模拟模型之前,它会根据块的拓扑依赖性对它们进行排序。这包括将虚拟子系统扩展为它们所包含的单个块,并将整个模型压缩为单个列表。一旦该步骤完成,每个块将按顺序执行。

此过程的关键是块的排序。其输出直接依赖于其输入的块(即,具有直接馈通的块)无法执行,直到块驱动其输入执行。

某些块基于以前的时间步骤中获取的值或从指定为块参数的初始条件来设置其输出。这种块的输出由存储在存储器中的值确定,该值可以独立于其输入而更新。在仿真期间,在推进与时间对应的变量之前执行计算。这导致瞬间发生的计算(即没有计算延迟)。

实时建模执行

实时程序与Simulink仿真的不同之处在于,该程序必须与实时同步地执万博1manbetx行模型代码。每个计算结果都有一定的计算延迟。这意味着样本间隔不能缩短或延长(就像在Simulink模拟中一样),这将导致执行效率较低。万博1manbetx

考虑以下时序数字。

注意采样间隔的处理效率低下T1.。该间隔不能被压缩以增加执行速度,因为根据定义,采样时间是实时时钟的。

您可以通过使用多任务模式来避免这种潜在的低效率。多任务模式定义了具有不同优先级的任务,以执行具有不同采样率的部分模型代码。

多任务和伪多任务模式来了解它是如何工作的。在继续本文之前,理解这一节是很重要的。

单任务与多任务操作

单任务程序需要更长的采样间隔,因为必须在每个时钟周期内执行所有计算。这可能导致可用CPU时间的低效使用,如上图所示。

如果模型大,则多任务模式可以提高程序的效率,并且在每次速率下执行许多块。

但是,如果您的模型以单一速率为主,并且只有几个块以较慢的速率执行,则多任务处理实际上可以降低性能。在这样的模型中,任务切换中产生的开销可以大于执行较慢块所需的时间。在这种情况下,以主导率执行所有块更有效。

如果您有一个可以从多任务执行中获益的模型,您可能需要通过添加Rate Transition块(或指示Simulink引擎这样做)来修改您的模型,以生成预期的结果。万博1manbetx

有关这两种执行模式和示例的更多信息,请参见单任务执行建模多任务执行模拟

相关的话题