Чтобы задать опции генерации кода для сигнальных линий, параметров блоков и состояний в модели, можно использовать объекты данных, которые вы храните в словаре данных или рабочей области. Для основной информации об объектах данных смотрите Объекты данных (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' */
Simulink.Parameter
| Simulink.Signal