Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

创建自定义库

创建库

您可以创建自己的库,(可选)并将其添加到 Simulink®库浏览器中。您可以像对待模型一样将库另存为 .SLX 文件。但是,您不能在库中进行仿真,而且每次您关闭库之后,库将被锁定而无法进行编辑。要对库进行更改,必须先解锁库。请参阅锁定和解锁库

  1. 在 Simulink Start Page 上,选择 Blank Library 并点击 Create Library

  2. 将模型或库中的模块添加到新库中。对模块进行所需的更改,如更改模块参数、添加封装或将模块添加到子系统中。

    库层次结构中的子系统名称必须唯一。例如,不要创建 Subsystem_Name1/Subsystem_Name2/Subsystem_Name1 这样的层次结构。

  3. 添加注释或图像。右键点击您希望出现在库浏览器的库中的模块,然后选择 Show in Library Browser

  4. 如果您打算将库添加到库浏览器中,您可以在库模型中为模块和注释排序。默认情况下,它们按字母顺序显示在库浏览器中,先显示子系统,然后显示模块,最后显示注释。您的库用户可以使用库浏览器上下文菜单选择是按字母顺序还是您指定的顺序进行查看。如果用户选择此选项,则它们在库模型中的显示顺序将决定它们在库浏览器中的库网格上的显示顺序。

  5. 如果您希望库出现在库浏览器中,请在保存库之前启用模型属性 EnableLBRepository

    set_param(gcs,'EnableLBRepository','on');

  6. 保存库。

    库的保存位置取决于您打算如何使用它。如果您要将库添加到库浏览器中,请将它保存到 MATLAB® 路径中的文件夹中,或者将保存位置添加到 MATLAB 路径中。否则,请将它保存到使用模块的模型能够访问的位置。

如果您希望库出现在库浏览器中,还必须在您的 MATLAB 路径中创建函数 slblocks,以便将库添加到浏览器中。要查看向库浏览器中添加库的完整步骤的示例,请参阅将库添加到库浏览器中

注意

要用您自己的自定义库更新库浏览器,请在库浏览器库列表中的任意位置点击鼠标右键,然后选择 Refresh Library Browser。刷新库浏览器也会更新快速插入列表,以包含当前有效的自定义库中的模块。快速插入列表让您不离开画布就能将模块添加到模型中。点击画布并开始键入,即可添加快速插入列表中的模块。

用于自定义库的模块

您的库可以包含您需要的模块,并根据您的用途进行配置。库中的子系统、封装模块和图将变成链接模块,作为它们在模型中的实例,当您在库中更改它们时,实例也随之更新。了解自定义模块对您创建库也很有用。请参阅设计和创建自定义模块

您可以在自定义库中创建模块,并针对具体用途进行设置。

创建子库

如果您的库中包含许多模块,您可以将模块分组成子系统或单独的子库。要创建子库,您需要创建一个包含子库模块的库,然后从父库的 Subsystem 模块中引用该库。

  1. 在您要添加子库的库中,添加一个 Subsystem 模块。

  2. Subsystem 模块中,删除默认的输入和输出端口。

  3. 如果您需要,可为子系统创建封装,以显示说明子库用途的文本或图像。

  4. 在子系统模块属性中,将 OpenFcn 回调设置为您要引用的库的名称。

要了解有关封装的详细信息,请参阅创建简单封装

防止库模块链接到实例

您可以配置某个库模块,以使根据它创建的实例不是链接模块,而是它的副本。设置模块的 CopyFcn 回调。

set_param(gcbh,'LinkStatus','none'); 

在链接模块中包括模块说明

要添加出现在链接模块中的说明,请封装该库模块,然后在封装的 Documentation 窗格中添加说明。通过模块属性添加到库模块中的说明不会出现在链接模块上。

使用关键字配置模块以实现快速插入

您可以向库中的模块添加一个或多个关键字。关键字允许您通过输入关键字或模块名称,从快速插入提示中将模块添加到模型中。

例如,假设您的库中有一个自定义 Gain 模块。您可以将关键字 My Gain 添加到该模块中。然后,您可以通过在快速插入提示下输入 My Gain 将模块添加到模型中。

注意

您无法将关键字添加到来自 Commonly Used Blocks 的模块中,因为它们是查看各种库中常用模块的位置。如果要向 Commonly Used Blocks 中可用的一个模块添加关键字,请确保在定义该模块的库中设置该模块。

要将关键字添加到库中的模块,请使用 set_param'BlockKeywords' 参数。您可以使用字符向量、字符串标量或字符串数组作为值。例如:

set_param(gcb,'BlockKeywords',{"My Gain","Your Gain"})
set_param(gcb,'BlockKeywords','My Integrator')

注意

关键字中支持的特殊字符是 '&', '(', ')', '+', '@', '!'

注意

快速插入还支持通过使用国际化关键字以英语以外的语言搜索模块。

使用 OpenFcn 回调为库浏览器配置子系统

Subsystem 模块在自定义库中的常见用途是设置 OpenFcn 回调属性以打开库,从而生成一种库层次结构。但是,您可以将 Subsystem 模块的 OpenFcn 回调属性用于其他目的,例如,运行 MATLAB 代码或打开链接。

如果库中的子系统模块为空,且其 OpenFcn 回调包含的代码执行指向库或模型之外的操作,则您需要在该子系统中添加一个 'ShowInLibBrowser' 封装参数,以使其出现在库浏览器中。

  1. 右键点击该子系统,然后选择 Mask > Create Mask。如果模块已有封装,则请选择 Edit Mask

  2. 在 Mask Editor 的 Parameters & Dialog 选项卡上,在 Controls 窗格中点击 Check box

  3. Dialog box 窗格中,将新复选框的提示和名称设置为 ShowInLibBrowser,然后点击 OK

自定义库中的注释

您可以在您的自定义库中添加注释,(可选)并且让注释显示在库浏览器中。例如,您可以添加对库进行说明的注释。还可以添加您的库用户可以从库浏览器中添加到他们的模型中的注释。注释可以包含文本和图像,或者显示一个方程。注释还可以设计为在点击时执行某种操作。有关注释的详细信息,请参阅使用说明和注释描述模型

您可以添加从注释指向库中模块的调用线。但是,这些调用线不会出现在库浏览器中。

如果您希望注释出现在库浏览器中,在将注释添加到库中之后,请右键点击注释,然后选择 Show in Library Browser。如果您希望在用户将鼠标指针悬停在库浏览器中的注释上时在工具提示中显示说明,可通过编程方式将说明添加到注释中。在 MATLAB 命令提示符下,输入:

set_param(annotationHandle,'Description','descriptionText)

要获取注释句柄,请使用 find_system。以下示例获取 mylib 库中的所有注释:

ann = find_system('mylib','FindAll','on','Type','annotation');

要获取特定的注释,请打开正则表达式搜索,并使用 'Name' 参数指定部分注释文本:

ann = find_system('mylib2',FindAll','on','RegExp',...
'on','Type','annotation','Name','matchingText');

有关如何添加出现在库浏览器中的注释的说明,请参阅将库添加到库浏览器中

锁定和解锁库

当您关闭库时,它将被锁定,无法进行编辑。当您下一次打开它时,如果要进行更改,则需要解锁库。点击库左下角的锁标记以解锁库。此外,如果您尝试修改锁定的库,将显示一条消息,提示您解锁。

您可以通过编程方式解锁库。在 MATLAB 命令提示符下,输入:

set_param('library_name','Lock','off');

要以编程方式锁定库,请输入:

set_param('library_name','Lock','on');

防止禁用库链接

默认情况下,使用您的库模块的用户可以禁用库模块的链接。如果您要控制对链接模块的编辑,并防止模块用户禁用链接,您可以锁定库链接。锁定库链接可以防止用户对模块实例进行任何更改。

  • 在您的库中,在 Library 选项卡上,点击 Lock Links

要了解模块用户如何与锁定库中的模块进行交互,请参阅锁定指向库模块的链接

相关主题