カスタム チェックからのブロックの対象外指定
この例では、カスタム チェックからブロックを対象外指定する方法を説明します。モデルの開発と検証の時間を短縮するため、モデル アドバイザー解析中にブロックをカスタム チェックから個別に対象外指定できます。カスタム チェックを Simulink ブロックおよび Stateflow チャートから除外するには、関数 ModelAdvisor.Check.supportExclusion
および Simulink.ModelAdvisor.filterResultWithExclusion
をチェック定義ファイルで使用します。
チェック定義ファイルの更新
この例のサポート ファイルが含まれている例を開きます。
openExample('slcheck/CreateAndDeployAModelAdvisorCustomConfigurationExample')
AdvisorCustomizationExample
モデルとdefineDetailStyleCheck.m
ファイルおよびsl_customization.m
ファイルを除いて、サポート ファイルを作業ディレクトリから削除します。sl_customization
ファイルを開き、以下のように変更します。function sl_customization(cm) % SL_CUSTOMIZATION - Model Advisor customization demonstration. % Copyright 2019 The MathWorks, Inc. % register custom checks cm.addModelAdvisorCheckFcn(@defineModelAdvisorChecks); % ----------------------------- % defines Model Advisor Checks % ----------------------------- function defineModelAdvisorChecks defineDetailStyleCheck;
defineDetailStyleCheck
ファイルを開きます。[ブロック名がブロックの下になっているかどうかをチェック] チェックを更新して、モデル アドバイザー解析中にブロックを除外するようにするには、
defineDetailStyleCheck
ファイルに 2 つ変更を加えます。[ブロック名がブロックの下になっているかどうかをチェック] チェックを有効にし、
ModelAdvisor.Check.supportExclusion
プロパティを使用したチェックの対象外指定をサポートします。rec.setCallbackFcn(@DetailStyleCallback,'None','DetailStyle');
の後に、rec.supportExclusion = true;
を追加します。function defineDetailStyleCheck
の最初のセクションは次のようになります。% Create ModelAdvisor.Check object and set properties. rec = ModelAdvisor.Check('com.mathworks.sample.detailStyle'); rec.Title = 'Check whether block names appear below blocks'; rec.TitleTips = 'Check position of block names'; rec.setCallbackFcn(@DetailStyleCallback,'None','DetailStyle'); rec.supportExclusion = true;
関数
Simulink.ModelAdvisor.filterResultWithExclusion
を使用すると、対象外指定が有効になっているチェックで警告または失敗の原因となっているモデル オブジェクトをフィルターすることができます。そのためには、関数DetailStyleCallback(system, CheckObj)
を次のように変更します。% Find all blocks whose name does not appear below blocks violationBlks = find_system(system, 'Type','block',... 'NamePlacement','alternate',... 'ShowName', 'on'); violationBlks = mdladvObj.filterResultWithExclusion(violationBlks);
DefineDetailStyleCheck
ファイルを保存します。ファイルを上書きするか確認するメッセージが表示されたら、[OK] をクリックします。
対象外指定の作成と保存
カスタマイズがモデル アドバイザーに表示されるためには、モデル アドバイザー チェック情報キャッシュをリフレッシュする必要があります。MATLAB コマンド プロンプトで次のコマンドを入力します。
Advisor.Manager.refresh_customizations();
モデルを開くには、
AdvisorCustomizationExample.slx
をダブルクリックします。[モデル化] タブで [モデル アドバイザー] を選択してモデル アドバイザーを開きます。
モデル アドバイザー ウィンドウの左側のペインで、[製品別] 、 [デモ] 、 [ブロック名がブロックの下になっているかどうかをチェック] チェックを選択します。右側のペインで [チェックの実行] を選択します。このチェックは失敗します。
モデル ウィンドウで
X
ブロックを右クリックし、[モデル アドバイザー] 、 [ブロックのみを除外] 、 [チェックの選択] を選択します。[デモ] フォルダーに移動し、[ブロック名がブロックの下になっているかどうかをチェック] チェックを選択します。モデル アドバイザーの対象外指定エディターで [保存] をクリックし、対象外指定ファイルを作成します。
モデル ウィンドウで
Amplifier
サブシステムを開き、GainBlock
ブロックを右クリックし、[モデル アドバイザー] 、 [ブロックのみを除外] 、 [チェックの選択] を選択します。[デモ] フォルダーに移動し、[ブロック名がブロックの下になっているかどうかをチェック] チェックを選択します。モデル アドバイザーの対象外指定エディターで [保存] をクリックし、対象外指定ファイルを更新します。
対象外指定の確認
モデル アドバイザー ウィンドウの左側のペインで、[製品別] 、 [デモ] 、 [ブロック名がブロックの下になっているかどうかをチェック] チェックを選択します。右側のペインで [チェックの実行] を選択します。このチェックはパスします。モデル アドバイザー ウィンドウの右側のペインに、解析時にモデル アドバイザーが適用する [対象外指定規則のチェック] が表示されます。
モデルとモデル アドバイザーを閉じます。
参考
ModelAdvisor.Check.SupportExclusion
| Simulink.ModelAdvisor