Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

アクティビティ タイプ

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

  • 自己アクティビティ

  • 子アクティビティ

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

データ名

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

Enum 名

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

手作業で列挙型を定義

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

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

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

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

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

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

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

列挙データ型の定義には、ステート名ごとに 1 つの列挙値が含まれます。定義には、列挙データ型の既定値として使用され、アクティブなサブステートがないことを示す列挙値も含まれます。たとえば、モデル年代f_car内では、ステートgear_stateに、自動車のギアに対応する 4 つの子ステート (first年代econdthirdfourth) が含まれます。このモデルでは、子アクティビティのデータ型を、次の列挙型クラス定義で指定します。

classdefgearType < Simulink.IntEnumTypeenumerationNone(0), first(1), second(2), third(3), fourth(4)end...end

列挙値を並べ替えるか、既定値の名前を変更することにより、この定義をカスタマイズできます。ステートに対応する列挙値の名前を変更したり、別の既定値を指定するのにgetDefaultValueメソッドを使用したりしないでください。詳細については、列挙データ型の定義を参照してください。

ヒント

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

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

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

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

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

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

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

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

  • クラシック セマンティクスまたは Mealy のセマンティクスを使用するチャートでは、チャートのプロパティ[チャート起動ごとに出力を初期化]が有効になっている場合、アクティブ ステート データはサポートされません。詳細については、チャート起動ごとに出力を初期化を参照してください。

参考

(Simulink)|(Simulink)

関連するトピック