Simulink で使用する System object の定義
MATLAB System ブロックで使用する System object の構築
System ブロックで使用する System object™ を作成して、ブロックのダイアログ ボックスを対話形式でプレビューすることができます。この機能では Simulink® が必要です。
[System ブロック] の編集オプションを使用すると、MATLAB® エディターで事前定義済みのコードが System object に挿入されます。このコーディング手法は System object のより素早い作成と変更や、入力エラーの削減による正確性の向上に役立ちます。
これらのオプションを使用して、次のこともできます。
System object を定義するときに [System ブロック]、[マスク エディターを起動]、[ダイアログのプレビュー] を使用し、ブロックのダイアログ ボックスの設計を表示して操作する。
ダイアログ ボックスのカスタマイズ メソッドを追加します。ブロックのダイアログ ボックスが開いた状態で変更を行う場合、ファイルの保存時にブロックのダイアログ設計プレビューの表示が更新されます。
アイコン メソッドを追加する。ただし、これらの要素は Simulink の MATLAB System ブロック上でのみ表示され、[ダイアログのプレビュー] には表示されません。
ランプをプロットするブロック ダイアログ ボックスの定義
メニュー オプション [新規] 、 [System object] 、 [Simulink 拡張] を使用して、System object を作成します。
System object に
PlotRamp
と名前を付け、ファイルを保存します。この名前はブロックのダイアログ ボックスのタイトルになります。ファイルの先頭のコメントを削除し、ブロック記述で置き換えます。
% Display a button to launch a plot figure.
このコメントは、ブロック タイトルの下のブロック パラメーター ダイアログ ボックスの説明になります。
[System ブロック] 、 [マスク エディターを起動] 、 [ダイアログのプレビュー] の順に選択します。System object を作成したとおりにブロック ダイアログ ボックスが表示されます。
[プロパティの挿入] 、 [数値] を選択してランプの制限を追加します。その後、プロパティ名を変更して値を
10
に設定します。properties (Nontunable) RampLimit = 10; end
[解析] ボタンを使用して
getPropertyGrouplsImpl
メソッドの場所を見つけます。function group = getPropertyGroupsImpl % Define property section(s) for System block dialog group = matlab.system.display.Section(mfilename('class')); end
[可視化] アクションのグループを作成します。
function group = getPropertyGroupsImpl % Define property section(s) for System block dialog group = matlab.system.display.Section(mfilename('class')); group.Actions = matlab.system.display.Action(@(~,obj)... visualize(obj),'Label','Visualize'); end
ダイアログ ボックスに [可視化] ボタンを表示するコードを追加する関数を追加します。
methods function visualize(obj) figure; d = 1:obj.RampLimit; plot(d); end end
要素を System ブロック定義に追加するときにファイルを保存します。System ブロック定義にコードを追加したことによる影響を観察します。
[System Block] メニューには、ファイルに含まれたメソッドの横に、チェックも表示されます。
テンプレートで使用していないメソッドをすべて削除するか、System object および system ブロックをさらにカスタマイズするためにメソッドを変更します。これで、クラス定義ファイルに
PlotRamp
System object に必要なすべてのコードが含まれるようになりました。classdef PlotRamp < matlab.System % Display a button to launch a plot figure. properties (Nontunable) RampLimit = 10; end methods(Static, Access=protected) function group = getPropertyGroupsImpl group = matlab.system.display.Section(mfilename('class')); group.Actions = matlab.system.display.Action(@(~,obj)... visualize(obj),'Label','Visualize'); end end methods function visualize(obj) figure; d = 1:obj.RampLimit; plot(d); end end end
System ブロックの定義が完了したら保存し、それを Simulink の MATLAB System ブロックに読み込みます。