Main Content

モデル データ管理による解析の単純化

データ型の単純化

モデルを単純化する方法の 1 つとして、指定する信号データ型には、想定されるデータに対して最低限の容量しか必要としないデータ型を使用する方法があります。たとえば、Boolean データは 1 ビットしか必要としないため、int データ型は使用しません。

他の例として、常に –10 ~ 10 の整数値となる 2 つの入力をもつ Sum ブロックがあるとします。[出力データ型] パラメーターは、int32double でなく、int8 に設定します。

信号のデータ型を表示するには、[デバッグ] タブで [情報のオーバーレイ][端子のデータ型] をクリックします。

データの制約

複雑度を低減させるためのもう 1 つの効果的な手法は、入力を代表的な値の集合に制限する、つまり理想的には、単一の定数値に制限することです。この処理は "離散化" と呼ばれ、入力を列挙値のように処理します。離散化により、乗算および除算の非線形演算を極力単純に処理できます。

次のモデルには、Saturation ブロックに信号を送る Product ブロックがあります。入力 x および y には以下に示すような特定の設計範囲があり、Saturation ブロックは入力信号を上限と下限の飽和値 (8000 RPM と 0 RPM) に制限します。

Simulink® Design Verifier™ ソフトウェアは非線形演算をサポートしないため、Saturation ブロックの上限および下限を満たそうとすると、エラーが生成されます。このようなエラーを回避するには、入力の 1 つを一連の離散値に制限します。

テストの要件を満たすために必要な離散値を特定します。たとえば、モデルの速度の入力があり、速度が 80、150、600 および 8000 RPM のしきい値の上または下に条件付けされる実行パスを設計に含めるとします。効率的に解析するために、速度値を 50、100、200、1000、5000 または 10000 RPM に制約して、それぞれのしきい値をアクティブまたは非アクティブにできるようにします。

2 つ 3 つよりも多くの値を使用する必要がある場合、次のような式を使用して制約値を指定することを検討してください。

num2cell(minval:increment:maxval)

前のモデル例を使用して、次のモデルに示されるように、Test Condition ブロックで 2 番目の入力 (y) を 125 または 10 のいずれかに制限します。Simulink Design Verifier ソフトウェアは、すべての入力に対してテスト ケースを生成します。

モデルの中間値または出力値である信号を制約することもできます。そのような信号を制約すると、モデルの入力に依存しない下位レベルのサブシステム内での乗算または除算を回避しやすくなります。

メモ

離散化では入力数を絞る (10 未満に制限する) ことが最善です。モデルに多数の入力の離散化が必要な場合、段階的なテスト生成のためのモデル入力の分割で説明されているように、後続のシミュレーションを通じてモデル カバレッジを達成するようにしてください。

Test Condition ブロックは入力上に正確に配置する必要はありません。モデルに制約を配置する場所を決定するときは、以下のガイドラインを考慮してください。

  • このソフトウェアが入力を簡単に処理できるようにするため、入力値の制約を検討してください。

  • 非線形演算を回避するなどのために入力と出力の両方に制約を置く必要がある場合、一方の制約は [minval maxval] のような範囲にするようにしてください。元の計算が非線形であっても、このソフトウェアはまず範囲の両端で値をテストし、テスト ケースを返すことができます。

  • 対応する入出力点で制約に矛盾がないことを確認します。出力信号は、入力値の制約で達成不可能になる値に制約しないでください。

  • モデルに矛盾する制約を作成しないでください。こういった矛盾は、モデルの何らかの面や別の制約との矛盾により制約が満たされなくなると発生します。矛盾モデルを解析すると、Simulink Design Verifier がハングする場合があります。

    次のモデルは、矛盾モデルの単純な例です。Multiply ブロックの 2 番目の入力は、定数 1 ですが、Test Condition ブロックはその入力を 25 または 10 の値に制約しています。解析では、このモデルのすべてのテスト オブジェクティブを達成することができません。

  • 多数の乗算および除算演算をもつ大規模モデルを操作する場合、制約が必要な一連の入力を正確に特定するよりも、すべての浮動小数点入力に制約を加える方が簡単になることがあります。