ドキュメンテーション

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

Stateflow 構造体の定義

構造体の入出力の定義

Simulink バス信号による Stateflow 構造体のインターフェイス設定

Stateflow® 構造体の入力を操作するには、一致するプロパティが設定されている任意の Simulink® バス信号を使用します。同様に、Stateflow チャートは、バス信号を受け入れる Simulink ブロックに構造体を出力できます。

Stateflow チャートで入出力を作成するには、以下の手順に従います。

  1. ベース ワークスペース内に Simulink バス オブジェクトを作成し、実際の Stateflow チャートに応じて構造体の型を定義します。

    Simulink バス オブジェクトを作成する方法の詳細は、Simulink ドキュメンテーションの Simulink.Bus を参照してください。

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

  3. モデル エクスプローラーで、「モデル エクスプローラーによるデータの追加方法」 の説明に従って、データ オブジェクトを追加します。

    モデル エクスプローラーはデータ オブジェクトを追加して、右側のダイアログ ペインに [プロパティ] ダイアログ ボックスを表示します。

  4. [プロパティ] ダイアログ ボックスの [名前] フィールドに、構造体データの名前を入力します。

  5. [スコープ] フィールドで、[入力] または [出力] を選択します。

  6. [データ型] フィールドで、以下のガイドラインに従って、[継承:Simulink と同じ][Bus:<object name>] または [<data type expression>] を選択します。

    種類有効なスコープ要件
    Inherit:Same as Simulink入力

    値を指定する必要はありません。データ型は、データ オブジェクト用に選択したスコープに基づいて、事前定義データから継承されます。

    モデル内で Simulink バス信号が Stateflow 構造体の入力に接続している必要があります。

    Simulink バス信号は非バーチャル バスでなければなりません (「バーチャル バスと非バーチャル バスの取り扱い」を参照)。

    Stateflow 構造体の入力に接続しているモデル内のバス信号と同じプロパティで、ベース ワークスペース内に Simulink.Bus オブジェクトを指定しなければなりません。以下のプロパティが一致していなければなりません。

    • 入力値の数、名前、および型

    • 次元

    • サンプル時間

    • 実数/複素数

    • サンプリング モード

    入力信号が Bus Creator ブロックから派生している場合は、[Bus Creator] ダイアログ ボックスの [出力データ型] オプションで適切なバス オブジェクトを指定しなければなりません。バス オブジェクトを指定すると、Simulink によって、ベース ワークスペース内の Simulink.Bus オブジェクトのプロパティが Simulink バス信号のプロパティと一致していることが検証されます。

    Bus:<object name>[入力] または [出力]

    Stateflow 構造体を定義するベース ワークスペース内の Simulink.Bus オブジェクトの名前で [データ型] フィールドの <object name> を置き換えます。以下に例を示します。 Bus: inbus.

      メモ:    Simulink モデル内のバス信号を指定して、Stateflow 構造体の入力または出力に接続する必要はありません。ただし、バス信号を指定する場合は、そのプロパティが、Stateflow 構造体の入力または出力を定義する Simulink.Bus オブジェクトと一致している必要があります。

    <date type expression>[入力] または [出力]データ型式として評価される式で [データ型] フィールドの <data type expression> を置き換えます。

    以下のガイドラインに従って、式を入力します。

    • 構造体の入力の場合は、Stateflow type 演算子を使用して、式による構造体の型の定義 の説明に従って、Stateflow チャートで定義された別の構造体の型に基づいて構造体の型を割り当てます。

        メモ:    type 演算子は、構造体の出力 (スコープが [出力] の構造体) に対して使用できません。

    • 構造体の入力または出力では、Stateflow 構造体を定義するベース ワークスペース内の Simulink.Bus オブジェクトの名前を入力できます。

  7. [適用] をクリックします。

バーチャル バスと非バーチャル バスの取り扱い

Simulink モデルは、バーチャル バスと非バーチャル バスをサポートしています。バーチャル バスが不連続メモリから入力値を読み取るのに対して、非バーチャル バスは不連続メモリに格納されたデータ構造体から入力値を読み取ります (Simulink ドキュメンテーションの 「バーチャル バスと非バーチャル バス」 を参照)。

Stateflow チャートは、非バーチャル バスのみをサポートしています。Simulink モデルに Stateflow 構造体の入力と出力が含まれている場合は、Stateflow チャートでの使用を目的として、非表示のコンバーター ブロックがバス信号を以下のように変換します。

  • バーチャル バスの入力信号を Stateflow 構造体の入力用に非バーチャル バス信号に変換

  • Stateflow チャートからの非バーチャル バスの出力信号をバーチャル バス信号に変換 (必要な場合)

この変換処理によって Stateflow チャートはバーチャル バスと非バーチャル バスを入力として受け入れ可能になりますが、Stateflow 構造体はバーチャル バスの入力信号からプロパティを継承できません。チャートへの入力がバーチャル バスに該当する場合は、Simulink バス信号による Stateflow 構造体のインターフェイス設定 の説明に従って、Stateflow バスの入力データ型モードを [バス オブジェクト] に設定しなければなりません。

ローカル構造体の定義

ローカル構造体を定義するには、以下の手順に従います。

  1. ベース ワークスペース内に Simulink バス オブジェクトを作成し、実際の Stateflow チャートに応じて構造体の型を定義します。

    Simulink バス オブジェクトを作成する方法の詳細は、Simulink リファレンス ドキュメンテーションの Simulink.Busを参照してください。

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

  3. モデル エクスプローラーで、「モデル エクスプローラーによるデータの追加方法」 の説明に従って、データ オブジェクトを追加します。

    モデル エクスプローラーはデータ オブジェクトを追加して、右側のダイアログ ペインに [プロパティ] ダイアログ ボックスを表示します。

  4. [プロパティ] ダイアログ ボックスの [名前] フィールドに、構造体データの名前を入力します。

  5. [スコープ] フィールドで [ローカル] を選択します。

  6. [タイプ] フィールドで [Bus:<object name>] または [<data type expression>] のいずれかを選択し、次のように式を指定します。

    タイプ指定する項目
    Bus:<object name>

    Stateflow 構造体を定義するベース ワークスペース内の Simulink.Bus オブジェクトの名前で [データ型] フィールドの <object name> を置き換えます。以下に例を示します。 Bus: inbus.

    <date type expression>データ型式として評価される式で [データ型] フィールドの <data type expression> を置き換えます。

    以下のいずれかの式を入力できます。

    • Stateflow type 演算子を使用して、式による構造体の型の定義 の説明に従って、Stateflow チャートで定義された別の構造体の型に基づいて構造体の型を割り当てます。

    • Stateflow 構造体を定義するベース ワークスペース内の Simulink.Bus オブジェクトの名前を入力します。

  7. [適用] をクリックします。

パラメーター スコープの構造体を定義

パラメーター スコープの構造体を以下のように定義します。

  1. ベース ワークスペース内に Simulink バス オブジェクトを作成し、実際のチャートに応じて構造体の型を定義します。

    Simulink バス オブジェクトを作成する方法の詳細は、Simulink リファレンス ドキュメンテーションの Simulink.Busを参照してください。

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

  3. モデル エクスプローラーで、「モデル エクスプローラーによるデータの追加方法」 の説明に従って、データ オブジェクトを追加します。

    モデル エクスプローラーはデータ オブジェクトを追加して、右側のダイアログ ペインに [プロパティ] ダイアログ ボックスを表示します。

  4. [プロパティ] ダイアログ ボックスの [名前] フィールドに、構造体データの名前を入力します。

  5. [スコープ] フィールドで [パラメーター] を選択します。

  6. [タイプ] フィールドで [Bus:<object name>] または [<data type expression>] のいずれかを選択し、次のように式を指定します。

    タイプ指定する項目
    Bus:<object name>

    Stateflow 構造体を定義するベース ワークスペース内の Simulink.Bus オブジェクトの名前で [データ型] フィールドの <object name> を置き換えます。以下に例を示します。 Bus: inbus.

    <date type expression>データ型式として評価される式で [データ型] フィールドの <data type expression> を置き換えます。

    以下のいずれかの式を入力できます。

    • Stateflow type 演算子を使用して、式による構造体の型の定義 の説明に従って、Stateflow チャートで定義された別の構造体の型に基づいて構造体の型を割り当てます。

    • Stateflow 構造体を定義するベース ワークスペース内の Simulink.Bus オブジェクトの名前を入力します。

  7. [適用] をクリックします。

    ティップ   パラメーター スコープをもつ Stateflow 構造体は調整可能でなければなりません。調整が確実に可能になるようにするには、[モデル コンフィギュレーション パラメーター] ダイアログ ボックスを開き、[最適化]、[信号とパラメーター] ペインにある [インライン パラメーター] チェック ボックスをオフにします。この場合構造体の各要素は調整可能です。

    詳細は、Simulink ドキュメンテーションの 「調整可能パラメーター」 を参照してください。

一時構造体の定義

一時構造体は、Stateflow チャートの真理値表、グラフィカル関数、および MATLAB® 関数内で定義できます。

一時構造体を定義するには、以下の順序に従います。

  1. ベース ワークスペース内に Simulink バス オブジェクトを作成し、実際のチャートに応じて構造体の型を定義します。

    Simulink バス オブジェクトを作成する方法の詳細は、『Simulink リファレンス』ドキュメンテーションの Simulink.Busを参照してください。

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

  3. モデル エクスプローラーで、「モデル エクスプローラーによるデータの追加方法」 の説明に従って、データ オブジェクトを関数に追加します。

    モデル エクスプローラーはデータ オブジェクトを追加して、右側のダイアログ ペインに [プロパティ] ダイアログ ボックスを表示します。

  4. [プロパティ] ダイアログ ボックスの [名前] フィールドに、構造体データの名前を入力します。

  5. [スコープ] フィールドで [一時] を選択します。

  6. [タイプ] フィールドで [Bus:<object name>] または [<data type expression>] のいずれかを選択し、次のように式を指定します。

    タイプ指定する項目
    Bus:<object name>

    Stateflow 構造体を定義するベース ワークスペース内の Simulink.Bus オブジェクトの名前で [データ型] フィールドの <object name> を置き換えます。以下に例を示します。 Bus: inbus.

    <date type expression>データ型式として評価される式で [データ型] フィールドの <data type expression> を置き換えます。

    以下のいずれかの式を入力できます。

    • Stateflow type 演算子を使用して、式による構造体の型の定義 の説明に従って、Stateflow チャートで定義された別の構造体の型に基づいて構造体の型を割り当てます。

    • Stateflow 構造体を定義するベース ワークスペース内の Simulink.Bus オブジェクトの名前を入力します。

  7. [適用] をクリックします。

式による構造体の型の定義

Stateflow type 演算子を呼び出す式を使用して、構造体の型を定義できます。この演算子は、Stateflow チャートで定義された別の構造体の型に基づいて、構造体の型を割り当てます。たとえば、モデル sfbus_demosfbus_demo には、以下のように、type 演算子式を使用して型が定義されるローカル構造体が含まれています。

この場合、構造体 counterbus_struct には、Simulink.Bus オブジェクト COUNTERBUS によって定義された構造体 inbus から派生した型が設定されます。このため、構造体 counterbus_struct もバス オブジェクト COUNTERBUS によって定義されます。

Stateflow type 演算子を使用する方法の詳細は、事前定義データからのデータ型の導出 を参照してください。

この情報は役に立ちましたか?