チャートへの列挙値の代入
Stateflow® チャートの可読性を高めるには、列挙データを使用します。列挙データでは以下が可能です。
値の限定セットを作成し、名前によってこれらの値を参照します。
関連する値を別個のデータ型にグループ化します。
定数の長いリストを定義しなくても済みます。
列挙データは Simulink® モデルの Stateflow でサポートされます。詳細については、列挙データを使用した名前による値の参照を参照してください。
チャートの動作
この例では、列挙値を使ってステータス キーワードを発行するチャートの作成方法を説明します。

シミュレーション中に、チャート アクションはステート A とステート B の間で切り替わります。
ステート A の実行
シミュレーションの開始に際し、ステート
Aに入ります。ステート
Aが、値REDを列挙データcolorに代入することで、entryアクションを実行します。条件
[y > 6]が真になるまで、データyはタイム ステップ (0.2 秒間隔) ごとに 1 回増分されます。チャートが、ステート
AからステートBへの遷移を取得します。
ステート B の実行
ステート
Aからの遷移が発生した後、ステートBが入力されます。ステート
Bが、値GREENを列挙データcolorに代入することで、entryアクションを実行します。条件
[y < 3]が真になるまで、データyはタイム ステップ (0.2 秒間隔) ごとに 1 回減分されます。チャートが、ステート
BからステートAに遷移します。
チャートの作成
チャートへのステートと遷移の追加
空のチャートをもつ Simulink モデルを作成するには、MATLAB® コマンド プロンプトで
sfnewと入力します。空のチャート内にステート
AおよびBを追加します。テキスト プロンプトで、適切なアクション ステートメントを入力します。ステート
Aにデフォルト遷移を追加し、ステートAとステートBの間に遷移を追加します。それぞれの遷移をダブルクリックします。テキスト プロンプトで、適切な条件を入力します。
チャート用の列挙データ型の定義
データ型定義を保存するためのファイルを作成するには、MATLAB ツールストリップの [ホーム] タブから、[新規作成] 、 [クラス] を選択します。
MATLAB エディターで次のように入力します。
classdef TrafficColors < Simulink.IntEnumType enumeration RED(0) GREEN(10) end end
classdefセクションは、TrafficColorsという名前の整数ベースの列挙データ型を定義します。enumerationセクションには、このデータ型で許可される列挙値に続いて、その元となる数値が含まれています。ファイルを
TrafficColors.mとして、 MATLAB 検索パス上のフォルダーに保存します。
チャート データの定義
未定義のデータを解決するには、[シンボル] ペインで [未定義のシンボルを解決] アイコン
をクリックします。Stateflow エディターによってチャート内の各シンボルに適切なスコープが割り当てられます。シンボル スコープ color出力データ yローカル データ GREENパラメーター データ REDパラメーター データ colorを列挙データとして指定するには、[プロパティ インスペクター] で以下を行います。[型] フィールドで
[Enum:<class name>]を選択します。<class name>を、以前に定義したデータ型の名前TrafficColorsに置き換えます。[ログ] で、[信号データのログ] チェック ボックスをオンにします。
yのスコープと型を設定するには、[プロパティ インスペクター] で以下を行います。[スコープ] フィールドで
[出力]を選択します。[型] フィールドで
[uint8]を選択します。[ログ] で、[信号データのログ] チェック ボックスをオンにします。
[シンボル] ペインで、シンボル
GREENおよびREDを削除します。colorを列挙データとして指定する前は、Stateflow エディターではこれらのシンボルが誤ってパラメーターとして識別されていました。
ログに記録された出力の表示
モデルのシミュレーションを実行します。
[シミュレーション] タブで、[結果の確認] にある [データ インスペクター]
を選択します。シミュレーション データ インスペクター (Simulink)の [検査] ペインで、信号
colorおよびyを選択します。ログに記録された信号をまとめて表示するか、個別の座標軸に表示できます。詳細については、シミュレーション データの検証 (Simulink)を参照してください。
MATLAB ワークスペース内でログ データにアクセスするには、信号のログ オブジェクト
logsoutを呼び出します。たとえば、コマンド プロンプトで次のように入力します。losgout = out.logsout; colorLog = logsout.getElement("color"); Tbl = table(colorLog.Values.Time,colorLog.Values.Data); Tbl.Properties.VariableNames = ["SimulationTime","Color"]
Tbl = 9×2 table SimulationTime Color ______________ _____ 0 RED 1.6 GREEN 2.8 RED 4 GREEN 5.2 RED 6.4 GREEN 7.6 RED 8.8 GREEN 10 RED
参考
シミュレーション データ インスペクター (Simulink)
トピック
- 列挙データ型の定義
- Log Simulation Output for States and Data
- シミュレーション データ インスペクターでのシミュレーション データの表示 (Simulink)
- 信号ログを使用した信号データの保存 (Simulink)
- シミュレーション データの検証 (Simulink)