主要内容

从跨模型共享的库子系统生成可重用代码

什么是可重用库子系统?

可重用库子系统是一个包含在库中的子系统,它被配置为可重用。您必须在库中定义一个子系统,并配置它以实现跨模型重用该子系统。

要重用通用功能,可以包含子系统的多个实例:

  • 在单个模型中,该模型是顶层模型或模型引用层次结构的一部分

  • 跨模型引用层次结构中的多个引用模型

  • 跨越多个包含Model块的顶级模型

  • 跨越多个不包括Model块的顶级模型

代码生成器使用校验和来确定可重用性。有时代码生成器无法重用子系统代码。

对于增量代码生成,如果可重用库子系统发生变化,则会重新构建自身及其父类。在构建过程中,如果没有找到匹配的函数,则将在共享实用程序文件夹中生成可重用函数的新实例。如果从以前的构建中找到不同的匹配函数,则使用该函数,并且不会发出新的可重用函数。

对于后续构建,未使用的文件不会被替换或从文件夹中删除。在模型开发期间,当共享实用程序文件夹中存在许多过时的共享函数时,您可以删除文件夹并重新生成代码。如果从模型引用层次结构中删除了可重用库子系统的所有实例,并重新生成代码,那么废弃的共享函数将保留在共享实用程序文件夹中,直到您删除它们。

如果模型发生了变化,可能会为子系统生成不同的代码,则会生成一个新的可重用函数。例如,修改代码注释的模型配置参数可能会导致为子系统生成不同的代码,即使可重用库子系统没有改变。

嵌入式编码器用户可以从库中生成代码,库中包含配置为重用的子系统。有关详细信息,请参阅可重用库子系统的基于库的代码生成(嵌入式编码器)

可重用库子系统代码放置和命名

可重用库子系统的生成代码独立于模型的生成代码。可重用库子系统的代码生成到共享实用程序文件夹,slprj/目标/_共享文件,而不是模型引用层次结构文件夹。生成的支持类型的代码,生成到金宝app.h文件,也在共享实用程序文件夹中。

对于唯一命名,可重用函数名称在可重用库子系统名称后附加一个校验和。例如,子系统的代码和文件,魔法石,第1章,它链接到可重用的库子系统,RLS,可能是:

  • 函数名:RLS_mgdjlngd

  • 文件名称:RLS_mgdjlnd.cRLS_mgdjlnd.h

配置可重用库子系统

设置子系统参数如下所示:

  • 选择作为一个原子单位对待

  • 代码生成标签:

    • 设置功能包装可重用的功能

    • 设定函数名的选择

      文件名称选项以下组合之一的参数:

      • 设置函数名的选择文件名称选项汽车

      • 设置函数名的选择使用子系统名称文件名称选项使用函数名

      • 设置函数名的选择用户指定的文件名称选项汽车使用函数名

      • 设置函数名的选择用户指定的文件名称选项用户指定的. 将相同的值设置为函数名文件名称参数。

在模型引用层次结构中,如果可重用库子系统的实例位于顶层模型中,则位于模型参考在“配置参数”对话框的窗格中,必须选择为代码生成传递固定大小的标量根输入值参数如果未选择该参数,将为顶级模型中的可重用库子系统实例生成单独的共享函数,并为引用模型中的实例生成可重用函数。

如果可重用库子系统连接到根Outport,则没有连接到根Outport的相同子系统不会发生重用。但是,您可以设置将可重用系统输出传递为个人论点优化窗格以确保在这些子系统之间发生重用。此参数需要嵌入式编码器®许可证

有关创建库的详细信息,请参见自定义库.有关创建可重用库子系统的示例,请参见为跨模型共享的子系统生成可重用代码

配置包含可重用库子系统的模型

对于使用可重用库子系统的模型,您必须根据模型是引用模型还是顶级模型来对模型进行不同的配置。如果子系统处于引用的模型层次结构中,设置配置参数,共享代码的位置汽车. 否则,对于使用子系统的每个模型,设置模型配置参数共享代码的位置共享位置

如果可重用库子系统使用共享的本地数据存储,并且您为模型数据元素配置了默认映射,则为category保留默认存储类映射共享本地数据存储设置为默认的

为跨模型共享的子系统生成可重用代码

此示例演示如何配置可重用库子系统,并为跨引用模型共享的子系统生成可重用功能。结果是子系统的可重用代码,生成到共享实用程序文件夹(slprj/目标/_共享文件).

创建一个可重用的库子系统。

  1. 在Simuli金宝appnk编辑器中模拟选项卡上,选择新建>库.选择空白的图书馆从Simulink金宝app起始页窗口。打开rtwdemo_ssreuse复制粘贴子系统魔法石,第1章进入库编辑器。此操作将加载的变量魔法石,第1章进入基本工作区。将子系统块重命名为RLS

  2. 单击子系统块并按Ctrl + U查看子系统的内容RLS

  3. 要配置子系统,请在Library编辑器中右键单击RLS. 在关联菜单中,选择块参数(子系统).在“子系统参数”对话框中,选择以下选项:

    • 选择作为一个原子单位对待

    • 代码生成标签:

      • 设置功能包装可重用的功能

      • 设置函数名的选择用户指定的并验证函数名被设置为我的乐趣

      • 设置文件名称选项汽车

  4. 点击申请好吧

  5. 将可重用库子系统另存为苏瑞列布,它创建一个文件,ssreuselib.slx

创建示例模型。

  1. 创建一个包含的实例的模型RLS苏瑞列布. 命名这个子系统魔法石,第1章. 添加另一个子系统并命名它SS2. 命名模型ex_model1

  2. 创建另一个模型,其中包括的一个实例RLS苏瑞列布. 命名这个子系统魔法石,第1章. 添加另一个子系统并命名它SS3. 命名模型ex_model2

  3. 使用引用的两个模型块创建一个顶级模型ex_model1ex_model2.保存顶级模型为ex_mdlref_ssreuse

设置顶层模型的配置参数。

  1. 带模型ex_mdlref_ssreuse在Simulink编辑器金宝app中打开C代码选项卡,单击设置打开“配置参数”对话框。

  2. 解算器窗格中,指定类型固定步长

  3. 模型参考窗格中,选择按值传递固定大小的标量根输入以生成代码

  4. 代码生成>报告窗格中,选择创建代码生成报告自动打开报表

  5. 代码生成>接口窗格中,设置共享代码的位置共享位置

  6. 代码生成>标识符窗格中,设置最大标识符长度256.此步骤为可选步骤。

  7. 点击申请好吧

创建并传播配置引用。

  1. 在Simuli金宝appnk编辑器中建模选项卡,单击模型浏览器打开模型管理器。在模型管理器的左侧导航列中,展开ex_mdlref_ssreuse节点。

  2. 选择下面的配置节点ex_mdlref_ssreuse节点。在内容窗格中,右键单击配置选择转换为配置参考

  3. 在“将活动配置转换为引用”对话框中,单击好吧.此操作将模型配置集转换为配置引用,金宝app仿真软件。ConfigSetRef,并创建配置引用对象,配置setobj,在基本工作区中。

  4. 在左侧导航列中,单击鼠标右键参考(活动)选择传播到引用模型

  5. 在“配置参照传播到参照模型”对话框中,从列表中选择参照模型。点击传播

顶级模型和参考模型使用相同的配置参考,参考(活动),它指向模型配置参考对象,配置setobj,在基本工作区中。在保存模型时,还需要导出配置setobj到一个垫子文件。

生成并查看代码。

  1. 要生成代码,请在Simulink编辑器中按金宝appCtrl + B. 生成代码后,将打开代码生成报告。

  2. 要查看引用模型的代码生成报告,请在左侧导航窗格中引用模型节,选择ex_model1. “代码生成”报告显示为生成的文件ex_model1

  3. 在左侧导航窗格中,展开共享文件. 代码生成器使用可重用库子系统名称。子系统的代码魔法石,第1章myfun.cmyfun.h

  4. 点击回来然后导航到ex_model2代码生成报告。ex_model2使用相同的源代码,myfun.cmyfun.h,表示ex_model1. 您的子系统功能和文件名将不同。

相关的话题