Main Content

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

カスタム チェックからのブロックの対象外指定

この例では、カスタム チェックからブロックを対象外指定する方法を説明します。モデルの開発と検証の時間を短縮するため、モデル アドバイザー解析中にブロックをカスタム チェックから個別に対象外指定できます。カスタム チェックを Simulink ブロックおよび Stateflow チャートから除外するには、関数 ModelAdvisor.Check.supportExclusion および Simulink.ModelAdvisor.filterResultWithExclusion をチェック定義ファイルで使用します。

チェック定義ファイルの更新

  1. フォルダーを書き込み可能なディレクトリに設定します。

  2. スクリプト prepare_cust_chk_code を現在のフォルダーにコピーし、スクリプトを実行します。スクリプトにより、この例に必要なファイルが現在のフォルダーにコピーされます。

    copyfile(fullfile(matlabroot,'examples','slcheck','main','prepare_cust_chk_code.m'),...
        'prepare_cust_chk_code.m','f');
    run('prepare_cust_chk_code.m');

  3. defineDetailStyleCheck ファイルを開きます。

  4. [Check position of block names] チェックを更新して、モデル アドバイザー解析中にブロックを除外するようにするには、defineDetailStyleCheck ファイルに 2 つ変更を加えます。

    1. [Check position of block names] チェックを有効にし、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;
      

    2. 関数 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);
      

  5. DefineDetailStyleCheck ファイルを保存します。ファイルを上書きするか確認するメッセージが表示されたら、[OK] をクリックします。

対象外指定の作成と保存

  1. カスタマイズがモデル アドバイザーに表示されるためには、モデル アドバイザー チェック情報キャッシュを更新する必要があります。MATLAB コマンド プロンプトで次のコマンドを入力します。

    Advisor.Manager.refresh_customizations();

  2. モデルを開くには、AdvisorCustomizationExample.slx をダブルクリックします。

  3. [モデル化] タブで [モデル アドバイザー] を選択してモデル アドバイザーを開きます。

    メモ

    モデル アドバイザー ウィンドウに [製品別] フォルダーが表示されない場合、[設定][基本設定] ダイアログ ボックスで [製品別フォルダーを表示] を選択します。

  4. モデル アドバイザー ウィンドウの左側のペインで、[製品別][デモ][ブロック名がブロックの下になっているかどうかをチェック] チェックを選択します。右側のペインで [このチェックを実行] を選択します。このチェックは失敗します。

  5. モデル アドバイザー ウィンドウで、[強調表示][チェック結果の強調表示] が選択されていることをチェックします。[ブロック名がブロックの下になっているかどうかをチェック] チェックの失敗は黄色で強調表示されます。

  6. モデル ウィンドウで X ブロックを右クリックし、[モデル アドバイザー][ブロックのみを除いて][Check position of block names] を選択します。

  7. モデル アドバイザーの対象外指定エディターで [OK] をクリックし、対象外指定ファイルを作成します。

  8. モデル ウィンドウで Amplifier サブシステムを開き、GainBlock ブロックを右クリックし、[モデル アドバイザー][ブロックのみを除いて][Check position of block names] を選択します。

  9. モデル アドバイザーの対象外指定エディターで [OK] をクリックし、対象外指定ファイルを更新します。

対象外指定の確認

  1. モデル アドバイザーで [設定][基本設定][[対象外指定] タブを表示] をクリックします。[対象外指定] タブで対象外指定を確認します。

  2. モデル アドバイザー ウィンドウの左側のペインで、[製品別][デモ][Check position of block names] チェックを選択します。右側のペインで [このチェックを実行] を選択します。このチェックはパスします。モデル アドバイザー ウィンドウの右側のペインに、解析時にモデル アドバイザーが適用する [対象外指定規則のチェック] が表示されます。

  3. モデルとモデル アドバイザーを閉じます。

参考

|

関連する例

詳細