主要内容

绝对时间和消耗时间计算

关于定时器

某些块需要任意一个的值绝对时间(即从程序开始执行到现在的时间)或运行时间(例如,两个触发事件之间的时间间隔)。支持实时模型的目标(金宝apprtModel)数据结构为请求绝对时间或流逝时间的块提供有效的时间计算服务。绝对计时器和流逝计时器特性包括

  • 计时器在生成的代码中作为无符号整数实现。

  • 在多速率模型中,每个速率最多分配一个计时器。如果以给定速率执行的块不需要计时器,则计时器不会分配给该速率。这最大限度地减少了为计时器分配的内存,并显著减少了维护计时器所涉及的开销。

  • 分配在触发子系统中使用块的消耗时间计数器被最小化,进一步减少内存使用和开销。

  • S-function和TLC api允许您的S-function在模拟和代码生成中访问计时器。

  • 计时器的字长由用户指定的最大计数器值决定,该值由您使用模型配置参数设置应用程序生命周期(天).如果指定此值,计时器不会溢出。有关更多信息,请参见控制时间计数器的内存分配

看到绝对时间限制有关绝对时间和它所施加的限制的更多信息。

用于周期性和异步任务的定时器

为块提供的计时服务在其中执行周期任务(即,以模型基本速率或子速率运行的任务)。

代码生成器还为其执行的块提供计时器支持金宝app异步对于模型的周期定时源。请参阅以下主题:

计时器的分配

如果您创建或维护一个S-Function块,它需要绝对或经过时间数据,它必须注册需求(参见以编程方式访问计时器)。在多速率模型中,计时器是按速率分配的。例如,考虑一个结构如下的模型:

  • 模型中有三种速率,A、B和C。

  • 任何以速率B运行的块都不需要绝对时间或消耗时间。

  • 两个以C速率运行的块记录了绝对时间的要求。

  • 一个以速率A运行的块注册了对绝对时间的需求。

在这种情况下,将生成两个计时器,分别以速率A和C运行。当与速率A和C相关的任务执行时,计时引擎更新计时器。以速率A和C执行的块从与速率A和C相关的计时器获得时间数据。

生成代码中的整数计时器

在生成的代码中,绝对时间和运行时间的计时器被实现为无符号整数。默认大小为64位。如果您设置了模型配置参数,这是分配给计时器的内存量应用程序生命周期(天).对于采样率为1000 MHz的应用程序,64位计数器在500年以上都不会溢出。看到异步任务中的定时器控制时间计数器的内存分配获取更多信息。

触发子系统中的运行时间计数器

一些块,如离散时间积分器块,执行计算需要经过的时间(增量T)自前一个块执行。需要运行时间数据的块必须注册该需求(参见以编程方式访问计时器)。然后,如果需要,被触发的子系统分配和维护一个运行时间计数器。该计时器在子系统级别上起作用,而不是在单个块级别上。如果触发子系统(或触发子系统中无条件执行的子系统)包含一个或多个需要运行时间数据的块,则生成计时器。

请注意

如果您正在使用简化的初始化模式,那么在启用后的第一次执行时,无论子系统是否配置为启用时重置,运行时间都将被重置。有关更多信息,请参见未指定初始化检测

相关的话题