Main Content

信号の構造体

この例では、生成されたコードで信号データの構造体を作成する方法を示します。

C コンストラクター

typedef struct {
   double signal1;
   double signal2;
   double signal3;
} my_signals_type;

手順

モデルで構造体型を表すには、Simulink.Bus オブジェクトを作成します。このオブジェクトをモデル内のバスのデータ型として使用します。

1. ex_signal_struct モデルを Gain ブロック、Bus Creator ブロック、Unit Delay ブロックを使用して作成します。Gain ブロックと Unit Delay ブロックによって、生成されたコードで構造体がより識別しやすくなります。

2. 3 つの入力を受け入れるように Bus Creator ブロックを設定するには、ブロック ダイアロブ ボックスで [入力数]3 に設定します。

3. ツールストリップの [モデル化] タブの [設計] ギャラリーで、[型エディター] をクリックします。

4. 型エディターで、signal1signal2、および signal3 という名前の要素を含む my_signals_type という名前の Simulink.Bus オブジェクトを作成します。詳細については、Type Editorを参照してください。

5. バス オブジェクトを現在のフォルダーに ex_signal_struct_data.mat として保存します。

このバス オブジェクトは、生成されたコードで使用する構造体型を表します。

6. [Bus Creator ブロック] ダイアログ ボックスで、次を行います。

  • [出力データ型]Bus: my_signals_type に設定します。

  • [非バーチャル バスとして出力] を選択します。非バーチャル バスが生成されたコードに構造体として表示されます。

  • [OK] をクリックします。

7. Simulink Coder アプリを開きます。[C コード] タブで、[コード インターフェイス][個々の要素コードのマッピング] を選択します。

8. [信号/状態] タブを開きます。モデルで Bus Creator ブロックの出力信号を選択し、コード マッピング エディターで [選択した信号をコード マッピングに追加] ボタンをクリックします。

9. 追加された信号について [ストレージ クラス]ExportedGlobal に設定します。

10. プロパティ インスペクターで [コード][Identifier] プロパティを sig_struct_var に設定します。Bus Creator ブロックの出力は生成されたコードに sig_struct_var という名前の個別のグローバル構造体変数として表示されます。

11.モデルからコードを生成します。

結果

生成されたヘッダー ファイル ex_signal_struct_types.h は構造体型 my_signals_type を定義します。

typedef struct {
  real_T signal1;
  real_T signal2;
  real_T signal3;
} my_signals_type;

ソース ファイル ex_signal_struct.c は、Bus Creator ブロックの出力を表すグローバル変数 sig_struct_var にメモリを割り当てます。

/* Exported block signals */
my_signals_type sig_struct_var;        /* '<Root>/Bus Creator' */

同じファイル内のモデルの関数 step で、アルゴリズムは sig_struct_varsig_struct_var のフィールドにアクセスします。

参考

関連するトピック