主要内容

从图书馆子系统生成可重用的代码之间共享模型

什么是可重用的库子系统?

一个可重用的库子系统是一个子系统包含在配置库,以便重用。您必须定义一个子系统在图书馆和配置跨模型重用重用子系统。

重用公共功能,您可以包括多个实例的一个子系统:

  • 在一个模型中,这是一个高级模型或模型参考层次结构的一部分

  • 在多个层次结构模型在模型参考引用

  • 跨多个顶级模型包含模型块

  • 跨多个顶级模特,不包括模型块

代码生成器使用校验和来确定可重用性。在某些情况下当代码生成器不能重用子系统的代码。

代码生成增量,如果可重用的库子系统的变化,重建本身及其父母发生。在构建,如果没有找到匹配的函数,生成可重用函数的一个新实例的共享工具文件夹。如果找到不同的匹配函数从之前的构建,使用这个函数,和一个新的可重用函数不是发出。

为后续构建,未使用的文件不替换或删除从您的文件夹中。在开发一个模型,当许多过时的共享功能存在于共享工具文件夹,您可以删除文件夹和重新生成代码。如果一个可重用的所有实例库子系统层次,你从一个模型参考重新生成代码,过时的共享功能仍然在共享工具文件夹,直到你删除它们。

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

嵌入式程序员用户可以生成代码从一个库,它包含子系统配置以便重用。有关更多信息,请参见图书馆为可重用的库代码生成子系统

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

生成的代码的可重用的库子系统独立于模型的生成的代码。生成的代码可重用的库子系统共享公用文件夹,slprj /目标/ _sharedutils,而不是文件夹层次结构模型的参考。生成的代码支持的类型,生成的金宝app。h文件,也共享公用文件夹中。

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

  • 函数名:RLS_mgdjlngd

  • 文件名称:RLS_mgdjlnd.cRLS_mgdjlnd.h

配置一套可重用的库子系统,子系统参数列在这里:

  • 选择治疗作为一个原子单元

  • 代码生成标签:

    • 函数包装可重用的功能

    • 设置函数名的选择文件名称选项基于此表的参数。这个表总结了代码生成器生成的代码和如何凸显了文件名称选项粗体,允许您生成代码可重用的库子系统。对于这个表的目的,假设子系统块命名mySubsystem文件名称用户指定的选择是myFunction

      函数名的选择 文件名称选项 生成的文件夹位置 生成的函数名 生成的文件名
      汽车 汽车 / slprj /目标/ _sharedutils mySubsystem_校验和 mySubsystem_校验和。c,mySubsystem_校验和。h
      使用子系统名称 / slprj /目标/ _sharedutils mySubsystem_校验和 mySubsystem_校验和。c,mySubsystem_校验和。h
      使用函数名 / slprj /目标/ _sharedutils mySubsystem_校验和 mySubsystem_校验和。c,mySubsystem_校验和。h
      用户指定的 model_target_rtw 模型_Subsystem myFile.h
      使用子系统名称 汽车 model_target_rtw 模型_Subsystem 生成的代码包含在模型。h
      使用子系统名称 / slprj /目标/ _sharedutils mySubsystem_校验和 mySubsystem_校验和。c,mySubsystem_校验和。h
      使用函数名 / slprj /目标/ _sharedutils mySubsystem_校验和 mySubsystem_校验和。c,mySubsystem_校验和。h
      用户指定的 model_target_rtw 模型_Subsystem myFile.h
      用户指定的 汽车(此规范支持子系统的模型的一个独特的实例)。金宝app / slprj /目标/ _sharedutils myFunction myFunction。c, myFunction.h
      使用子系统名称 model_target_rtw myFunction mySubsystem。c, mySubsystem.h
      使用函数名(此规范支持子系统的模型的一个独特的实例)。金宝app / slprj /目标/ _sharedutils myFunction myFunction。c, myFunction.h
      用户指定的(支持该规范如果指定的函数名和文件名相同,只有金宝app一个唯一的实例的子系统模型)。 / slprj /目标/ _sharedutils myFunction myFunction。c, myFunction.h

子系统块参数的更多信息,请参阅子系统

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

模型使用一个可重用的库子系统,您必须配置模型的不同取决于模型是一个参考模型或模型。如果引用的模型层次结构的子系统,设置配置参数,共享代码的位置汽车。否则,对于每一个模型,该模型使用子系统,设置模型配置参数共享代码的位置共享位置

如果一个可重用的库子系统使用共享本地数据存储和配置的默认映射模型的数据元素,保留默认存储类映射类别本地数据存储共享设置为默认的

在层次模型参考,如果可重用的库子系统的一个实例是在上面的模型中,然后在模型参考面板的配置参数对话框中,您必须选择通过根输入固定大小的标量值代码生成参数。如果你不选择参数,一个单独的共享功能为可重用的库子系统生成实例在上面的模型中,和一个可重用函数生成的实例在被引用的模型。

如果一个可重用的库子系统连接到根外港,重用不发生在相同的子系统不连接到根外港。然而,你可以设置通过可重用的系统输出个人观点优化面板确保重用这些子系统之间发生。这个参数需要嵌入式编码器®许可证。

创建一个库的更多信息,请参阅自定义库。为创建一个可重用的库子系统的一个例子,看看生成子系统的可重用代码之间共享模型

生成子系统的可重用代码之间共享模型

这个例子展示了如何配置一个可重用的库子系统和生成一个可重用的功能子系统跨引用共享模型。结果是可重用代码的子系统,即生成共享公用文件夹(slprj /目标/ _sharedutils)。

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

  1. 在模型编辑器中金宝app,在模拟选项卡上,选择新的>图书馆。选择空白的图书馆从仿真软件开始页面金宝app窗口。开放rtwdemo_ssreuse复制粘贴子系统魔法石,第1章到库编辑器。这个动作加载变量魔法石,第1章基本工作空间。重命名子系统块RLS

  2. 点击子系统块和媒体Ctrl + U查看的内容子系统RLS

  3. 配置子系统,在图书馆编辑器,右键单击RLS。在上下文菜单中,选择块参数(子系统)。在子系统参数对话框中,选择以下选项:

    • 选择治疗作为一个原子单元

    • 代码生成标签:

      • 函数包装可重用的功能

      • 函数名的选择用户指定的,并验证函数名被设置为myfun

      • 文件名称选项汽车

  4. 点击应用好吧

  5. 保存的可重用的库ssreuselib创建了一个文件,ssreuselib.slx

创建示例模型。

  1. 创建一个模型包括的一个实例RLSssreuselib。这个子系统名称魔法石,第1章。添加另一个子系统和名称SS2。模型名称ex_model1

  2. 创建另一个模型,该模型包括的一个实例RLSssreuselib。这个子系统名称魔法石,第1章。添加另一个子系统和名称SS3。模型名称ex_model2

  3. 创建一个模型两个模型块参考ex_model1ex_model2。保存模型ex_mdlref_ssreuse

设置配置参数的模型。

  1. 与模型ex_mdlref_ssreuse在仿真软件中打开金宝app®编辑器,C代码选项卡上,单击设置打开配置参数对话框。

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

  3. 模型参考窗格中,单击省略号把先进的参数。然后,选择通过根输入固定大小的标量值代码生成

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

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

  6. 代码生成>标识符窗格中,设置最大标识符长度256年。这一步是可选的。

  7. 点击应用好吧

创建和传播一个配置参考。

  1. 在模型编辑器中金宝app,在建模选项卡上,单击模型浏览器模型浏览器打开。在Model Explorer左侧导航栏,扩大ex_mdlref_ssreuse节点。

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

  3. 在激活配置转换为引用对话框,点击好吧。这一行动将配置设置为配置参考模型,金宝appSimulink.ConfigSetRef创建配置参考对象,configSetObj在基本工作空间。

  4. 在左侧导航栏,右键单击引用(主动)并选择传播到参考模型

  5. 在配置参考传播引用模型对话框中,选择列表中被引用的模型。点击传播

现在,上面的模型和模型使用相同的配置参考引用,引用(主动)指向一个模型配置参考对象,configSetObj在基本工作空间。当你保存你的模型,你还需要导出configSetObjMAT-file。

生成并查看代码。

  1. 生成的代码,在模型编辑器中,出版社金宝appCtrl + B。代码生成后,打开代码生成报告。

  2. 查看代码生成报告引用的模型,在左侧导航窗格中,引用模型部分中,选择ex_model1。代码生成的报告上显示了生成的文件ex_model1

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

  4. 点击回来和导航到ex_model2代码生成报告。ex_model2使用相同的源代码,myfun.cmyfun.h的代码ex_model1。子系统功能和文件名称会有所不同。

相关的话题