Main Content

Stateflow エディターでのシンボルの管理

Stateflow® エディターでの作業中に、[シンボル] ペインでデータ、イベントおよびメッセージを表示し、管理することができます。[モデル化] タブで、[[シンボル] ペイン] を選択します。

[シンボル] ペインでは以下が可能です。

  • データ、イベント、メッセージの追加と削除。

  • オブジェクト タイプとスコープの設定。

  • 端子番号の変更。

  • オブジェクト名の編集およびチャート内のそのオブジェクト名の全インスタンスの更新。

  • タイプ、名前、端子番号の変更の取り消しとやり直し。

  • 未使用オブジェクトの検出。

  • 未解決オブジェクトの検出と修正。

  • ウィンドウ内のオブジェクトとオブジェクトが使用されているチャート内の場所間のトレース。

  • [プロジェクト インスペクター] でのオブジェクト プロパティの表示と編集。

Symbols pane showing input, output, and local data, an input event, and an output message.

[シンボル] ペインの行にはオブジェクト階層が表示されます。ウィンドウでオブジェクトを展開すると、そのオブジェクトを親とするデータ、イベントおよびメッセージが表示されます。既定では、チャートのすべての非グラフィカル オブジェクトがウィンドウにリストされます。現在の階層以下のレベルで使用されているオブジェクトのみを表示するには、 アイコンを選択します。特定のシンボルを検索するには、[フィルター] 検索ボックス に入力します。

データ、イベント、メッセージの追加および変更

非グラフィカル オブジェクトを Stateflow ブロックに追加するには、[シンボル] ペインで以下を実行します。

  1. 以下のアイコンのいずれかを選択します。

    アイコン説明
    データの追加
    イベントの追加
    メッセージの追加

  2. 新規オブジェクトの行の [タイプ] で、オブジェクト タイプを選択します。

  3. オブジェクトの名前を編集します。

  4. 入出力オブジェクトの場合、[端子] で端子番号を選択します。

  5. [プロパティ インスペクター] でオブジェクトを表示するには、オブジェクトを右クリックし、[検査] を選択します。

  6. [プロパティ インスペクター] で、オブジェクトのプロパティを変更します。

[シンボル] ペインでオブジェクトを追加した後、オブジェクトは Stateflow 設計で参照されるまで未使用として表示されます。

[シンボル] ペインで、Stateflow オブジェクトの名前、タイプ、ポート番号を修正できます。[名前] フィールドでオブジェクトの名前を編集します。オブジェクトの名前を変更する際は、Shift + Enter キーを選択して、ステート マシン全体でそのオブジェクトの全インスタンスの名前を変更します。オブジェクトのタイプまたは端子番号を変更するには、対応するフィールドをクリックし、使用可能なオプションから選択します。ステート マシンからオブジェクトを削除するには、オブジェクトを右クリックして [Delete] を選択します。

[シンボル] ペインでの未使用データの検出

チャートに表示されていてもるものの、データ、イベント、メッセージとして追加していないシンボルは、"未定義" または "未解決" です。[シンボル] ペインには、未使用のデータ、メッセージ、関数、イベントが黄色の警告アイコン で示されます。未定義シンボルは、[シンボル] ペインまたはシンボル ウィザードを使用して解決できます。

Symbols pane showing unused data.

次のタイプの未使用データは検出されません。

  • マシンを親とするデータ

  • MATLAB® 関数の入力と出力

  • Atomic サブチャートを含むチャート内のパラメーター スコープのデータ

各未定義シンボルに関して、チャート内でのシンボルの用途に基づいて、Stateflow では以下のプロパティが推測されます。

  • サイズ

  • タイプ

  • 実数/複素数

未使用のオブジェクトを削除するには、[シンボル] ペインでオブジェクトを右クリックし、[削除] を選択します。シミュレーションに影響がないオブジェクトを削除することで、モデルのサイズを小さくできます。このチャートでは、data を追加すると、最初は未使用として表示されます。チャートで data を参照した後は、警告サインが消えます。

[シンボル] ペインを使用したシンボルの解決

チャートを編集しているときに、Stateflow により未定義シンボルが検出され、[シンボル] ペインで赤のエラー アイコン のマークが付けられます。各未定義シンボルに関して、[タイプ] 列には、チャート内での用途から推測されるクラスとスコープが表示されます。未定義シンボルは、個別に、またはまとめて解決できます。

  • 推測されるクラスとスコープでシンボルを定義するには、エラー アイコンをクリックして [修正] を選択します。

  • 別のクラスまたはスコープでシンボルを定義するには、[タイプ] ドロップダウン リストから、クラスとスコープの別の組み合わせを選択します。

  • すべての未定義シンボルを、それぞれの推測されるクラスとスコープで解決するには、[未定義のシンボルを解決] ボタン をクリックします。

Symbols pane showing unresolved data, events, and messages.

シンボル ウィザードを使用したシンボルの解決

チャートの更新、モデルの更新、またはモデルのシミュレーションを行う際に未定義シンボルがチャートに含まれていると、シンボル ウィザードが開いて、未定義シンボルのリストが表示されます。各未定義シンボルに関して、[クラス] 列と [スコープ] 列には、チャート内での用途から推測されるクラスとスコープが表示されます。シンボル ウィザードで提示されるシンボル定義は、それぞれ受け入れ、変更、拒否することができます。

  • 推測されるクラスとスコープで定義を受け入れるには、シンボルの前にあるチェック ボックスをオンにします。

  • 定義を変更するには、[クラス] または [スコープ] のドロップダウン リストから、別のクラスまたはスコープを選択します。

  • 定義を拒否するには、シンボルの前にあるチェック ボックスをオフにします。

シンボル定義を編集したら、[OK] をクリックしてシンボルを Stateflow 階層に追加します。

Symbols wizard showing unresolved data, events, and messages.

カスタム コード内のシンボル定義の検出

カスタム コードで定義されているシンボルの検出は、モデル コンフィギュレーション パラメーター [カスタム コードのインポート] に依存します。

  • [カスタム コードのインポート] を選択すると、Stateflow パーサーはカスタム コード内の未解決のチャート シンボルを見つけようとします。カスタム コードでこれらのシンボルが定義されない場合、シンボルはシンボル ウィザードに表示されます。

  • [カスタム コードのインポート] を選択しない場合、Stateflow パーサーは、チャート内の未解決のデータ シンボルがカスタム コードで定義されているものと見なします。カスタム コードでこれらのシンボルが定義されない場合、モデルからコードをシミュレートして生成するとエラーになります。

[カスタム コードのインポート] オプションは、MATLAB をアクション言語として使用するチャートでは利用できません。詳細については、カスタム コードのインポート (Simulink)を参照してください。

データ、イベント、メッセージのトレース

Stateflow は、ステート マシンと非グラフィカル シンボル間のトレーサビリティを提供します。[シンボル] ペインでシンボルを選択すると、Stateflow はそのシンボルにアクセスするチャートのセクションを強調表示します。チャートでオブジェクトを選択すると、Stateflow はそのオブジェクトが使用するシンボルを強調表示します。

オブジェクトとシンボルが強調表示されるタイミングを制御するには、基本設定ボタン を選択します。ドロップダウン メニューが表示されます。

Symbols pane preference menu.

Stateflow で、オブジェクトが使用するシンボルを [シンボル] ペインで強調表示するには、[使用した記号を強調表示] をオンにします。Stateflow で、シンボルを使用するオブジェクトをチャート内で強調表示するには、[ブロック線図での使用を強調表示] をオンにします。[ブロック線図での使用を強調表示] がオンの場合、以下を選択して強調表示できます。

  • チャート内での、対象シンボルのすべての使用。

  • シンボルが読み取られるオブジェクト。

  • シンボルが書き込まれるオブジェクト。

たとえば、モデル sf_tetris2 を開きます。

openExample("stateflow/TetrisExample")

チャート TetrisLogic をダブルクリックします。[シンボル] ペインでは、定数 ARENA_HEIGHT を選択すると、ARENA_HEIGHT を使用するステートと関数が強調表示されます。

Chart highlighting objects that use the constant ARENA_HEIGHT.

定数 ARENA_HEIGHT の使用を確認するには、関数 freeze を開きます。

Graphical function highlighting a transition that uses the constant ARENA_HEIGHT.

チャート内のステート、遷移、関数などのグラフィカル オブジェクトを選択して、オブジェクトが使用するシンボルを表示することもできます。たとえば、チャート TetrisLogic で、[シンボル] ペインのシンボル MainArea を展開します。チャートでステート FreezeShape を選択すると、ローカル データ shape と関数 freeze()[シンボル] ペインで強調表示されます。強調表示は、これらのオブジェクトがステート FreezeShape 内で使用されていることを示します。

Symbols pane highlighting symbols used in the state Draw.

デバッグ モードのとき、各データの値は [シンボル] ペインの [値] 列に表示されます。Stateflow は、シミュレーションの実行時に値を定期的に更新します。値列では、変更発生時、データ値の変更個所が強調表示されます。デバッガーがブレークポイントで停止しているときは、コマンド プロンプトまたは [シンボル] ペインで、初期値を更新するか、シンボルの値を変更できます。

データまたはメッセージ初期値の更新デバッグ中の更新
入力不可不可
出力
パラメーター不可不可
定数不可
データ ストア メモリ不可
ローカル

バス要素の場合は、コマンド プロンプトまたは [シンボル] ペインでシンボルの値を変更できます。

バス要素初期値の更新デバッグ中の更新
入力不可不可
出力不可
パラメーター不可不可
定数不可不可
データ ストア メモリ不可
ローカル不可

[シンボル] ペインでは、多次元配列が配列のデータ型とサイズとして表示されます。配列の要素が 100 個以内の場合は、シンボルにカーソルを合わせると要素が表示されます。配列に含まれる要素が 100 個を超える場合は、コマンド プロンプトを使用して要素を表示します。

シミュレーションの一時停止中に、キャンバス内のメッセージにカーソルを合わせると、キューに入っているペイロードが表示されます。これは、キャンバス上の機能にカーソルを合わせる場合と同様です。その他の非スカラー オブジェクトの場合は、サイズとデータ型が表示されます。これらの値を表示するには、監視ウィンドウを使用します。デバッグ中のデータおよびメッセージの検査と変更監視リストでのデータの追跡を参照してください。

[シンボル] ペインの制限

データ、イベントまたはメッセージが以下の場合、[シンボル] ペインでそれらを追加することはできません。

  • 親がステートである。

  • 関数内にある。

  • 親がステート マシンである。

ステート マシンを親とするデータとイベントも、[シンボル] ペインには表示されません。これらのタイプのオブジェクトを追加するには、モデル エクスプローラーを使用します。ベスト プラクティスとして、マシンを親とするデータの使用は避けてください。

  • MATLAB 関数内のコードを変更した場合、MATLAB 関数を保存するまで [シンボル] ペインでは変更は更新されません。

  • MATLAB 関数の入出力の変更は、元に戻したりやり直したりできません。

  • 状態遷移表から削除したデータ、イベントまたはメッセージは元に戻せません。

  • グラフィカル関数、MATLAB 関数および真理値表を親とするデータのスコープの変更は元に戻せません。

  • 真理値表のオブジェクト名の変更は、元に戻せません。

  • Simulink ベースのステートに含まれるオブジェクトのデータを削除した場合、そのオブジェクトは Simulink ベースのステート内に残り、[シンボル] ペインにデータ シンボルが未定義として表示されます。

関連するトピック