主要内容

创建自定义库

创建一个自定义库来存储和管理类似的模块和子系统组,并在 Simulink® 模型中重用它们。当您将库中的模块添加到模型时,库模块将用作原型,它在模型中的实例将成为链接模块,其外观和行为与原型一样。当您希望在模型中经常重用的模块的所有实例具有一致的行为时,使用链接模块特别有用。

例如,您可以创建一个自定义汽车控制库,其中包含发动机控制、变速器控制、制动系统、车辆动力学和驾驶辅助等模块。然后,在不同的车辆模型和工程中使用该库中的模块,以保持一致性并缩短开发时间。您还可以与您的团队共享此库。

使用自定义库的优势

自定义库具有以下几个优点:

  • 模块组织和可重用性 - 您可以在自定义库中组织类似的模块和子系统,以便轻松维护和重用您经常使用且只需稍加修改的组件。

  • 保持一致性 - 使用库模块的实例可确保其所有链接实例使用的一致性。

  • 防止意外修改 - 锁定库与其链接模块之间的链接,以防止其他用户对库模块实例进行更改。

创建自定义库

此示例说明如何创建自定义库,添加模块和注解,以及配置库设置。

使用以下步骤创建库:

1.使用以下任一方法打开一个空的“库”窗口:

  • 在 Simulink 起始页的 Simulink 产品组中,点击空白库

  • 在 Simulink 工具条中的仿真选项卡上,选择新建,然后点击

  • 使用 new_system 命令创建名为 myLibrary 的库:

new_system("myLibrary","Library");
open_system("myLibrary");

2.将该库保存为 .slx 文件,与保存模型的方式类似。但是,与模型不同,您不能直接在库中运行仿真。您可以将库保存在使用其模块的模型可以访问的位置。

在库中添加模块和子系统

创建库后,您可以添加根据您的目的配置的模块、子系统和图。您还可以通过更改模块的参数、添加封装或在子系统内添加模块来修改模块。对于专用功能,您可以在库中创建自定义模块。有关详细信息,请参阅设计和创建自定义模块

要在 myLibrary 中添加内容,请使用以下步骤:

  1. 添加一个名为 Continuous Time 的 Subsystem 模块。

  2. Continuous Time 中,添加 Inport、Integrator 和 Outport 模块并连接它们。

  3. 添加另一个名为 Discrete Time 的 Subsystem 模块。

  4. 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 参数用于设置库模块与其实例之间的连接。您可以通过多种方式配置库模块的链接状态。有关详细信息,请参阅链接状态

使用自定义库时的注意事项

  • 当您将父库模块添加到模型后修改模块属性时,这些更改不会自动传播到其链接的实例。

另请参阅

函数

工具

主题