Simulink创建自定义库

前言

日常使用Simulink进行仿真时,通常会遇到模型复用的情形。例如,使用Simulink仿真电力电子变换器的传导电磁干扰时,LISN电路与噪声分离器会经常复用,此时,如果可以创建自己的Simulink仿真模型库,并将其添加到Simulink的库浏览器中,在需要复用时,可以像调用普通Simulink模型一样调用,可以大大提高生产效率。

本文即以Matlab R2022b为实验平台,介绍在Simulink中添加自定义库的方法。

添加自定义库

  1. 首先,创建一个自定义库文件。在Simulink的起始页面,点击空白库,点击创建库

  2. 在新建的库文件中创建自己的模型。以LISN电路为例,在库文件中创建模型:

  3. 框选该模型,右键,点击创建子系统,或者使用快捷键Ctrl+G,得到一个模型:

    直接用鼠标点击选中端口进行拖动就可以调整子模型的端口位置

  4. 利用相似的方式搭建噪声分离器的模型:

    完成后:

  5. 模型搭建完成后,回到Matlab工作区,在工作区输入以下代码:

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

    这一行代码将模型的EnableLBRepository库属性设置为on,只有这样我们创建的库才能够被库浏览器找到。

  6. 保存模型,命名为EMI.slx

  7. 在保存的模型EMI.slx所在文件夹下创建一个脚本文件slblocks.m,在该脚本文件中添加以下内容:

    function blkStruct = slblocksBrowser.Library = 'EMI';% 'EMI' 为库文件名,不需要带扩展名Browser.Name = 'EMI';% 'EMI' 是出现在库浏览器中的名词blkStruct.Browser = Browser;
    
  8. 保存脚本文件slblocks.m。将模型EMI.slxslblocks.m文件所在的文件夹路径添加到Matlab的搜索路径中:

  9. 打开Simulink库浏览器,按F5刷新,此时可以看到在库浏览器中出现了EMI库与对应的模型。

指定库列表中的库顺序

利用上述方法添加的自定义库在Simulink的库浏览器中出现的位置比较随机,可以通过添加一个sl_customization.m脚本文件来设置自定义库的排序优先级,从而将其放在靠前的位置,方便查找。

默认情况下,Simulink库的排序优先级为-1,其它库的排序优先级为0。想要将自定义库放置在前面,可以将其排序优先级设置为-2

EMI.slxslblocks.m所在文件夹下创建脚本文件sl_customization.m,输入以下内容:

function sl_customization(cm)% Change the order of libraries in the Simulink Library Browser. cm.LibraryBrowserCustomizer.applyOrder({'EMI',-2});
end

在Matlab工作区输入:

sl_refresh_customizations

该代码可以使得上面的排序优先级设置立即生效。

此时,再去Simulink的库浏览器,发现库EMI已经出现在最靠前的位置。

添加子库

使用上面的方法可以创建自定义库,但是有的时候可能会有不同类别的复用模型。比如,有EMI方面的复用模型,有电力电子方面的复用模型,有控制方面的复用模型,如果每一个类别的复用模型都创建一个自定义库,最终可能会显得非常臃肿。此时,利用子库的功能,可以将自己的自定义库梳理成一个树形结构,会方便很多。

例如,我现在要创建一个总的自定义库My Library,在该库下又有三个子库EMIPower ElectronicsControl,方法如下:

  1. EMI.slx所在文件夹下创建库文件control.slxPE.slx,分别在两个库文件中放入几个模型。

  2. 在Matlab工作区输入以下代码后保存。

    set_param(gcs,'EnableLBRepository','on');
    
  3. EMI.slx所在目录下创建一个新的库文件mylib.slx,在该库文件中放入一个Subsystem模块,删除Subsystem模块中的输入输出端口,将其命名为EMI

  4. 右键单击命名为EMISubsystem模块,选择属性,选择回调,选择OpenFcn,输入EMI

  5. 按照第3、第4步,添加Power Electronics模块,填入PE;添加Control模块,填入control

  6. 在Matlab工作区输入以下代码后保存mylib.slx文件。

    set_param(gcs,'EnableLBRepository','on');
    
  7. 将文件夹下的slblocks.m脚本文件进行修改并保存:

    function blkStruct = slblocksBrowser.Library = 'mylib';% 'mylib' is the name of the libraryBrowser.Name = 'My Library';% 'My Library' is the library name that appears% in the Library BrowserblkStruct.Browser = Browser;
    
  8. 将文件夹下的sl_customization.m脚本文件进行修改并保存:

    function sl_customization(cm)% Change the order of libraries in the Simulink Library Browser. cm.LibraryBrowserCustomizer.applyOrder({'My Library',-2}); %这里是库浏览器中库的名称
    end
    
  9. 在Matlab工作区输入以下代码:

    sl_refresh_customizations
    

此时,打开Simulink库浏览器,按F5刷新,即可看到呈树形结构的自定义库。

后话

最近刚刚申请了一个订阅号,主要分享一些电力电子与电磁兼容方面的知识以及相关的仿真软件使用方法,本文章在公众号也有发Simulink创建自定义库。

有兴趣的希望关注一下,共同进步,谢谢!

Simulink创建自定义库相关推荐

  1. 建模simulink - xpc自定义模块库

    概述 打开simulink Library Browser,可以看到,simulink官方只为我们提供一些基本模型库,而在实际开发过程中,这些模型库往往需要我们进行二次封装后才能在项目中使用.这时,我 ...

  2. Py之matplotlib:在matplotlib库中利用legend函数创建自定义图例(代码实现)

    Py之matplotlib:在matplotlib库中利用legend函数创建自定义图例(代码实现) 目录 matplotlib库中利用legend函数创建自定义图例 原始图像 在原始图像上创建自定义 ...

  3. NI Multisim元件库:在Multisim中创建自定义元器件

    转载于: http://www.ni.com/tutorial/3173/zhs/ 概览 「在Multisim中创建自定义元器件」与「在 NI Ultiboard中创建自定义元器件」为您提供了关于如何 ...

  4. Xcode7中创建静态库

    一.静态库和动态库的区别: 静态库和动态库是相对编译期和运行期的,静态库以 .a 和 .framework 形式存在,链接时,静态库会被完整地复制到可执行文件中,被多次使用就有多份冗余拷贝:动态库以 ...

  5. draw.io创建自定义形状

    使用文本编辑器在diagrams.net中创建自定义形状 你可以在diagrams.net中创建自己的自定义模板(形状),通过XML格式描述模板中组件的几何形状.连接点和样式. 提示:你可以将自定义模 ...

  6. sharepoint2010 创建自定义列表

    sharepoint2010 创建自定义列表 分类: sharepoint20102014-04-04 14:06 106人阅读 评论(0) 收藏 举报 转:http://boke.25k5.com/ ...

  7. 为SharePoint网站创建自定义导航菜单

    相信不少人都希望把SharePoint网站内置的那个顶部导航菜单,换成自己希望的样式.由于SharePoint 2007/2010的网站导航基本上基于标准的ASP.NET SiteMap模型,所以只要 ...

  8. e0312 不存在用户定义的_VistaPro创建自定义变量

    IESVE软件中VistaPro模块中的结果变量众多,很多用户反应变量数据不容易获得,其实在此模块中用户可以根据现有变量(天气数据.房间设置和负荷.建筑负荷.能源.碳排放)进行组合,利用VE软件自带的 ...

  9. 为Qt Designer创建自定义Widgets小部件

    为Qt Designer创建自定义Widgets小部件 为Qt Designer创建自定义Widgets小部件 入门 在注释domXml()功能 插件要求 创建行为良好的小部件 编译和安装插件 一个简 ...

最新文章

  1. 构造方法和方法的重载。
  2. linux大小写敏感和windows大小写不敏感(忽略大小写)导致的直接拷贝文件文件名冲突问题(需要打tar包再分享)
  3. 爬虫推特数据分析的外文文献_13天让你学会爬虫分布式,说到让你做到择推出it届附教程...
  4. Vue—基础概念—组建化
  5. shell 获取ora报错信息_带你了解企业是如何编写脚本的-第2篇:Shell脚本规范
  6. agx 安装ros opencv_Ubuntu下安装realsense+melodic+OpenCV
  7. 人生苦短,不光要用 Python,还要在 VSCode 里用 | 原力计划
  8. 2015最新Linkedin人才趋势报告
  9. 队列元素逆置 数据结构 队列
  10. python发送qq文件_怎么用qq邮箱发文件-十分钟教你使用Python发送邮件(复制可用)...
  11. 计算机专业英语教程(第二版)Chapter 4 Database Fundamentals
  12. 浅析2022年6月六级翻译真题
  13. 20190121——不羡神仙 Java设计模式
  14. cocos2d粒子系统工具Particle Designer
  15. 全国各大学精品课程网站
  16. 二刷剑指Offer:剑指Offer+LeetCode(全53题)
  17. TFS 本地文件夹映射
  18. 搞机助手功能介绍及使用指南
  19. 天气API-----开源免费天气预报接口API以及全国所有地区代码!!(国家气象局提供)
  20. QT 录制鼠标键盘回放

热门文章

  1. VBA写txt文件--vba写RF文件--vbs写文本文件不同编码--vba写UTF8
  2. unity中文字符支持
  3. js 复制文本的四种方式
  4. unity室内效果烘焙和设置【2020】
  5. modelsim仿真之do文件
  6. nginx反向代理解决跨域请求问题
  7. java系列之Spring详解
  8. 一文读懂AI计算机视觉技术!
  9. [SSD核心技术:FTL 9] 谁是固态硬盘数据的守护神?盘内RAID1/RAID5图文详解_盘内数据冗余保护
  10. blender中如何导入python库