Объединенные элементы модели с определениями кода
Редактор Отображений Кода является графическим интерфейсом, где можно сконфигурировать элементы данных в модели, исключая модели, на которые ссылаются, для генерации кода. Каждая модель в иерархии модели - ссылки имеет свои собственные отображения кода. Сопоставьте каждую категорию элемента данных модели с определенным классом памяти в модели. Затем замените те настройки, по мере необходимости, для определенных элементов данных.
Класс памяти задает свойства, такие как внешний вид и местоположение, которое генератор кода использует при создании кода для связанных данных.
Чтобы сконфигурировать элементы данных и функции для генерации кода, используйте таблицы в редакторе Отображений Кода отображение:
Data Defaults
Inports
Outports
Parameters
Data Stores
Signals/States
Когда вы выбираете строку в активной таблице, раздел Code Property Inspector отображает настройки свойства класса памяти для выбранного элемента данных.
Прежде чем можно будет сконфигурировать сигнал для генерации кода, добавьте сигнал в отображения типового кодекса. Добавьте и удалите сигналы из отображений кода путем приостановки на замещающем знаке, который, кажется, выше или ниже сигнальной линии открывает строку меню. Нажмите кнопку Add Signal или Remove Signal. Эти кнопки также доступны в редакторе Отображений Кода на вкладке Signals/States.
Выполнить одно из следующих действий:
Откройте приложение Simulink® Coder™. На вкладке C Code выберите Code Interface> Default Code Mappings или Code Interface> Individual Element Code Mappings.
Откройте приложение Simulink Coder. На вкладке C Code, в левом нижнем углу окна Simulink Editor, кликают по вкладке Code Mappings - C.
В холсте модели окна Simulink Editor кликните по перспективному управлению в нижнем правом углу и выберите Code. Затем кликните по вкладке Code Mappings - C.
Сконфигурируйте генерацию кода для корневого уровня Inport и блоки Outport в модели. Применение настроек по умолчанию может сэкономить время, особенно для крупномасштабных моделей, которые используют существенное количество данных. После применения отображений по умолчанию можно настроить отображения для отдельных элементов данных.
Скопируйте внешний файл кода exDblFloat.h
в перезаписываемую папку.
copyfile(fullfile(matlabroot,'toolbox','rtw','rtwdemos','exDblFloat.h'));
Открытая модель rtwdemo_configrpinterface
. Сохраните копию модели в то же местоположение как файл exDblFloat.h
.
Откройте приложение Simulink Coder. Вкладка C Code включает редактор Отображений Кода.
Сконфигурируйте генератор кода, чтобы объявить и задать глобальные переменные для импорта и выходных портов в сгенерированных файлах rtwdemo_configrpinterface.h
и rtwdemo_configrpinterface.c
.
Во вкладке C Code выберите Code Interface> Default Code Mappings.
Во вкладке Data Defaults, под Inports and Outports, выбирают строку для Inports. Затем установите класс памяти на ImportedExternPointer
. Установите класс памяти для Outports к ExportedGlobal
. Редактор обновляет установку класса памяти по умолчанию для двух выбранных категорий элемента данных.
В редакторе Отображений Кода кликните по вкладке Inports. Класс памяти для каждого импорта установлен в Auto
, что означает, что генератор кода может устранить или изменить представление соответствующих норм в целях оптимизации. Если оптимизация не возможна, генератор кода применяет настройку по умолчанию модели.
Обеспечьте генератор кода, чтобы использовать настройку по умолчанию для импорта, которая является классом памяти ImportedExternPointer
. Нажмите клавишу Ctrl и выберите импорт. Для одного из выбранного импорта, набор класс памяти к Model default: ImportedExternPointer
. Редактор обновляет установку класса памяти для выбранного импорта.
Обеспечьте генератор кода, чтобы использовать класс памяти ExportedGlobal
для корневого выходного порта модели. Кликните по вкладке Outports. Выберите строку для Out2
. Затем установите класс памяти на Model default: ExportedGlobal
.
Чтобы сконфигурировать свойства для отдельных элементов данных, например, если необходимо заменить параметры конфигурации по умолчанию, используют вкладки для различных типов элемента данных. В данном примере замените установку класса памяти по умолчанию для блока Inport In1
.
По умолчанию генератор кода называет импорт и переменные выходного порта на основе Inport или имени блока Outport в модели. Когда вы конфигурируете элементы данных с установкой класса памяти кроме Auto
, можно заменить ту настройку по умолчанию для отдельных элементов путем установки свойства Identifier класса памяти. Это свойство позволяет вам задать идентификатор для кода, не изменяя проект модели. В данном примере установите Identifier для блоков Outport и Inport.
В редакторе Отображений Кода кликните по вкладке Inports.
Для In1
, установите класс памяти на ImportedExtern
.
Для каждого импорта выберите строку. Затем в Property Inspector, устанавливает свойство Identifier можно следующим образом:
Установите In1
к input1
.
Установите In2
к input2
.
Установите In3
к input3
.
Установите In4
к input4
.
Нажмите Outports.
Выберите выходной порт Out1
. Затем в Property Inspector, устанавливает свойство Identifier на output
.
Сгенерируйте код и проверьте, что код, сгенерированный для Inport и блоков Output, появляется, как вы ожидаете. Например:
rtwdemo_configrpinterface_private.h
включает эти объявления:
/* Exported data declaration */ /* Data with Imported storage */ extern real_T input1; /* '<Root>/In1' */ extern real_T input2; /* '<Root>/In2' */ extern real_T input3; /* '<Root>/In3' */ extern real_T input4; /* '<Root>/In4' */
rtwdemo_configrpinterface.h
списки output
как поле в структуре output ExtY_rtwdemo_configrpinterfac_T
.
/* External outputs (root outports fed by signals with default storage) */ typedef struct { real_T output; /* '<Root>/Out1' */ } ExtY_rtwdemo_configrpinterfac_T;
Этот фрагмент кода показывает переменную, которая представляет In2
, input2
, быть используемым в сгенерированной ступенчатой функции точки входа для частоты дискретизации 1 секунды.
/* Model step function for TID1 */ void rtwdemo_configrpinterface_step1(void) /* Sample time: [1.0s, 0.0s] */ { /* Lookup_n-D: '<Root>/Table1D' incorporates: * Inport: '<Root>/In2' */ rtwdemo_configrpinterface_B.Table1D = look1_binlcpw(input2, rtwdemo_configrpinterfac_ConstP.Table1D_bp01Data, rtwdemo_configrpinterfac_ConstP.Table1D_tableData, 10U); . . .
Model Element Category
— Категория элементов данных моделиНазывает категорию элементов данных модели Simulink. Класс памяти, который вы устанавливаете для категории, применяется к элементам в той категории в модели.
Категория элемента модели | Описание |
---|---|
Inports | Входные порты корневого уровня модели, такие как Inport и блоки In Bus Element. |
Выходные порты | Выходные порты корневого уровня модели, такие как Outport и блоки Out Bus Element. |
Сигналы, состояния и внутренние данные | Элементы данных, которые являются внутренними к модели, такими как выходные сигналы блока, дискретные состояния блока, хранилища данных и сигналы пересечения нулем. |
Разделяемые локальные хранилища данных | Блоки Data Store Memory, которые имеют параметры блоков набор Share across model instances. Эти хранилища данных доступны только в модели, где они заданы. Значение хранилища данных совместно используется через экземпляры модели. |
Хранилища глобальных данных | Хранилища данных, которые заданы объектом сигнала в базовом рабочем пространстве или в словаре данных. Многоуровневые модели в приложении могут использовать эти хранилища данных. Чтобы просмотреть и сконфигурировать эти хранилища данных в редакторе Отображений Кода, нажмите Refresh соединитесь справа от названия категории. Нажатие на эту ссылку обновляет диаграмму модели. |
Параметры модели | Параметры, которые заданы в модели, такой как параметры в рабочем пространстве модели. Исключает аргументы модели. |
Внешние параметры | Параметры, которые вы задаете как объекты в базовом рабочем пространстве или в словаре данных. Многоуровневые модели в приложении могут использовать эти параметры. Чтобы просмотреть и сконфигурировать эти параметры в редакторе Отображений Кода, нажмите Refresh соединитесь справа от названия категории. Нажатие на эту ссылку обновляет диаграмму модели. |
Редактор Отображений Кода представляет допустимые опции класса памяти для данной категории. Опции могут включать:
Незаданный класс памяти (Default
). Генератор кода помещает код для категории элементов данных в стандартных структурах, таких как B_
, ExtY_
, ExtU_
, DW_
, и P_
. Смотрите структуры данных в сгенерированном коде.
Соответствующие предопределенные классы памяти, такие как ExportedGlobal
.
Соответствующие классы памяти в доступном пакете, такие как ImportFromFile
(требует Embedded Coder®).
Класс памяти задал в Словаре Embedded Coder (требует Embedded Coder).
Storage Class
— Определение кода для элементов данных моделиОпределение (спецификация), что использование генератора кода, чтобы определить свойства, такие как внешний вид и местоположение, для кода, который это производит для элементов данных модели. Допустимыми настройками является Default
, ExportedGlobal
, ImportedExtern
, и ImportedExternPointer
. Смотрите выбирают класс памяти для управления представлением данных в сгенерированном коде.
Source
— Имя блока Inport корневого уровня или элемента шиныИдентифицирует корневой блок Inport или элемент блока In Bus Element (например, InBus1.signal1
) в модели. Если элемент решает к объекту данных, редактор Отображений Кода отображает решимость сигнализировать об объектном значке справа от исходного имени и разрешает настройку на основе того, является ли установкой класса памяти для элемента Auto
. Если классом памяти является Auto
, элемент данных принимает настройку кода, которую задает объект данных. Редактор изменяет текст отображения в столбце Storage Class к From signal object:
сопровождаемый под названием класс памяти объекта данных. Если классом памяти не является Auto
, элемент данных принимает настройку, которую вы задаете в редакторе Отображений Кода.
Storage Class
— Определение кода для корневого импортаОпределение, что использование генератора кода, чтобы определить свойства, такие как внешний вид и местоположение, для кода, который это производит для корневого импорта. Допустимыми настройками является Auto
, Model default
, ExportedGlobal
, ImportedExtern
, и ImportedExternPointer
. Смотрите выбирают класс памяти для управления представлением данных в сгенерированном коде.
Source
— Имя корневого блока Outport или элемента шиныИдентифицирует блок Outport корневого уровня или элемент блока Out Bus Element (например, OutBus1.signal1
) в модели. Если элемент решает к объекту данных, редактор Отображений Кода отображает решимость сигнализировать об объектном значке справа от исходного имени и разрешает настройку на основе того, является ли установкой класса памяти для элемента Auto
. Если классом памяти является Auto
, элемент данных принимает настройку кода, которую задает объект данных. Редактор изменяет текст отображения в столбце Storage Class к From signal object:
сопровождаемый под названием класс памяти объекта данных. Если классом памяти не является Auto
, элемент данных принимает настройку, которую вы задаете в редакторе Отображений Кода.
Storage Class
— Определение кода для корневого выходного портаОпределение, что использование генератора кода, чтобы определить свойства, такие как внешний вид и местоположение, для кода, который это производит для корневого выходного порта. Допустимыми настройками является Auto
, Model default
, ExportedGlobal
, ImportedExtern
, и ImportedExternPointer
. Смотрите выбирают класс памяти для управления представлением данных в сгенерированном коде.
Source
— Имя аргумента параметра модели, параметра модели или внешнего параметраИдентифицирует параметр в модели. Если элемент решает к объекту данных, редактор Отображений Кода отображает твердость к значку объекта параметра справа от исходного имени и разрешает настройку на основе того, является ли установкой класса памяти для элемента Auto
. Если классом памяти является Auto
, элемент данных принимает настройку кода, которую задает объект данных. Редактор изменяет текст отображения в столбце Storage Class к From parameter object:
сопровождаемый под названием класс памяти объекта данных. Если классом памяти не является Auto
, элемент данных принимает настройку, которую вы задаете в отображениях кода.
Типы элементов параметра перечислены в этой таблице.
Тип элемента параметра | Описание |
---|---|
Параметр модели | Параметр, который задан в модели, такой в качестве параметра в рабочем пространстве модели. Исключает аргументы модели. |
Внешний параметр | Параметр, который вы задаете как объект в базовом рабочем пространстве или в словаре данных. Многоуровневые модели в приложении могут использовать эти параметры. Эта группировка параметров появляется в редакторе, только если модель использует такой элемент. Чтобы просмотреть и сконфигурировать эти параметры в редакторе Отображений Кода, нажмите Refresh соединитесь справа от названия категории. Нажатие на эту ссылку обновляет диаграмму модели. |
Storage Class
— Определение кода для параметраОпределение, что использование генератора кода, чтобы определить свойства, такие как внешний вид и местоположение, для кода, который это производит для параметра. Для внешних параметров, после того, как вы нажимаете Refresh
соединитесь справа от названия категории, скомпилированный класс памяти (например, класс памяти, сконфигурированный для внешнего параметра), появляется на правой стороне столбца Storage Class. Допустимыми настройками является Auto
, Model default
, ExportedGlobal
, ImportedExtern
, и ImportedExternPointer
. Смотрите выбирают класс памяти для управления представлением данных в сгенерированном коде.
Source
— Имя локального хранилища данных, совместно использованного локального хранилища данных или хранилища глобальных данныхИдентифицирует хранилище данных в модели. Если элемент решает к объекту данных, редактор Отображений Кода отображает решимость сигнализировать об объектном значке справа от исходного имени и разрешает настройку на основе того, является ли установкой класса памяти для элемента Auto
. Если классом памяти является Auto
, элемент данных принимает настройку кода, которую задает объект данных. Редактор изменяет текст отображения в столбце Storage Class к From signal object:
сопровождаемый под названием класс памяти объекта данных. Если классом памяти не является Auto
, элемент данных принимает настройку, которую вы задаете в отображениях кода.
Типы элементов хранилища данных перечислены в этой таблице.
Тип элемента хранилища данных | Описание |
---|---|
Локальное хранилище данных | Хранилище данных, которое доступно отовсюду в иерархии модели, которая является в или ниже уровня, на котором вы задаете хранилище данных. Можно задать локальное хранилище данных графически в модели включением блока Data Store Memory или путем создания объекта сигнала (синтезируемое хранилище данных) в рабочем пространстве модели. |
Разделяемое локальное хранилище данных | Блок Data Store Memory, который имеет параметры блоков набор Share across model instances. Эти хранилища данных доступны только в модели, где они заданы. Значение хранилища данных совместно используется через экземпляры модели. Эта группировка хранилищ данных появляется в редакторе, только если такой элемент существует в модели. |
Хранилище глобальных данных | Хранилище данных, которое задано объектом сигнала в базовом рабочем пространстве или в словаре данных. Многоуровневые модели в приложении могут использовать эти хранилища данных. Эти хранилища данных не конфигурируемы в отображениях кода. После того, как вы нажмете кнопку Обновить, они появляются в редакторе Отображений Кода в состоянии только для чтения для просмотра или учета целей. Эта группировка хранилищ данных появляется в редакторе, только если модель использует такой элемент. Чтобы просмотреть и сконфигурировать эти хранилища данных в редакторе Отображений Кода, нажмите Refresh соединитесь справа от названия категории. Нажатие на эту ссылку обновляет диаграмму модели. |
Имена локальных и совместно использованных локальных хранилищ данных появляются в формате
. block-name
: data-store-name
В зависимости от того, как элемент хранилища данных представлен и сконфигурирован в модели, локальной, и совместно использовал локальные хранилища данных, может решить к объекту сигнала в рабочем пространстве модели, базирующейся рабочей области или словаре данных. Хранилища глобальных данных решают к объекту сигнала в базовом рабочем пространстве или словаре данных.
Storage Class
— Определение кода для хранилища данныхОпределение, что использование генератора кода, чтобы определить свойства, такие как внешний вид и местоположение, для кода, который это производит для хранилища данных. Для хранилищ глобальных данных, после того, как вы нажимаете Refresh
соединитесь справа от названия категории, скомпилированный класс памяти (например, класс памяти, сконфигурированный для хранилища глобальных данных), появляется на правой стороне столбца Storage Class. Допустимыми настройками является Auto
, Model default
, ExportedGlobal
, ImportedExtern
, и ImportedExternPointer
. Смотрите выбирают класс памяти для управления представлением данных в сгенерированном коде.
Path
— Путь к хранилищу данных в моделиСоедините это, можно щелкнуть, чтобы подсветить хранилище данных в диаграмме модели.
Source
— Имя сигнала или состоянияИдентифицирует сигнальную линию или состояние в модели. Если элемент решает к объекту данных, редактор Отображений Кода отображает значок твердости, "чтобы сигнализировать об объекте" справа от исходного имени и разрешает настройку на основе того, является ли установкой класса памяти для элемента Auto
. Если классом памяти является Auto
, элемент данных принимает настройку кода, которую задает объект данных. Редактор изменяет текст отображения в столбце Storage Class к From signal object:
сопровождаемый под названием класс памяти объекта данных. Если классом памяти не является Auto
, элемент данных принимает настройку, которую вы задаете в редакторе Отображений Кода.
Редактор Отображений Кода списки:
Названные сигналы и состояния при помощи имени элемента данных
Сигналы без имени при помощи формата source-block
: port-number
Состояния использовали в нескольких блоках при помощи формата block-name
: state-name
Чтобы сконфигурировать отдельную сигнальную линию в редакторе Отображений Кода для модели, сначала необходимо добавить сигнал в отображения. Смотрите Конфигурируют Данные сигнала для генерации кода C.
Storage Class
— Определение кода для сигналаОпределение, что использование генератора кода, чтобы определить свойства, такие как внешний вид и местоположение, для кода, который это производит для сигнальной линии или состояния. Допустимыми настройками является Auto
, Model default
, ExportedGlobal
, ImportedExtern
, и ImportedExternPointer
. Смотрите выбирают класс памяти для управления представлением данных в сгенерированном коде.
Path
— Путь к сигнальной линии или состоянию в моделиСоедините это, можно щелкнуть, чтобы подсветить сигнальную линию или блок, который использует состояние в диаграмме модели.