主要内容

このペ,ジの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

チャ,トシミュレ,ション時の一般的なモデリングエラ,の検出

一般的な設計エラを回避するために,コンパルおよびシミュレション時のStateflow®チャ,トの完全性をテストする診断チェックを実行できます。Stateflow診断は,S金宝appimulink®モデルのStateflowチャ,トで,ステ,トの矛盾,デ,タ範囲の違反,循環動作を検出します。

モデルのシミュレーション時に,Stateflowパーサーは,各Stateflowマシンのグラフィカルオブジェクトと非グラフィカルオブジェクト,およびデータを,サポートされるチャート表記法とアクション言語の構文に照らして評価します。statflowルストリップの[モデル化]タブにある[チャ,トの更新]を選択することでもチャ,トの構文をチェックできます。

チャートに構文エラーがある場合,チャートでは最初のエラーの原因となったオブジェクトが自動的に強調表示されます。診断ウィンドウでエラーを選択すると,ソースオブジェクトが強調表示された状態でソースチャートが前面に表示されます。チャト内の未解決のデタやベントには,シンボルウィザドでフラグが設定されます。

ステ,トの矛盾

Stateflowチャートでは,以下のいずれかのルールに違反している場合にステートの矛盾が発生します。

  • 排他的(或)構造と少なくとも1つのサブステートを含むアクティブステートは,アクティブサブステートを1つだけもちます。

  • パラレル(及)構造を含むアクティブなステ、トのサブステ、トはすべてアクティブです。

  • 非アクティブステ,トのサブステ,トは,ステ,ト構造にかかわらず,すべて非アクティブです。

チャートの編集中,Stateflowエディターでは,オブジェクトを赤またはオレンジで強調表示することによってステートの矛盾の原因となっている可能性のある箇所を示します。詳細にいては,編集時のモデリングエラ,の検出を参照してください。

ステ,トの矛盾の原因

以下のすべての条件に該当する場合,1種類のステ,トの矛盾が発生します。

  • 複数のサブステトをもステトに排他的(或)構造が含まれている。

  • そのステ,トに,ヒストリジャンクションが含まれていない。

  • サブステ,トに,。

  • ステトへの遷移の中に,サブステトに直接ながるスパトランジションではないものが含まれる。

たとえば,次のチャ,トにはステ,トの矛盾が含まれています。どのサブステ,トが最初にアクティブになるかを示すデフォルト遷移がないためです。

無条件のデフォルト遷移をいずれかのステ,トに追加することで,ステ,トの矛盾が解決されます。

ステ,トの矛盾の検出

コンパイル時に,Stateflowチャートは,無条件のデフォルト遷移の欠落によって発生したステートの矛盾を検出します。診断アクションのレベルを制御するには,[モデルコンフィギュレーションパラメーター]ダイアログボックスを開きます。[診断](Stateflow)ペesc escンで,診断[無条件のデフォルト遷移がない]に対して,[エラ][警告]または[なし]を選択できます。既定の設定は[エラ]です。詳細にいては,無条件のデフォルト遷移がない(金宝app模型)を参照してください。

デ,タ範囲違反

シミュレ,ション中,次の場合にデ,タ範囲違反が発生します。

たとえば,次のチャ,トには,[最小値]が0で[最大値]が2のロカルデタ一个が含まれています。ステト一个条目アクションが,一个を1に初期化します。アクションは,一个の値を1。2タ苹果苹果公司ムステップ後に,一个の値は指定された範囲を超え,デ,タ範囲違反となります。

デ,タ範囲違反の検出

実行時に,Stateflowチャ,トはデ,タ範囲違反を検出します。診断アクションのレベルを制御するには,[モデルコンフィギュレーションパラメーター]ダイアログボックスを開きます。[診断][デ,タ有効性]ペesc escンで,以下の診断に対して[エラ][警告]または[なし]を選択できます。

  • [シミュレ,ション範囲のチェック]は,最小値と最大値の範囲のチェックに基づいて違反を検出します。既定の設定は[なし]です。

  • [オ,バ,フロ,時にラップ][オ,バ,フロ,で飽和]は,整数演算または固定小数点演算が結果タ。既定の設定は[警告]です。

詳細にいては,シミュレ,ション範囲のチェック(金宝app模型)オ,バ,フロ,時にラップ(金宝app模型)およびオ,バ,フロ,で飽和(金宝app模型)を参照してください。

循環動作

循環動作は,チャートのシミュレーション時にステップまたはステップのシーケンスが無限に繰り返される場合に発生します。

たとえば,以下のチャートのアクションでは,再帰的なイベントブロードキャストの無限サイクルが発生します。

  • ステトCアクションが,电子邮件ベントE1をブロ,ドキャストします。

  • ベントE1が,ステ,トA.A1からステ,トA.A2への遷移をトリガ,します。この遷移の条件アクションが,电子邮件ベントE2をブロ,ドキャストします。

  • ベントE2が,ステ,トB.B1からステ,トB.B2への遷移をトリガ,します。この遷移の条件アクションが,电子邮件ベントE1をブロ,ドキャストします。

ステト一个およびBのイベントブロードキャストは条件アクションで発生するため,結果のイベントをチャートが処理するまで遷移は行われません。サブステ,トA.A1およびB.B1はアクティブなままであるため,新しいイベントブロードキャストが遷移をトリガーし続け,プロセスは無限に繰り返されます。

指示のないロカルベントブロドキャストは不要な再帰的動作の原因となる可能性があるため,发送演算子を使った、指示のあるロ、カル、ベントブロ、ドキャストが推奨されます。詳細にいては,ロカルベントをブロドキャストしてパラレルステトを同期を参照してください。

シミュレ,ション時の循環動作の検出

チャートのシミュレーション時に,Stateflowチャートは,循環検出アルゴリズムを使用して,イベントブロードキャストが原因で無限再帰が発生しているクラスを検出します。循環検出を有効にするには,Stateflowチャ,トを開きます。[デバッグ]タブで,[診断][周期的動作の検出]を選択します。循環動作チェックは既定で選択されています。

状态流チャ,トは,指示のないロ,カル,ベントブロ,ドキャストも検出します。診断アクションのレベルを制御するには,[モデルコンフィギュレーションパラメーター]ダイアログボックスを開きます。[診断](Stateflow)ペ电子邮箱ンで,[指示のないeconp econpベントブロドキャスト]診断に対して,[エラ][警告]または[なし]を選択できます。既定の設定は[警告]です。詳細にいては,指示のない▪▪ベントブロ▪▪ドキャスト(金宝app模型)を参照してください。

循環動作検出の制限

Stateflow循環検出は,イベントブロードキャストによる再帰の場合に制限されており,他のタイプの循環動作には拡張されません。

たとえば,Stateflowは,次のフロ,チャ,トの無限サ,クルは検出できません。この例では,デフォルト遷移がロ,カルデ,タを0に初期化します。次の遷移セグメントはを@ @ンクリメントします。終端ジャンクションへの遷移は,条件[i < 0]が真の場合にのみ有効です。この条件が真になることはないため,無限サ。

モデルsf_cycle_error_fixでは,フロ,チャ,ト内の循環動作を修正するための推奨事項が提供されています。MATLAB®コマンドプロンプトで,次のように入力します。

sfhelp (“cycle_error”);

関連するトピック