自作ライブラリを追加する方法は、次のような流れになります。
1. ライブラリの作成
2. slblocks.m を自作ライブラリの置いているフォルダにコピー
3. slblocks.m の編集
4. 自作ライブラリを置いているフォルダにパスを通す
以下に各手順について説明します。
1. ライブラリの作成
ライブラリを作成します。
モデルウィンドウのメニュー[ ファイル ] →[ 新規作成 ]→[ ライブラリ ]を選択すると、新規ライブラリウィンドウが開きます。ここに自作のマスクしたブロックを配置し保存します。
ライブラリ内のブロックを階層化するには、ライブラリ内にSubsystemブロックを配置します。
例えば、Simulinkライブラリはその下に14個のライブラリがあります。これは14個のSubsystemを配置し、その中にブロックを配置することにより階層化しています。
下図のウィンドウは以下のコマンドで開くことができます。
では実際にライブラリを作成します。
ここでは簡易化のために、Simulinkライブラリの下のSourcesライブラリにあるRampブロックとRepeating Sequenceブロックを配置します。Repeating Sequenceブロックは1つ下の階層に配置します。作成したモデルはmylib.mdlと名前をつけて保存します。
Subsystem内部の編集方法を以下の図に示します。
2. slblocks.mを自作ライブラリを置いているフォルダにコピー
ライブラリの確認方法は、ライブラリブラウザと後述のBlocksets_and_Toolboxesウィンドウの2つがあります。これらに自作ライブラリを表示するには、自作ライブラリの置いてあるフォルダに slblocks.m というファイル名のMATLABファイルを置く必要があります。
どの Toolbox や Blockset のライブラリにもこのMATLABファイルが存在します。
次のコマンドで各ライブラリの slblocks.m MATLABファイルを検索することができます。
which('slblocks.m', '-all')
slblocks.m を作成するには、既存の slblocks.m をコピーし、それを雛型にし編集します。
次のコマンドでSimulink標準ライブラリの slblocks.m を開くことが出来ます。
開かれた slblocks.m を自作ライブラリの置いてあるフォルダにコピーして下さい。
3. slblocks.m の編集
Blocksets_and_Toolboxesウィンドウとライブラリブラウザでの表示設定はslblocks.mで作成する構造体データblkStructで行います。
2でコピーしたslblocks.mの編集例を以下に示します。
function blkStruct = slblocks
blkStruct.Name = 'My Library';
blkStruct.OpenFcn = 'mylib';
blkStruct.MaskInitialization = '';
blkStruct.MaskDisplay = '';
Browser(1).Library = 'mylib';
Browser(1).Name = 'My Library';
Browser(1).IsFlat = 0;
blkStruct.Browser = Browser;
構造体データblkStructのフィールド構造は次の図のとおりです。
1) Blocksets_and_Toolboxesウィンドウでの表示設定
simulink.mdlから開かれる、Blocksetを表示するBlocksets_and_Toolboxesウィンドウでの表示設定を行います。
●Nameフィールド
編集対象のライブラリのアイコンに表示される名称。
●OpenFcnフィールド
編集対象のライブラリをダブルクリックしたときに実行するコマンド。通常は開きたいライブラリのファイル名を入力。
●MaskInitializationフィールド
MaskDisplayフィールドでの表記を簡略化するために、使用したい変数を定義する目的等で使用。
●MaskDisplayフィールド
編集対象のライブラリのアイコンの描画設定。このフィールドの記述方法は、マスクエディタの[アイコン]パネルでの記述方法と同じ。描画設定をしない場合は下図のように表示。
2) ライブラリブラウザでの表示設定ライブラリブラウザでの表示はBrowserフィールドに定義された情報により定義されます。Browserフィールドはさらに 3 つのフィールドを持ちます。
●Browserフィールド
- Libraryフィールド
アイコンをクリックしたときに開くライブラリのファイル名。
- Nameフィールド
表示するライブラリの名前。
- IsFlatフィールド
ライブラリブラウザ起動直後、アイコンの左側にある「+」を表示するなら「0」を、表示しないなら「1」を設定。通常、ライブラリを階層化するならば「0」を設定。
4. 自作ライブラリを置いているフォルダにパスを通す
次のコマンドを実行すると「パスを設定」ダイアログが開かれます。
ここで[ フォルダを追加 ]ボタンを押して開かれる[ フォルダの参照 ]ダイアログで、自作ライブラリを置いているフォルダを選択します。[ OK ]ボタンを押してそのフォルダにパスを通すことで、常にMATLABは自作ライブラリを参照します。
従ってBlocksets_and_Toolboxesウィンドウとライブラリブラウザに常時自作ライブラリを表示することができます。
下図では、自作ライブラリが次のディレクトリにある場合の[ フォルダの参照 ]ダイアログを示しています。
C:\Program Files\MATLAB\work\Library_entry
最後に、ライブラリブラウザまたはBlocksets_and_Toolboxesウィンドウを一旦閉じ、再度開いたときにライブラリが登録されたことを確認します。
[ My Library ]の下にある[ Subsystem ]を選択するとRepeating Sequenceブロックが表示され、階層化されていることが確認できます。