主要内容

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

采样时间考虑因素

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

任务模式

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

笔记

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

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

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

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

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

模型执行和速率转换

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

为避免提高速率转换错误,请在任务之间插入速率转换块。您可以通过插入隐藏的速率转换块来请求Simulin金宝appk引擎手柄率自动转换。看自动速率过渡有关此选项的说明。

要了解此类问题,请首先考虑Simulink仿真如何与实时程序不同。金宝app

在期间执行金宝app模型仿真

在Simulink引擎金宝app模拟模型之前,它根据其拓扑依赖项命令块。这包括将虚拟子系统扩展到各个块,它们包含并将整个模型平整为单个列表。一旦此步骤完成,将按顺序执行每个块。

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

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

模型执行实时

实时程序与Simulink仿真不同,因为程序必须与实时同步执行模型代码金宝app。每次计算都会导致一些计算延迟。这意味着采样间隔不能缩短或延长(因为它们可以在Simulink仿真中),这导致更效率的执行。金宝app

考虑以下时序数字。

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

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

多任务和伪议案模式有关这件作品的描述。在进行此之前,重要的是要了解该部分。

单任务与多任务操作

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

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

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

如果您有一个可以从多任务执行中受益的模型,则可能需要通过添加速率转换块(或指示Simulink Engine执行此操作)来修改模型以生成预期的结果。金宝app

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

相关话题