メインコンテンツ

モデル アドバイザーのタスクおよびフォルダーのプログラムによるカスタマイズ

カスタマイズ ファイルの概要

sl_customization.m ファイルには、カスタム チェック、タスク、グループの登録と定義を行うための一連の関数が格納されています。sl_customization.m ファイルを設定するには、次の表のガイドラインに従ってください。

メモ

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

関数説明必須またはオプション

sl_customization()

起動時にカスタム チェック、タスク、フォルダーを Simulink® カスタマイズ マネージャーに登録します。カスタム モデル アドバイザー チェックの定義を参照してください。

モデル アドバイザーのカスタマイズに必要です。

1 つ以上のチェック定義

カスタム チェックを定義します。カスタム モデル アドバイザー チェックの定義を参照してください。

カスタム チェックに必要です。また、カスタム チェックを [製品別] フォルダーに追加する場合にも必要です。

1 つ以上のタスク定義

カスタム タスクを定義します。カスタム タスクの定義を参照してください。

カスタム チェックをモデル アドバイザーに追加する場合に必須です (チェックを [製品別] フォルダーに追加する場合を除きます)。モデル アドバイザーに追加するチェックごとに 1 つのタスクを作成します。

メモ

カスタム チェックとカスタム チェック フォルダーは [製品別] フォルダーに追加することをお勧めします。その後、モデル アドバイザー構成エディターを使用して構成をカスタマイズします。詳細については、カスタム モデル アドバイザー チェックの定義およびモデル アドバイザー構成エディターを使用したモデル アドバイザーのカスタマイズを参照してください。

1 つ以上のグループ

カスタム グループを定義します。カスタム タスクの定義を参照してください。

カスタム タスクをモデル アドバイザーの新しいフォルダーに追加する場合に必須です (新しいサブフォルダーを [製品別] フォルダーに追加する場合を除きます)。新しいフォルダーごとに 1 つのグループ定義を作成します。

メモ

カスタム チェックとカスタム チェック フォルダーは [製品別] フォルダーに追加することをお勧めします。その後、モデル アドバイザー構成エディターを使用して構成をカスタマイズします。詳細については、カスタム モデル アドバイザー チェックの定義およびモデル アドバイザー構成エディターを使用したモデル アドバイザーのカスタマイズを参照してください。

タスクとフォルダーの登録

sl_customization 関数の作成

タスクとフォルダーをモデル アドバイザーに追加するには、sl_customization.m ファイルを MATLAB® パスで作成します。その後、MATLAB パス上の sl_customization.m ファイルに関数 sl_customization() を作成します。

ヒント

  • MATLAB パス上に 1 つを超える sl_customization.m ファイルを配置することができます。

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

関数 sl_customization では、次の例のように、1 つの引数 (カスタマイズ マネージャー オブジェクト) を受け入れます。

function sl_customization(cm)

カスタマイズ マネージャー オブジェクトは、カスタム チェック、タスクおよびフォルダーを登録するためのメソッドを含みます。これらのメソッドを使用すると、この後の節で説明するように、用途に応じたカスタマイズを登録することができます。

タスクとフォルダーの登録

カスタマイズ マネージャーでは、次のメソッドを使用してカスタム タスクおよびフォルダーを登録することができます。

  • addModelAdvisorTaskFcn (@factorygroupDefinitionFcn)

    factorygroupDefinitionFcn で定義したタスクが、モデル アドバイザーの [タスク別] フォルダーに登録されます。

    factorygroupDefinitionFcn 引数は、ModelAdvisor.FactoryGroup クラスのインスタンスとしてモデル アドバイザーに追加するチェックを定義する関数のハンドルです。

  • addModelAdvisorTaskAdvisorFcn (@taskDefinitionFcn)

    taskDefinitionFcn で定義されたタスクとフォルダーが、ModelAdvisor.Root.publish メソッドまたは ModelAdvisor.Group クラスで指定されたモデル アドバイザーのフォルダーに登録されます。

    taskDefinitionFcn 引数は、カスタム タスクおよびフォルダーを定義する関数のハンドルです。Simulink はこれらのチェックとフォルダーを ModelAdvisor.Task または ModelAdvisor.Group クラスのインスタンスとしてモデル アドバイザーに追加します。

次の例では、カスタム タスクおよびフォルダーを登録する方法を示します。

function sl_customization(cm)

% register custom factory group
cm.addModelAdvisorTaskFcn(@defineModelAdvisorTasks);

% register custom tasks.
cm.addModelAdvisorTaskAdvisorFcn(@defineTaskAdvisor);

メモ

カスタム チェックを sl_customization.m 内に追加する場合は、関数 sl_customization にチェックを登録するためのメソッドを追加します。

カスタム タスクの定義

タスクを使用してチェックをカスタム フォルダーまたは複数のフォルダーに追加

カスタム タスクを使用して、チェックをモデル アドバイザーの複数のフォルダーや 1 つのカスタム フォルダーに追加することができます。ModelAdvisor.Task クラスの各インスタンスのプロパティを指定する 1 つ以上の関数でカスタム タスクを定義します。モデル アドバイザーに追加するカスタム タスクごとにこのクラスのインスタンスを 1 つ定義します。その後、カスタム タスクを登録します。この後の各節では、カスタム タスクの定義方法を説明します。

チェックを複数のフォルダーまたは 1 つのカスタム フォルダーに追加するには、次の手順に従います。

  1. ModelAdvisor.Check クラスを使用してチェックを作成します。

  2. チェックのタスク ラッパーを登録します。

  3. まだ存在しないフォルダーにチェックを追加する場合は、ModelAdvisor.Group クラスを使用してフォルダーの登録と作成を行います。

  4. ModelAdvisor.Task.setCheck メソッドを使用してチェックをタスクに追加します。

  5. ModelAdvisor.Group.addTask メソッドとタスク ID を使用してタスクを各フォルダーに追加します。

MathWorks チェックによるカスタム タスクの作成

MathWorks® チェックをカスタム タスクとして定義すると、そのチェックをカスタム フォルダーに追加できます。チェックをカスタム タスクとして追加する場合、チェックはチェック ID で識別します。

MathWorks チェック ID を検索するには、次の手順に従います。

  1. 階層で MathWorks チェックがあるフォルダーに移動します。

  2. モデル アドバイザーの左側のペインで、チェックを選択します。

  3. チェック名を右クリックして [ワークスペースにチェック ID を送信] を選択します。ID がコマンド ウィンドウに表示され、ベース ワークスペースに送信されます。

  4. [コマンド ウィンドウ] からタスクとして追加するチェックの [チェック ID] を選択してコピーします。

タスクの表示と有効化

VisibleEnableValue の各プロパティは、タスクの場合でもチェックの場合と同様に機能します。

タスクが表示される場所の指定

以下のガイドラインに従い、モデル アドバイザーでタスクが表示される場所を指定します。

  • タスクを [モデル アドバイザーのタスク マネージャー] の新しいフォルダーに配置するには、ModelAdvisor.Group クラスを使用します。

  • タスクを [タスク別] フォルダーの新しいフォルダーに配置するには、ModelAdvisor.FactoryGroup クラスを使用します。

タスク定義関数

次の例では、タスク定義関数を示します。この関数は 3 つのタスクを定義します。

% Defines Model Advisor tasks and a custom folder
% Add checks to a custom folder using task definitions
function defineTaskAdvisor
mdladvRoot = ModelAdvisor.Root;

% Define task that uses Sample Check 0: Check whose Results are Viewed as Detailed Result Collections
MAT8 = ModelAdvisor.Task('com.mathworks.sample.TaskSample8');
MAT8.DisplayName='Example task using new check style (recommended style)';
MAT8.setCheck('com.mathworks.sample.Check0');
mdladvRoot.register(MAT8);

% Define task that uses Sample Check 1: Informational check
MAT1 = ModelAdvisor.Task('mathworks.example.task.configManagement');
MAT1.DisplayName = 'Informational check for model configuration management';
MAT1.Description = 'Display model configuration and checksum information.';
setCheck(MAT1, 'mathworks.example.configManagement');
mdladvRoot.register(MAT1);

% Define task that uses Sample Check 2: Basic Check with Pass/Fail Status
MAT2 = ModelAdvisor.Task('mathworks.example.task.unconnectedObjects');
MAT2.DisplayName = 'Check for unconnected objects';
setCheck(MAT2, 'mathworks.example.unconnectedObjects');
MAT2.Description = ['Identify unconnected lines, input ports, and output ' ...
                                      'ports in the model or subsystem.'];
mdladvRoot.register(MAT2);

% Define task that uses Sample Check 3: Check with Subresults and Actions
MAT3 = ModelAdvisor.Task('mathworks.example.task.optimizationSettings');
MAT3.DisplayName = 'Check safety-related optimization settings';
MAT3.Description = ['Check model configuration for optimization ' ...
                    'settings that can impact safety.'];
MAT3.setCheck('mathworks.example.optimizationSettings');
mdladvRoot.register(MAT3);

% Custom folder definition
MAG = ModelAdvisor.Group('mathworks.example.ExampleGroup');
MAG.DisplayName = 'My Group';
% Add tasks to My Group folder
MAG.addTask(MAT8);
addTask(MAG, MAT1);
addTask(MAG, MAT2);
addTask(MAG, MAT3);
% Add My Group folder to the Model Advisor under 'Model Advisor' (root)
mdladvRoot.publish(MAG);

カスタム フォルダーの定義

カスタム フォルダーについて

フォルダーを使用すると、モデル アドバイザーのチェックを機能や用途別にグループ化できます。カスタム フォルダーは次の場所で定義します。

  • ModelAdvisor.FactoryGroup クラスの各インスタンスのプロパティを指定する出荷時グループ定義関数。

  • ModelAdvisor.Group クラスの各インスタンスのプロパティを指定するタスク定義関数。

モデル アドバイザーに追加するフォルダーごとにグループ クラスのインスタンスを 1 つ定義します。

カスタム フォルダーの追加

カスタム フォルダーを追加するには、次の手順に従います。

  1. ModelAdvisor.Group クラスまたは ModelAdvisor.FactoryGroup クラスを使用してフォルダーを作成します。

  2. フォルダーを登録します。

カスタム フォルダーが表示される場所の指定

以下のガイドラインに従い、モデル アドバイザーでカスタム フォルダーが表示される場所を指定します。

  • 新しいフォルダーを [モデル アドバイザーのタスク マネージャー] で定義するには、ModelAdvisor.Group クラスを使用します。

  • 新しいフォルダーを [タスク別] フォルダーで定義するには、ModelAdvisor.FactoryGroup クラスを使用します。

メモ

新しいフォルダーを [製品別] フォルダーで定義するには、カスタム チェック内の ModelAdvisor.Root.publish メソッドを使用します。モデル アドバイザー ウィンドウに [製品別] フォルダーが表示されない場合、[設定][基本設定] ダイアログ ボックスで [製品別フォルダーを表示] を選択します。

グループ定義

次の例では、グループ定義を示します。この定義により、タスクが [モデル アドバイザー] ルートの直下にある [My Group] というフォルダーに配置されます。タスク定義関数にはこのグループ定義が含まれています。

% Custom folder definition
MAG = ModelAdvisor.Group('mathworks.example.ExampleGroup');
MAG.DisplayName='My Group';
% Add tasks to My Group folder
MAG.addTask(MAT8);
MAG.addTask(MAT1);
MAG.addTask(MAT2);
MAG.addTask(MAT3);
% Add My Group folder to the Model Advisor under 'Model Advisor' (root)
mdladvRoot.publish(MAG);

次の例では、出荷時グループ定義関数を示します。この定義により、チェックが [タスク別] フォルダーにある [Demo Factory Group] というフォルダーに配置されます。

function defineModelAdvisorTasks
mdladvRoot = ModelAdvisor.Root;

% --- sample factory group
rec = ModelAdvisor.FactoryGroup('com.mathworks.sample.factorygroup');
rec.DisplayName='Demo Factory Group';
rec.Description='Demo Factory Group';
rec.addCheck('com.mathworks.sample.Check0');
rec.addCheck('mathworks.example.configManagement');
rec.addCheck('mathworks.example.unconnectedObjects');
rec.addCheck('mathworks.example.optimizationSettings');
mdladvRoot.publish(rec); % publish inside By Task

参考

| | | | |

トピック