MATLAB/Simulink如何创建自己的库
0. 前言
????????本文以Matlab R2022a为实验平台,介绍在Simulink库浏览器中添加库的方法、库浏览器的库里添加子库方法、设置库在库浏览器中的位置的方法。
1. 在库浏览器中添加库
??????? (1)创建一个库文件。在Simulink的起始页面,点击空白库,点击创建库。
(2)在新建的库文件中搭建需要的模型;以Clark变换为例,在库文件中创建模型:
(3)框选该模型,右键,点击创建子系统,得到一个模型:
?(4)模型搭建完成后,回到Matlab工作区,在工作区输入以下代码:
set_param(gcs,'EnableLBRepository','on');
只有将
EnableLBRepository
库属性设置为on
,我们创建的库才能够被库浏览器找到。
?(5)Ctrl + S 保存库文件,命名为Math.slx
。
(6) 在Math.slx
所在文件夹下,创建脚本文件slblocks.m
,在该脚本文件中添加以下内容,并保存:
function blkStruct = slblocks
Browser.Library = 'Math';
% 'Math' 为库文件名,不需要带扩展名
Browser.Name = 'Math';
% 'Math' 是出现在库浏览器中的名词
blkStruct.Browser = Browser;
?(7)将模型Math.slx
与slblocks.m
文件所在的文件夹路径添加到Matlab的搜索路径中:
(8)打开Simulink库浏览器,按F5
刷新,此时可以看到在库浏览器中出现了Math库与对应的模型。
2. 库浏览器的库里添加子库方法
????????如果说需要将Math库作为子库,添加到另一个库(My FOC Library)中,需要按照如下操作:
(1)创建My FOC Library库文件;在Simulink的起始页面,点击空白库,点击创建库。
(2)Ctrl + S 保存库文件到Math的同一个文件夹下面,命名为MyFOCLibrary.slx
。?
(3)模型搭建完成后,回到Matlab工作区,在工作区输入以下代码:?
set_param(gcs,'EnableLBRepository','on');
(4)在MyFOCLibrary.slx
中放入subsystem模块,在库文件中搜索subsystem模块,添加到MyFOCLibrary.slx
中,并删除subsystem的输入输出,将其命名为Math。
?(5)右键单击命名为Math的Subsystem
模块,选择属性,选择回调,选择OpenFcn,输入Math。
?(6)在Matlab工作区输入以下代码后保存MyFOCLibrary.slx
文件。
(7)将文件夹下的slblocks.m
脚本文件进行修改以下内容并保存:
function blkStruct = slblocks
Browser.Library = 'MyFOCLibrary';
% 'MyFOCLibrary' is the name of the library
Browser.Name = 'My FOC Library';
% 'My FOC Library' is the library name that appears
% in the Library Browser
blkStruct.Browser = Browser;
(8)打开Simulink库浏览器,按F5刷新,即可看到My FOC Library库中包含了Math库。
3. 设置库在库浏览器中的位置
?(1)在需要调整位置的库的文件夹下添加sl_customization.m
脚本文件,进行修改并保存:
function sl_customization(cm)
% Change the order of libraries in the Simulink Library Browser.
cm.LibraryBrowserCustomizer.applyOrder({'My FOC Library',-2});
%'My FOC Library'是要设置的库的名称,-2是库所在位置的优先级,越小排序越靠前
end
????????Simulink?Library?Browser中各个工具箱的排列顺序是内置的,由优先级和名称2个因素决定。优先级数字越小工具箱排位越靠前;对于同一优先级的工具箱按照字母顺序排列。默认情况下Simulink库优先级为-1,其他工具箱优先级为0。
(2)在Matlab工作区输入以下代码:
sl_refresh_customizations
(3)重新打开库浏览器,可以看见My FOC Library被提到了最上面。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!