Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

Simulink で使用する System object の定義

MATLAB System ブロックで使用する System object の構築

System ブロックで使用する System object™ を作成して、ブロックのダイアログ ボックスを対話形式でプレビューすることができます。この機能では Simulink® が必要です。

[System ブロック] の編集オプションを使用すると、MATLAB® エディターで事前定義済みのコードが System object に挿入されます。このコーディング手法は System object のより素早い作成と変更や、入力エラーの削減による正確性の向上に役立ちます。

これらのオプションを使用して、次のこともできます。

  • System object を定義するときにブロックのダイアログ ボックスの設計を表示して操作する。

  • ダイアログ ボックスのカスタマイズ メソッドを追加します。ブロックのダイアログ ボックスが開いた状態で変更を行う場合、ファイルの保存時にブロックのダイアログ設計プレビューの表示が更新されます。

  • アイコン メソッドを追加する。ただし、これらの要素は Simulink の MATLAB System ブロック上でのみ表示され、[ブロック ダイアログのプレビュー] には表示されません。

ランプをプロットするブロック ダイアログ ボックスの定義

  1. メニュー オプション [新規][System object][Simulink 拡張] を使用して、System object を作成します。

  2. System object に PlotRamp と名前を付け、ファイルを保存します。この名前はブロックのダイアログ ボックスのタイトルになります。

  3. ファイルの先頭のコメントを削除し、ブロック記述で置き換えます。

    % Display a button to launch a plot figure.

    このコメントは、ブロック タイトルの下のブロック パラメーター ダイアログ ボックスの説明になります。

  4. [System ブロック][ブロック ダイアログのプレビュー] の順に選択します。System object を作成したとおりにブロック ダイアログ ボックスが表示されます。

  5. [プロパティの挿入][数値] を選択してランプの制限を追加します。その後、プロパティ名を変更して値を 10 に設定します。

      properties (Nontunable)
        RampLimit = 10;
      end
    
  6. [解析] ボタンを使用して getPropertyGrouplsImpl メソッドの場所を見つけます。

          function group = getPropertyGroupsImpl
              % Define property section(s) for System block dialog
              group = matlab.system.display.Section(mfilename('class'));
          end
  7. [可視化] アクションのグループを作成します。

          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
  8. ダイアログ ボックスに [可視化] ボタンを表示するコードを追加する関数を追加します。

      methods
        function visualize(obj)
          figure;
          d = 1:obj.RampLimit;
          plot(d);
        end
      end
    
  9. 要素を System ブロック定義に追加するときにファイルを保存します。System ブロック定義にコードを追加したことによる影響を観察します。

    [System Block] メニューには、ファイルに含まれたメソッドの横に、チェックも表示されます。

  10. テンプレートで使用していないメソッドをすべて削除するか、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 ブロックに読み込みます。

関連するトピック