Main Content

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

アクティブ ステート データによるステート アクティビティの監視

アクティブ ステート データを使用すると、チャート階層との相関性が高いデータを維持する必要がないため、一部の Stateflow® チャートの設計を簡素化することができます。アクティブ ステート データを有効にすると、Stateflow は、出力端子を介して Simulink® へ、またはチャート内のローカル データとして、ステート アクティビティを報告します。アクティブ ステート データを使用すると、次のことが可能です。

  • チャート アクティビティを反映させる手動のデータ更新を回避する。

  • スコープまたはシミュレーション データ インスペクターを使用してチャート アクティビティを表示する。

  • 診断のためにチャート アクティビティをログに記録する。

  • 他の Simulink サブシステムを駆動する。

アクティブ ステート データの型

アクティブ ステート データを有効にすると、Stateflow では、アクティビティ タイプと一致する boolean または列挙型のデータ オブジェクトが作成されます。

アクティビティ タイプアクティブ ステートのデータ型説明
自己アクティビティBooleanステートがアクティブかどうか
子アクティビティEnumerationアクティブな子はどれか
リーフ ステート アクティビティEnumerationアクティブなリーフ ステートはどれか

チャートまたはステートの自己アクティビティでは、アクティブな場合はデータ値が true に、非アクティブな場合は false になります。子アクティビティおよびリーフ ステート アクティビティの場合、データは列挙型になります。Stateflow で列挙型クラスを定義するか、手動で定義を作成できます。詳細については、ステート アクティビティの列挙型の定義を参照してください。

アクティブ ステート データは、Stateflow チャート、ステート、状態遷移表、Atomic サブチャートで有効にすることができます。以下の表は、各種の Stateflow オブジェクトでサポートされているアクティビティ タイプを示しています。

Stateflow オブジェクト自己アクティビティ 子アクティビティリーフ ステート アクティビティ
チャート サポートなしサポートありサポートあり
排他的 (OR) 構造が設定されたステートサポートありサポートありサポートあり
パラレル (AND) 構造が設定されたステートサポートありサポートなしサポートなし
Atomic サブチャートコンテナー レベルのサポートありサブチャート内のサポートありサブチャート内のサポートあり
状態遷移表サポートなしサポートありサポートあり

アクティブ ステート データの有効化

アクティブ ステート データは、プロパティ インスペクターまたはモデル エクスプローラーで有効にすることができます。

  • プロパティ インスペクター

    1. プロパティ インスペクターを開くには、[モデル化] タブで [プロパティ インスペクター] をクリックします。

    2. Stateflow エディターのキャンバスで、監視対象の Stateflow オブジェクトを選択します。

    3. プロパティ インスペクターの [監視] セクションで、[監視する出力の作成] チェック ボックスをオンにして、アクティブ ステート データのプロパティを編集します。

  • モデル エクスプローラー

    1. モデル エクスプローラーを開くには、[モデル化] タブで [モデル エクスプローラー] をクリックします。

    2. [モデルの階層構造] ペインで、監視対象の Stateflow オブジェクトをダブルクリックします。

    3. [Stateflow オブジェクト] ペインで、[監視する出力の作成] チェック ボックスをオンにして、アクティブ ステート データのプロパティを編集します。

アクティブ ステート データのプロパティ

アクティビティ タイプ

監視対象のステート アクティビティのタイプ。以下のオプションから選択します。

  • 自己アクティビティ

  • 子アクティビティ

  • リーフ ステート アクティビティ

データ名

アクティブ ステート データ オブジェクトの名前。詳細については、Stateflow オブジェクトの命名ルールを参照してください。

Enum 名

アクティブ ステート データ オブジェクトの列挙データ型の名前。このプロパティは、子アクティビティおよびリーフ ステート アクティビティにのみ適用されます。

手作業で列挙型を定義

列挙データ型を手動で定義するかどうかを指定します。このプロパティは、子アクティビティおよびリーフ ステート アクティビティにのみ適用されます。詳細については、ステート アクティビティの列挙型の定義を参照してください。

アクティブ ステート データのスコープの設定

既定では、アクティブ ステート データは Output のスコープをもっています。Stateflow は、Simulink モデル内のチャート ブロック上に出力端子を作成します。

Stateflow チャート内のアクティブ ステート データにアクセスするには、[シンボル] ペインまたはモデル エクスプローラーで、スコープを Local に変更します。詳細については、データ プロパティの設定を参照してください。

ローカルのアクティブ ステート データを Simulink.Signal オブジェクトにバインドすると、コード生成に関する情報を指定できます。オブジェクトのプロパティは、CoderInfo プロパティを使用して変更します。詳細については、Simulink.CoderInfoを参照してください。

ステート アクティビティの列挙型の定義

既定では、Stateflow は、子アクティビティおよびリーフ アクティビティに列挙データ型を定義します。[手作業で列挙型を定義] チェック ボックスがオンで、列挙データ型の定義が存在しない場合、Stateflow は、定義を作成するリンクを提供します。[テンプレートから列挙型定義を作成する] リンクをクリックすると、カスタマイズ可能な定義が生成されます。

列挙データ型の定義には、ステート名ごとに 1 つずつのリテラルと、アクティブなサブステートがないことを示す追加のリテラルが含まれます。たとえば、モデル sf_car 内では、ステート gear_state に、自動車のギアに対応する 4 つの子ステート (firstsecondthirdfourth) が含まれます。このモデルでは、子アクティビティのデータ型を、次の列挙型クラス定義で指定します。

classdef gearType < Simulink.IntEnumType
   enumeration
		None(0),
		first(1),
		second(2),
		third(3),
		fourth(4)
   end
...
end
詳細については、列挙データ型の定義を参照してください。

自動的に作成される列挙型の基本ストレージ型は、既定で Native Integer に設定されます。メモリ フットプリントを小さくするには、[コンフィギュレーション パラメーター] ダイアログ ボックスの [最適化] ペインで、[自動的に作成される列挙型の基本ストレージ型] フィールドの値を変更します。詳細については、自動的に作成される列挙型の基本ストレージ型 (Simulink Coder)を参照してください。

ステート アクティビティとパラレル ステート

パラレル (AND) 構造をもつステートでは、パラレル サブステートが同時にアクティブとなるため、子アクティビティとリーフ ステート アクティビティは使用できません。

チャートまたはステートでリーフ ステート アクティビティを有効にすると、パラレル (AND) 構造のサブステートはリーフ ステートとして扱われます。たとえば、以下のチャートのリーフ ステート アクティビティを有効にするとします。ステート B はパラレル構造であるため、そのサブステート B1B2 は同時にアクティブになります。よって、B はチャートのリーフ ステートとして処理されます。

シミュレーション中に、アクティブ ステートの出力データに接続されているスコープは、リーフ ステート A1A2 および B の列挙値を示します。

アクティブ ステート データの制限

  • 子アクティビティをもたないステートの子アクティビティ出力を有効にすると、コンパイル時および実行時にエラーが発生します。

  • パラレル構造のチャートまたはステート内では、子またはリーフ ステート アクティビティを有効にすることはできません。パラレル ステートのサブステートのステート アクティビティをチェックするには、in 演算子を使用します。詳細については、in 演算子を使用したステート アクティビティのチェックを参照してください。

  • アクティブ ステートの出力データを使用するチャートでは、チャート プロパティ [チャート起動ごとに出力を初期化] を選択しないでください。この設定では、出力データの動作は予測できません。

参考

|

関連するトピック