基本テスト ケース用の入力データの読み込み
開発を続けながら主な動作が予測や要件と一致することを確認するためのモデルのテストを作成できます。基本テスト ケースを作成するには、モデルに読み込む入力信号を作成します。入力信号では、特定の時間におけるシステムの入力値を定義します。シミュレーション結果をログに記録することで、対象の信号の値が特定の各時点で想定される値になっていることを確認できます。
入力データの作成
基本テスト ケースでは、通常、システム動作を検証するためにできる限り少ない時点について解析します。シミュレーションが特定の各時点で確実にタイム ステップを取るようにするには、入力データに不連続点を含めて、ゼロクロッシング検出をサポートするブロックを使用してデータを読み込みます。From File ブロック、From Workspace ブロック、Signal Editor ブロック、Playback ブロックはすべて、可変ステップ ソルバーを使用してシミュレーションを実行する際の入力データのゼロクロッシング検出をサポートしています。
入力信号を作成するには、特定の各時点の時間と入力値を定義する時間値のベクトルと信号値のベクトルを作成します。データ内の各不連続点に重複する時間値と信号値を含めます。読み込みブロックは、入力データに重複する時間値があるかをチェックして、入力信号のゼロクロッシングを検出します。
この例では、次の時間と信号データのベクトルを使用して、基本テスト ケースの特定の時点を定義します。入力データには重複する時間が含まれており、時間 1
、5
、および 8
で不連続点が取得されます。
time = [0 1 1 5 5 8 8 10]'; vals = [0 0 2 2 2 3 3 3]';
これらの時間値と信号値により、次のような入力信号が定義されます。
入力値は時間
0
~1
の間で0
である。時間
1
で、入力値は0
から2
に急上昇する。時間
1
~5
の間では、値は2
のままである。時間
5
~8
の間では、信号値は最終値3
まで線形に増加する。値は時間
10
まで3
のままである。
信号を可視化するには、データをプロットします。
plot(time,vals)
テスト ケースの入力データを読み込むには、選択した読み込みブロックでサポートされている入力データ形式を使用する必要があります。
この例では、From Workspace ブロックを使用して読み込む timetable
を作成します。timetable
を作成するには、時間データが duration
ベクトルでなければなりません。関数 seconds
を使用して、秒を単位とする duration
ベクトルを作成します。
time = seconds(time); simin = timetable(time,vals);
モデル例を開く
モデル FromWorkspaceTestCase
を開きます。このモデルには、変数 simin
のデータを読み込む From Workspace ブロックが含まれています。入力データは Gain ブロックを使用して調整され、Gain ブロックからの調整された信号出力が Outport ブロックに接続されます。
mdl = "FromWorkspaceTestCase";
open_system(mdl)
モデルとブロックのゼロクロッシング検出の構成
シミュレーションが特定の各時点で確実にメジャー タイム ステップを取るようにするには、入力データのゼロクロッシングを検出するようにモデルとブロックを構成する必要があります。モデル FromWorkspaceTestCase
は既定のモデルおよびブロック パラメーター値を使用し、既に適切に構成されています。
モデルのゼロクロッシング検出を確認または構成するには、次を行います。
[モデル化] タブの [設定] で、[モデル設定] をクリックします。
[ソルバー] タブで、[ソルバーの詳細] を展開します。
[ゼロクロッシング コントロール] を
[Use local settings]
または[Enable all]
に設定します。[Use local settings]
を選択した場合は、ゼロクロッシング検出をブロックごとに構成します。[Enable all]
を選択した場合、ゼロクロッシング検出は、各ブロックのブロック パラメーター値に関係なく、ゼロクロッシング検出をサポートするすべてのブロックで有効になります。[OK] をクリックします。
あるいは、関数 get_param
または関数 set_param
を使用してパラメーター値を確認または設定します。
get_param(mdl,"ZeroCrossControl")
ans = 'UseLocalSettings'
From Workspace ブロックのゼロクロッシング検出を確認または構成するには、次を行います。
モデル内のブロックを選択します。
Simulink エディターの右側にある [プロパティ インスペクター] タブをクリックするか、"Ctrl+Shift+I" を押して、プロパティ インスペクターを開きます。
[ゼロクロッシング検出を有効にする] を選択します。
あるいは、関数 get_param
または関数 set_param
を使用してパラメーター値を確認または設定します。
get_param(strcat(mdl,"/From Workspace"),"ZeroCross")
ans = 'on'
テスト ケースの実行と結果の解析
モデルをシミュレートします。
out = sim(mdl);
信号データをプロットするか、ログに記録された出力データを解析することで、特定の各時点でのモデル動作を検証できます。
この例のモデルでは、Dashboard Scope を使用して入力信号と調整された出力信号を表示しています。プロットの信号値を検査すると、このモデルでは特定の各時点で各入力値が正確に 2
倍になっていることがわかります。
参考
From Workspace | Signal Editor | Playback | From File