メインコンテンツ

setCheckResultData

現在実行しているチェックの結果のデータを設定

説明

関数 success = setCheckResultData(ma,data) を使用して、現在実行しているチェックについてチェック結果のデータを設定します。チェックのコールバック関数のみがこの関数を呼び出せます。関数 getCheckResultData を使用してチェック結果データを取得できます。

この関数により、Simulink® Check™ ソフトウェアで使用できるオプションの機能であるモデル アドバイザーのカスタマイズ API を使用して作成したカスタム チェックの結果データを設定できます。詳細については、カスタム モデル アドバイザー チェックの定義 (Simulink Check)を参照してください。

すべて折りたたむ

カスタム モデル アドバイザー チェックを定義し、関数 setCheckResultData を使用してデータをチェック コールバック関数からチェック アクション コールバック関数に渡します。

この例では、Simulink Check を使用します。

モデル例 sldemo_bounce を開きます。

openExample('sldemo_bounce')

現在の作業フォルダーに sl_customization.m ファイルを作成します。MATLAB®[ホーム] タブの [新規スクリプト] をクリックします。次のコードをコピーして貼り付け、ファイルを sl_customization.m という名前で保存します。

function sl_customization(cm)
    % register custom check with the customization manager object (cm)
    addModelAdvisorCheckFcn(cm,@defineModelAdvisorCheck);
end

% -----------------------------
% define Model Advisor Check
% -----------------------------
function defineModelAdvisorCheck
    mdladvRoot = ModelAdvisor.Root;
               
    % Definition for my custom check
    rec = ModelAdvisor.Check('myCustomCheckID');
    rec.Title = 'My Custom Check Title';
    rec.setCallbackFcn(@myCustomCheckCallbackFunc,'None','StyleThree');
    
    % Specify a "Fix" action
    myAction = ModelAdvisor.Action;
    myAction.Name = 'My Custom Check Action';
    myAction.setCallbackFcn(@myCustomCheckAction);
    rec.setAction(myAction);
    
    mdladvRoot.publish(rec,'CUSTOM CHECK FOLDER');
    
end

function [ResultDescription, ResultDetails] = myCustomCheckCallbackFunc(system)
    % Initialize empty arrays
    ResultDescription = {};
    ResultDetails     = {};
    affectedBlockIDs = [];

    % Get the Model Advisor handle for the current model or subsystem
    mdladvObj = Simulink.ModelAdvisor.getModelAdvisor(system);

    % Find the "Terminator" blocks
    blockIDs = Simulink.findBlocksOfType(system,'Terminator');

    % Check if the "Terminator" block hides the automatic block name
    % If the name is hidden, fail the check and enable the Action
    for i = 1:numel(blockIDs)
        if (get_param(blockIDs(i),'HideAutomaticName') == "on")
            setCheckResultStatus(mdladvObj,'fail');                 
            setActionEnable(mdladvObj, 1);
            affectedBlockIDs = [affectedBlockIDs blockIDs(i)];
        else
            setCheckResultStatus(mdladvObj, 'pass');
        end
    end

    % Add the affected "Terminator" block IDs to the check result data
    setCheckResultData(mdladvObj, affectedBlockIDs);
    
end

function result = myCustomCheckAction(taskobj)
    mdladvObj = taskobj.MAObj;
    % Get the affected "Terminator" block IDs from the check results
    affectedBlocksIDs = getCheckResultData(mdladvObj, 'myCustomCheckID');
    % Make the automatic name visible for the "Terminator" blocks
    for i=1:length(affectedBlocksIDs)
        set_param(affectedBlocksIDs(i),'HideAutomaticName','off');
    end
    % create the return text
    result = ModelAdvisor.Paragraph;
    addItem(result, 'Updated "Terminator" blocks to show the automatic name.');                
    % disable the action button
    setActionEnable(mdladvObj, false);

end

このコードは、モデル内の Terminator ブロックを検索し、該当するブロックが自動ブロック名を非表示にしているかどうかをチェックするカスタム チェックを定義します。自動ブロック名が非表示の場合、チェックは失敗し、自動ブロック名を表示するようにモデル内の Terminator ブロックを更新できるアクションが有効になります。このコードは、チェック コールバック関数で関数 setCheckResultData を使用して、チェックに失敗したブロックの ID を保存します。アクション コールバック関数は関数 getCheckResultData を使用してそのデータにアクセスします。カスタム チェック コールバック関数とアクション コールバック関数の詳細については、カスタム モデル アドバイザー チェックの定義 (Simulink Check)を参照してください。

環境を更新して、sl_customization.m ファイルで定義されているカスタム モデル アドバイザー チェックを含めます。MATLAB コマンド ウィンドウで次のように入力します。

Advisor.Manager.refresh_customizations

モデルでモデル アドバイザーを開きます。

modeladvisor('sldemo_bounce')

カスタム モデル アドバイザー チェックを選択して実行します。左側のペインで [製品別][CUSTOM CHECK FOLDER][My Custom Check Title] を選択し、[チェックの実行] をクリックします。

sldemo_bounce モデル内の Terminator ブロックが自動ブロック名を非表示にしているため、チェックは失敗します。

チェックを右クリックし、[このチェックを修正] をクリックします。

このチェックでは、自動ブロック名を表示するように Terminator ブロックを更新するアクション コールバックを実行します。チェックを再実行すると、今度はチェックは成功します。

入力引数

すべて折りたたむ

現在実行しているチェックについての結果のデータを設定する Simulink.ModelAdvisor オブジェクト。

カスタム チェックについて指定する結果のデータ。

出力引数

すべて折りたたむ

モデル アドバイザーが現在実行中のチェックの結果データを正常に設定したかどうかを示す Boolean 値。値 1 は、モデル アドバイザーがデータを正常に設定したことを示します。値 0 は、モデル アドバイザーがデータを設定しなかったことを示します。

バージョン履歴

R2006a で導入