Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

Stateflow データの型の指定

"データ型" という用語は、コンピューターによるメモリ内の情報の表現方法を指しています。データに割り当てられるストレージ量、2 進数パターンによるデータ値のエンコード方式、およびデータ操作に使用できる演算は、このデータ型で決まります。

データ型アシスタントを使用したデータ型の指定

データ オブジェクトの型は、[プロパティ インスペクター] またはモデル エクスプローラーで指定できます。[型] フィールドで、ドロップダウン リストから型を選択するか、データ型として評価される式を入力します。詳細については、データ プロパティの設定を参照してください。

あるいは、データ型アシスタントを使用してデータの [モード] を指定し、そのモードに基づいてデータ型を選択します。

  1. モデル エクスプローラーの [データ] ペインで、[データ型アシスタントを表示] ボタン をクリックします。

  2. ドロップダウン リストから [モード] を選択します。使用可能なモードのリストは、データ オブジェクトのスコープによって異なります。

    スコープモード
    ローカル継承 (MATLAB® をアクション言語として使用するチャートでのみ使用可能)、組み込み固定小数点列挙型バス オブジェクト
    定数組み込み固定小数点
    パラメーター継承組み込み固定小数点列挙型バス オブジェクト
    入力継承組み込み固定小数点列挙型バス オブジェクト
    出力継承組み込み固定小数点列挙型バス オブジェクト
    データ ストア メモリ継承

  3. モードに基づいて追加情報を指定します。データ型アシスタントでは、指定に基づいて [型] フィールドに値が入力されます。

    モードデータ型
    継承

    データ型は指定できません。データ オブジェクトに対して選択したスコープに基づいてデータ型を継承します。

    詳細については、Simulink オブジェクトからのデータ型の継承を参照してください。

    組み込み

    サポートされているデータ型のドロップダウン リストからデータ型を指定します。

    • double: 64 ビット倍精度浮動小数点。

    • single: 32 ビット単精度浮動小数点。

    • half: 半精度データ型は 16 ビットのメモリを占有しますが、その浮動小数点表現を使ってこのデータ型で同じサイズの整数データ型または固定小数点データ型よりも広いダイナミック レンジを処理できます。Simulink の半精度データ型 (Fixed-Point Designer)を参照してください。

    • int64: 64 ビット符号付き整数。

    • int32: 32 ビット符号付き整数。

    • int16: 16 ビット符号付き整数。

    • int8: 8 ビット符号付き整数。

    • uint64: 64 ビット符号なし整数。

    • uint32: 32 ビット符号なし整数。

    • uint16: 16 ビット符号なしの整数。

    • uint8: 8 ビット符号なしの整数。

    • boolean: ブール値 (1 = true、0 = false)。

    • ml: MATLAB 配列 mxArray によって内部的にデータ型が設定されます。C をアクション言語として使用するチャートでのみサポートされます。ml データ型は、Stateflow データに MATLAB 環境の利点をもたらします。具体的には、MATLAB 変数に対して Stateflow データ オブジェクトを割り当てたり、割り当てたデータ オブジェクトを MATLAB 関数に対して引数として渡したりすることが可能になります。ml データには、Stateflow 階層の範囲外のスコープを設定できません。つまり、[入力][出力] のスコープを設定することはできません。詳細については、ml データ型を参照してください。

    • string: string。詳細については、string を使用したテキスト情報の管理を参照してください。

    固定小数点

    固定小数点データに関する次の情報を指定します。

    • 符号属性: データが符号付きか符号なしか

    • 語長: 量子化された整数をもつ語のビット サイズ。長いワード サイズは短いワード サイズに比べてよい精度で大きな値を表します。既定値は 16 です。

    • スケーリング: オーバーフローを避け、量子化誤差を最小限に抑えるための固定小数点データのスケーリング方法。既定の方法は [2 進小数点] です。

    詳細については、固定小数点データのプロパティを参照してください。

    列挙型

    列挙データ型に対するクラス名を指定します。詳細については、列挙データ型の定義を参照してください。

    バス オブジェクト

    Stateflow® バス オブジェクト構造に関連付ける Simulink.Bus オブジェクトの名前を指定します。型エディターで [編集] をクリックして、バス オブジェクトを作成または編集します。バス オブジェクトのプロパティは、Simulink 信号から継承することも可能です。

    データ型として評価される式を指定します。次のいずれかの式を使用します。

    詳細については、MATLAB 式を使用したデータ プロパティの指定を参照してください。

  4. データ型設定を保存するには、[適用] をクリックします。

データ型アシスタントは、モデル エクスプローラー経由でのみ使用できます。

Simulink オブジェクトからのデータ型の継承

[継承: Simulink と同じ][型] ドロップダウン リストから選択すると、スコープが [入力][出力][パラメーター][データ ストア メモリ] であるデータ オブジェクトは、データ型を Simulink オブジェクトから継承します。

スコープ説明
入力チャートの対応する入力端子に接続された Simulink 入力信号からデータ型を継承します。
出力

チャートの対応する出力端子に接続された Simulink 出力信号からデータ型を継承します。

出力信号からデータ型を継承することは避けてください。Simulink ブロックから逆伝播する値は予測不能になる可能性があります。

パラメーターマスク サブシステムの対応する MATLAB ベース ワークスペース変数または Simulink パラメーターからデータ型を継承します。
データ ストア メモリ対応する Simulink データ ストアからデータ型を継承します。

オブジェクトが継承するデータ型を特定するには、次を行います。

  1. Simulink モデルを作成します。

  2. モデル エクスプローラーを開きます。

  3. [コンテンツ] ペインで、[CompiledType] 列を調べます。

他のデータ オブジェクトからのデータ型の派生

type 演算子を使用すると、他の Stateflow データ オブジェクトからデータ型を派生させることができます。たとえば、モデル sf_bus_demo は次の式を使用することにより、入力構造体 inbus のデータ型を使用してローカル構造体 counterbus_struct のデータ型を定義します。

type(inbus)

Model Explorer showing the specification for the data object counterbus_struct.

inbus の型は Simulink.Bus オブジェクト COUNTERBUS から派生されるため、counterbus_struct のデータ型も COUNTERBUS から派生されます。モデルのコンパイル後、モデル エクスプローラーの [CompiledType] 列には、コンパイル済みのシミュレーション アプリケーションで使用される型が表示されます。

この例の詳細については、Stateflow チャートのカスタム構造体の統合を参照してください。

Simulink エイリアスを使用したデータ型の指定

Simulink データ型エイリアスを使用することで、Stateflow データのデータ型を指定できます。詳細については、Simulink.AliasType (Simulink) を参照してください。

たとえば、組み込みのデータ型 single に対応するデータ型エイリアス MyFloat を定義するとします。MATLAB コマンド プロンプトで、次のように入力します。

MyFloat = Simulink.AliasType;
MyFloat.BaseType = "single";

このエイリアスを使用してデータ オブジェクトの型を指定するには、[プロパティ インスペクター] またはモデル エクスプローラーでオブジェクトを選択します。[型] フィールドにエイリアス名 MyFloat を入力します。

モデルの作成後、モデル エクスプローラーの [CompiledType] 列には、コンパイル済みのシミュレーション アプリケーションで使用されるデータ型が表示されます。

メモ

いずれかのデータがエイリアス型を使用していて可変サイズである場合、Stateflow ブロックではコード生成はサポートされません。この制限は、チャートレベルの入力データ、出力データ、またはローカル データには適用されません。可変サイズ データの定義の詳細については、Stateflow チャートでの可変サイズ データの宣言を参照してください。

参考

(Simulink) | (Simulink) | (Simulink)

関連するトピック