Создайте объекты данных для генерации кода с мастером объекта данных

Чтобы задать опции генерации кода для сигнальных линий, параметров блоков и состояний в модели, можно использовать объекты данных, которые вы храните в словаре данных или рабочей области. Для основной информации об объектах данных смотрите Объекты данных (Simulink).

Можно использовать Мастер Объекта данных, чтобы создать объекты данных для:

  • Новые или существующие модели, которые не используют объекты данных.

  • Существующие модели, на которые вы добавили сигнальные линии или блоки.

В этом примере показано, как использовать Мастер Объекта данных, чтобы создать и сконфигурировать объекты данных для генерации кода от встроенного пакета Simulink.

Создайте объекты данных

Откройте модель rtwdemo_basicsc в качестве примера.

open_system('rtwdemo_basicsc')

Модель создает числовые переменные в базовом рабочем пространстве. Блоки в использовании модели эти переменные, чтобы установить значения параметров (такие как параметр Усиления блока Gain). Некоторые сигналы и состояния блока в модели имеют явные имена, такие как input1.

На вкладке Modeling, в соответствии с Проектом, нажимают Data Object Wizard.

В Мастере Объекта данных нажмите Find. Мастер предлагает создание Simulink.Parameter объекты заменить переменные и создание Simulink.Signal объекты представлять сигналы и состояния.

Мастер находит только сигналы, параметры, хранилища данных, и утверждает, чей класс памяти установлен в Auto. Например, если вы используете диалоговое окно Signal Properties, чтобы задать класс памяти кроме Auto для сигнальной линии мастер не предлагает объект данных.

Нажмите Select All.

Нажмите Create. Объекты данных появляются в базовом рабочем пространстве.

Для получения дальнейшей информации об опциях, которые можно выбрать в Мастере Объекта данных, смотрите, Создают Объекты данных для Модели Используя Мастер Объекта данных (Simulink).

Установите класс памяти для объектов данных

Классы памяти определяют, как сгенерированный код использует переменные, чтобы представлять сигналы, параметры и состояния. Для объектов данных от встроенного пакета Simulink, классом памяти по умолчанию является Auto. Чтобы задать классы памяти для новых объектов данных, используйте Model Explorer.

Откройте Model Explorer.

В панели Иерархии модели выберите Base Workspace.

В панели Содержимого, от выпадающего Представления Столбца списка, выбирают Storage Class.

Выберите все новые объекты данных. Например, выберите объект input1, содержите Сдвиг и выберите объект X.

Установите свойство StorageClass для всех объектов данных к ExportToFile. Изменить класс памяти для всех выбранных объектов, в столбце StorageClass, нажатии кнопки любом из объектов. В выпадающем списке выберите ExportToFile. Изменение, которое вы вносите, распространяет ко всем выбранным объектам.

Задайте HeaderFile свойство для всех объектов как myExportedHdrFile.h.

В модели, Параметры конфигурации набора> Генерация кода> Системный конечный файл к ert.tlc. С этой установкой генератор кода соблюдает классы памяти, такие как ExportToFile.

Сгенерируйте и смотрите код

Сгенерируйте код из модели.

### Starting build procedure for: rtwdemo_basicsc
### Successful completion of build procedure for: rtwdemo_basicsc

В отчете генерации кода просмотрите сгенерированный файл myExportedHdrFile.h. Файл содержит extern объявления для глобальных переменных, которые соответствуют объектам данных.

/* Exported data declaration */

/* Declaration for custom storage class: ExportToFile */
extern int8_T K1;                      /* Referenced by: '<Root>/Gain' */
extern real_T K2;                  /* Referenced by: '<Root>/Stateflow Chart' */
extern real32_T LOWER;                 /* Referenced by: '<Root>/Constant2' */
extern real32_T T1Break[11];           /* Referenced by: '<Root>/Table1' */
extern real32_T T1Data[11];            /* Referenced by: '<Root>/Table1' */
extern real32_T T2Break[3];            /* Referenced by: '<Root>/Table2' */
extern real32_T T2Data[9];             /* Referenced by: '<Root>/Table2' */
extern real32_T UPPER;                 /* Referenced by: '<Root>/Constant1' */
extern real32_T X;                     /* '<Root>/Delay' */
extern real32_T input1;                /* '<Root>/In1' */
extern real32_T input2;                /* '<Root>/In2' */
extern real32_T input3;                /* '<Root>/In3' */
extern real32_T input4;                /* '<Root>/In4' */
extern boolean_T mode;                 /* '<Root>/Data Store Memory' */
extern real32_T output;                /* '<Root>/Stateflow Chart' */

Просмотрите файл rtwdemo_basicsc.c. Файл содержит определения для глобальных переменных. Код присваивает числовые значения для переменных, которые соответствуют объектам параметра.

/* Exported data definition */

/* Definition for custom storage class: ExportToFile */
int8_T K1 = 2;                         /* Referenced by: '<Root>/Gain' */
real_T K2 = 3.0;                   /* Referenced by: '<Root>/Stateflow Chart' */
real32_T LOWER = -10.0F;               /* Referenced by: '<Root>/Constant2' */
real32_T T1Break[11] = { -5.0F, -4.0F, -3.0F, -2.0F, -1.0F, 0.0F, 1.0F, 2.0F,
  3.0F, 4.0F, 5.0F } ;                 /* Referenced by: '<Root>/Table1' */

real32_T T1Data[11] = { -1.0F, -0.99F, -0.98F, -0.96F, -0.76F, 0.0F, 0.76F,
  0.96F, 0.98F, 0.99F, 1.0F } ;        /* Referenced by: '<Root>/Table1' */

real32_T T2Break[3] = { 1.0F, 2.0F, 3.0F } ;/* Referenced by: '<Root>/Table2' */

real32_T T2Data[9] = { 4.0F, 16.0F, 10.0F, 5.0F, 19.0F, 18.0F, 6.0F, 20.0F,
  23.0F } ;                            /* Referenced by: '<Root>/Table2' */

real32_T UPPER = 10.0F;                /* Referenced by: '<Root>/Constant1' */
real32_T X;                            /* '<Root>/Delay' */
real32_T input1;                       /* '<Root>/In1' */
real32_T input2;                       /* '<Root>/In2' */
real32_T input3;                       /* '<Root>/In3' */
real32_T input4;                       /* '<Root>/In4' */
boolean_T mode;                        /* '<Root>/Data Store Memory' */
real32_T output;                       /* '<Root>/Stateflow Chart' */

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

|

Похожие темы