创建自定义库
创建一个自定义库来存储和管理类似的模块和子系统组,并在 Simulink® 模型中重用它们。当您将库中的模块添加到模型时,库模块将用作原型,它在模型中的实例将成为链接模块,其外观和行为与原型一样。当您希望在模型中经常重用的模块的所有实例具有一致的行为时,使用链接模块特别有用。
例如,您可以创建一个自定义汽车控制库,其中包含发动机控制、变速器控制、制动系统、车辆动力学和驾驶辅助等模块。然后,在不同的车辆模型和工程中使用该库中的模块,以保持一致性并缩短开发时间。您还可以与您的团队共享此库。
使用自定义库的优势
自定义库具有以下几个优点:
模块组织和可重用性 - 您可以在自定义库中组织类似的模块和子系统,以便轻松维护和重用您经常使用且只需稍加修改的组件。
保持一致性 - 使用库模块的实例可确保其所有链接实例使用的一致性。
防止意外修改 - 锁定库与其链接模块之间的链接,以防止其他用户对库模块实例进行更改。
创建自定义库
此示例说明如何创建自定义库,添加模块和注解,以及配置库设置。
使用以下步骤创建库:
1.使用以下任一方法打开一个空的“库”窗口:
在 Simulink 起始页的 Simulink 产品组中,点击空白库。
在 Simulink 工具条中的仿真选项卡上,选择新建,然后点击库。
使用
new_system
命令创建名为myLibrary
的库:
new_system("myLibrary","Library"); open_system("myLibrary");
2.将该库保存为 .slx
文件,与保存模型的方式类似。但是,与模型不同,您不能直接在库中运行仿真。您可以将库保存在使用其模块的模型可以访问的位置。
在库中添加模块和子系统
创建库后,您可以添加根据您的目的配置的模块、子系统和图。您还可以通过更改模块的参数、添加封装或在子系统内添加模块来修改模块。对于专用功能,您可以在库中创建自定义模块。有关详细信息,请参阅设计和创建自定义模块。
要在 myLibrary
中添加内容,请使用以下步骤:
添加一个名为
Continuous Time
的 Subsystem 模块。在
Continuous Time
中,添加 Inport、Integrator 和 Outport 模块并连接它们。添加另一个名为
Discrete Time
的 Subsystem 模块。在
Discrete Time
中,添加 Inport、Discrete-Time Integrator 和 Outport 模块并连接它们。
open_system("myLibrary")
如果您的库中包含多个模块,您可以通过将它们分组到单独的子库中来改善组织。例如,您可以通过创建基于功能的子库来改善自定义汽车控制库的组织。一个 Engine Control 子库可以包括燃油喷射系统、点火正时控制、排放控制和节气门控制模块。另一个 Driver Assistance 子库可以包含巡航控制、车道保持辅助、自适应前灯和防撞系统模块。有关详细信息,请参阅将库添加到库浏览器和快速插入中的“向库添加子库”。
锁定和解锁库
当您关闭库时,它将被锁定,无法进行编辑。要在下次打开时进行更改,您必须将其解锁。
使用以下任一选项来解锁库:
在“库”窗口中,点击左下角的锁标记。
在 Simulink 工具条的库选项卡中的保护部分中,点击锁定的库。
在 MATLAB 命令行窗口中,使用
set_param
函数设置库的Lock
参数:
set_param("myLibrary","Lock","off")
防止禁用库链接
默认情况下,库模块的用户可以禁用指向父库的链接。如果您想控制链接模块的编辑并防止模块用户禁用链接,您可以锁定父库模块与其链接模块之间的链接。锁定库链接可防止用户对其链接的实例进行任何更改。有关模块用户如何与锁定库中的模块交互的信息,请参阅锁定指向库模块的链接。
使用以下选项中的任何一个来锁定库的链接。必须先解锁库才能更改这些设置。
在“库”窗口中的库选项卡上,点击锁定链接。
在命令行窗口中,使用
set_param
函数设置LockLinksToLibrary
参数:
set_param("myLibrary","LockLinksToLibrary","on");
将注解添加到库
使用文本、公式或图像注解来添加库的背景信息或说明。您可以将注解中的标注线添加到库中的模块,也可以创建点击时执行操作的注解。
要在 myLibrary
中添加注解,请双击要添加注解的画布,再点击快速插入菜单中的创建注解,然后将注解文本添加为 Integrator Library
。有关设置注解的详细信息,请参阅为模型添加注解。
要显示 myLibrary
的所有注解,请使用以下命令:
ann = find_system("myLibrary","FindAll","on","Type","annotation"); get_param(ann,"PlainText")
ans = 2×1 cell array {'Copyright 2024 The MathWorks, Inc.'} {'Integrator Library' }
您还可以指定库中每个模块的模块属性。有关详细信息,请参阅指定模块属性。
添加库模块描述
要添加出现在链接模块中的说明,请封装该库模块,然后在封装的文档窗格中添加说明。通过模块属性添加到库模块的描述不会出现在链接模块上。有关创建封装的信息,请参阅创建简单封装。
隐藏库模块详细信息
您可以隐藏自定义库中 Subsystem 模块的实现细节,以防止对自定义库模块进行任何意外更改。
要隐藏 Subsystem 模块 Continuous Time
的实现细节,请选择 Subsystem 模块。在 Simulink 工具条的 Subsystem 模块选项卡的查看内部部分中,点击允许 "查看内部"。这将禁用通过用户界面和使用 open_system(blk,"force")
以编程方式查看 Subsystem 模块的实现细节的选项,其中 blk
是打开或加载的模型中 Subsystem 模块的全名或路径。
要启用查看库模块细节的选项,请选择库中的 Subsystem 模块,然后在 Subsystem 模块选项卡中,点击查看内部部分中的允许 "查看内部"。
这些更改仅适用于库中的选定模块,而不适用于整个库。
防止库模块链接到实例
默认情况下,当您将库模块添加到模型时,添加的模块将成为链接模块。但是,您可以配置库模块,以便从其中创建的实例是独立副本而不是链接模块。
要使 Continuous Time
模块实现此行为,请在该模块的“模块属性”窗口中,使用“回调”选项卡将库模块的 CopyFcn
回调设置为:
set_param(gcbh,"LinkStatus","none");
这里,LinkStatus
参数用于设置库模块与其实例之间的连接。您可以通过多种方式配置库模块的链接状态。有关详细信息,请参阅链接状态。
使用自定义库时的注意事项
当您将父库模块添加到模型后修改模块属性时,这些更改不会自动传播到其链接的实例。