このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
カスタム モデル アドバイザー チェックの定義
カスタム チェックを定義して、モデル アドバイザーで確認する独自の条件やモデル コンフィギュレーション設定を作成します。編集時およびモデル アドバイザーで実行されるカスタム チェックとモデル アドバイザーでのみ実行されるカスタム チェックを作成できます。
カスタム編集時チェックは、問題をモデル設計プロセスの早い段階で特定するのに役立ちますが、ユーザーが編集しているモデルまたはサブシステムの同じレベルにあるブロックと信号しか確認されません。ただし、これらのチェックではモデルの階層構造のレベルで問題が集約され、その問題がモデル アドバイザーで報告されます。モデルの他のレベルにある影響を受けるブロックについてチェックで確認する必要がある場合は、モデル アドバイザーでのみ実行されるカスタム チェックを作成します。たとえば、モデルの階層構造全体で 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
メソッドに受け渡します。モデル アドバイザーでチェックのユーザーが [修正] をクリックすると、それらのモデルにカスタムの修正が適用されます。
コールバック関数およびアクション コールバック関数から、チェックの実行後に結果を表示するための戻り引数が 1 つ以上返されます。チェック コールバック定義関数とアクション コールバック定義関数の作成を参照してください。
モデル アドバイザーの結果に既定の書式設定を使用するには、setCallbackFcn
メソッドでコールバック関数のタイプを DetailStyle
に指定します。既定の書式設定では要件が満たされない場合、ModelAdvisor.FormatTemplate
クラスまたは以下の他のモデル アドバイザーの書式設定クラスのいずれかを使用します。
クラス | 説明 |
---|---|
ModelAdvisor.Text | モデル アドバイザーのテキスト出力を作成します。 |
ModelAdvisor.List | リストを作成します。 |
ModelAdvisor.Table | テーブルを作成します。 |
ModelAdvisor.Paragraph | 段落を作成し、書式設定します。 |
ModelAdvisor.LineBreak | 改行を挿入します。 |
ModelAdvisor.Image | モデル アドバイザーの出力にイメージを含めます。 |
カスタム編集時チェックの定義
カスタム編集時チェックを作成するには、ModelAdvisor.EdittimeCheck
クラスから派生する MATLAB クラスを作成します。チェック定義関数で、このクラスを ModelAdvisor.Check
の CallbackHandle
プロパティの値として指定します。派生クラス内で、次のメソッドを定義します。
チェック ID とチェックの
ModelAdivsor.EdittimeCheck.TraversalType
プロパティを指定するメソッドを定義します。TraversalType
プロパティは、モデル アドバイザーでのチェックの実行方法を指定します。編集時アルゴリズムに違反するブロックを探す
blockDiscovered
メソッドを定義します。ブロックに違反があった場合に、そのブロックを編集時に強調表示するには、
Type
プロパティを既定値のSID
に設定してModelAdvisor.ResultDetail
違反オブジェクトを作成します。信号に違反があった場合に、その信号を強調表示するには、Type
プロパティをSignal
に設定して違反オブジェクトを作成します。edittimecheck.TraversalTypes.ACTIVEGRAPH
のTraversalType
プロパティを指定する場合は、編集時チェックで収集したデータに対して実行する内容を指定するfinishedTraversal
メソッドをblockDiscovered
メソッドの一部として定義します。必要に応じて、編集時チェックの違反に対する
fix
メソッドを定義します。
例については、編集時チェックを定義し、モデル アドバイザーで指定した条件に準拠させるを参照してください。
モデルの編集中にカスタム編集時チェックがパフォーマンスに悪影響を及ぼさないように、現在の MATLAB セッションにおいて、少なくとも 3 つの異なる Simulink® モデルでチェックの実行時間が 500 ミリ秒を超えると、モデル アドバイザーではカスタム編集時チェックが自動的に無効になります。
モデル アドバイザーでカスタム編集時チェックが無効になると Simulink キャンバスに警告が表示されます。編集時チェックを再度有効にするには、次のいずれかを行います。
警告のハイパーリンク テキストをクリックします。
次のように関数
edittime.enableCheck
にチェック識別子checkID
を渡します。edittime.enableCheck(checkID)
。
カスタム編集時チェックが無効にならないようにするには、モデルでのチェックの実行時間が 500 ミリ秒を超えないようにチェックを作成してください。
チェック入力パラメーターの定義
入力パラメーターを使用して、チェックの実行前に入力を要求できます。入力パラメーターは ModelAdvisor.InputParameter
クラスを使用して定義します。カスタム チェック定義関数に入力パラメーターの定義を組み込まなければなりません。カスタム チェックに追加する入力パラメーターごとに、このクラスのインスタンスを 1 つ定義する必要があります。
次のメソッドを使用して、モデル アドバイザーでの入力パラメーターのレイアウトを指定します。
目的 | メソッド |
---|---|
入力パラメーター グリッドのサイズを指定します。 | setInputParametersLayoutGrid |
入力パラメーター レイアウト グリッド内のパラメーターの行数を指定します。 | setRowSpan |
入力パラメーター レイアウト グリッド内のパラメーターの列数を指定します。 | setColSpan |
入力パラメーターはモデル アドバイザーの [入力パラメーター] ボックスに表示されます。
チェックの表示と有効化
カスタム チェックがモデル アドバイザーにどのように表示されるかを指定することができます。どの場合にチェックを表示するか、またユーザーによるチェックの選択や選択解除を許可するかどうかを、ModelAdvisor.Check
クラスの Visible
、Enable
、Value
の各プロパティを使用して指定できます。これらのプロパティには次のような相互関係があります。
Visible
プロパティがfalse
の場合、チェックまたはタスクがモデル アドバイザーに表示されず、Enable
プロパティとValue
プロパティは無視されます。Visible
プロパティがtrue
でEnable
プロパティがfalse
の場合、次のようになります。チェックがモデル アドバイザーに表示されます。
チェックの初期ステータスは
Value
になります。チェック ボックスはグレー表示になります。
Visible
プロパティがtrue
でEnabled
プロパティがtrue
の場合、チェックまたはタスクがモデル アドバイザーに表示され、チェック ボックスがアクティブになります。
カスタム チェックのパブリッシュ
publish
メソッドを使用して、[製品別] フォルダー内にカスタム チェック用のフォルダーを作成します。次に、モデル アドバイザー構成エディターを使用して、モデル アドバイザー ツリー内のフォルダーをカスタマイズします。詳細については、モデル アドバイザー構成エディターを使用したモデル アドバイザーのカスタマイズを参照してください。
参考
ModelAdvisor.Check
| ModelAdvisor.EdittimeCheck
| ModelAdvisor.InputParameter
| ModelAdvisor.Action
| publish