信号の入れ子にされた構造体
生成されたコードで信号データの入れ子にされた構造体を作成できます。
C 構成要素
typedef struct {
double signal1;
double signal2;
double signal3;
} B_struct_type;
typedef struct {
double signal1;
double signal2;
} C_struct_type;
typedef struct {
B_struct_type subStruct_B;
C_struct_type subStruct_C;
} A_struct_type;
手順
モデルで構造体型を表すには、Simulink.Bus オブジェクトを作成します。このオブジェクトをモデル内のバスのデータ型として使用します。
別の構造体内に構造体を入れ子にするには、別のバス オブジェクト内でバス オブジェクトを要素のデータ型として使用します。
1. ex_signal_nested_struct モデルを Gain ブロック、Bus Creator ブロック、Unit Delay ブロックで作成します。Gain ブロックと Unit Delay ブロックによって、生成されたコードで構造体がより識別しやすくなります。

3 つの入力を受け入れるように Bus Creator ブロックを設定するには、ブロック ダイアロブ ボックスで [入力数] を 3 に設定します。
2. ツールストリップの [モデル化] タブの [設計] ギャラリーで、[型エディター] をクリックします。
3. 型エディターで、Simulink.Bus オブジェクトを 3 つ作成します。
subStruct_BおよびsubStruct_Cという名前の 2 つの要素を含むA_struct_typeという名前のバス オブジェクトsignal1、signal2、およびsignal3という名前の 3 つの要素を含むB_struct_typeという名前のバス オブジェクトsignal1およびsignal2という名前の 2 つの要素を含むC_struct_typeという名前のバス オブジェクト
A_struct_type という名前のバス オブジェクトは、生成されたコードで使用する最上位構造体型を表します。
バス オブジェクトとその要素の作成方法については、Type Editorを参照してください。
4. A_struct_type オブジェクトで、他のバス オブジェクトをデータ型として使用します。
subStruct_B要素について、[データ型] をBus: B_struct_typeに設定します。subStruct_C要素について、[データ型] をBus: C_struct_typeに設定します。

A_struct_type の各要素は別のバス オブジェクトをデータ型として使用します。これらの要素はサブ構造体を表します。
5. 3 つの Gain ブロックから信号を受け取る Bus Creator ブロックのダイアログ ボックスで、次を行います。
[出力データ型] を
Bus: B_struct_typeに設定します。[非バーチャル バスとして出力] を選択します。
6. 他の下位の Bus Creator ブロックのダイアログ ボックスで、次を行います。
[出力データ型] を
Bus: C_struct_typeに設定します。[非バーチャル バスとして出力] を選択します。
7. 最後の [Bus Creator ブロック] ダイアログ ボックスで、次を行います。
[出力データ型] を
Bus: A_struct_typeに設定します。[非バーチャル バスとして出力] を選択します。
8. Simulink Coder アプリを開きます。[C コード] タブで、[コード インターフェイス]、[個々の要素コードのマッピング] を選択します。
9. [信号/状態] タブを開きます。モデルで、Unit Delay ブロックに接続する A_struct_type Bus Creator ブロックの出力信号を選択します。コード マッピング エディターで、[選択した信号をコード マッピングに追加] ボタンをクリックします。
10. 追加された信号について [ストレージ クラス] を ExportedGlobal に設定します。
11. プロパティ インスペクターで [コード]、[Identifier] プロパティを sig_struct_var に設定します。Bus Creator ブロックの出力は生成されたコードに sig_struct_var という名前の個別のグローバル構造体変数として表示されます。
12. モデルからコードを生成します。
結果
生成されたヘッダー ファイル ex_signal_nested_struct_types.h は構造体型を定義します。各構造体型は Simulink.Bus オブジェクトに対応します。
typedef struct {
real_T signal1;
real_T signal2;
real_T signal3;
} B_struct_type;
typedef struct {
real_T signal1;
real_T signal2;
} C_struct_type;
typedef struct {
B_struct_type subStruct_B;
C_struct_type subStruct_C;
} A_struct_type;
生成されたソース ファイル ex_signal_nested_struct.c はグローバル構造体変数 sig_struct_var にメモリを割り当てます。既定では、A_struct_type Bus Creator ブロックの名前は Bus Creator2 です。
/* Exported block signals */ A_struct_type sig_struct_var; /* '<Root>/Bus Creator2' */
同じファイル内のモデルの関数 step で、アルゴリズムは sig_struct_var と sig_struct_var のフィールドにアクセスします。