Stateflow エディターでのシンボルの管理
Stateflow® エディターでの作業中に、[シンボル] ペインでデータ、イベントおよびメッセージを表示し、管理することができます。[モデル化] タブで、[[シンボル] ペイン] を選択します。
[シンボル] ペインでは以下が可能です。
データ、イベント、メッセージの追加と削除。
オブジェクト タイプとスコープの設定。
端子番号の変更。
オブジェクト名の編集およびチャート内のそのオブジェクト名への全参照の更新。
タイプ、名前、端子番号の変更の取り消しとやり直し。
未使用オブジェクトの検出。
未解決オブジェクトの検出と修正。
ウィンドウ内のオブジェクトとオブジェクトが使用されているチャート内の場所間のトレース。
[プロジェクト インスペクター] でのオブジェクト プロパティの表示と編集。
[シンボル] ペインの行にはオブジェクト階層が表示されます。ウィンドウでオブジェクトを展開すると、そのオブジェクトを親とするデータ、イベントおよびメッセージが表示されます。既定では、チャートのすべての非グラフィカル オブジェクトがウィンドウにリストされます。現在の階層以下のレベルで使用されているオブジェクトのみを表示するには、 アイコンを選択します。特定のシンボルを検索するには、[フィルター] 検索ボックス に入力します。
データ、イベント、メッセージの追加および変更
非グラフィカル オブジェクトを Stateflow ブロックに追加するには、[シンボル] ペインで以下を実行します。
以下のアイコンのいずれかを選択します。
アイコン 説明 データの追加 イベントの追加 メッセージの追加 新規オブジェクトの行の [タイプ] で、オブジェクト タイプを選択します。
オブジェクトの名前を編集します。
入出力オブジェクトの場合、[端子] で端子番号を選択します。
[プロパティ インスペクター] でオブジェクトを表示するには、オブジェクトを右クリックし、
[検査]
を選択します。[プロパティ インスペクター] で、オブジェクトのプロパティを変更します。
[シンボル] ペインでオブジェクトを追加した後、オブジェクトは Stateflow 設計で参照されるまで未使用として表示されます。
[シンボル] ペインで、Stateflow オブジェクトの名前、タイプ、ポート番号を修正できます。[名前] フィールドでオブジェクトの名前を編集します。オブジェクトの名前を変更する際は、Shift+Enter を選択して、チャート全体でそのオブジェクトへの全参照の名前を変更します。オブジェクトのタイプまたは端子番号を変更するには、対応するフィールドをクリックし、使用可能なオプションから選択します。オブジェクトを削除するには、オブジェクトを右クリックして [削除] を選択します。
[シンボル] ペインでの未使用データの検出
[シンボル] ペインには、未使用のデータ、メッセージ、関数、イベントが黄色の警告アイコン で示されます。未定義シンボルは、[シンボル] ペインまたはシンボル ウィザードを使用して解決できます。
[シンボル] ペインでは、MATLAB® 関数の入力と出力または Atomic サブチャート内のパラメーターは検出されません。
未使用のオブジェクトを削除するには、[シンボル] ペインでオブジェクトを右クリックし、[削除] を選択します。シミュレーションに影響がないオブジェクトを削除することで、モデルのサイズを小さくできます。このチャートでは、data
を追加すると、最初は未使用として表示されます。チャートで data
を参照した後は、警告サインが消えます。
[シンボル] ペインを使用したシンボルの解決
チャートに表示されていてもるものの、データ、イベント、メッセージとして追加していないシンボルは、"未定義" または "未解決" です。チャートを編集しているときに、Stateflow により未定義シンボルが検出され、[シンボル] ペインで赤のエラー アイコン のマークが付けられます。
各未定義シンボルに関して、[シンボル] ペインには、チャート内での用途から推測されるクラスとスコープが表示されます。未定義シンボルは、個別に、またはまとめて解決できます。
推測されるクラスとスコープでシンボルを定義するには、エラー アイコンをクリックして [修正] を選択します。
別のクラスまたはスコープでシンボルを定義するには、[タイプ] ドロップダウン リストから、クラスとスコープの別の組み合わせを選択します。
すべての未定義シンボルを、それぞれの推測されるクラスとスコープで解決するには、[未定義のシンボルを解決] ボタン をクリックします。
シンボル ウィザードを使用したシンボルの解決
チャートの更新、モデルの更新、またはモデルのシミュレーションを行う際に未定義シンボルがチャートに含まれていると、シンボル ウィザードが開いて、未定義シンボルのリストが表示されます。各未定義シンボルに関して、[クラス] 列と [スコープ] 列には、チャート内での用途から推測されるクラスとスコープが表示されます。シンボル ウィザードで提示されるシンボル定義は、それぞれ受け入れ、変更、拒否することができます。
推測されるクラスとスコープで定義を受け入れるには、シンボルの前にあるチェック ボックスをオンにします。
定義を変更するには、[クラス] または [スコープ] のドロップダウン リストから、別のクラスまたはスコープを選択します。
定義を拒否するには、シンボルの前にあるチェック ボックスをオフにします。
シンボル定義を編集したら、[OK] をクリックしてシンボルを Stateflow 階層に追加します。
カスタム コード内のシンボル定義の検出
カスタム コードで定義されているシンボルの検出は、モデル コンフィギュレーション パラメーター [カスタム コードのインポート] に依存します。
[カスタム コードのインポート] を選択すると、Stateflow パーサーはカスタム コード内の未解決のチャート シンボルを見つけようとします。カスタム コードでこれらのシンボルが定義されない場合、シンボルはシンボル ウィザードに表示されます。
[カスタム コードのインポート] を選択しない場合、Stateflow パーサーは、チャート内の未解決のデータ シンボルがカスタム コードで定義されているものと見なします。カスタム コードでこれらのシンボルが定義されない場合、モデルからコードをシミュレートして生成するとエラーになります。
[カスタム コードのインポート] オプションは、MATLAB をアクション言語として使用するチャートでは利用できません。詳細については、カスタム コードのインポート (Simulink)を参照してください。
データ、イベント、メッセージのトレース
Stateflow は、チャートと非グラフィカル シンボル間のトレーサビリティを提供します。[シンボル] ペインでシンボルを選択すると、Stateflow はそのシンボルにアクセスするチャートのセクションを強調表示します。チャートでオブジェクトを選択すると、Stateflow はそのオブジェクトが使用するシンボルを強調表示します。
オブジェクトとシンボルが強調表示されるタイミングを制御するには、基本設定ボタン を選択します。ドロップダウン メニューが表示されます。
Stateflow で、オブジェクトが使用するシンボルを [シンボル] ペインで強調表示するには、[使用したシンボルを強調表示] をオンにします。Stateflow で、シンボルを使用するオブジェクトをチャート内で強調表示するには、[ブロック線図での使用を強調表示] をオンにします。[ブロック線図での使用を強調表示] がオンの場合、以下を選択して強調表示できます。
チャート内での、対象シンボルのすべての使用。
シンボルが読み取られるオブジェクト。
シンボルが書き込まれるオブジェクト。
メモ
シミュレーション中に、[シンボル] ペインに表示される値を更新するには、[シミュレーション中に値列を更新] オプションを使用します。
たとえば、モデル sf_tetris2
を開きます。
openExample("sf_tetris2")
チャート TetrisLogic
をダブルクリックします。[シンボル] ペインでは、定数 ARENA_HEIGHT
を選択すると、ARENA_HEIGHT
を使用するステートと関数が強調表示されます。
定数 ARENA_HEIGHT
の使用を確認するには、関数 freeze
を開きます。
チャート内のステート、遷移、関数などのグラフィカル オブジェクトを選択して、オブジェクトが使用するシンボルを表示することもできます。たとえば、チャート TetrisLogic
で、[シンボル] ペインのシンボル MainArea
を展開します。チャートでステート FreezeShape
を選択すると、ローカル データ shape
と関数 freeze()
が [シンボル] ペインで強調表示されます。強調表示は、これらのオブジェクトがステート FreezeShape
内で使用されていることを示します。
デバッグ モードのとき、各データの値は [シンボル] ペインの [値] 列に表示されます。Stateflow は、シミュレーションの実行時に値を定期的に更新します。値列では、変更発生時、データ値の変更個所が強調表示されます。デバッガーがブレークポイントで停止しているときは、コマンド プロンプトまたは [シンボル] ペインで、初期値を更新するか、シンボルの値を変更できます。
データまたはメッセージ | 初期値の更新 | デバッグ中の更新 |
---|---|---|
入力 | 不可 | 不可 |
出力 | 可 | 可 |
パラメーター | 不可 | 不可 |
定数 | 可 | 不可 |
データ ストア メモリ | 不可 | 可 |
ローカル | 可 | 可 |
バス要素の場合は、コマンド プロンプトまたは [シンボル] ペインでシンボルの値を変更できます。
バス要素 | 初期値の更新 | デバッグ中の更新 |
---|---|---|
入力 | 不可 | 不可 |
出力 | 不可 | 可 |
パラメーター | 不可 | 不可 |
定数 | 不可 | 不可 |
データ ストア メモリ | 不可 | 可 |
ローカル | 不可 | 可 |
[シンボル] ペインでは、多次元配列が配列のデータ型とサイズとして表示されます。配列の要素が 100 個以内の場合は、シンボルにカーソルを合わせると要素が表示されます。配列に含まれる要素が 100 個を超える場合は、コマンド プロンプトを使用して要素を表示します。
シミュレーションの一時停止中に、キャンバス内のメッセージにカーソルを合わせると、キューに入っているペイロードが表示されます。これは、キャンバス上の機能にカーソルを合わせる場合と同様です。その他の非スカラー オブジェクトの場合は、サイズとデータ型が表示されます。これらの値を表示するには、監視ウィンドウを使用します。デバッグ中のデータおよびメッセージの検査と変更と監視リストでのデータの追跡を参照してください。
[シンボル] ペインの制限
データ、イベントまたはメッセージの親がステートまたは関数である場合、[シンボル] ペインでそれらを追加することはできません。これらのタイプのオブジェクトを追加するには、モデル エクスプローラーを使用します。
MATLAB 関数内のコードを変更した場合、MATLAB 関数を保存するまで [シンボル] ペインでは変更は更新されません。
MATLAB 関数の入出力の変更は、元に戻したりやり直したりできません。
状態遷移表から削除したデータ、イベントまたはメッセージは元に戻せません。
グラフィカル関数、MATLAB 関数および真理値表を親とするデータのスコープの変更は元に戻せません。
真理値表のオブジェクト名の変更は、元に戻せません。
Simulink ベースのステートに含まれるオブジェクトのデータを削除した場合、そのオブジェクトは Simulink ベースのステート内に残り、[シンボル] ペインにデータ シンボルが未定義として表示されます。