exponenta event banner

Структуры сигналов

В этом примере показано, как создать структуру сигнальных данных в сгенерированном коде.

Конструкция C

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

Процедура

Чтобы представить тип структуры в модели, создайте Simulink.Bus объект. Используйте объект в качестве типа данных сигналов шины в модели.

1. Создать ex_signal_struct с помощью блоков усиления, блока создания шины и блока единичной задержки. Блоки усиления и единичной задержки делают структуру более идентифицируемой в сгенерированном коде.

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

3. На панели инструментов на вкладке «Моделирование» в разделе «Проектирование» выберите «Редактор шины».

4. В редакторе шины щелкните Файл > Добавить шину, чтобы создать Simulink.Bus объект и его имя my_signals_type. Щелкните Файл > Добавить/Вставить BusElement, чтобы добавить три сигнальных элемента: signal1, signal2, и signal3. Дополнительные сведения см. в разделе Создание и указание объектов Simulink.Bus.

5. Сохранить объекты шины в текущей папке как ex_signal_struct_data.mat.

Этот объект шины представляет тип структуры, который должен использоваться сгенерированным кодом.

6. В диалоговом окне «Bus Creator block» установите для параметра «Output data type» значение Bus: my_signals_type.

7. Выберите Output как nonvirtual bus. Нажмите кнопку OK. Nonvirtual bus появится в сгенерированном коде в виде структуры.

8. Откройте приложение Simulink Coder. На вкладке C Code выберите Code Interface > Individual Element Code Mappings.

9. Откройте закладку Signals/States (Сигналы/Состояния). В модели выберите выходной сигнал блока Bus Creator и нажмите кнопку Add selected signals to code mappings в редакторе Code Mappings.

11. Для добавленного сигнала установите для параметра Storage Class значение ExportedGlobal.

12. В инспекторе свойств задайте для свойства «Код» > «Идентификатор» значение sig_struct_var. Выходные данные блока Bus Creator отображаются в сгенерированном коде как отдельная глобальная структурная переменная с именем sig_struct_var.

13. Создайте код из модели.

Результаты

Созданный файл заголовка 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.

См. также

Связанные темы