このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
チャートへの列挙値の代入
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)
関連するトピック
- 列挙データ型の定義
- ステートとデータのシミュレーション出力のログ
- シミュレーション データ インスペクターでのシミュレーション データの表示 (Simulink)
- 信号ログを使用した信号データの保存 (Simulink)
- シミュレーション データの検証 (Simulink)