Вложенные структуры сигналов

Можно создать вложенные структуры данных сигнала в сгенерированном коде.

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

2. Чтобы сконфигурировать блок Bus Creator, чтобы принять три входных параметров, в диалоговом окне блока, определяют Номер входных параметров к 3.

3. В панели инструментов, на вкладке Modeling, в соответствии с Проектом, нажимают Bus Editor.

Используйте Редактор Шины, чтобы создать Simulink.Bus возразите названному A_struct_type это содержит два элемента сигнала: subStruct_B и subStruct_C. Чтобы создать объекты шины с Редактором Шины, смотрите, Создают и Задают Simulink. Соедините шиной Объекты (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: A_struct_type и выберите Output как невиртуальную шину. Нажать ОК.

10. На вкладке Modeling нажмите Model Data Editor.

11. В Model Data Editor, на вкладке Signals, от представления Change выпадающий список, выбирают Code.

12. В модели кликните по выходному сигналу A_struct_type Соедините шиной блок 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 Блоком Creator шины является Bus Creator2.

/* Exported block signals */
A_struct_type sig_struct_var;          /* '<Root>/Bus Creator2' */

В том же файле, в модели step функция, доступы к алгоритму sig_struct_var и поля sig_struct_var.

Смотрите также

Похожие темы