Чтобы задать опции генерации кода для сигнальных линий, параметров блоков и состояний в модели, можно использовать объекты данных, которые вы храните в словаре данных или рабочей области. Для основной информации об объектах данных смотрите Объекты данных (Simulink).
Можно использовать Мастер Объекта данных, чтобы создать объекты данных для:
Новые или существующие модели, которые не используют объекты данных.
Существующие модели, в которые вы добавили сигнальные линии или блоки.
Этот пример показывает, как использовать Мастер Объекта данных, чтобы создать и сконфигурировать объекты данных для генерации кода от встроенного пакета Simulink
.
Откройте модель rtwdemo_basicsc
в качестве примера.
open_system('rtwdemo_basicsc')
Модель создает числовые переменные в базовом рабочем пространстве. Блоки в образцовом использовании эти переменные, чтобы установить значения параметров (такие как параметр Усиления блока Gain). Некоторые сигналы и состояния блока в модели имеют явные имена, такие как input1
.
В модели выберите Code> Data Objects> 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 model: rtwdemo_basicsc ### Successful completion of build procedure for model: rtwdemo_basicsc
В отчете генерации кода просмотрите сгенерированный файл myExportedHdrFile.h
. Файл содержит объявления extern
для глобальных переменных, которые соответствуют объектам данных.
/* Exported data declaration */ /* Declaration for custom storage class: ExportToFile */ extern int8_T K1; extern real_T K2; extern real32_T LOWER; extern real32_T T1Break[11]; extern real32_T T1Data[11]; extern real32_T T2Break[3]; extern real32_T T2Data[9]; extern real32_T UPPER; extern real32_T X; extern real32_T input1; extern real32_T input2; extern real32_T input3; extern real32_T input4; extern boolean_T mode; extern real32_T output;
Просмотрите файл rtwdemo_basicsc.c
. Файл содержит определения для глобальных переменных. Код присваивает числовые значения для переменных, которые соответствуют объектам параметра.
/* Exported data definition */ /* Definition for custom storage class: ExportToFile */ int8_T K1 = 2; real_T K2 = 3.0; real32_T LOWER = -10.0F; 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 } ; 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 } ; real32_T T2Break[3] = { 1.0F, 2.0F, 3.0F } ; real32_T T2Data[9] = { 4.0F, 16.0F, 10.0F, 5.0F, 19.0F, 18.0F, 6.0F, 20.0F, 23.0F } ; real32_T UPPER = 10.0F; real32_T X; real32_T input1; real32_T input2; real32_T input3; real32_T input4; boolean_T mode; real32_T output;
Simulink.Parameter
| Simulink.Signal