Ассоциируйте элементы модели с определениями кода
Редактор Отображения является графическим интерфейсом, где можно сконфигурировать элементы данных в модели, исключая модели-ссылки, для генерации кода. Каждая модель в иерархии модели-ссылки имеет свои собственные отображения кода. Связать каждую категорию элемента данных моделей с определенным классом памяти в модели. Затем переопределите эти настройки, при необходимости, для конкретных элементов данных.
Класс памяти определяет такие свойства, как внешний вид и местоположение, которые генератор кода использует при создании кода для связанных данных.
Чтобы сконфигурировать элементы данных и функции для генерации кода, используйте таблицы в Отображения Code отображения editor:
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, в левом нижнем углу окна Редактор, нажмите вкладку Code Mappings - C.
В холсте модели окна Редактор щелкните элемент управления перспективой в правом нижнем углу и выберите 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
, что означает, что генератор кода может исключить или изменить представление соответствующего кода в целях оптимизации. Если оптимизация невозможна, генератор кода применяет строение модели по умолчанию.
Заставьте генератор кода использовать строение по умолчанию для inports, которая является классом памяти ImportedExternPointer
. Нажмите клавишу Ctrl и выберите входные порты. Для одного из выбранных входных портов установите класс памяти равным Model default: ImportedExternPointer
. Редактор обновляет настройку класса памяти для выбранных входных портов.
Заставьте генератор кода использовать класс памяти ExportedGlobal
для исходного порта корня модели. Перейдите на вкладку Outports. Выберите строку для Out2
. Затем установите класс памяти равным Model default: ExportedGlobal
.
Чтобы сконфигурировать свойства для отдельных элементов данных, например, если необходимо переопределить настройки строения по умолчанию, используйте вкладки для различных типов элементов данных. В данном примере переопределите настройку класса памяти по умолчанию для Inport блока In1
.
По умолчанию генератор кода называет переменные inport и outport на основе имени Inport или Outport блока в модели. Когда вы конфигурируете элементы данных с настройкой класса памяти кроме Auto
можно переопределить этот параметр по умолчанию для отдельных элементов, задав Identifier свойства класса памяти. Это свойство позволяет вам задать идентификатор кода, не изменяя проект модели. В данном примере установите Identifier для блоков Inport и Outport.
В редакторе Отображения перейдите на вкладку Inports.
Для In1
, установите класс памяти равным ImportedExtern
.
Для каждого входного порта выберите строку. Затем в Property Inspector установите свойство Identifier следующим образом:
Задайте In1
на input1
.
Задайте In2
на input2
.
Задайте In3
на input3
.
Задайте In4
на input4
.
Нажмите Outports.
Выберите команду outport 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
) в модели. Если элемент разрешается к объекту данных, редактор Отображения отображает значок resolve-to-signal-object справа от имени источника и разрешает строение на основе того, является ли параметр класса памяти для элемента Auto
. Если класс памяти Auto
элемент данных принимает строение кода, которую задает объект данных. Редактор меняет текст отображения в столбце Storage Class на From signal object:
далее указывается имя класса памяти объекта данных. Если класс памяти не Auto
элемент данных принимает строение, заданную в редакторе Отображения.
Storage Class
- Определение кода для корневого входного портаОпределение, которое генератор кода использует для определения свойств, таких как внешний вид и местоположение, для кода, который он генерирует для корневого входного порта. Допустимые настройки Auto
, Model default
, ExportedGlobal
, ImportedExtern
, и ImportedExternPointer
. Смотрите раздел «Выбор класса памяти для управления представлением данных в сгенерированном коде».
Source
- Имя корневого блока Outport или элемента шиныОпределяет блок Outport корневого уровня или элемент блока Out Bus Element (для примера OutBus1.signal1
) в модели. Если элемент разрешается к объекту данных, редактор Отображения отображает значок resolve-to-signal-object справа от имени источника и разрешает строение на основе того, является ли параметр класса памяти для элемента Auto
. Если класс памяти Auto
элемент данных принимает строение кода, которую задает объект данных. Редактор меняет текст отображения в столбце Storage Class на From signal object:
далее указывается имя класса памяти объекта данных. Если класс памяти не Auto
элемент данных принимает строение, заданную в редакторе Отображения.
Storage Class
- Определение кода для root outportОпределение, которое генератор кода использует для определения свойств, таких как внешний вид и местоположение, для кода, который он генерирует для корневого выхода. Допустимые настройки Auto
, Model default
, ExportedGlobal
, ImportedExtern
, и ImportedExternPointer
. Смотрите раздел «Выбор класса памяти для управления представлением данных в сгенерированном коде».
Source
- Имя аргумента параметра модели, параметра модели или внешнего параметраОпределяет параметр в модели. Если элемент разрешается к объекту данных, редактор Отображения отображает значок resolve-to-parameter-object справа от имени источника и разрешает строение на основе того, является ли параметр класса памяти для элемента Auto
. Если класс памяти Auto
элемент данных принимает строение кода, которую задает объект данных. Редактор меняет текст отображения в столбце Storage Class на From parameter object:
далее указывается имя класса памяти объекта данных. Если класс памяти не Auto
элемент данных принимает строение, заданную в отображениях кода.
Типы элементов параметра перечислены в этой таблице.
Тип Параметра элемента | Описание |
---|---|
Параметр модели | Параметр, который задан в модели, такой как параметр в рабочем пространстве модели. Исключает аргументы модели. |
Внешний параметр | Параметр, который вы задаете как объект в базовом рабочем пространстве или в словаре данных. Эти параметры могут использоваться несколькими моделями в приложении. Эта группировка параметров появляется в редакторе только в том случае, если модель использует такой элемент. Чтобы просмотреть и сконфигурировать эти параметры в редакторе Отображения, нажмите Refresh ссылка справа от имени категории. При нажатии на эту ссылку обновляется диаграмма модели. |
Storage Class
- Определение кода для параметраОпределение, которое генератор кода использует для определения свойств, таких как внешний вид и местоположение, для кода, который он генерирует для параметра. Для внешних параметров, после клика по Refresh
ссылка справа от имени категории, скомпилированный класс памяти (для примера, класс памяти, настроенный для внешнего параметра) появляется в правой части столбца Storage Class. Допустимые настройки Auto
, Model default
, ExportedGlobal
, ImportedExtern
, и ImportedExternPointer
. Смотрите раздел «Выбор класса памяти для управления представлением данных в сгенерированном коде».
Source
- Имя локального хранилища данных, общего локального хранилища данных или глобального хранилища данныхОпределяет хранилище данных в модели. Если элемент разрешается к объекту данных, редактор Отображения отображает значок resolve-to-signal-object справа от имени источника и разрешает строение на основе того, является ли параметр класса памяти для элемента 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
- Имя сигнала или состоянияОпределяет сигнальную линию или состояние в модели. Если элемент разрешается к объекту данных, редактор Code Mappings отображает значок resolve -to-signal-object справа от имени источника и разрешает строение на основе того, является ли параметр класса памяти для элемента Auto
. Если класс памяти Auto
элемент данных принимает строение кода, которую задает объект данных. Редактор меняет текст отображения в столбце Storage Class на From signal object:
далее указывается имя класса памяти объекта данных. Если класс памяти не Auto
элемент данных принимает строение, заданную в редакторе Отображения.
В редакторе Отображения перечислены:
Именованные сигналы и состояния при помощи имени элемента данных
Неназванные сигналы при помощи source-block формата
: port-number
Состояния, используемые в нескольких блоках при использовании формата block-name
: state-name
Чтобы сконфигурировать отдельную сигнальную линию в редакторе Code Mappings для модели, сначала необходимо добавить сигнал к отображениям. См. «Конфигурирование данных сигнала для генерации кода C».
Storage Class
- Определение кода для сигналаОпределение, которое генератор кода использует для определения свойств, таких как внешний вид и местоположение, для кода, который он генерирует для сигнальной линии или состояния. Допустимые настройки Auto
, Model default
, ExportedGlobal
, ImportedExtern
, и ImportedExternPointer
. Смотрите раздел «Выбор класса памяти для управления представлением данных в сгенерированном коде».
Path
- Путь к сигнальной линии или состоянию в моделиСсылка, которую вы можете кликнуть, чтобы подсветить сигнальную линию или блок, который использует состояние в диаграмме модели.