Simulink Report Generator レポートの対話的な作成
この例では、レポート エクスプローラーを使用してレポート設定ファイルを設計し、以下を行うレポートを生成する方法を説明します。
slrgex_vdp
モデルという名前の、ファン デル ポールの方程式の Simulink® モデルを開く。Mu ブロックの [Gain] パラメーターを 5 つの異なる値に設定する。
[Gain] パラメーターが設定されるごとに、モデルをシミュレートする。
結果を収集する。指定の範囲内に収まる結果が、生成されたレポート内の表に表示される。
この例のレポートを作成して実行するために、MATLAB® または Simulink ソフトウェアの知識は必要ありません。しかし、これらの製品の知識は、実行される MATLAB コードとモデルのシミュレーションを理解するのに役立ちます。
このレポートを生成するには、次の主要タスクを実行します。
この例には、異なる種類のレポート作成と生成のタスクに関する別個の節があります。各節は、それ以前の節に基づいています。しかし、前の節を実行せずに後の節のレポート設定コンポーネントを確認する場合は、MATLAB で simulink-dynamic.rpt
設定ファイルを開くことで完成したレポート設定ファイルを表示できます。
setedit simulink-dynamic.rpt
このレポートは、slrgex_vdp
モデルに関するものです。
設定ファイルでのレポート オプションの指定
レポート設定ファイルを作成して構成するには、以下を行います。
Simulink を起動します。
Simulink ツールストリップからレポート エクスプローラーを開きます。[アプリ] タブの [シミュレーション グラフィックスとレポート] セクションで、[Report Generator] をクリックします。
[ファイル] 、 [新規] を選択して、レポート設定ファイルを作成します。
レポート設定ファイルを保存します。
[プロパティ] ペインで、以下を行います。
レポート設定ファイルの保存場所を指定します。現在の作業フォルダーに保存するには、[ディレクトリ] 選択リストから
[現在の作業ディレクトリ]
を選択します。レポート形式を指定します。[ファイル形式] 選択リストで、
[Acrobat (PDF)]
を選択します。ヒント
レポートで、システムのスナップショットにハイパーリンクを含める場合は、
[ダイレクト PDF (テンプレートを使用)]
のファイル形式を使用します。レポートの説明を入力します。[レポートの説明] テキスト ボックスで、既存のコンテンツを次のテキストに置き換えます。
ヒント
このコードを HTML ドキュメントからコピーして、レポート エクスプローラーに貼り付けます。
Simulink Dynamic Report This report opens up a model, sets a block parameter several times, simulates the model, and collects the results. Results that fall within a specified range are displayed in a table after the test is complete. The report is configured to test the slrgex_vdp model only. By selecting the Eval String component immediately below the Report component, you can modify * model * block * parameter * tested values
[ファイル] 、 [名前を付けて保存] をクリックして、レポート設定ファイルを
simulink_tutorial.rpt
として保存します。左側のアウトライン ペインに、新しいファイル名が表示されます。
レポートのコンテンツを作成するには、コンポーネントによるレポート コンテンツの追加を参照してください。
コンポーネントによるレポート コンテンツの追加
レポート コンポーネント
レポート "コンポーネント" は、レポートに含める情報を指定します。コンポーネントは、自己完結型のモジュール化された MATLAB オブジェクトで、レポート生成プロセスを制御し、テーブル、リスト、図などの要素をレポート設定ファイルに挿入します。コンポーネントを使用して、レポートの外観と出力をカスタマイズします。
詳細については、レポート コンポーネントを参照してください。
次の図は、この例で作成したレポートのサンプル ページと、この出力を生成するために使用するコンポーネントを示しています。
メモ
レポート設定ファイルに追加するレポート コンポーネントは非アクティブにしないでください。
MATLAB コードの追加
メモ
この節は、これまでのタスクに基づいています。完成したレポート設定ファイルを表示するには、simulink-dynamic.rpt
設定ファイルを開きます。
setedit simulink-dynamic.rpt
slrgex_vdp
モデルに関するものです。最初に追加するコンポーネントは、[MATLAB 式の実行] コンポーネントで、これはワークスペース内の MATLAB コマンドを評価します。このコンポーネントのコードは、この例で使用する変数に初期値を割り当てます。
左側のアウトライン ペインで
simulink_tutorial.rpt
を選択します。中央のライブラリ ペインで、[MATLAB] カテゴリの下にある [MATLAB 式の実行] を選択します。
右側のプロパティ ペインで、[現在のレポートにコンポーネントを追加します] の横にあるアイコンをクリックして、コンポーネントをレポートに挿入します。
メモ
コンポーネントをレポートに追加するまで、右側のプロパティ ペインでコンポーネント情報を編集することはできません。
左側のアウトライン ペインで、[MATLAB 式の実行] コンポーネントが
simulink_tutorial
レポート設定ファイルの下に表示されます。Simulink Report Generator™ ソフトウェアでは、コンポーネント名が [実行] に省略されます。[実行] コンポーネント アイコンの左上隅にあるアイコンは、このコンポーネントが子コンポーネントをもつことができないことを示しています。既定では、[実行] コンポーネントの選択中に追加するコンポーネントは、このコンポーネントの兄弟になります。
[MATLAB 式の実行] コンポーネントのオプションは、右側のプロパティ ペインに表示されます。
このレポートに MATLAB コードまたは出力を含めないようにするため、[レポートに MATLAB 式を挿入] と [レポートにコマンド ウィンドウの出力を表示] チェック ボックスをオフにします。
[ベース ワークスペースで実行する式] テキスト ボックスに MATLAB コードを追加して、次の値を指定します。
モデル名
ブロック名
ブロック パラメーター
パラメーター値
slrgex_vdp
モデルの処理に必要なその他の初期値
既存のテキストを次の MATLAB コードで置き換えます。
%The name of the model %which will be changed expModel='slrgex_vdp'; %The name of the block in the model %which will be changed expBlock='slrgex_vdp/Mu'; %The name of the block parameter %which will be changed expParam='Gain'; %The values which will be set %during experimentation. expValue=[-1 0 .5 1 2]; %expValue can be either a vector %or a cell array testMin=2.1; testMax=3; %---- do not change code below line --- try open_system(expModel); end expOkValues=cell(0,2);
メモ
右側のプロパティ ペインでフィールドを変更すると、フィールドの背景の色 (既定値はクリーム色) が変更され、そのフィールドに適用されていない変更があることが示されます。別のコンポーネントに対して操作を実行するとすぐに、Simulink Report Generator ソフトウェアによって変更が適用され、背景色が再び白になります。
[エラーが発生した場合は以下の式を実行] チェック ボックスをオンにします。
チェック ボックスの下のフィールドで、既存のテキストを次のテキストに置き換えます。
レポート エクスプローラー ウィンドウは以下のようになります。disp(['Error during eval: ', evalException.message])
ヒント
MATLAB 式で指定したコマンドを実行するには、[今すぐ実行] ボタンをクリックします。このボタンは、レポート エクスプローラーの右上隅にあります。これは、コマンドが正しいことを確認し、レポート生成で問題が発生しないようにするための簡単な方法です。
[ファイル] 、 [保存] をクリックして、レポート設定ファイルを保存します。
エラー条件の処理の詳細については、MATLAB コードのエラー処理を参照してください。
タイトル ページの追加
メモ
この節は、これまでのタスクに基づいています。完成したレポート設定ファイルを表示するには、simulink-dynamic.rpt
設定ファイルを開きます。
setedit simulink-dynamic.rpt
slrgex_vdp
モデルに関するものです。[タイトル ページ] コンポーネントを使用して、レポートのカスタム タイトル ページを作成します。
左側のアウトライン ペインで [実行] コンポーネントを選択します。
中央のライブラリ ペインで、[形式] カテゴリの下の [タイトル ページ] をクリックします。
[現在のレポートにコンポーネントを追加します] の横のアイコンをクリックします。
アウトライン ペインに [タイトル ページ] コンポーネントが表示されます。
メモ
[タイトル ページ] コンポーネントを使用するには、レポートに [章] コンポーネントが必要です。[章] コンポーネントをまだ追加していないため、プロパティ ペインに、[タイトル ページ] コンポーネントを正しく表示するには章が必要であることを示すメッセージが表示されます。この例では後から、このレポートに [章] コンポーネントを追加するため、そのメッセージは無視できます。
右側のプロパティ ペインで、以下を行います。
[タイトル] テキスト ボックスで、次のように入力します。
Dynamic Simulink Report
[サブタイトル] テキスト ボックスに次のように入力します。
Using Simulink Report Generator to Document Changes
[オプション] セクションで、選択リストから
[作成者 (設定)]
を選択します。テキスト ボックスに名前を入力します。
[レポートの作成日を含める] チェック ボックスを選択します。
選択リストから既定の日付と時刻の形式を選択します。右側のプロパティ ペインは次のようになります。
レポート設定ファイルを保存します。
Simulink モデルを開く
メモ
この節は、これまでのタスクに基づいています。完成したレポート設定ファイルを表示するには、simulink-dynamic.rpt
設定ファイルを開きます。
setedit simulink-dynamic.rpt
slrgex_vdp
モデルに関するものです。MATLAB コードの追加で作成した [MATLAB 式の実行] コンポーネントにある次のステートメントは、slrgex_vdp
モデルを開くことを試行します。
try open_system(expModel); end
ヒント
左側のアウトライン ペインで [実行] コンポーネントを選択して、このコードを再度確認します。
slrgex_vdp
モデルが正常に開かれたかどうかを確認するには、[論理 If] コンポーネントを使用して open_system
コマンドの結果をテストします。
左側のアウトライン ペインで、[タイトル ページ] コンポーネントを選択します。
中央のライブラリ ペインで、[論理制御とフロー制御] カテゴリの下の [論理 If] を選択します。このコンポーネントは、指定された条件が true か false かを確認します。この場合はモデルが正常に開かれたどうかです。
右側のプロパティ ペインで、[現在のレポートにコンポーネントを追加します] の横にあるアイコンをクリックします。[論理 If] コンポーネントは、アウトライン ペインでは [if] として表示されます。
これらのコンポーネントは、レポートの子コンポーネントであり、互いに兄弟です。コンポーネントは、親、子、および兄弟の関係をもつことができます。
このコンポーネントは子コンポーネントをもつことができます。論理 Then および論理 Else コンポーネントの追加では、[if] コンポーネントに 2 つの子コンポーネントを追加する方法について説明しています。
右側のプロパティ ペインの [テスト式] テキスト ボックスで、既定のテキスト
true
を次のテキストに置き換えます。関数strcmp(bdroot(gcs),expModel)
strcmp
は、開いている Simulink モデルの名前とexpModel
の値 ('slrgex_vdp'
に設定されています) を比較します。このテストにより、slrgex_vdp
モデルが正常に開かれたかどうかを確認します。strcmp
は、2 つの文字列が一致する場合は1
(true
)、そうでない場合は0
(false
) を返します。レポート設定ファイルを保存します。
アウトライン ペインの [if] コンポーネントの名前が、追加した式を含むように変更されます。
論理 Then および論理 Else コンポーネントの追加
メモ
この節は、これまでのタスクに基づいています。
完成したレポート設定ファイルを表示するには、simulink-dynamic.rpt
設定ファイルを開きます。
setedit simulink-dynamic.rpt
slrgex_vdp
モデルに関するものです。if strcmp(bdroot(gcs), expModel)
コンポーネントには 2 つの考えられる結果があります。これらのケースを処理するために、レポート設定ファイルに 2 つの子コンポーネントを追加します。
左側のアウトライン ペインで [if] コンポーネントを選択します。
中央のライブラリ ペインで、[論理制御とフロー制御] カテゴリの下の [論理 Then] をダブルクリックします。
左側のアウトライン ペインで、[if] コンポーネントを再度選択します。
中央のライブラリ ペインで、[論理制御とフロー制御] カテゴリの下の [論理 Else] をダブルクリックします。
両方の要素は、アウトライン ペインの表示のとおり、[if] コンポーネントに子コンポーネントとして追加されます。
[then] コンポーネントの下にある [else] コンポーネントを移動するには、[else] コンポーネントを選択し、ツール バーの下矢印を 1 回クリックします。左側のアウトライン ペインは次のようになります。
レポート設定ファイルを保存します。
モデルを開けない場合はエラー
メモ
この節は、これまでのタスクに基づいています。完成したレポート設定ファイルを表示するには、simulink-dynamic.rpt
設定ファイルを開きます。
setedit simulink-dynamic.rpt
slrgex_vdp
モデルに関するものです。if strcmp(bdroot(gcs), expModel)
コンポーネントが失敗した場合 (slrgex_vdp
モデルを開くことができない場合)、[else] コンポーネントが実行されます。章/節
コンポーネントを使用して、レポートにエラー メッセージを表示します。
左側のアウトライン ペインで [else] コンポーネントを選択します。
中央のライブラリ ペインで、[形式] カテゴリの下にある [章/節] をダブルクリックして、[else] コンポーネントの子として追加します。このコンポーネントは、
slrgex_vdp
モデルを開くときにエラーが発生した場合にエラー メッセージを表示します。メモ
コンポーネントをレポートに追加すると、選択したコンポーネントが子コンポーネントをもつことができない場合を除いて、既定で子コンポーネントとして追加されます。
右側のプロパティ ペインで、
[タイトル]
選択リストから [カスタム] を選択し、テキスト ボックスに次のテキストを入力します。Load Model Failed.
レポート ファイルを保存します。
アウトライン ペインが次のように表示されます。
左側のアウトライン ペインで、[章] コンポーネントを選択します。
中央のライブラリ ペインで、[形式] の [段落] をダブルクリックします。
右側のプロパティ ペインで、[段落のテキスト] テキスト ボックスに次のテキストを入力して、次のエラー メッセージを表示します。
式Error: Model %<expModel> could not be opened.
%<expModel>
は、次の例のように、ワークスペース変数expModel
の値がテキストに挿入されることを示します。Error: Model slrgex_vdp could not be opened.
左側のアウトライン ペインで、[章] を選択します。
レポート設定ファイルを保存します。
アウトライン ペインが次のように表示されます。
レポートの本文の作成
メモ
この節は、これまでのタスクに基づいています。完成したレポート設定ファイルを表示するには、simulink-dynamic.rpt
設定ファイルを開きます。
setedit simulink-dynamic.rpt
slrgex_vdp
モデルに関するものです。レポートの本文を作成するには、レポート コンポーネントを動的に実行するようにコンポーネントとコードを設定する必要があります。この例では、以下のタスクを実行します。
各アクションには、[then] コンポーネントの下に個別のコンポーネントが必要です。このレポートの [then] コンポーネントの詳細については、論理 Then および論理 Else コンポーネントの追加を参照してください。
モデル ループ コンポーネントによるプロセス
メモ
この節は、これまでのタスクに基づいています。完成したレポート設定ファイルを表示するには、simulink-dynamic.rpt
設定ファイルを開きます。
setedit simulink-dynamic.rpt
slrgex_vdp
モデルに関するものです。このレポートは、slrgex_vdp
モデルの Mu ブロックの [ゲイン] パラメーターを数回変更します。このタスクには、[モデル ループ] コンポーネントが必要です。
左側のアウトライン ペインで [then] コンポーネントを選択します。
中央のライブラリ ペインで、[Simulink] カテゴリまで下にスクロールし、[モデル ループ] をダブルクリックします。これが
then
コンポーネントの子として追加されます。右側のプロパティ ペインは次のようになります。
右側のプロパティ ペインで、以下を行います。
slrgex_vdp
モデルを処理するには、[アクティブ] チェック ボックスをオンにします。[モデルを移動] 選択リストで、
[選択したシステムのみ]
を選択して、slrgex_vdp
モデルのみを移動します。[システムの起動] 選択リストから
[モデルのルート]
を選択します。左側のプロパティ ペインの下部にある [ループ内のオブジェクトごとに節を作成] チェック ボックスをオンにして、モデルごとに章または節を作成します。このチェック ボックスをオンにすると、左側のアウトライン ペインのコンポーネント名が [モデル ループ 章] に変わります。
タイトル名にオブジェクト タイプ (この例ではモデル) を含めるには、[節タイトルにオブジェクト タイプを表示] チェック ボックスをオンにします。
[ループ内のオブジェクトごとにリンク アンカーを作成] チェック ボックスをオフにします。
レポート設定ファイルを保存します。
各モデルへの段落の追加
メモ
この節は、これまでのタスクに基づいています。完成したレポート設定ファイルを表示するには、simulink-dynamic.rpt
設定ファイルを開きます。
setedit simulink-dynamic.rpt
slrgex_vdp
モデルに関するものです。各 [モデル ループ 章] で、[段落] コンポーネントを使用して説明を追加します。
左側のアウトライン ペインで、[モデル ループ 章] コンポーネントを選択します。
中央のライブラリ ペインで、[形式] カテゴリまで上にスクロールし、[段落] をダブルクリックします。[段落] コンポーネントは、[モデル ループ 章] コンポーネントの子として追加されます。
右側のプロパティ ペインで、[段落のテキスト] テキスト ボックスに次のテキストを入力します。
このレポートが生成されると、先頭にパーセント記号 (This report demonstrates Simulink Report Generator's ability to experiment with Simulink systems and auto-document the results. In this report, you load the model
%<expModel>
and simulate it%<length>
times. This report modifies the%<expBlock>
block's "%<expParam>
" value, setting it to the values%<expValue>
. Each iteration of the test includes a set of scope snapsnots in the report.%
) が付けられ、山かっこ (<>
) で囲まれた変数名が、MATLAB ワークスペース内のそれらの変数の値と置き換えられます。レポート設定ファイルを保存します。
モデルのスナップショットの挿入
メモ
この節は、これまでのタスクに基づいています。完成したレポート設定ファイルを表示するには、simulink-dynamic.rpt
設定ファイルを開きます。
setedit simulink-dynamic.rpt
slrgex_vdp
モデルに関するものです。各 [モデル ループ 章] コンポーネントの内部で、[システムのスナップショット] コンポーネントを使用して現在のモデルのスナップショットを含めます。
左側のアウトライン ペインで、[モデル ループ 章] コンポーネントを選択します。
中央のライブラリ ペインで [Simulink] カテゴリまで下にスクロールして、[システムのスナップショット] コンポーネントをダブルクリックします。
このコンポーネントは、現在のモデルのイメージをレポートに挿入します。右側のプロパティ ペインは次のようになります。
右側のプロパティ ペインで、以下を行います。
[スケーリング] 選択リストから
[ズーム]
を選択します。[%] の値として
70
を入力します。
左側のアウトライン ペインで、[システムのスナップショット] コンポーネントを選択します。
ツール バーの下矢印をクリックして、[段落] コンポーネントの下に移動します。
レポート設定ファイルを保存します。
モデルを処理するためのループの追加
メモ
この節は、これまでのタスクに基づいています。完成したレポート設定ファイルを表示するには、simulink-dynamic.rpt
設定ファイルを開きます。
setedit simulink-dynamic.rpt
slrgex_vdp
モデルに関するものです。[For ループ] コンポーネントを使用して、モデルを %length
回処理するループを作成します。
左側のアウトライン ペインで、[システムのスナップショット] コンポーネントを選択します。
中央のライブラリ ペインで、[論理制御とフロー制御] カテゴリの [For ループ] をダブルクリックします。[For ループ] コンポーネントは、[システムのスナップショット] コンポーネントの兄弟として追加されます。
右側のプロパティ ペインで、以下を行います。
[終了] テキスト ボックスで、既存のテキストを次のテキストに置き換えます。
length(expValue)
expValue
は、[実行] コンポーネントでコマンドexpValue=[-1 0 0.5 1 2];
によって割り当てられた [ゲイン] パラメーター値の配列です。この例では、式length(expValue)
が5
と評価されます。[変数名] テキスト ボックスで、既存のテキストを変数
for loop
の名前に置き換えます。以下のテキストを入力します。左側のアウトライン ペインの [For] コンポーネントの名前が、ループ変数と終了値を反映して変更されます。expIteration
レポート設定ファイルを保存します。
MATLAB 式からのブロック パラメーター値
メモ
この節は、これまでのタスクに基づいています。完成したレポート設定ファイルを表示するには、simulink-dynamic.rpt
設定ファイルを開きます。
setedit simulink-dynamic.rpt
slrgex_vdp
モデルに関するものです。反復ごとに、配列 expValue
から値を取得して、[ゲイン] パラメーターの値として使用します。このタスクには、[MATLAB 式の実行] コンポーネントが必要です。
左側のアウトライン ペインで [for] コンポーネントを選択します。
中央のライブラリ ペインで、[MATLAB] カテゴリの下にある [MATLAB 式の実行] をダブルクリックします。アウトライン ペインでは、コンポーネント名が [実行] に短縮されます。
右側のプロパティ ペインで、以下を行います。
[レポートに MATLAB 式を挿入] および [レポートにコマンド ウィンドウの出力を表示] チェック ボックスをオフにします。
[ベース ワークスペースで実行する式] テキスト ボックスに次のテキストを入力します。
変数%Evaluate this string in the base workspace if iscell(expValue) Iteration_Value=expValue{expIteration}; else Iteration_Value=... num2str(expValue(expIteration)); end
Iteration_Value
は、指定された配列要素を表します。[エラーが発生した場合は以下の式を実行] チェック ボックスをオフにします。
レポート設定ファイルを保存します。
反復ごとに節を作成
メモ
この節は、これまでのタスクに基づいています。完成したレポート設定ファイルを表示するには、simulink-dynamic.rpt
設定ファイルを開きます。
setedit simulink-dynamic.rpt
slrgex_vdp
モデルに関するものです。章/節
コンポーネントを使用して、データを含むループの反復ごとに個別の節を作成します。
左側のアウトライン ペインで、[for] コンポーネントの下にある [実行] コンポーネントを選択します。
中央のライブラリ ペインで、[形式] カテゴリの下にある [章/節] をダブルクリックして、兄弟として追加します。このコンポーネントは、[章] コンポーネント ([モデル ループ 章] コンポーネント) の内部にあるため、[第 1 節] として自動的に追加されます。
右側のプロパティ ペインで、以下を行います。
[タイトル] 選択リストで、
[カスタム]
を選択します。テキスト ボックスに次のタイトルを入力します。
Processing the slrgex_vdp model
これは、節タイトルが最初の子コンポーネントから取得されることを示します。その他のプロパティは変更しないでください。
レポート設定ファイルを保存します。
ブロック値の挿入
メモ
この節は、これまでのタスクに基づいています。完成したレポート設定ファイルを表示するには、simulink-dynamic.rpt
設定ファイルを開きます。
setedit simulink-dynamic.rpt
slrgex_vdp
モデルに関するものです。各シミュレーションに使用する Gain
値を挿入します。
左側のアウトライン ペインで、[第 1 節] コンポーネントを選択します。
中央のライブラリ ペインで、[MATLAB] カテゴリの下の [変数の挿入] をダブルクリックします。
右側のプロパティ ペインで、以下を行います。
[変数名] ボックスに
Iteration_Value
と入力します。[表示] 選択リストで、
[段落]
を選択します。
右側のプロパティ ペインは次のようになります。
レポート設定ファイルを保存します。
パラメーター値の設定
メモ
この節は、これまでのタスクに基づいています。完成したレポート設定ファイルを表示するには、simulink-dynamic.rpt
設定ファイルを開きます。
setedit simulink-dynamic.rpt
slrgex_vdp
モデルに関するものです。反復ごとに、Gain
パラメーターを配列 expValue
から抽出した値に設定します。
左側のアウトライン ペインで、[変数] コンポーネントを選択します。
中央のライブラリ ペインで、[MATLAB] カテゴリの下にある [MATLAB 式の実行] をダブルクリックします。このコンポーネントは、[変数] コンポーネントの兄弟として追加されます。
右側のプロパティ ペインで、[レポートに MATLAB 式を挿入] および [レポートにコマンド ウィンドウの出力を表示] チェック ボックスをオフにします。
[ベース ワークスペースで実行する式] テキスト ボックスで、既存のテキストを次のテキストに置き換えます。
set_param(expBlock,expParam,Iteration_Value); okSetValue=(1);
set_param
コマンドは、slrgex_vdp
モデルの Mu ブロックの [ゲイン] パラメーターの値をIteration_Value
の値に設定します。[エラーが発生した場合は以下の式を実行] をオンにしていることを確認します。テキスト ボックスに次のテキストを入力します。
okSetValue=logical(0);
set_param
コマンドが動作する場合、okSetValue
は1
に設定されます。エラーが発生した場合、okSetValue
は0
に設定されます。その後、次のコンポーネントがエラーを報告し、処理を停止します。レポート設定ファイルを保存します。
左側のアウトライン ペインは次のようになります。
論理 If コンポーネントを使用した値のチェック
メモ
この節は、これまでのタスクに基づいています。完成したレポート設定ファイルを表示するには、simulink-dynamic.rpt
設定ファイルを開きます。
setedit simulink-dynamic.rpt
slrgex_vdp
モデルに関するものです。[論理 If] コンポーネントを使用して okSetValue
の値をチェックします。値が 0
の場合、[ゲイン] パラメーターを設定できないため、シミュレーションを続行できません。
左側のアウトライン ペインで、
set_param
コマンドの [実行] コンポーネントを選択します。中央のライブラリ ペインで、[論理制御とフロー制御] カテゴリの下の [論理 If] をダブルクリックします。コンポーネントが、[実行] の兄弟として追加されます。
右側のプロパティ ペインの [テスト式] テキスト ボックスで、
true
をokSetValue
に置き換えます。
okSetValue
は 1
(true
) または 0
(false
) であるため、これらの条件を処理する 2 つのコンポーネント ([論理 Then] および [論理 Else]) を挿入します。
左側のアウトライン ペインで、[if (okSetValue)] コンポーネントを選択します。
正しい順序で [論理 Then] と [論理 Else] を挿入するには、以下を行います。
中央のライブラリ ペインで [論理 Else] コンポーネントをダブルクリックします。
[if (okSetValue)] コンポーネントを再度選択します。
[論理 Then] コンポーネントをダブルクリックします。左側のアウトライン ペインは次のようになります。
右側のアウトライン ペインで、[else] コンポーネントを選択します。
中央のライブラリ ペインで [段落] をダブルクリックします。
okSetValue
が0
の場合、[ゲイン] パラメーター値が設定されておらず、レポートにエラーが表示されます。右側のプロパティ ペインで、以下を行います。
[タイトル オプション] 選択リストから
[カスタム タイトル]
を選択します。選択リストの横にあるテキスト ボックスに
Error
と入力します。[段落のテキスト] テキスト ボックスに次のテキストを入力します。
Could not set %<expBlock> "%<expParam>" to value %<Iteration_Value>.
レポートを保存します。
モデルのシミュレーション コンポーネントを使用したモデルのシミュレーション
メモ
この節は、これまでのタスクに基づいています。完成したレポート設定ファイルを表示するには、simulink-dynamic.rpt
設定ファイルを開きます。
setedit simulink-dynamic.rpt
slrgex_vdp
モデルに関するものです。モデルを開いて、[ゲイン] パラメーターを設定したら、[モデルのシミュレーション] コンポーネントを使用して slrgex_vdp
モデルをシミュレートします。
左側のアウトライン ペインで、[if (okSetValue)] コンポーネントの下にある [then] コンポーネントを選択します。
ライブラリ ペインの [Simulink] カテゴリで、[モデルのシミュレーション] をダブルクリックします。左側のアウトライン ペインで、このコンポーネントの名前が [モデルをシミュレーション] に変更されます。
右側のプロパティ ペインで、以下を行います。
[モデルのワークスペース I/O 変数名を使用] チェック ボックスをオフにします。
[時間] テキスト ボックスに、
dynamicT
と入力します。[状態] テキスト ボックスに、
dynamicX
と入力します。[出力] テキスト ボックスに、
dynamicY
と入力します。
右側のプロパティ ペインは次のようになります。
左側のアウトライン ペインで、[モデルをシミュレーション] コンポーネントを選択します。
中央のライブラリ ペインで、以下を行います。
[Simulink ブロック] カテゴリまで下にスクロールします。
[スコープのスナップショット] をダブルクリックして、[Simulink モデル] コンポーネントの兄弟として追加します。
このコンポーネントは、反復ごとにスコープを取得します。
右側のプロパティ ペインで、以下を行います。
[用紙方向] 選択リストで、
[縦]
を選択します。[イメージ サイズ] に「
[5 4]
」と入力します。[スケーリング] 選択リストで、
[ズーム]
を選択します。[%] の値に
75
を入力します。
レポート設定ファイルを保存します。
信号データが指定された範囲内にあるかどうかをテストするには、別の [論理 If] コンポーネントを追加します。
左側のアウトライン ペインで、[スコープのスナップショット] コンポーネントを選択します。
中央のライブラリ ペインで、[論理制御とフロー制御] カテゴリまで上にスクロールします。
[論理 If] コンポーネントをダブルクリックします。
信号データをテストするには、右側のプロパティ ペインで [テスト式] テキスト ボックスの
true
を次のように置き換えます。max(dynamicX(:,2))>testMin & max(dynamicX(:,2))<testMax
レポートを保存します。
アウトライン ペインは次のようになります。
この条件が true の場合、信号データは目的の範囲内に収まっています。レポート内の信号データに関する情報を出力するために [段落] コンポーネントを追加します。
左側のアウトライン ペインで、先ほど追加した [if] コンポーネントを選択します。
中央のライブラリ ペインで、[形式] カテゴリの下にある [段落] をダブルクリックして、[if] コンポーネントの子にします。
右側のプロパティ ペインで、以下を行います。
[タイトル オプション] 選択リストから
[カスタム タイトル]
を選択します。テキスト ボックスに
Success
と入力します。[段落のテキスト] テキスト ボックスに次のテキストを入力します。
The conditioned signal has a maximum value of %<max(dynamicX(:,2))>, which lies in the desired range of greater than %<testMin> and less than %<testMax>.
反復の終了時にテーブルに挿入する成功値を保存するには、[MATLAB 式の実行] コンポーネントを使用します。
左側のアウトライン ペインで [段落] コンポーネントを選択します。
中央のライブラリ ペインで、[MATLAB] カテゴリの下にある [MATLAB 式の実行] をダブルクリックします。
意図しない結果の発生: 新しいコンポーネントが、[段落] コンポーネントの子になっています。
新しいコンポーネントを [段落] コンポーネントの "兄弟" にするには、左側のアウトライン ペインで [実行] コンポーネントを選択し、ツール バーの左矢印をクリックします。[実行] コンポーネントが、[段落] コンポーネントの兄弟になります。
右側のプロパティ ペインで、[実行] コンポーネントに対して、以下を行います。
[レポートに MATLAB 式を挿入] および [レポートにコマンド ウィンドウの出力を表示] チェック ボックスをオフにします。
[ベース ワークスペースで実行する式] テキスト ボックスで、目的の信号値を配列
expOkValues
に保存するために、次のように入力します。expOkValues=[expOkValues;... {Iteration_Value,max(dynamicX(:,2))}];
[エラーが発生した場合は以下の式を実行] をオンにしていることを確認します。テキスト ボックスに次のテキストを挿入します。
disp(['Error during eval: ', evalException.message])
レポート設定ファイルを保存します。
テスト後の解析の節の作成
メモ
この節は、これまでのタスクに基づいています。完成したレポート設定ファイルを表示するには、simulink-dynamic.rpt
設定ファイルを開きます。
setedit simulink-dynamic.rpt
slrgex_vdp
モデルに関するものです。必要な値をすべて収集したので、この章の最後に表を作成してレポートに挿入し、テスト後の解析の節を作成します。
左側のアウトライン ペインで、[モデル ループ 章] コンポーネントを選択します。
中央のライブラリ ペインで、[形式] カテゴリの下の [章/節] をダブルクリックします。
章の先頭に新しい節が表示されます。
下矢印を 3 回クリックすると、[第 1 節] が [モデル ループ 章] コンポーネントの最後に移動します。
右側のプロパティ ペインで、以下を行います。
[タイトル] 選択リストで
[カスタム]
を選択します。テキスト ボックスに
Post-Test Analysis
と入力します。
左側のアウトライン ペインで、新しい [第 1 節] コンポーネントを選択します。
中央のライブラリ ペインで、[形式] カテゴリの下の [段落] をダブルクリックします。プロパティは変更しないでください。
目的の範囲内に信号値があるかどうかを確認するには、[論理 If] コンポーネントを使用して配列
expOkValues
をチェックします。expOkValues
が空の場合、目的の範囲に信号値はありません。このチェックの結果をレポートします。左側のアウトライン ペインで、
段落
コンポーネントを選択し、[論理 If] 子コンポーネントを追加します。右側のプロパティ ペインで、[テスト式] テキスト ボックスに評価する式を入力します。
この式は、~isempty(expOkValues)
expOkValues
が空の場合は0
(false
) に評価され、それ以外の場合は1
(true
) に評価されます。左側のアウトライン ペインで、[if (~isempty(expOkValue))] コンポーネントを選択し、[論理 Else] コンポーネントを子として追加します。
[if (~isempty(expOkValue))] コンポーネントを再度選択し、[論理 Then] コンポーネントを子として追加します。
2 つのコンポーネントは左側のアウトライン ペインで兄弟になります。
レポート設定ファイルを保存します。
ここで、
expOkValues
が空の場合を処理するレポート コンポーネントを挿入します。つまり、指定された範囲内に信号値が含まれない場合です。左側のアウトライン ペインで [else] コンポーネントを選択します。
中央のライブラリ ペインで、[テキスト] コンポーネントをダブルクリックして、[else] コンポーネントの子として追加します。
右側のプロパティ ペインで、[レポートに含めるテキスト] テキスト ボックスに次のように入力します。
None of the selected iteration values had a maximum signal value between %<testMin> and %<testMax>.
次に、
expOkValues
が空ではなく、許容される信号値の表を挿入する場合を処理します。左側のアウトライン ペインで [then] コンポーネントを選択します。
[テキスト] コンポーネントを [then] コンポーネントの子として追加します。
右側のプロパティ ペインで、[レポートに含めるテキスト] テキスト ボックスに次のテキストを入力します。
%<size(expOkValues, 1)> values for %<expBlock> were found that resulted in a maximum signal value greater than %<testMin> but less than %<testMax>. The following table shows those values and their resulting signal maximum.
左側のアウトライン ペインで、[if (~isempty(expOkValues))] コンポーネントの [then] コンポーネントの下にある [テキスト] コンポーネントを選択します。
表の書式設定時に使用する配列を作成するには、[MATLAB 式の実行] コンポーネントを使用します。
中央のライブラリ ペインで [MATLAB 式の実行] をダブルクリックします。
右側のプロパティ ペインで、以下を行います。
[レポートに MATLAB 式を挿入] および [レポートにコマンド ウィンドウの出力を表示] チェック ボックスをオフにします。
レポートの次のコンポーネントは、文字列
Mu Value
とSignal Maximum
を表のヘッダーの値として使用します。[ベース ワークスペースで実行する式] テキスト ボックスに次のテキストを入力して、cell 配列expOkValues
の前に文字列を追加します。expOkValues=[{'Mu Value','Signal Maximum'} expOkValues];
[エラーが発生した場合は以下の式を実行] チェック ボックスをオンにしていることを確認します。テキスト ボックスに次のテキストを入力します。
disp(['Error during eval: ', evalExpression.message])
左側のアウトライン ペインで [実行] コンポーネントを選択します。
中央のライブラリ ペインで、[形式] カテゴリの下の [配列ベースのテーブル] コンポーネントをダブルクリックすると、[テキスト] コンポーネントと [実行] コンポーネントの兄弟になります。
右側のプロパティ ペインで、以下を行います。
[ワークスペース変数名] テキスト ボックスに
expOkValues
と入力します。Simulink Report Generator ソフトウェアは、expOkValues
の内容を使用して表を構成します。[テーブルのタイトル] テキスト ボックスに
Valid Iteration Values
と入力します。
レポート設定ファイルを保存します。
左側のアウトライン ペインは次のようになります。
レポートの生成
レポートを生成するには、ツール バーの [レポート] アイコンをクリックします。次が行われます。
[メッセージ リスト] ウィンドウが表示され、レポートの処理時に情報とエラー メッセージが表示されます。レポートの生成中に [メッセージ リスト] ウィンドウに表示する詳細レベルを指定します。オプションの範囲は、
0
(最も詳細ではない) から6
(最も詳細) までです。[メッセージ リスト] ウィンドウのタイトル バーの下にある選択リストをクリックして、オプションを選択します。Message level 3 (Important messages)
は、この例で後から使用します。slrgex_vdp
モデルが表示されます。シミュレーションのたびに表示できます。スコープ ウィンドウが表示されます。スコープ グラフは、パラメーター値が変わるたびに変更されます。
レポートの各コンポーネントは、レポート エクスプローラー ウィンドウの左側のアウトライン ペインで、実行時に強調表示されます。
レポート生成が完了すると、レポートが開きます。