Main Content

Stateflow データの追加

Stateflow® 階層の特定レベルで認識される値を保存する場合は、チャートにデータを追加します。モデルをシミュレートすると、チャート データ オブジェクトはその値をシミュレーション時間にわたって維持します。

Stateflow チャートに定義されているデータは、ステート、遷移、MATLAB® 関数、および真理値表など、チャート内の複数の Stateflow オブジェクトによって認識されます。ステートまたは遷移でどのデータが使用されるかを判定するには、ステートまたは遷移を右クリックして [探索] を選択します。コンテキスト メニューに、ステートまたは遷移内で解決されているすべてのシンボルの名前とスコープがリストされます。コンテキスト メニューからシンボルを選択すると、そのプロパティがモデル エクスプローラーに表示されます。コンテキスト メニューから出力イベントを選択すると、そのイベントに関連付けられている Simulink® サブシステムまたは Stateflow チャートが開きます。

メモ

Stateflow データは、Stateflow チャート内の Simulink 関数では利用できません。

Stateflow チャートにデータを追加するには、[シンボル] ペイン、Stateflow エディターのメニュー、またはモデル エクスプローラーを使用できます。

[シンボル] ペインによるデータの追加

  1. [モデル化] タブの [データの設計] で、[[シンボル] ペイン] を選択します。

  2. [データの作成] アイコン をクリックします。

  3. 新規データ行の [タイプ] で、アイコンをクリックし次を選択します。

    • Input Data

    • Local Data

    • Output Data

    • Constant

    • Data Store Memory

    • Parameter

    • Temporary

    これらのオプションの詳細については、スコープを参照してください。

  4. データの名前を編集します。

  5. 入出力データの場合、[端子] フィールドをクリックして端子番号を選択します。

  6. データのプロパティを指定するには、[プロパティ インスペクター] を開きます。[シンボル] ペインで、シンボルの行を右クリックして [探索] を選択します。詳細については、データ プロパティの設定を参照してください。

Stateflow エディター メニューを使用したデータの追加

  1. Simulink モデルの Stateflow チャートで、追加するデータのスコープに対応するメニュー オプションを選択します。これらのオプションの詳細については、スコープを参照してください。

    スコープメニュー オプション
    入力

    [モデル化] タブの [データの設計] で、[データ入力] を選択します。

    出力

    [モデル化] タブの [データの設計] で、[データ出力] を選択します。

    ローカル

    [モデル化] タブの [データの設計] で、[ローカル] を選択します。

    定数

    [モデル化] タブの [データの設計] で、[定数] を選択します。

    パラメーター

    [モデル化] タブの [データの設計] で、[パラメーター] を選択します。

    データ ストア メモリ

    [モデル化] タブの [データの設計] で、[データ ストア] を選択します。

  2. [データ] ダイアログ ボックスで、データ プロパティを指定します。詳細については、データ プロパティの設定を参照してください。

モデル エクスプローラーによるデータの追加

Simulink モデルの Stateflow チャートに関数またはステートを親とするデータを追加するには、モデル エクスプローラーを使用します。

  1. [モデル化] タブの [データの設計] で、[モデル エクスプローラー] を選択します。

  2. [モデルの階層構造] ペインで、可視化対象の新規データがある Stateflow 階層のオブジェクトを選択します。選択したオブジェクトは、新しいデータの親になります。

  3. モデル エクスプローラーのツールストリップで、[データの追加] ボタンを選択します。あるいは、モデル エクスプローラーのメニューで、[追加][データ] を選択します。既定の定義が設定された新しいデータが、モデル エクスプローラーの [コンテンツ] ペインに表示されます。

  4. [データ] ペインで、データのプロパティを指定します。詳細については、データ プロパティの設定を参照してください。

ヒント

以下のタイプの関数では、ローカル データまたは一時データを明示的に作成する必要はありません。

  • MATLAB をアクション言語として使用するチャート内のグラフィカル関数

  • MATLAB をアクション言語として使用する真理値表関数

  • MATLAB 関数

代わりに、これらの関数では、未定義の変数を使用して、関数呼び出しの残りの部分でのみアクセス可能な値を格納できます。関数の呼び出し全体で維持される値を格納するには、チャート レベルでローカル データを使用します。あるいは、MATLAB 関数では、キーワード persistent を使用できます。

チャートでデータを使用する場合のベスト プラクティス

Simulink ブロックから出力データ プロパティを継承することは避ける

Stateflow 出力データが出力信号からプロパティを継承するよう設定することは避けてください。この設定では、値が Simulink ブロックから逆伝播され、予期しない結果が返される可能性があります。

インプレース データを使用した、より効率的なコードの生成

"インプレース データ" を使用することで、Stateflow チャート、真理値表、および状態遷移表の生成コードのパフォーマンスを向上させ、メモリ フットプリントを削減することができます。インプレース データは、チャート入力とチャート出力に同じデータ名を使用する場合に作成します。チャートからコードを生成すると、生成コードは入出力データを参照渡しされた単一のインプレース引数として処理します。インプレース データを使用すると、生成コードが中間データをコピーする回数が減少するため、コードがより効率的になります。

入力データと出力データが同じ名前である場合、入力データのプロパティのみを編集できます。出力データのプロパティは読み取り専用です。

関連するトピック