Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

コントローラー モデルでの設計エラーの検出

検証プロセスの早い段階でモデル内の隠れた設計エラーを検出するには、設計エラー検出解析を使用します。このチュートリアルでは、設計エラー検出解析を実行し、解析結果を確認し、特定された設計エラーを修正する方法を示します。

次の 3 つのセンサー入力のあるコントローラーについて考えます。センサー A、センサー B およびセンサー C があります。このコントローラー アルゴリズムは以下の方程式に従って動作します。

control_logic.png

このアルゴリズムは以下のようにモデル化されています。

design_error_detection_model.png

以下の手順に従って設計エラー検出解析を実行します。

設計エラー検出のためのモデルの準備

1.sldvexControllerIntegerOverflow: モデルを開きます。

sldvexControllerIntegerOverflow

2.[Design Verifier] タブの [モード] セクションで、[設計エラー検出] を選択します。

3.[エラー検出の設定] をクリックします。[コンフィギュレーション パラメーター] ダイアログ ボックスの [Design Verifier]、[設計エラー検出] ペインで、実行するチェックを選択します。

configuration_dialog_ded.png

設計エラー検出解析の実行

設計エラー検出解析を実行するには、[Design Verifier] タブで、[設計エラーの検出] をクリックします。設計エラーについてモデルが解析され、[結果] ウィンドウに結果が表示されます。結果には、6 個のオブジェクティブ中 3 個が反証されたことが示されています。

design_errors_results_summary.png

解析結果のレビュー

モデルの結果を強調表示して解析レポートを確認することで、解析結果を確認できます。

モデルの解析結果の強調表示

[Design Verifier] タブの [結果の確認] セクションで、[モデル内で強調表示] をクリックします。

1.Sum ブロックを選択します。[結果] ウィンドウに Sum ブロックの整数オーバーフロー オブジェクティブが表示されます。

overflow_errors_inspector.png

2.整数オーバーフロー エラーをデバッグするには、[反例を表示] をクリックします。ハーネス モデルおよび Signal Editor ブロックが開きます。

overflow_test_case.png

SensorA の入力値が 128SensorB172 の場合、Sum ブロックの出力はオーバーフローします。Sum ブロックのアキュムレータ データ型が uint8 の正しくない整数値に設定されているため、下流の Divide ブロックでオーバーフロー エラーおよびゼロ除算エラーが発生します。

解析レポートのレビュー

HTML レポートを表示するには、[結果の確認][HTML レポート] をクリックします。[設計エラー検出オブジェクティブ] セクションには、各モデル項目のオブジェクティブおよびその説明がリストされます。

design_error_report.png

設計エラーの修正

この例では、設計エラー検出解析により、モデル内に整数オーバーフロー エラーおよびゼロ除算エラーが検出されました。エラーの原因は整数データ型の不一致でした。

エラーを修正するために、アキュムレータのデータ型および出力データ型を uint16 に変更し、可能な信号値の範囲を処理します。Sum ブロックを選択し、[アキュムレータのデータ型] および [出力データ型] を uint16 に設定します。設計エラー検出解析を再実行すると、[結果の概要] ウィンドウで、6/6 のオブジェクティブが有効であることがレポートされます。Sum ブロックについてテスト ケースをシミュレートすると、テスト ケースでエラーが解決されていることがわかります。

参考