家伙在simu金宝applink上

金宝app基于模型的设计

导出功能模型

我开始写这篇文章,目的是谈论新的初始化函数,,,,重置功能终止功能块,以及密切相关的州读者国家作家R2016b中引入的块。

但是,我很快意识到,这些新功能与我几乎从未在此博客上谈论过的一种模型架构密切相关:导出功能模型

生成代码

让我们以以下模型为例。它包含一个偏差和单位延迟块在0.001处执行,并且在0.01s执行的数学功能块。

简单的示例模型

众所周知,使用嵌入式编码器,可以从Simulink模型生成C代码。金宝app使用默认嵌入式编码器系统目标文件,您将获得的代码看起来像:

由简单示例模型生成的代码

如您所见,代码是由一个初始化函数和一个步骤函数制成的。该步骤函数设计为以模型基本速率为0.001,在我们的情况下为0.001。非常适合在单任务上下文中执行代码。

如果您愿意,您可以要求Simulink金宝app将每个离散率视为单独的任务

多任务

在这种情况下,生成的代码将由一个函数PAR样本时间组成。然后,您可以实现调度程序并按照所需的方式调用每个费率。

多任务代码

导出功能

每个速率具有一个函数是有用的,但是如果您想对代码的执行进行更多控制,该怎么办?例如,您可能希望将一个率分为多个任务,并为每个任务分配不同的优先级。

为此,嵌入式编码器提供了可能性导出功能。导出功能可直接控制生成的功能以及模拟其计划和优先级的能力。

要与出口功能的概念兼容,您的模型必须是以特定的方式建造:要导出功能的系统的最高级别必须仅包含函数呼叫子系统,内部和出口。这样,每个子系统将生成一个功能。

对于我们的示例模型,我们可以这样重新排列:

导出功能子系统

为了进行仿真,必须明确完成不同任务的调度,例如,如上图中使用状态流。当时间生成代码时,您可以右键单击子系统并导出功能:

导出功能子系统模型

该代码看起来如下:

导出功能子系统代码

您将能够在手写的调度程序中包含此代码。如上所述,这将使您可以将一个速率分为多个功能或任务。

导出功能模型

对于大型项目,也可以创建导出功能模型

在这种情况下,顶部模型将仅用于仿真,您将为子模型生成代码。金宝appSimulink将自动认识到该模型旨在导出功能,并且该代码将类似于从上面的子系统生成的代码。

导出功能模型

下一步是什么?

下周,我们将看到新的初始化函数,,,,重置功能终止功能可以在导出功能模型中使用块来模拟函数或任务的关闭和重新启动。

|

注释

要发表评论,请单击这里登录您的数学帐户或创建一个新帐户。