不適切な値を原因とするデッド ロジックの検出
デッド ロジックの検出は、以下の特定に役立ちます。
モデルの設計エラー。
不要なモデル要素。
実行すべきなのに実行されないモデル要素。
この例では、燃料比コントローラーのモデルを解析して、モデルにデッド ロジックが含まれているかどうかを判定します。デッド ロジックの検出により、Stateflow® チャート内の遷移条件が非アクティブで残される原因となる、不適切な変数値を見つけます。
燃料供給装置モデルの解析
モデルを開きます。
sldvdemo_fuelsys_logic_simple
現在のフォルダーが書き込み可能であることを確認します。
デッド ロジックの検出を設定します。
[Design Verifier] タブの [モード] セクションで、[設計エラー検出] を選択します。
[エラー検出の設定] を選択します。
[コンフィギュレーション パラメーター] ダイアログ ボックスの [Design Verifier]、[設計エラー検出] ペインで、次を行います。
デッド ロジック (一部)オプションを有効にします。
網羅的解析を実行オプションが選択されている場合、オフにします。
[解析するカバレッジ オブジェクティブ] を
[条件判定]
に設定します。ドロップダウン メニューから選択できるオプションは、[判定]
、[条件判定]
、および[MCDC]
です。
[設計エラー検出] をクリックします。
結果のダイアログ ボックスに、109 個中 2 個のオブジェクティブがデッド ロジックであることが示されます。
結果の確認とモデルでの追跡
解析レポートを作成します。結果インスペクター ウィンドウで、[HTML] をクリックします。
[デッド ロジック] セクションにスクロールします。テーブルにはデッド ロジックの 2 つのインスタンスがリストされています。
[説明] 列で、デッド ロジックのインスタンスの 1 つが
press < zero_thresh
というfalse
条件になっています。デッド ロジックの結果は、シミュレーションにおいてこのfalse
条件が実行されなかったことを示しています。このロジックは、Sens_Failure_Counter.INC
遷移の一部です。[モデル項目] リンクをクリックします。Simulink によってチャート内の遷移が強調表示されます。
デッド ロジックの原因の調査
遷移を制御する論理ステートメントは次のとおりです。
speed==0 & press < zero_thresh
レポートに戻ります。[制約] セクションへとスクロールします。
入力
control logic/Input Data "press"
の値は 0 ~ 2 に制約されています。リンクをクリックしてモデル エクスプローラーで入力を開きます。モデル エクスプローラーで [モデル ワークスペース] を選択します。コンテンツ テーブルで、
zero_thresh
を選択します。zero_thresh
の値は 250 です。press
の制約された値は常にzero_thresh
より小さくなるため、false
条件が実行されることはありません。
入力制約の更新とモデルの再解析
zero_thresh
の値を 0.250 に変更します。モデルを再解析します。[Design Verifier] タブで [設計エラー検出] をクリックします。
新しい結果では、オブジェクティブはデッド ロジックではなくなっています。