モデル コンフィギュレーション パラメーターに対するモデル アドバイザー チェックの作成
モデルのコンフィギュレーション パラメーターを検証するために、コンフィギュレーション パラメーター チェックを作成することができます。
モデルで使用するコンフィギュレーション パラメーター設定を決定します。必要であればモデリング ガイドラインを確認します。
チェックするコンフィギュレーション パラメーター設定が含まれる XML データ ファイルを作成します。
Advisor.authoring.generateConfigurationParameterDataFile
を使用するか、手動でファイルを作成します。sl_customization.m
ファイルを使用して、モデルのコンフィギュレーション パラメーター チェックを登録します。モデルのチェックを実行します。
コンフィギュレーション パラメーター チェックのデータ ファイルの作成
この例では、[診断] ペインのコンフィギュレーション パラメーターの値を指定するデータ ファイルを作成する方法を示します。コンフィギュレーション パラメーターの値がデータ ファイルで定義されている値と一致しない場合、カスタム チェックは警告を発します。
以下を入力してモデル vdp
を開きます。
openExample('simulink_general/VanDerPolOscillatorExample')
モデル ウィンドウで右クリックして [モデル コンフィギュレーション パラメーター] を選択します。[診断] ペインで、コンフィギュレーション パラメーターを次に設定します。
[代数ループ] を
[なし]
に設定[代数ループの最小化] を
[エラー]
に設定[ブロック優先順位違反] を
[エラー]
に設定
関数 Advisor.authoring.generateConfigurationParameterDataFile
を使用して、[診断] ペインにあるコンフィギュレーション パラメーターの制約を指定するデータ ファイルを作成します。また、修正アクションを伴うチェックを作成するために、FixValue
を true に設定します。コマンド プロンプトで、次を入力します。
model='vdp'; dataFileName = 'ex_DataFile.xml'; Advisor.authoring.generateConfigurationParameterDataFile(dataFileName,... model, 'Pane', 'Diagnostics', 'FixValues', true);
コマンド ウィンドウで、ex_DataFile.xml
を選択します。データ ファイルが MATLAB® エディターで開きます。
[代数ループの最小化] (
ArtificialAlgebraicLoopMsg
) のコンフィギュレーション パラメーターのタグ付けでは、value
がerror
とされ、fixvalue
がerror
と指定されています。ex_DataFile.xml
を使用してコンフィギュレーション パラメーターのチェックを実行すると、[代数ループの最小化] 設定がerror
に設定されていない場合、チェックに失敗します。チェックの修正アクションによって、設定がerror
に変更されます。[ブロック優先順位違反] (
BlockPriorityViolationMsg
) のコンフィギュレーション パラメーターのタグ付けでは、value
がerror
とされ、fixvalue
がerror
と指定されています。ex_DataFile.xml
を使用してコンフィギュレーション パラメーターのチェックを実行すると、[ブロック優先順位違反] 設定がerror
に設定されていない場合、チェックに失敗します。チェックの修正アクションによって、設定がerror
に変更されます。
ex_DataFile.xml
で、[代数ループ] (AlgebraicLoopMsg
) のパラメーターのタグ付けを編集して、value
が none
のときにチェックによって警告が出されるようにします。ここでは不適切なコンフィギュレーション パラメーターを指定するため、NegativeModelParameterConstraint
が必要です。また、修正アクションを伴わないサブチェックを作成するため、<fixvalue>
のタグ付けがある行を削除します。このコンフィギュレーション パラメーターのタグ付けは次のようになります。
<!-- Algebraic loop: (AlgebraicLoopMsg)--> <NegativeModelParameterConstraint> <parameter>AlgebraicLoopMsg</parameter> <value>none</value> </NegativeModelParameterConstraint>
ex_DataFile.xml
内のチェックしないコンフィギュレーション パラメーターへのタグ付け行を削除します。データ ファイル ex_DataFile.xml
は、[代数ループ]、[代数ループの最小化] および [ブロック優先順位違反] に対するタグ付けのみを提供します。たとえば、ex_DataFile.xml
は次に類似した内容になっています。
<?xml version="1.0" encoding="utf-8"?> <customcheck xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.w3schools.com MySchema.xsd"> <checkdata> <!-- Algebraic loop: (AlgebraicLoopMsg)--> <NegativeModelParameterConstraint> <parameter>AlgebraicLoopMsg</parameter> <value>none</value> </NegativeModelParameterConstraint> <!--Minimize algebraic loop: (ArtificialAlgebraicLoopMsg)--> <PositiveModelParameterConstraint> <parameter>ArtificialAlgebraicLoopMsg</parameter> <value>error</value> <fixvalue>error</fixvalue> </PositiveModelParameterConstraint> <!--Block priority violation: (BlockPriorityViolationMsg)--> <PositiveModelParameterConstraint> <parameter>BlockPriorityViolationMsg</parameter> <value>error</value> <fixvalue>error</fixvalue> </PositiveModelParameterConstraint> </checkdata> </customcheck>
Advisor.authoring.DataFile.validate
によってデータ構文を検証します。コマンド プロンプトで、次を入力します。
dataFile = 'ex_DataFile.xml'; msg = Advisor.authoring.DataFile.validate(dataFile); if isempty(msg) disp('Data file passed the XSD schema validation.'); else disp(msg); end
[診断] ペインのモデル コンフィギュレーション パラメーターに対するチェックの作成
この例では、[診断] ペインのモデル コンフィギュレーション パラメーターに対して、データ ファイルと sl_customization.m
ファイルを使用してチェックを作成する方法を説明します。まず、sl_customization.m
ファイルを使用してチェックを登録します。ex_DataFile.xml
を使用すると、チェックは次の場合に警告を出します。
[代数ループ] の設定が
[なし]
[代数ループの最小化] の設定が
[エラー]
ではない[ブロック優先順位違反] の設定が
[エラー]
ではない
チェックの修正アクションによって [代数ループの最小化] と [ブロック優先順位違反] パラメーター設定が [エラー]
に変更されます。
このチェックでは、コンフィギュレーション パラメーター チェックのデータ ファイルの作成で作成した ex_DataFile.xml
データ ファイルを使用します。
モデル アドバイザーとモデルが開いている場合は、閉じます。
次の sl_customization.m
ファイルを使用して、[Example: Check model configuration parameters] のチェックを指定し、登録します。
function sl_customization(cm) % register custom checks. cm.addModelAdvisorCheckFcn(@defineModelAdvisorChecks); %% defineModelAdvisorChecks function defineModelAdvisorChecks rec = ModelAdvisor.Check('com.mathworks.Check1'); rec.Title = 'Example: Check model configuration parameters'; rec.setCallbackFcn(@(system)(Advisor.authoring.CustomCheck.checkCallback... (system)), 'None', 'StyleOne'); rec.TitleTips = 'Example check for model configuration parameters'; % --- data file input parameters rec.setInputParametersLayoutGrid([1 1]); inputParam1 = ModelAdvisor.InputParameter; inputParam1.Name = 'Data File'; inputParam1.Value = 'ex_DataFile.xml'; inputParam1.Type = 'String'; inputParam1.Description = 'Name or full path of XML data file.'; inputParam1.setRowSpan([1 1]); inputParam1.setColSpan([1 1]); rec.setInputParameters({inputParam1}); % -- set fix operation act = ModelAdvisor.Action; act.setCallbackFcn(@(task)(Advisor.authoring.CustomCheck.actionCallback... (task))); act.Name = 'Modify Settings'; act.Description = 'Modify model configuration settings.'; rec.setAction(act); mdladvRoot = ModelAdvisor.Root; mdladvRoot.publish(rec,'Demo');
setCallbackFcn
タイプの StyleOne
を使用しなければならないことに注意してください。[Example: Check model configuration parameters] を作成します。コマンド プロンプトで、次を入力します。
Advisor.Manager.refresh_customizations
以下を入力してモデル vdp
を開きます。
openExample('simulink_general/VanDerPolOscillatorExample')
モデル ウィンドウで右クリックして [モデル コンフィギュレーション パラメーター] を選択します。[診断] ペインで、コンフィギュレーション パラメーターを次に設定します。
[代数ループ] を
[なし]
に設定[代数ループの最小化] を
[警告]
に設定[ブロック優先順位違反] を
[警告]
に設定
[モデル化] タブで [モデル アドバイザー] を選択してモデル アドバイザーを開きます。
左側のペインで、[デモ]、[Example: Check model configuration parameters] を選択します。右側のペインで、[データ ファイル] が ex_DataFile.xml
に設定されています。
[チェックの実行] をクリックします。モデル アドバイザーのチェックから、コンフィギュレーション パラメーターが ex_DataFile.xml
で指定されている値に設定されていないことを知らせる警告が出ます。正の制約タグ (PositiveModelParameterConstraint
) が付いているコンフィギュレーション パラメーターについては、推奨値が value
タグ付けから取得されます。負の制約タグ (NegativeModelParameterConstraint
) が付いているコンフィギュレーション パラメーターについては、非推奨値が value
タグ付けから取得されます。
代数ループ
(AlgebraicLoopMsg)
—ex_DataFile.xml
のタグ付けでは、AlgebraicLoopMsg
に対する修正アクションが指定されていません。サブチェックは、この設定が[なし]
に設定されていない場合のみパスします。代数ループの最小化
(ArtificialAlgebraicLoopMsg)
—ex_DataFile.xml
のタグ付けでは、ArtificialAlgebraicLoopMsg
に対し、修正アクションを伴うサブチェックが指定されています。このサブチェックは、設定が[エラー]
の場合にのみパスします。修正アクションによって、設定が[エラー]
に変更されます。ブロック優先順位違反
(BlockPriorityViolationMsg)
—ex_DataFile.xml
のタグ付けでは、BlockPriorityViolationMsg
に対し、修正アクションを伴うサブチェックが指定されています。このサブチェックは、設定が[警告]
の場合はパスしません。修正アクションによって、設定が[エラー]
に変更されます。
ツールストリップで [修正] をクリックします。モデル アドバイザーによって、[ブロック優先順位違反] と [代数ループの最小化] のコンフィギュレーション パラメーターが更新されます。
[デモ] 、 [Example: Check model configuration parameters] チェックを再度実行します。[代数ループ] が [なし]
に設定されているため、チェックから警告が出ます。
モデル アドバイザー ウィンドウの右側のペインで、Algebraic loop (AlgebraicLoopMsg)
のリンクを使用してコンフィギュレーション パラメーターを編集します。[代数ループ] を [警告]
または [エラー]
に設定します。
最終のチェックを実行します。このチェックはパスします。
コンフィギュレーション パラメーター チェックのデータ ファイル
XML データ ファイルを使用してコンフィギュレーション パラメーター チェックを作成できます。データ ファイルの作成は、Advisor.authoring.generateConfigurationParameterDataFile
を使用しても手動によっても可能です。データ ファイルにはチェック動作を指定するタグ付けが含まれます。データ ファイル内で指定されているモデル コンフィギュレーション パラメーターのそれぞれが個別のサブチェックです。データ ファイルの構造は以下のとおりです。
<?xml version="1.0" encoding="utf-8"?> <customcheck xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.w3schools.com MySchema.xsd"> <messages> <Description>Description of check</Description> <PassMessage>Pass message</PassMessage> <FailMessage>Fail message</FailMessage> <RecommendedActions>Recommended action</RecommendedActions> </messages> <checkdata> <!--Command line name of configuration parameter--> <PositiveModelParameterConstraint> <parameter>Command-line name of configuration parameter</parameter> <value>Value that you want configuration parameter to have</value> <fixvalue>Specify value for a fix action</fixvalue> <dependson>ID of configuration parameter subcheck that must pass before this subcheck runs</value> </PositiveModelParameterConstraint> <!-- Command line name of configuration parameter--> <NegativeModelParameterConstraint> <parameter>Command line name of configuration parameter</parameter> <value>Value that you do not want configuration parameter to have</value> <fixvalue>Specify value for a fix action</fixvalue> <dependson>ID of configuration parameter subcheck that must pass before this subcheck runs</value> </NegativeModelParameterConstraint> </checkdata> </customcheck>
<messages>
タグには次が含まれています。
Description
— (オプション) チェックの説明。モデル アドバイザー ウィンドウに表示されます。PassMessage
— (オプション) モデル アドバイザー ウィンドウに表示されるパス メッセージ。FailMessage
— (オプション) モデル アドバイザー ウィンドウに表示される失敗メッセージ。RecommendedActions
— (オプション) チェックがパスしなかったときにモデル アドバイザー ウィンドウに表示される推奨アクション。
メモ
<messages>
タグはオプションです。Advisor.authoring.generateConfigurationParameterDataFile
では <messages>
のタグ付けは生成されません。
<checkdata>
タグでは、データ ファイルで 2 種類の制約が指定されています。
PositiveModelParameterConstraint
— 必要とするコンフィギュレーション パラメーター設定を指定します。NegativeModelParameterConstraint
— 望まないコンフィギュレーション パラメーター設定を指定します。
この 2 種類の各制約のタグについて、チェックする各コンフィギュレーション パラメーターに対し、データ ファイルに次のタグが存在します。
parameter
— チェックするコンフィギュレーション パラメーターを指定します。タグ付けでは、コンフィギュレーション パラメーターのコマンド ラインでの名前が使用されます。以下に例を示します。<PositiveModelParameterConstraint> <parameter>BlockPriorityViolationMsg</parameter> </PositiveModelParameterConstraint> <NegativeModelParameterConstraint> <parameter>AlgebraicLoopMsg</parameter> </NegativeModelParameterConstraint>
value
— コンフィギュレーション パラメーターの設定を指定します。value
タグは 1 つを超えて指定できます。PositiveModelParameterConstraint
を使用している場合、value
はコンフィギュレーション パラメーターに必要な設定を指定します。NegativeModelParameterConstraint
の場合、value
はコンフィギュレーション パラメーターに望まない設定を指定します。value
は、次の表の形式を使用して指定できます。タイプ 形式 例 スカラー値 <value>xyz</value>
この例では、制約
NegativeModelParameterConstraint
は、コンフィギュレーション パラメーターの設定がerror
またはnone
以外の場合に警告します。<NegativeModelParameterConstraint> <value>error</value> <value>none</value> </NegativeModelParameterConstraint>
構造体またはオブジェクト <value> <param1>xyz</param1> <param2>yza</param2> </value>
この例では、制約
PositiveModelParameterConstraint
は、コンフィギュレーション パラメーターの設定が有効な構造体ではない場合に警告します。<PositiveModelParameterConstraint> <value> <double>a</double> <single>b</single> </value> </PositiveModelParameterConstraint>
配列 <value> <element>value</element> <element>value</element> </value>
この例では、制約
NegativeModelParameterConstraint
は、コンフィギュレーション パラメーターの設定が無効な配列である場合に警告します。<NegativeModelParameterConstraint> <value> <element>A</element> <element>B</element> </value> </NegativeModelParameterConstraint>
構造体配列 <value> <element> <param1>xyz</param1> <param2>yza</param2> </element> <element> <param1>xyz</param1> <param2>yza</param2> </element> </value>
この例では、制約
NegativeModelParameterConstraint
は、コンフィギュレーション パラメーターの設定が無効な構造体配列である場合に警告します。<NegativeModelParameterConstraint> <value> <element> <double>a</double> <single>b</single> </element> <element> <double>a</double> <single>b</single> </element> </value> </NegativeModelParameterConstraint>
fixvalue
— (オプション) モデル アドバイザーの修正アクションを適用する際に使用する設定を指定します。fixvalue
は、次の表の形式を使用して指定できます。タイプ 形式 例 スカラー値 <fixvalue>xyz</fixvalue>
この例では、修正アクション タグは、新しいコンフィギュレーション パラメーター設定を
warning
として指定します。<PositiveModelParameterConstraint> <value>error</value> <fixaction>warning</fixaction> </PositiveModelParameterConstraint>
構造体またはオブジェクト <fixvalue> <param1>xyz</param1> <param2>yza</param2> </fixvalue>
この例では、修正アクション タグは、構造体用の新しいコンフィギュレーション パラメーター設定を指定します。
<PositiveModelParameterConstraint> <value> <double>a</double> <single>b</single> </value> <fixvalue> <double>c</double> <single>d</single> </fixvalue> </PositiveModelParameterConstraint>
配列 <fixvalue> <element>value</element> <element>value</element> </fixvalue>
この例では、修正アクション タグは、配列用の新しいコンフィギュレーション パラメーター設定を指定します。
<NegativeModelParameterConstraint> <value> <element>A</element> <element>B</element> </value> <fixvalue> <element>C</element> <element>D</element> </fixvalue> </NegativeModelParameterConstraint>
構造体配列 <fixvalue> <element> <param1>xyz</param1> <param2>yza</param2> </element> <element> <param1>xyz</param1> <param2>yza</param2> </element> </fixvalue>
この例では、修正アクション タグは、構造体配列用の新しいコンフィギュレーション パラメーター設定を指定します。
<NegativeModelParameterConstraint> <value> <element> <double>a</double> <single>b</single> </element> <element> <double>a</double> <single>b</single> </element> </value> <fixvalue> <element> <double>c</double> <single>d</single> </element> <element> <double>c</double> <single>d</single> </element> </fixvalue> </NegativeModelParameterConstraint>
dependson
- (オプション) 前提条件のサブチェックを指定します。この例では、
dependson
は、コンフィギュレーション パラメーター サブチェックID_A
を実行する前に、コンフィギュレーション パラメーター サブチェックID_B
がパスしなければならないことを指定します。<PositiveModelParameterConstraint id="ID_A"> <dependson>ID_B</value> </PostitiveModelParameterConstraint>
データ ファイルのタグ付けによるコンフィギュレーション パラメーターの指定
次のタグ付けは、コンフィギュレーション パラメーター SolverType
のサブチェックを指定しています。コンフィギュレーション パラメーターが Fixed-Step
に設定されている場合、このサブチェックはパスします。
<PositiveModelParameterConstraint id="ID_A"> <parameter>SolverType</parameter> <value>Fixed-step</value> </PostitiveModelParameterConstraint>
データ ファイルのタグ付けによる修正アクション付きコンフィギュレーション パラメーターの指定
次のタグ付けは、コンフィギュレーション パラメーター AlgebraicLoopMsg
のサブチェックを指定しています。コンフィギュレーション パラメーターが none
または warning
に設定されている場合、このサブチェックはパスします。サブチェックがパスしない場合、チェックの修正アクションによってコンフィギュレーション パラメーターが error
に変更されます。
<PositiveModelParameterConstraint id="ID_A"> <parameter>AlgebraicLoopMsg</parameter> <value>none</value> <value>warning</value> <fixvalue>error</value> </PostitiveModelParameterConstraint>
データ ファイルのタグ付けによる、配列タイプのコンフィギュレーション パラメーターの指定
<PositiveModelParameterConstraint id="A"> <parameter>ReservedNameArray</parameter> <value> <element>A</element> <element>B</element> </value> <value> <element>A</element> <element>C</element> </value> </PositiveModelParameterConstraint>
データ ファイルのタグ付けによる、修正アクションを伴う構造体タイプのコンフィギュレーション パラメーターの指定
<PositiveModelParameterConstraint id="A"> <parameter>ReplacementTypes</parameter> <value> <double>a</double> <single>b</single> </value> <value> <double>c</double> <single>b</single> </value> <fixvalue> <double>a</double> <single>b</single> </fixvalue> </PositiveModelParameterConstraint>
データ ファイルのタグ付けによる、修正アクションおよび前提条件チェックを伴うコンフィギュレーション パラメーターの指定
次のタグ付けは、コンフィギュレーション パラメーター SolverType
のサブチェックを指定しています。SolverType
のサブチェックは、ID_B
のサブチェックがパスした場合にのみ実行されます。SolverType
のサブチェックは、ID_B
のサブチェックがパスしなければ実行されません。モデル アドバイザーから、前提条件の制約が満たされていないことがレポートされます。
SolverType
のサブチェックの実行時に SolverType
が Fixed-Step
に設定されていれば、SolverType
のサブチェックはパスします。サブチェックの実行時にパスしない場合、チェックの修正アクションによってコンフィギュレーション パラメーターが Fixed-Step
に変更されます。
<PositiveModelParameterConstraint id="ID_A"> <parameter>SolverType</parameter> <value>Fixed-step</value> <fixvalue>Fixed-step</value> <dependson>ID_B</value> </PostitiveModelParameterConstraint>
データ ファイルのタグ付けによる、望まないコンフィギュレーション パラメーターの指定
次のタグ付けは、コンフィギュレーション パラメーター SolverType
のサブチェックを指定しています。コンフィギュレーション パラメーターが Fixed-Step
に設定されている場合、このサブチェックはパスしません。
<NegativeModelParameterConstraint id="ID_A"> <parameter>SolverType</parameter> <value>Fixed-step</value> </NegativeModelParameterConstraint>
データ ファイルのタグ付けによる、修正アクションを伴う望まないコンフィギュレーション パラメーターの指定
次のタグ付けは、コンフィギュレーション パラメーター SolverType
のサブチェックを指定しています。コンフィギュレーション パラメーターが Fixed-Step
に設定されている場合、このサブチェックはパスしません。サブチェックがパスしない場合、チェックの修正アクションによってコンフィギュレーション パラメーターが Variable-Step
に変更されます。
<NegativeModelParameterConstraint id="ID_A"> <parameter>SolverType</parameter> <value>Fixed-step</value> <fixvalue>Variable-step</value> </NegativeModelParameterConstraint>
データ ファイルのタグ付けによる、修正アクションおよび前提条件チェックを伴う望まないコンフィギュレーション パラメーターの指定
次のタグ付けは、コンフィギュレーション パラメーター SolverType
のチェックを指定しています。SolverType
のサブチェックは、ID_B
のサブチェックがパスした場合にのみ実行されます。SolverType
のサブチェックは、ID_B
のサブチェックがパスしなければ実行されません。モデル アドバイザーから、前提条件の制約が満たされていないことがレポートされます。
SolverType
のサブチェックの実行時に SolverType
が Fixed-Step
に設定されていると、サブチェックはパスしません。チェックの修正アクションによって、コンフィギュレーション パラメーターが Variable-Step
に変更されます。
<NegativeModelParameterConstraint id="ID_A"> <parameter>SolverType</parameter> <value>Fixed-step</value> <fixvalue>Variable-step</value> <dependson>ID_B</value> </NegativeModelParameterConstraint>
参考
Advisor.authoring.CustomCheck.actionCallback
| Advisor.authoring.CustomCheck.checkCallback
| Advisor.authoring.DataFile.validate
| Advisor.authoring.generateConfigurationParameterDataFile