Можно создать вложенные структуры данных сигнала в сгенерированном коде.
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 с блоками Усиления, блоками Создателя Шины и блоком Unit Delay. Блоки Усиления и Единичной задержки делают структуру более идентифицирующейся в сгенерированном коде.

2. Чтобы сконфигурировать блок Bus Creator, чтобы принять три входных параметров, в диалоговом окне блока, определяют Номер входных параметров к 3.
3. В модели выберите Edit> Bus Editor.
Используйте Редактор Шины, чтобы создать объект Simulink.Bus под названием A_struct_type, который содержит два элемента сигнала: subStruct_B и subStruct_C. Чтобы создать объекты шины с Редактором Шины, смотрите, Создают Объекты Шины с Редактором Шины (Simulink). Этот объект шины представляет тип структуры верхнего уровня, который вы хотите, чтобы сгенерированный код использовал.
4. Для элемента subStruct_B, набор DataType к Bus: B_struct_type. Используйте подобное имя типа для subStruct_C.

Каждый элемент сигнала в A_struct_type использует другой объект шины в качестве типа данных. Теперь, эти элементы представляют подструктуры.
5. Используйте Редактор Шины, чтобы создать объекты Simulink.Bus B_struct_type (с тремя элементами сигнала) и C_struct_type (с двумя элементами сигнала).

6. В диалоговом окне блока Bus Creator, который собирает три сигнала Усиления, тип Выходных данных набора к Bus: B_struct_type. Нажмите Apply.
7. Выберите Output как невиртуальную шину и нажмите ОК.
8. В диалоговом окне другого зависимого блока Bus Creator Выходные данные набора вводят к Bus: C_struct_type и выбирают Output как невиртуальную шину. Нажать ОК.
9. В последнем диалоговом окне блока Bus Creator Выходные данные набора вводят к Bus: A_struct_type и выбирают Output как невиртуальную шину. Нажать ОК.
10. В модели выберите View> Model Data Editor.
11. В Model Data Editor, на вкладке Signals, от представления Change выпадающий список, выбирают Code.
12. В модели кликните по выходному сигналу блока A_struct_type Bus Creator, который питает блок Unit Delay.
13. В Model Data Editor, для вывода блока Bus Creator, определенного Имени к sig_struct_var.
14. Установите Класс памяти на ExportedGlobal. С этой установкой вывод блока Bus Creator появляется в сгенерированном коде как отдельная глобальная переменная структуры под названием sig_struct_var.
15. Сгенерируйте код из модели.
Сгенерированный заголовочный файл 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.