ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

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

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

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

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

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

  3. チャートで、スコープ Input from SimulinkRising エッジ トリガーが設定されたイベント Switch を追加します。

  4. スコープ Input from 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. [モデル コンフィギュレーション パラメーター] ダイアログ ボックスを開きます。

  2. [シミュレーション ターゲット] ペインで、[デバッグ/アニメーションを有効にする] が選択されていることを確認します。

  3. [OK] をクリックして、[モデル コンフィギュレーション パラメーター] ダイアログ ボックスを閉じます。

  4. Stateflow デバッガーを開きます。

  5. [ブレークポイント] セクションで、[チャート Entry] チェック ボックスを選択します。

  6. [アニメーション] の下にある [有効] を選択して、シミュレーション時のチャートのアニメーションを有効にします。

  7. [開始] をクリックして、シミュレーションを開始します。

    チャート Entry に対してブレークポイントを指定しているため、実行はそのポイントで停止し、デバッガーは情報を伝えるメッセージを表示します。

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

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

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

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

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

実行時のエラーの修正

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

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

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

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

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

  3. Stateflow デバッガーで、[開始] を選択して、シミュレーションを再開します。

  4. [ステップ イン] を繰り返しクリックして、新しい動作を監視します。

エラー メッセージ内の Stateflow オブジェクトの特定

シミュレーション時に表示されたエラー メッセージでは、エラーは、関連する Stateflow オブジェクトをその名前と ID 番号で参照します。以下に示すのは、エラー メッセージの例です。 Unresolved event 'Switch' in transition Switch (#100).

Stateflow オブジェクトの ID 番号は固有のものですが、名前については重複する場合があります。その ID 番号を使用してオブジェクトを識別するには、MATLAB® プロンプトで以下の Stateflow API コマンドを入力します。

theObject = find(sfroot, 'Id', <id number>);
theObject.view

最初のコマンドは、指定した <id number> と一致する Stateflow オブジェクトを検索します。2 番目のコマンドは、チャートで選択されたオブジェクトを強調表示します。(find メソッドと view メソッドの詳細は、Stateflow API ドキュメンテーションを参照)。

この情報は役に立ちましたか?