Main Content

カスタム モデル アドバイザー チェックの定義

カスタム チェックを定義して、モデル アドバイザーで確認する独自の条件やモデル コンフィギュレーション設定を作成します。編集時およびモデル アドバイザーで実行されるカスタム チェックとモデル アドバイザーでのみ実行されるカスタム チェックを作成できます。

カスタム編集時チェックは、問題をモデル設計プロセスの早い段階で特定するのに役立ちますが、ユーザーが編集しているモデルまたはサブシステムの同じレベルにあるブロックと信号しか確認されません。ただし、これらのチェックではモデルの階層構造のレベルで問題が集約され、その問題がモデル アドバイザーで報告されます。モデルの他のレベルにある影響を受けるブロックについてチェックで確認する必要がある場合は、モデル アドバイザーでのみ実行されるカスタム チェックを作成します。たとえば、モデルの階層構造全体で From ブロックと Goto ブロックの不一致についてチェックで確認する必要がある場合は、このチェックをモデル アドバイザーでのみ実行するように定義します。

次の手順は、編集時に実行されるチェックとモデル アドバイザーでのみ実行されるチェックを作成するプロセスを示したものです。

関数 sl_customization の作成

カスタム チェックを定義するには、まず、MATLAB パスに sl_customization.m ファイルを作成します。sl_customization.m ファイルの中に、関数 sl_customization を作成します。関数 sl_customization では、1 つの引数 (カスタマイズ マネージャー オブジェクト) を受け入れます。

function sl_customization(cm)

ヒント

  • MATLAB パス上に複数の sl_customization.m ファイルを配置することができます。

  • モデル アドバイザーのチェックとフォルダーをカスタマイズする sl_customization.m ファイルは、ルート MATLAB® フォルダーやそのサブフォルダー (matlabroot/work フォルダーを除く) には配置しないでください。配置した場合、モデル アドバイザーはファイルで指定されているカスタマイズを無視します。

カスタム チェックの登録

カスタム チェックを登録するには、addModelAdvisorCheckFcn メソッドを使用します。これは、関数 sl_customization に入力するカスタマイズ マネージャー オブジェクトの一部です。次のコードは関数 sl_customization.m のサンプルを示しています。

function sl_customization(cm)
% register custom checks 
cm.addModelAdvisorCheckFcn(@defineModelAdvisorChecks);

% -----------------------------
% defines Model Advisor Checks
% -----------------------------
function defineModelAdvisorChecks
defineDetailStyleCheck;
defineConfigurationParameterCheck;
defineNewBlockConstraintCheck;
defineEditTimeChecks;

addModelAdvisorCheckFcn メソッドは、モデル アドバイザーの [製品別] フォルダーにチェックを登録します。defineModelAdvisorChecks 引数は、カスタム チェックを定義する関数の呼び出しを含む関数のハンドルです。カスタム モデル アドバイザー チェックについては、作成するチェックごとに 1 つのチェック定義関数を作成する必要があります。編集時チェックにはそれぞれ独自のクラス定義が含まれるため、複数の編集時チェックに作成するチェック定義関数は 1 つでかまいません。

チェック定義関数の作成

チェック定義関数は、チェック実行時にモデル アドバイザーが行うアクションを定義します。以降の節では、カスタムの編集時チェックとモデル アドバイザーでのみ実行されるチェックのチェック定義関数について、それらの主要なコンポーネントを説明します。

ModelAdvisor.Check クラスのインスタンスの作成

各カスタム チェックごとに、ModelAdvisor.Check クラスのインスタンスを 1 つ作成します。ModelAdvisor.Check プロパティおよびメソッドを使用して、チェックのユーザー インターフェイスとアクションを定義します。次の表は、主要なチェック コンポーネントの一部を示しています。

内容説明
チェック ID (必須)チェックを一意に識別します。モデル アドバイザーはこの ID を使用してチェックにアクセスします。
(カスタム モデル アドバイザー チェックのみ) チェック コールバック関数のハンドル (必須)チェックの内容を指定する関数です。
(カスタム モデル アドバイザー チェックのみ) アクション コールバック関数のハンドル (オプション)修正アクションを追加します。
(カスタム編集時チェックのみ) クラスのハンドル (必須)編集時チェックのアクションを定義する派生クラス。必要に応じて、このクラスで編集時チェックの修正も定義できます。
チェック名 (推奨)モデル アドバイザーでのチェックの名前を指定します。
モデルのコンパイル (オプション)チェック解析用にモデルをコンパイルするかどうかを指定します。CallbackContext プロパティの値 PostCompileForCodegen は編集時チェックではサポートされません。
入力パラメーター (オプション)ユーザーによる入力を要求する入力パラメーターを追加します。モデル アドバイザーはこの入力を使用してチェックを実行します。

カスタム モデル アドバイザー チェックの定義

モデル アドバイザーでのみ表示されるカスタム チェックのチェック定義関数には、モデルまたはサブシステムに対してモデル アドバイザーで実行するアクションを指定するチェック コールバック関数が含まれています。チェック コールバック関数を定義し、そのハンドルを setCallbackFcn メソッドに受け渡します。チェックを実行すると、モデル アドバイザーはコールバック関数を実行します。チェック実行後、コールバック関数は結果を表示する戻り引数を 1 つ以上提供します。チェックを実行すると、モデル アドバイザーはコールバック関数を実行します。

カスタム チェックの修正を指定する場合、チェック定義関数にはアクション コールバック関数も含める必要があります。チェック定義関数内で、ModelAdvisor.Action クラスのインスタンスを作成します。アクション コールバック関数を定義し、そのハンドルを setCallbackFcn メソッドに受け渡します。モデル アドバイザーでチェックのユーザーが [修正] をクリックすると、それらのモデルにカスタムの修正が適用されます。

Custom Model Advisor check with a fix

コールバック関数およびアクション コールバック関数から、チェックの実行後に結果を表示するための戻り引数が 1 つ以上返されます。チェック コールバック定義関数アクション コールバック定義関数の作成を参照してください。

モデル アドバイザーの結果に既定の書式設定を使用するには、setCallbackFcn メソッドでコールバック関数のタイプを DetailStyle に指定します。既定の書式設定では要件が満たされない場合、ModelAdvisor.FormatTemplate クラスまたは以下の他のモデル アドバイザーの書式設定クラスのいずれかを使用します。

クラス説明
ModelAdvisor.Text

モデル アドバイザーのテキスト出力を作成します。

ModelAdvisor.List

リストを作成します。

ModelAdvisor.Table

テーブルを作成します。

ModelAdvisor.Paragraph

段落を作成し、書式設定します。

ModelAdvisor.LineBreak

改行を挿入します。

ModelAdvisor.Image

モデル アドバイザーの出力にイメージを含めます。

カスタム編集時チェックの定義

カスタム編集時チェックを作成するには、ModelAdvisor.EdittimeCheck クラスから派生する MATLAB クラスを作成します。チェック定義関数で、このクラスを ModelAdvisor.CheckCallbackHandle プロパティの値として指定します。派生クラス内で、次のメソッドを定義します。

  • チェック ID とチェックの ModelAdivsor.EdittimeCheck.TraversalType プロパティを指定するメソッドを定義します。TraversalType プロパティは、モデル アドバイザーでのチェックの実行方法を指定します。

  • 編集時アルゴリズムに違反するブロックを探す blockDiscovered メソッドを定義します。

  • ブロックに違反があった場合に、そのブロックを編集時に強調表示するには、Type プロパティを既定値の SID に設定して ModelAdvisor.ResultDetail 違反オブジェクトを作成します。信号に違反があった場合に、その信号を強調表示するには、Type プロパティを Signal に設定して違反オブジェクトを作成します。

  • edittimecheck.TraversalTypes.ACTIVEGRAPHTraversalType プロパティを指定する場合は、編集時チェックで収集したデータに対して実行する内容を指定する finishedTraversal メソッドを blockDiscovered メソッドの一部として定義します。

  • 必要に応じて、編集時チェックの違反に対する fix メソッドを定義します。

例については、Define Edit-Time Checks to Comply with Conditions that You Specify with the Model Advisorを参照してください。

モデルの編集中にカスタム編集時チェックがパフォーマンスに悪影響を及ぼさないように、現在の MATLAB セッションにおいて、最後の 3 つの異なる Simulink モデルでチェックの実行時間が 500 ミリ秒を超えると、モデル アドバイザーではカスタム編集時チェックが自動的に無効になります。

モデル アドバイザーでカスタム編集時チェックが無効になると、Simulink キャンバスに警告が表示されます。編集時チェックを再度有効にするには、次のいずれかを行います。

  • 警告のハイパーリンク テキストをクリックします。

  • 関数 edittime.enableCheck:edittime.enableCheck(checkID) にチェック識別子 checkID を渡します。

カスタム編集時チェックが無効にならないようにするには、モデルでのチェックの実行時間が 500 ミリ秒を超えないようにチェックを作成してください。

チェック入力パラメーターの定義

入力パラメーターを使用して、チェックの実行前に入力を要求できます。入力パラメーターは ModelAdvisor.InputParameter クラスを使用して定義します。カスタム チェック定義関数に入力パラメーターの定義を組み込まなければなりません。カスタム チェックに追加する入力パラメーターごとに、このクラスのインスタンスを 1 つ定義する必要があります。

次のメソッドを使用して、モデル アドバイザーでの入力パラメーターのレイアウトを指定します。

目的メソッド
入力パラメーター グリッドのサイズを指定します。setInputParametersLayoutGrid
入力パラメーター レイアウト グリッド内のパラメーターの行数を指定します。setRowSpan
入力パラメーター レイアウト グリッド内のパラメーターの列数を指定します。setColSpan

入力パラメーターはモデル アドバイザーの [入力パラメーター] ボックスに表示されます。

Model Advisor check with input parameters

チェックの表示と有効化

カスタム チェックがモデル アドバイザーにどのように表示されるかを指定することができます。どの場合にチェックを表示するか、またユーザーによるチェックの選択や選択解除を許可するかどうかを、ModelAdvisor.Check クラスの VisibleEnableValue の各プロパティを使用して指定できます。これらのプロパティには次のような相互関係があります。

  • Visible プロパティが false の場合、チェックまたはタスクがモデル アドバイザーに表示されず、Enable プロパティと Value プロパティは無視されます。

  • Visible プロパティが trueEnable プロパティが false の場合、次のようになります。

    • チェックがモデル アドバイザーに表示されます。

    • チェックの初期ステータスは Value になります。

    • チェック ボックスはグレー表示になります。

  • Visible プロパティが trueEnabled プロパティが true の場合、チェックまたはタスクがモデル アドバイザーに表示され、チェック ボックスがアクティブになります。

カスタム チェックのパブリッシュ

publish メソッドを使用して、[製品別] フォルダー内にカスタム チェック用のフォルダーを作成します。次に、モデル アドバイザーの構成エディターを使用して、モデル アドバイザー ツリー内のフォルダーをカスタマイズします。詳細については、モデル アドバイザーの設定エディターを使用したモデル アドバイザーのカスタマイズを参照してください。

参考

| | | |

関連するトピック