可重用库子系统是一个包含在库中的子系统,它被配置为可重用。您必须在库中定义一个子系统,并配置它以实现跨模型重用该子系统。
要重用常用功能,您可以包含子系统的多个实例:
在单个模型中,这是一个顶级模型或模型参考层次结构的一部分
跨模型引用层次结构中的多个引用模型
跨越多个包含Model块的顶级模型
跨越多个不包括Model块的顶级模型
代码生成器使用校验和来确定可重用性。在代码生成器无法重用子系统代码时存在案例。
对于增量代码生成,如果可重用库子系统发生变化,则会重新构建自身及其父类。在构建过程中,如果没有找到匹配的函数,则将在共享实用程序文件夹中生成可重用函数的新实例。如果从以前的构建中找到不同的匹配函数,则使用该函数,并且不会发出新的可重用函数。
对于后续构建,未使用的文件不会被替换或从文件夹中删除。在模型开发期间,当共享实用程序文件夹中存在许多过时的共享函数时,您可以删除文件夹并重新生成代码。如果从模型引用层次结构中删除了可重用库子系统的所有实例,并重新生成代码,那么废弃的共享函数将保留在共享实用程序文件夹中,直到您删除它们。
如果模型发生了变化,可能会为子系统生成不同的代码,则会生成一个新的可重用函数。例如,修改代码注释的模型配置参数可能会导致为子系统生成不同的代码,即使可重用库子系统没有改变。
嵌入式编码器用户可以从包含子系统的库生成代码,配置为重用。有关更多信息,请参阅可重用库子系统的基于库的代码生成(嵌入式编码器).
可重用库子系统的生成代码与模型的生成代码无关。可重用库子系统的代码将生成共享实用程序文件夹,SLPRJ /
,而不是模型引用层次结构文件夹。生成的支持类型的代码,生成到金宝app目标
/ _Sharedutils..h
文件,也在共享实用程序文件夹中。
对于唯一命名,可重用的函数名称将校验和附加到可重用的库子系统名称。例如,子系统的代码和文件,魔法石,第1章
,哪个链接到可重用的库子系统,RLS
,可能是:
函数名:RLS_mgdjlngd
文件名称:rls_mgdjlnd.c.
和rls_mgdjlnd.h.
设置子系统参数如下所示:
选择待作为原子单位.
在这一点代码生成标签:
放功能包装到可重用的功能
.
设定函数名的选择
和文件名称选项参数到以下组合之一:
放函数名的选择和文件名称选项到汽车
.
放函数名的选择到使用子系统名称
和文件名称选项到使用函数名
.
放函数名的选择到用户指定的
和文件名称选项到汽车
或使用函数名
.
放函数名的选择到用户指定的
和文件名称选项到用户指定的
.为此设置相同的值函数名和文件名称参数。
在模型引用层次结构中,如果可重用库子系统的实例位于顶层模型中,则位于模型参考配置参数的窗格对话框,您必须选择为代码生成传递固定大小的标量根输入值范围。如果未选择参数,则为顶部模型中的可重用库子系统实例生成单独的共享功能,并且在引用的模型中的实例生成可重用函数。
如果可重用库子系统连接到根Outport,则没有连接到根Outport的相同子系统不会发生重用。但是,您可以设置通过可重复使用的系统输出到个人论据
在优化窗格以确保在这些子系统之间发生重用。此参数需要嵌入式编码器®执照。
有关创建库的更多信息,请参阅自定义库.有关创建可重用库子系统的示例,请参见为跨模型共享的子系统生成可重用代码.
对于使用可重用库子系统的模型,您必须根据模型是引用模型还是顶级模型来对模型进行不同的配置。如果子系统处于引用的模型层次结构中,设置配置参数,共享代码的位置到汽车
.否则,对于使用子系统的每个模型,设置模型配置参数共享代码的位置到共享位置
.
如果可重用库子系统使用共享的本地数据存储,并且您为模型数据元素配置了默认映射,则为category保留默认存储类映射共享本地数据存储设置默认的.
此示例演示如何配置可重用库子系统,并为跨引用模型共享的子系统生成可重用功能。结果是子系统的可重用代码,生成到共享实用程序文件夹(SLPRJ /
).目标
/ _Sharedutils.
在Simuli金宝appnk编辑器中模拟选项卡上,选择新>图书馆.选择空白的图书馆从“Simulin金宝appk Start Page”窗口。打开RTWDEMO_SSEREUSE.
复制和粘贴子系统魔法石,第1章
进入图书馆编辑器。此操作加载变量魔法石,第1章
进入基础工作区。重命名子系统块RLS
.
单击子系统块并按Ctrl + U查看子系统的内容RLS
.
要配置子系统,请在Library编辑器中右键单击RLS
.在上下文菜单中,选择块参数(子系统).在“子系统参数”对话框中,选择以下选项:
选择待作为原子单位.
在这一点代码生成标签:
放功能包装到可重用的功能
.
放函数名的选择到用户指定的
并验证函数名被设置为myfun.
.
放文件名称选项到汽车
.
点击申请和好吧.
保存可重用的库子系统ssreuselib.
,它创建文件,ssreuselib.slx
.
创建一个包含的实例的模型RLS
从ssreuselib.
.命名这个子系统魔法石,第1章
.添加另一个子系统并命名它SS2
.名称模型ex_model1
.
创建另一个包括一个实例的模型RLS
从ssreuselib.
.命名这个子系统魔法石,第1章
.添加另一个子系统并命名它SS3
.名称模型ex_model2
.
使用引用的两个模型块创建一个顶级模型ex_model1
和ex_model2
.保存顶级模型为ex_mdlref_ssreuse.
.
用模型ex_mdlref_ssreuse.
在Simulink编辑器金宝app中打开C代码选项卡,单击设置打开“配置参数”对话框。
在这一点解算器窗格中,指定类型作为固定步骤
.
在这一点模型参考窗格,选择通过用于代码生成的值通过固定大小的标量根输入.
在这一点代码>报告窗格,选择创建代码生成报告和自动打开报告.
在这一点代码>界面窗格,设置共享代码的位置到共享位置
.
在这一点代码>标识符窗格,设置最大标识符长度到256.
.此步骤为可选步骤。
点击申请和好吧.
在Simuli金宝appnk编辑器中造型选项卡,单击模型浏览器打开模型资源管理器。在模型资源管理器的左侧导航列中,展开ex_mdlref_ssreuse.
节点。
选择以下配置节点ex_mdlref_ssreuse.
节点。在里面内容窗格中,右键单击配置并选择转换为配置参考
.
在“将活动配置转换为引用”对话框中,单击好吧.此操作将模型配置集转换为配置引用,金宝app仿真软件。ConfigSetRef
,并创建配置参考对象,configsetobj.
,在基本工作区中。
在左侧导航列中,右键单击参考(活跃)并选择传播到引用的模型
.
在“配置参考传播到引用的模型”对话框中,在列表中选择引用的模型。点击传播.
顶级模型和参考模型使用相同的配置参考,参考(活跃)
,它指向模型配置参考对象,configsetobj.
,在基本工作区中。在保存模型时,还需要导出configsetobj.
到一个垫子文件。
要生成代码,请在Simulink编辑器中,按金宝appCtrl + B.生成代码后,将打开代码生成报告。
要查看引用模型的代码生成报告,请在左侧导航窗格中引用模型部分,选择ex_model1
.代码生成报告显示生成的文件ex_model1
.
在左侧导航窗格中,展开共享文件.代码生成器使用可重用的库子系统名称。子系统的代码魔法石,第1章
是myfun.c
和myfun.h
.
点击回来然后导航到ex_model2
代码生成报告。ex_model2
使用相同的源代码,myfun.c
和myfun.h
,表示ex_model1
.您的子系统函数和文件名将是不同的。