Связывание элементов модели с определениями кода
Редактор сопоставлений кодов представляет собой графический интерфейс, в котором можно настроить элементы данных в модели, исключая ссылочные модели, для создания кода. Каждая модель в иерархии ссылок на модель имеет собственные сопоставления кодов. Связывание каждой категории элемента данных модели с определенным классом хранения в модели. Затем при необходимости переопределите эти параметры для определенных элементов данных.
Класс хранения определяет такие свойства, как внешний вид и местоположение, которые генератор кода использует при создании кода для связанных данных.
Чтобы настроить элементы данных и функции для создания кода, используйте таблицы в окне редактора сопоставлений кодов:
Значения по умолчанию для данных
Inports
Вспомогательные порты
Параметры
Хранилища данных
Сигналы/состояния
При выборе строки в активной таблице в разделе «Код» инспектора свойств отображаются параметры свойств класса хранения для выбранного элемента данных.

Перед конфигурированием сигнала для генерации кода добавьте сигнал в сопоставления кода модели. Добавьте и удалите сигналы из сопоставлений кода, приостановив многоточие, которое появляется над или под линией сигнала, чтобы открыть панель действий. Нажмите кнопку Add Signal (Добавить сигнал) или Remove Signal (Удалить сигнал). Эти кнопки также доступны в редакторе сопоставлений кодов на вкладке «Сигналы/Состояния».
Выполните одно из следующих действий:
Откройте приложение Simulink ® Coder™. На вкладке C Code выберите Code Interface > Сопоставления кодов по умолчанию или Code Interface > Сопоставления кодов отдельных элементов.
Откройте приложение Simulink Coder. На вкладке C Code в левом нижнем углу окна Simulink Editor перейдите на вкладку Code Mappings - C.
В холсте модели окна Simulink Editor щелкните элемент управления перспективой в правом нижнем углу и выберите Код. Затем перейдите на вкладку Сопоставления кода - C.
Настройте генерацию кода для блоков корневого уровня Inport и Outport в модели. Применение конфигураций по умолчанию позволяет сэкономить время, особенно для крупномасштабных моделей, использующих значительный объем данных. После применения сопоставлений по умолчанию можно настроить сопоставления для отдельных элементов данных.
Копировать файл внешнего кода exDblFloat.h в доступную для записи папку.
copyfile(fullfile(matlabroot,'toolbox','rtw','rtwdemos','exDblFloat.h'));
Открытая модель rtwdemo_configrpinterface. Сохранение копии модели в том же расположении, что и файл exDblFloat.h.
Откройте приложение Simulink Coder. Вкладка C Code включает редактор Code Mappings.
Настройка генератора кода для объявления и определения глобальных переменных для входов и выходов в созданных файлах rtwdemo_configrpinterface.h и rtwdemo_configrpinterface.c.
На вкладке Код C выберите Интерфейс кода > Сопоставления кодов по умолчанию.
На вкладке «Значения по умолчанию» в разделе «Порты ввода и выходы» выберите строку для параметров «Порты ввода». Затем установите для класса хранения значение ImportedExternPointer. Задайте класс хранения для Outports равным ExportedGlobal. Редактор обновляет настройки класса хранения по умолчанию для двух выбранных категорий элементов данных.

В редакторе сопоставлений кодов перейдите на вкладку «Inports». Класс хранения для каждого порта ввода имеет значение Auto, что означает, что генератор кода может исключить или изменить представление соответствующего кода в целях оптимизации. Если оптимизация невозможна, генератор кода применяет конфигурацию модели по умолчанию.
Принудительно использовать генератором кода конфигурацию по умолчанию для входов, которая является классом хранения ImportedExternPointer. Нажмите клавишу Ctrl и выберите входные данные. Для одного из выбранных портов ввода установите для класса хранения значение Model default: ImportedExternPointer. Редактор обновляет параметры класса хранения для выбранных входов.
Принудительно использовать класс хранения в генераторе кода ExportedGlobal для корневого исходящего порта модели. Перейдите на вкладку «Выходы». Выберите строку для Out2. Затем установите для класса хранения значение Model default: ExportedGlobal.
Для настройки свойств отдельных элементов данных, например, если необходимо переопределить настройки конфигурации по умолчанию, используйте вкладки для различных типов элементов данных. В этом примере переопределите значение класса хранения по умолчанию для блока Inport In1.
По умолчанию генератор кода называет переменные inport и outport на основе имени блока Inport или Outport в модели. При настройке элементов данных с помощью параметра класса хранения, отличного от Auto, можно переопределить этот параметр по умолчанию для отдельных элементов, задав свойство класса хранения Идентификатор. Это свойство позволяет указать идентификатор кода без изменения конструкции модели. В этом примере задайте идентификатор для блоков Inport и Outport.
В редакторе сопоставлений кодов перейдите на вкладку «Inports».
Для In1, задайте для класса хранения значение ImportedExtern.
Для каждого входа выберите строку. Затем в Инспекторе свойств задайте свойство Идентификатор следующим образом:
Набор In1 кому input1.
Набор In2 кому input2.
Набор In3 кому input3.
Набор In4 кому input4.
Щелкните Выезд (Outports).
Выбор исходящего порта Out1. Затем в инспекторе свойств задайте для свойства 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 как поле в структуре вывода 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. |
| Сигналы, состояния и внутренние данные | Элементы данных, являющиеся внутренними для модели, такие как выходные сигналы блоков, состояния дискретных блоков, хранилища данных и сигналы пересечения нулей. |
| Общие локальные хранилища данных | Блоки памяти хранилища данных, для которых установлен параметр блока Общий доступ для экземпляров модели. Эти хранилища данных доступны только в той модели, где они определены. Значение хранилища данных является общим для всех экземпляров модели. |
| Глобальные хранилища данных | Хранилища данных, определяемые сигнальным объектом в базовой рабочей области или в словаре данных. Эти хранилища данных могут использоваться несколькими моделями в приложении. Чтобы просмотреть и настроить эти хранилища данных в редакторе сопоставлений кодов, нажмите кнопку Refresh ссылка справа от имени категории. Если щелкнуть эту ссылку, будет обновлена схема модели. |
| Параметры модели | Параметры, определенные в модели, такие как параметры в рабочем пространстве модели. Исключает аргументы модели. |
| Внешние параметры | Параметры, определяемые как объекты в базовой рабочей области или в словаре данных. Эти параметры могут использоваться несколькими моделями в приложении. Чтобы просмотреть и настроить эти параметры в редакторе сопоставлений кодов, нажмите кнопку Refresh ссылка справа от имени категории. Если щелкнуть эту ссылку, будет обновлена схема модели. |
В редакторе сопоставлений кодов представлены допустимые параметры класса хранения для данной категории. Опции могут включать в себя:
Неуказанный класс хранения (Default). Генератор кода помещает код для категории элементов данных в стандартные структуры, такие как B_, ExtY_, ExtU_, DW_, и P_. См. раздел Структуры данных в созданном коде.
Релевантные предопределенные классы хранения, такие как ExportedGlobal.
Релевантные классы хранения в доступном пакете, например, ImportFromFile (требуется Embedded Coder ®).
Класс хранения, определенный в словаре Embedded Coder (требуется Embedded Coder).
Storage Class - Определение кода для элементов данных моделиОпределение (спецификация), которое генератор кода использует для определения свойств, таких как внешний вид и местоположение, для кода, который он создает для элементов данных модели. Допустимые параметры: Default, ExportedGlobal, ImportedExtern, и ImportedExternPointer. См. раздел Выбор класса склада для представления контроллинговых данных в сгенерированном коде.
Source - Имя блока или элемента шины ввода корневого уровняОпределяет корневой блок Inport или элемент блока In Bus Element (например, InBus1.signal1) в модели. Если элемент получает разрешение на объект данных, редактор сопоставлений кода отображает значок «resolve-to-signal-object» справа от имени источника и разрешает конфигурацию в зависимости от того, установлен ли для элемента класс хранения данных Auto. Если класс хранения данных Auto, элемент данных предполагает конфигурацию кода, заданную объектом данных. Редактор изменяет отображаемый текст в столбце Класс хранилища на 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, элемент данных предполагает конфигурацию кода, заданную объектом данных. Редактор изменяет отображаемый текст в столбце Класс хранилища на From signal object: за которым следует имя класса хранения объекта данных. Если класс хранения не является Auto, элемент данных предполагает конфигурацию, указанную в редакторе сопоставлений кода.
Storage Class - Определение кода для корневого исходящего портаОпределение, которое генератор кода использует для определения свойств, таких как внешний вид и расположение, для кода, который он создает для корневого исходящего порта. Допустимые параметры: Auto, Model default, ExportedGlobal, ImportedExtern, и ImportedExternPointer. См. раздел Выбор класса склада для представления контроллинговых данных в сгенерированном коде.
Source - имя аргумента параметра модели, параметра модели или внешнего параметра;Определяет параметр в модели. Если элемент получает разрешение на объект данных, редактор сопоставлений кода отображает значок «resolve-to-parameter-object» справа от имени источника и разрешает конфигурацию в зависимости от того, установлен ли для элемента класс хранения данных Auto. Если класс хранения данных Auto, элемент данных предполагает конфигурацию кода, заданную объектом данных. Редактор изменяет отображаемый текст в столбце Класс хранилища на From parameter object: за которым следует имя класса хранения объекта данных. Если класс хранения не является Auto, элемент данных предполагает конфигурацию, указанную в сопоставлениях кода.
Типы элементов параметров перечислены в этой таблице.
| Тип элемента параметра | Описание |
|---|---|
| Параметр модели | Параметр, определенный в модели, например параметр в рабочем пространстве модели. Исключает аргументы модели. |
| Внешний параметр | Параметр, определяемый как объект в базовой рабочей области или в словаре данных. Эти параметры могут использоваться несколькими моделями в приложении. Эта группировка параметров появляется в редакторе только в том случае, если модель использует такой элемент. Чтобы просмотреть и настроить эти параметры в редакторе сопоставлений кодов, нажмите кнопку Refresh ссылка справа от имени категории. Если щелкнуть эту ссылку, будет обновлена схема модели. |
Storage Class - Определение кода для параметраОпределение, которое генератор кода использует для определения свойств, таких как внешний вид и местоположение, для кода, который он создает для параметра. Для внешних параметров после нажатия кнопки Refresh ссылка справа от имени категории, скомпилированный класс хранения (например, класс хранения, настроенный для внешнего параметра) отображается в правой части столбца «Класс хранения». Допустимые параметры: Auto, Model default, ExportedGlobal, ImportedExtern, и ImportedExternPointer. См. раздел Выбор класса склада для представления контроллинговых данных в сгенерированном коде.
Source - имя локального хранилища данных, общего локального хранилища данных или глобального хранилища данных;Определяет хранилище данных в модели. Если элемент получает разрешение на объект данных, редактор сопоставлений кода отображает значок «resolve-to-signal-object» справа от имени источника и разрешает конфигурацию в зависимости от того, установлен ли для элемента класс хранения данных Auto. Если класс хранения данных Auto, элемент данных предполагает конфигурацию кода, заданную объектом данных. Редактор изменяет отображаемый текст в столбце Класс хранилища на From signal object: за которым следует имя класса хранения объекта данных. Если класс хранения не является Auto, элемент данных предполагает конфигурацию, указанную в сопоставлениях кода.
В этой таблице перечислены типы элементов хранилища данных.
| Тип элемента хранилища данных | Описание |
|---|---|
| Локальное хранилище данных | Хранилище данных, доступное в любом месте иерархии модели на уровне или ниже уровня, на котором определяется хранилище данных. Локальное хранилище данных можно определить графически в модели, включив блок памяти хранилища данных или создав объект сигнала (синтезированное хранилище данных) в рабочей области модели. |
| Общее локальное хранилище данных | Блок памяти хранилища данных, для которого установлен параметр блока Общий доступ для экземпляров модели. Эти хранилища данных доступны только в той модели, где они определены. Значение хранилища данных является общим для всех экземпляров модели. Эта группировка хранилищ данных появляется в редакторе только в том случае, если такой элемент существует в модели. |
| Глобальное хранилище данных | Хранилище данных, определяемое сигнальным объектом в базовой рабочей области или в словаре данных. Эти хранилища данных могут использоваться несколькими моделями в приложении. Эти хранилища данных не настраиваются в сопоставлениях кода. После нажатия кнопки обновления они отображаются в редакторе Сопоставления кодов в режиме только для чтения для просмотра или учета. Эта группировка хранилищ данных появляется в редакторе только в том случае, если модель использует такой элемент. Чтобы просмотреть и настроить эти хранилища данных в редакторе сопоставлений кодов, нажмите кнопку Refresh ссылка справа от имени категории. Если щелкнуть эту ссылку, будет обновлена схема модели. |
Имена локальных и общих локальных хранилищ данных отображаются в формате . block-name: data-store-name
В зависимости от того, как элемент хранилища данных представлен и настроен в модели, локальные и общие локальные хранилища данных могут быть преобразованы в объект сигнала в рабочей области модели, рабочей области на основе модели или словаре данных. Глобальные хранилища данных разрешаются в сигнальный объект в базовой рабочей области или словаре данных.
Storage Class - Определение кода для хранения данныхОпределение, которое генератор кода использует для определения свойств, таких как внешний вид и местоположение, для кода, который он создает для хранилища данных. Для глобальных хранилищ данных после нажатия кнопки Refresh ссылка справа от имени категории, скомпилированный класс хранения (например, класс хранения, настроенный для глобального хранилища данных) отображается в правой части столбца Класс хранения. Допустимые параметры: Auto, Model default, ExportedGlobal, ImportedExtern, и ImportedExternPointer. См. раздел Выбор класса склада для представления контроллинговых данных в сгенерированном коде.
Path - Путь к хранилищу данных в моделиЩелкните ссылку, чтобы выделить хранилище данных на схеме модели.
Source - Наименование сигнала или состоянияОпределяет сигнальную линию или состояние в модели. Если элемент разрешается в объект данных, редактор сопоставлений кода отображает значок разрешения -to-signal-object справа от имени источника и разрешает конфигурацию на основе того, является ли значение класса хранения для элемента Auto. Если класс хранения данных Auto, элемент данных предполагает конфигурацию кода, заданную объектом данных. Редактор изменяет отображаемый текст в столбце Класс хранилища на From signal object: за которым следует имя класса хранения объекта данных. Если класс хранения не является Auto, элемент данных предполагает конфигурацию, указанную в редакторе сопоставлений кода.
Редактор сопоставлений кодов выводит следующие списки:
Именованные сигналы и состояния с помощью имени элемента данных
Безымянные сигналы с использованием формата source-block: port-number
Состояния, используемые в нескольких блоках с использованием формата block-name: state-name
Для настройки отдельной сигнальной линии в редакторе сопоставлений кодов для модели необходимо сначала добавить сигнал к сопоставлениям. См. раздел Конфигурирование данных сигнала для генерации кода C.
Storage Class - Определение кода для сигналаОпределение, которое генератор кода использует для определения свойств, таких как внешний вид и местоположение, для кода, который он создает для сигнальной линии или состояния. Допустимые параметры: Auto, Model default, ExportedGlobal, ImportedExtern, и ImportedExternPointer. См. раздел Выбор класса склада для представления контроллинговых данных в сгенерированном коде.
Path - Путь к сигнальной линии или состоянию в моделиЩелкните ссылку, чтобы выделить сигнальную линию или блок, использующий состояние на схеме модели.