Main Content

创建自定义库

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

  1. 在 Simulink 起始页上,选择空白库并点击创建库

    注意

    库浏览器仅支持库。您无法在库浏览器中显示模型的内容。

  2. (可选)在 Simulink 数据字典中定义要在模块接口上使用的数据类型。然后,将数据字典附加到库中。当库用户将模块从库中拖到其模型中时,他们会自动获得对字典中包含的数据的访问权限。

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

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

  4. (可选)添加注释或图像。右键点击您希望出现在库浏览器的库中的模块,然后选择在库浏览器中显示

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

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

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

  7. 保存库。

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

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

注意

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

自定义库的数据字典

当您定义要在模块接口上使用的数据类型(如总线和枚举类型)时,您可以通过将这些数据类型存储在附加到库的数据字典中,使用户可以使用这些数据类型。当用户将模块从库中拖动到其模型中时,该模型会自动获得对字典中包含的数据的访问权限。

  1. 创建一个数据字典。

  2. 在字典中,定义总线对象、枚举类型或其他将用于库模块的接口定义的数据对象。

  3. 通过使用 set_param 或在 UI 中使用“库属性”对话框中的外部数据选项卡,以编程方式将字典作为外部数据源附加到库。模型资源管理器将附加的字典及其内容显示为库的外部数据源。

  4. 要保存数据字典设定,请保存库。

现在,您在库中定义的类型可以在开发库模块时使用。请参阅Attach Data Dictionary to Custom Libraries

用于自定义库的模块

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

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

创建子库

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

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

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

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

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

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

防止库模块链接到实例

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

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

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

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

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

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

例如,假设您的库中有一个自定义 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 代码或打开链接。

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

  1. 右键点击该子系统,然后选择封装 > 创建掩膜。如果模块已有封装,则请选择编辑封装

  2. 在封装编辑器的参数和对话框选项卡上,在控件窗格中点击复选框

  3. 对话框窗格中,将新复选框的提示和名称设置为 ShowInLibBrowser,然后点击确定

自定义库中的注释

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

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

如果您希望注释出现在库浏览器中,在将注释添加到库中之后,请右键点击注释,然后选择在库浏览器中显示。如果您希望在用户将鼠标指针悬停在库浏览器中的注释上时在工具提示中显示说明,可通过编程方式将说明添加到注释中。在 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');

防止禁用库链接

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

  • 在您的库中,在选项卡上,点击锁定链接

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

相关主题