Этот пример показывает, как создать структуру данных сигнала в сгенерированном коде.
typedef struct { double signal1; double signal2; double signal3; } my_signals_type;
1. Чтобы представлять тип структуры в модели, создайте объект Simulink.Bus
. Используйте объект в качестве типа данных сигналов шины в вашей модели.
2. Создайте модель ex_signal_struct
при помощи блоков Усиления, блока Bus Creator и блока Unit Delay. Блоки Усиления и Единичной задержки делают структуру более идентифицирующейся в сгенерированном коде.
3. Чтобы сконфигурировать блок Bus Creator, чтобы принять три входных параметров, в диалоговом окне блока, определяют Номер входных параметров к 3
.
4. В модели выберите Edit> Bus Editor.
5. Используйте Редактор Шины, чтобы создать объект Simulink.Bus
под названием my_signals_type
, который содержит три элемента сигнала: signal1
, signal2
и signal3
. Смотрите Создают Объекты Шины с Редактором Шины (Simulink).
Этот объект шины представляет тип структуры, который вы хотите, чтобы сгенерированный код использовал.
6. В диалоговом окне блока Bus Creator Выходные данные набора вводят к Bus: my_signals_type
.
7. Выберите Output как невиртуальную шину. Нажать ОК. Невиртуальная шина появляется в сгенерированном коде как структура.
8. В модели выберите View> Model Data Editor. В Model Data Editor, на вкладке Signals, от представления Change выпадающий список, выбирают Code
.
9. В модели кликните по выходному сигналу блока Bus Creator.
10. В Model Data Editor, для вывода блока Bus Creator, определенного Имени к sig_struct_var
.
11. Установите Класс памяти на ExportedGlobal
. Вывод блока Bus Creator появляется в сгенерированном коде как отдельная глобальная переменная структуры под названием sig_struct_var
.
12. Сгенерируйте код из модели.
Сгенерированный заголовочный файл 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
исходного файла выделяет память для глобальной переменной sig_struct_var
, который представляет вывод блока Bus Creator.
/* Exported block signals */ my_signals_type sig_struct_var; /* '<Root>/Bus Creator' */
В том же файле, в функции модели step
, доступы к алгоритму sig_struct_var
и поля sig_struct_var
.