Main Content

チャートでの実行時エラーのデバッグ

モデルと Stateflow チャートの作成

このトピックでは、デバッグする Stateflow® チャートを含む Simulink® モデルを作成します。以下の手順に従います。

  1. 以下の Simulink モデルを作成します。

    Simulink model that contains a Stateflow chart. The chart receives an input signal from a Step block and a trigger from a Sine Wave block.

  2. 以下のステートと遷移をチャートに追加します。

    Stateflow chart that contains two superstates called Power_off and Power_on. The input event Switch triggers the transitions between these superstates. Power_on contains three substates called First, Second, and Third. The state cycles between theses substates when the chart input shift equals one.

  3. チャートで、スコープ "Simulink から入力""立ち上がり" エッジ トリガーが設定されたイベント Switch を追加します。

  4. スコープ "Simulink から入力" が設定されたデータ Shift を追加します。

チャートには、階層の最上位レベルで 2 つのステート Power_offPower_on が設定されています。既定では、Power_off がアクティブです。イベント Switch は、システムを Power_off ステートと Power_on ステートの間で切り替えます。Power_on には次の 3 つのサブステートがあります。すなわち、FirstSecondThird です。既定の設定では、Power_on がアクティブになると First もアクティブになります。Shift が 1 に等しい場合は、イベント Switch が発生するたびに、システムは First から SecondSecond から ThirdThird から First に遷移し、このパターンを繰り返します。

モデルには、イベント入力とデータ入力があります。Sine Wave ブロックは、Stateflow イベント Switch に対応する反復入力イベントを生成します。Step ブロックは、Stateflow データ オブジェクト Shift に対応する反復パターン 1 と 0 を生成します。Switch イベントは、FirstSecond、および Third を少なくとも 1 サイクル実行する頻度で発生させられると理想的です。

Stateflow チャートのデバッグ

モデルと Stateflow チャートの作成 のチャートをデバッグするには、以下の手順に従います。

  1. チャートを右クリックして、[チャート Entry 時にブレークポイントを設定] を選択します。

  2. シミュレーションを開始します。

    チャート Entry に対してブレークポイントを指定しているため、実行はそのポイントで停止します。

  3. [ステップ イン] ボタン をクリックします。

    [ステップ イン] ボタンをクリックすると、次のステップが実行されて停止します。

  4. [ステップ イン] ボタンを繰り返しクリックして、チャートのアニメーションを監視します。

    ステップごとに、チャートのアニメーションを監視し、実行シーケンスを確認します。

シングルステップ実行では、チャートは望ましい動作を示しません。Power_on から Power_off への遷移が優先されるため、ステート Power_on 内で FirstSecondThird という順序の遷移は発生しません。コード カバレッジの出力表示も、この監視結果の裏付けになります。

実行時のエラーの修正

Stateflow チャートのデバッグ で、チャートのシミュレーションを実行し、エラーを見つけます。イベント Switch によってシミュレーションが駆動されるにもかかわらず、入力データ オブジェクト Shift が有効になる前にシミュレーション時間が経過してしまうというエラーが発生します。

以下の手順に従って、このエラーを解決します。

  1. チャートを編集できるようにシミュレーションを停止します。

  2. Power_on から Power_off への遷移に条件 [t > 20.0] を追加します。

    Stateflow chart that contains two superstates called Power_off and Power_on. A condition guards the transition from Power_on to Power_off.

    これで Power_on から Power_off への遷移は、シミュレーション時間が 20.0 を超過するまで発生しなくなります。

  3. シミュレーションを再度開始します。

  4. 繰り返し [ステップ イン] ボタンをクリックして、新たな動作を観察します。