标题: MATLAB 添加自定义的模块到simulink库浏览器 [打印本页] 作者: 逝水lcc无痕 时间: 2015-1-22 10:25 标题: MATLAB 添加自定义的模块到simulink库浏览器 安装了matlab2014b后,突然发现Simulink Library Browser窗口中没有内容,找了一种方法添加进去,希望对有需要的朋友有所帮助!* S+ B% H* A1 F; n$ S" E9 B- Q
1、创建库文件:打开Simulink Library Browser窗口。要建立Simulink库文件,首先启动Simulink工作窗口,单击菜单栏【File】下的【New】选项,选择【library】选项, 打开一个新的Library窗口界面,此时,用户可以将自己需要添加的一些模块加入到新的窗口中。然后保存为Own_efinition.mdl(所需要定义的库文件名称)。这样,就建立了一个 自定义的库文件。 : K) Y# ^8 c9 G: l( E2、在Matlab路径下创建存放库文件的路径,也即自定义的模块库在Library Browser下的显示位置。注意在Matlab中,每一个模块库文件所在的路径必须不同。 & x8 ]( M6 W0 x4 C7 Q7 @& s创建的Maltab路径是:Drogram FilesMATLABR2011btoolboxSimulinkSimulinkMyLibrary(根据自己的Matlab安装路径来确定),其中MyLibrary为自定义的文件夹。 1 E- J* f/ n* a. ~% m# D4 @2 w3、将第一步中建立的库文件拷贝到新建的Matlab路径下。在Matlab主窗口的【File】菜单栏下选择【Set Path】选项,然后单击【Add Folder】按钮,将新建的 路径添加进来,然后保存(Save),退出(Close)。 - Q( n4 b x3 H7 f# W; I, W Y2 C! m
4、要显示自定义的模块库,还需要拷贝slblocks.m函数到新建的路径下。在Matlab的命令窗口中输入: 0 K" I1 {) {; g3 l7 E6 o
>> which('slblocks.m', '-all') 3 Y, `0 X# |( F6 U3 d% h# l
>> open('Drogram FilesMATLABR2011btoolboxSimulinkSimulinkblocksslblocks.m') , F. J. o/ B1 ^: m4 X0 ~% U ! j0 S1 B# M% g这样就可以打开slbocks.m文件模板,为了将自定义的模块库显示在Library Browser窗口下,需要对该程序进行修改。首先把slbocks.m文件拷贝到自定义库文件 # ^# d! U8 ?% R+ ^/ [! J9 U+ m
同一目录下(即刚才创建的路径),然后打开该文件进行如下修改(红色为所作修改),并保存: # @/ e8 y' z8 i' Tfunction blkStruct = slblocks , j1 Z3 Y& @5 ~) x
%SLBLOCKS Defines the block library for a specific Toolbox or Blockset. % SLBLOCKS returns information about a Blockset to Simulink. The % information returned is in the form of a BlocksetStruct with the % following fields: % : W1 B" k; N7 _: u
% Name Name of the Blockset in the Simulink block library % Blocksets & Toolboxes subsystem. + @' F8 {9 ~. R; P# Z* f5 O% v% OpenFcn MATLAB expression_r(function) to call when you % double-click on the block in the Blocksets & Toolboxes % subsystem. ! n% _8 Z9 ^4 b' r; F( L6 P- M3 Z
% MaskDisplay Optional field that specifies the Mask Display commands % to use for the block in the Blocksets & Toolboxes % subsystem. 6 B( t) ?1 t) y6 s, x0 ?
% Browser Array of Simulink Library Browser structures, described % below. h s, \# c% U6 [, { l$ l7 a+ ` b' W4 ^/ e; G
7 \' h; K1 p n5 n 2 V1 d4 \% J0 z) N; z8 R+ G, p0 i5 P! |8 G8 P$ A6 Y" @" `- w5 n$ k
5 Y. `3 t G; p0 ^/ F( ?
- U* O0 b7 P( l" |( ~: c: n 0 h$ ^% \+ H" _7 w7 S E & g9 a5 ^8 G8 ? I0 Q" d% 3 o3 ?6 N) [- |! d4 r& l$ Y% The Simulink Library Browser needs to know which libraries in your % Blockset it should show, and what names to give them. To provide % this information, define an array of Browser data structures with one % array element for each library to display in the Simulink Library % Browser. Each array element has two fields: % 9 i5 Y) U+ K/ f
% Library File name of the library (mdl-file) to include in the % Library Browser. ! d4 b' w8 Q5 I9 ^2 s' f4 ^
% Name Name displayed for the library in the Library Browser % window. Note that the Name is not required to be the % same as the mdl-file name. % , p5 b9 e2 m% i$ r! r9 a' W% Example: % % % / ~# _8 f" C1 k( M0 A" m! h: |% % Define the BlocksetStruct for the Simulink block libraries % % Only simulink_extras shows up in Blocksets & Toolboxes % % . q/ n2 P$ y0 Y0 z/ P, ?# E% blkStruct.Name = ['Simulink' sprintf('n') 'Extras']; % blkStruct.OpenFcn = 'simulink_extras'; 1 r O; V" m* D% blkStruct.MaskDisplay = sprintf('SimulinknExtras'); % % % ' B% d9 n1 b6 E! X, a* J8 ^% % Both simulink and simulink_extras show up in the Library Browser. % % ( A; x7 H0 L+ H q, a! H, I: v
% blkStruct.Browser(1).Library = 'simulink'; % blkStruct.Browser(1).Name = 'Simulink'; % blkStruct.Browser(2).Library = 'simulink_extras'; % blkStruct.Browser(2).Name = 'Simulink Extras'; % $ Y i" q" E0 B/ F: L$ L
% Copyright 1990-2006 The MathWorks, Inc. % $Revision: 1.20.2.10 $ % " y% q8 ?! h( J! v% Name of the subsystem which will show up in the Simulink Blocksets + G3 m# V; \# { 0 g9 B4 Y( v0 e7 s1 X- e6 z( `* _. d- S: v: n
b; q- J; e7 n; Y% and Toolboxes subsystem. % 6 g2 g0 H0 G. p# ~; C3 q% J
blkStruct.Name = ['Simulink' sprintf('n') 'Extras']; % ! D' A {- v. e7 `% The function that will be called when the user double-clicks on % this icon. % . y6 y7 K' G& D' }6 ?: {2 AblkStruct.OpenFcn = 'simulink_extras'; % 6 h$ C0 i/ P4 J4 ~4 R6 D; o
% The argument to be set as the Mask Display for the subsystem. You % may comment this line out if no specific mask is desired. % Example: blkStruct.MaskDisplay = 'plot([0:2*pi],sin([0:2*pi]));'; % No display for Simulink Extras. % + p# J1 M1 e7 E; A
blkStruct.MaskDisplay = ''; % ; C% i& r" X' H/ P" m, e2 f% Define the Browser structure array, the first element contains the % information for the Simulink block library and the second for the % Simulink Extras block library. % 2 s9 |) D- l" T5 d. D
Browser(1).Library = 'Own_efinition'; %这个是库文件名 ' ~) w C N+ B; p' w' rBrowser(1).Name = 'MyLibrary'; %这个是需要在库浏览器中显示的名称 Browser(1).IsFlat = 0;% Is this library "flat" (i.e. no subsystems)? Browser(2).Library = 'simulink_extras'; Browser(2).Name = 'Simulink Extras'; ' A1 T# F" O: e( L3 m! x2 uBrowser(2).IsFlat = 0;% Is this library "flat" (i.e. no subsystems)? blkStruct.Browser = Browser; clear Browser; % 6 C! Z6 U% X$ H) C8 R8 I% Define information about Signal Viewers % # R/ D, F6 m& ?3 x' I* H! ~Viewer(1).Library = 'simviewers'; Viewer(1).Name = 'Simulink'; blkStruct.Viewer = Viewer; clear Viewer; . o0 I0 P! u7 M+ A, O" Y) p8 l) ]/ X5 ^. h
: G0 R$ a1 E+ W3 l9 T
% 8 g) v: G+ Y, v
% Define information about Signal Generators % % s" x( C" r3 V8 k b* K3 [( sGenerator(1).Library = 'simgens'; Generator(1).Name = 'Simulink'; blkStruct.Generator = Generator; clear Generator; / z' z' @8 G7 D) P p, W3 q& }. e% Define information for model updater . A. }9 k* `6 Z/ H%blkStruct.ModelUpdaterMethods.fhDetermineBrokenLinks = @UpdateSimulinkBrokenLinksMappingHelper; ~: i a& Q' ]+ n: ?: @3 i4 CblkStruct.ModelUpdaterMethods.fhSeparatedChecks = @UpdateSimulinkBlocksHelper; % End of slblocks 6 ~4 C+ q% O" o4 P3 c7 C: P& v; |6 w
5、再打开Simulink Library Browser,按F5刷新,即可看到自定义的模块库,展开后可以看到内部的自定义模块。那么用户可以方便地进行拖放模块,就可以使用 自定义的封装模块了。 - `3 X7 \) _( v5 v5 o! s* Y( o如果还要在新建的模块库下面创建子模块库,需要把Subsystem模块加入到模块库中,打开Subsystem模块,删除所有内容(ports等元件),添加自己创建的模块 & l- F) c' m% i) i! w0 F
保存即可,然后重新打开Simulink Library Browser,按F5刷新,即可看到自定义的模块库和字模块库。 8 T7 |' X7 \1 S: K9 b7 @# d) E Q; F- r n% C( j; ?- T4 z6 y' g