Если элемент данных в модели не имеет имени (например, сигнал не имеет метки или состояние не имеет имени), необходимо указать идентификатор кода для элемента данных при настройке его для генерации кода Си. Задайте идентификатор кода, указав значение для свойства класса хранения Identifier.
Нельзя использовать сопоставления кода для настройки переменных MATLAB ®, которые используются в качестве параметров блока. Преобразовать переменные в Simulink.Parameter объектов в рабочем пространстве модели. Результирующие объекты данных отображаются в редакторе сопоставлений кодов в качестве параметров модели.
Сопоставления кодов используются для настройки только одного дискретного состояния на блок в модели.
Чтобы сопоставить эти категории данных с классом хранения, определенным в словаре Embedded Coder, необходимо установить для свойства класса хранения Data Initialization значение Dynamic или None:
Inport
Вспомогательный порт
Сигналы, состояния и внутренние данные
Общие локальные хранилища данных
Невозможно отобразить категории данных Внешние параметры и Глобальные хранилища данных. Для ссылочных моделей нельзя сопоставить данные, категории Inports и Outports с классами хранения, определенными в словаре встроенного кодера.
Невозможно сопоставить категории данных:
Предопределенные классы хранения на основе структуры, Struct и BitField
Классы хранения упаковки типа FlatStructure или Other созданное с помощью конструктора пользовательских классов хранения
При настройке модели для использования библиотеки замены кода, включающей спецификацию выравнивания данных, невозможно настроить сопоставления кода по умолчанию, включающие классы хранения, определенные в словаре встроенного кодера для этой модели. Дополнительные сведения см. в разделе Выравнивание данных для замены кода.
Если модель содержит настраиваемый, нефинитный параметр, например, со значением inf:
Генератор кода не применяет заданное сопоставление параметров по умолчанию. Параметр отображается как поле в структуре данных параметров по умолчанию. rtP (см. раздел Структура данных модели в реальном времени).
Невозможно сопоставить отдельный элемент с классом хранения, определенным в словаре встроенного кодера. В этом случае генератор кода возвращает ошибку. Выберите один из следующих обходных путей:
Для отдельного параметра nonfinite задайте для класса хранения значение, отличное от Auto или Model default, как описано в разделе Конфигурирование параметров для генерации кода C.
Если только один блок использует переменную или объект, вместо того, чтобы использовать переменную или объект, укажите значение non-finite непосредственно в модели в параметре блока.
Сопоставить категории параметров с классами хранения, которые определены со свойством инициализации данных, равным Auto, Static, или None.
Если модель включает в себя повторно используемую подсистему (подсистема, у которой параметр block Function packaging имеет значение Reusable function), который содержит общее локальное хранилище данных, сопоставьте категорию Общие локальные хранилища данных с классом хранения, определенным в словаре встроенного кодера для этой модели. Дополнительные сведения см. в разделе Создание кода повторного ввода из подсистем.
Для верхних и ссылочных моделей, настроенных для использования в нескольких экземплярах, сопоставьте категории данных с классами хранения, для которых свойство «Тип хранилища» имеет значение Structured. См. разделы Создание кода повторного ввода из лучших моделей и Создание кода повторного ввода из функциональных блоков Simulink.
Сопоставления кодов по умолчанию для категорий Внешние параметры и Глобальные хранилища данных должны быть одинаковыми для моделей в иерархии ссылок на модели.
Если модель настроена на компактную упаковку файлов, невозможно сопоставить категорию данных с классом хранения, определенным со свойством «Область данных», равным Exported и для свойства Header File установлено правило именования, отличное от $N.h.
При оценке параметров класса хранения для переменных управления вариантами генератор кода игнорирует сопоставления кодов по умолчанию. Дополнительные сведения см. в разделе Представление подсистем и исполнительных моделей в сгенерированном коде.
Если пользователь удаляет определение класса хранения, шаблона настройки функции или раздела памяти из словаря встроенного кодера, связанного с моделью, редактор сопоставлений кодов определяет определение как Unresolved. Например, на этом рисунке показано, что шаблон настройки функции для функций начальной точки выполнения был удален из словаря, связанного с моделью.

Чтобы исправить неразрешенное определение кода, выполните одно из следующих действий.
Выберите другое определение в столбце Классы хранения, Шаблоны настройки функций или Разделы памяти.
Если у вас есть Embedded Coder ®, замените или добавьте определение в Embedded Coder Dictionary. Затем обновите сопоставление.
Проконсультируйтесь с кем-либо, например с архитектором системы для проекта, о добавлении определения в словарь встроенного кодера. Затем обновите сопоставление.
При редактировании модели в контексте приложения кодера следует помнить о взаимосвязи между инструментами редактирования модели Simulink ®, такими как копирование и отмена, и сопоставлениями кода. В контексте приложения кодера при выполнении операций редактирования копирования и вставки или вырезания и вставки в модели приложение кодера сохраняет сопоставления кода для отдельных элементов данных. Например, в модели при копировании и вставке блока источника сигнала, сконфигурированного с определенным классом хранения, вставленная версия сигнального порта сохраняет тот же класс хранения.
Хотя для правки действий над элементами данных модели можно использовать операции отмены и повтора, они недоступны при настройке сопоставлений кода. Например, если удалить блок состояния и нажать кнопку «Отменить», блок снова появится в холсте модели, а конфигурация кода для состояния - в сопоставлениях кода. В редакторе сопоставлений кодов при изменении параметра класса хранения для состояния с Auto кому Model defaultи нажмите кнопку «Отменить», класс хранения не возвращается к Auto. В этом случае изменение относится к отображению кода, а не к элементу данных модели.
Код, создаваемый из модели или компонента (ссылочной модели или подсистемы), является многоэкземплярным кодом, если он позволяет приложению поддерживать несколько независимых экземпляров компонента во время выполнения. Например, можно создать повторный многоэкземплярный код из всей модели, установив для параметра конфигурации модели Code interface packaging значение Reusable function. Общие сведения о многоэкземплярных моделях и компонентах см. в разделе Повторное использование кода.
При некоторых обстоятельствах применение классов хранения может:
Запретить создание кода для нескольких экземпляров.
Некоторые элементы данных отображаются в сгенерированном коде как одиночные элементы, что означает, что каждый экземпляр модели или компонента получает прямой доступ к одним и тем же общим глобальным данным, создавая зависимости между экземплярами.
Во избежание ошибок и неожиданного создания одинарного кода и данных в одном экземпляре соблюдайте приведенные ниже рекомендации и ограничения.
При применении класса хранения непосредственно к элементу данных (см. Конфигурация генерации кода C для элементов интерфейса модели):
Для создания многоэкземплярного кода необходимо применить класс хранения только к объектам параметров, глобальным хранилищам данных, общим локальным хранилищам данных и корневому уровню ввода-вывода.
Класс хранения дает только одиночные данные.
При применении класса хранения по умолчанию (см. Конфигурация генерации кода C для элементов интерфейса модели):
Для этих типов данных можно создавать только одиночные данные:
Параметры модели
Внешние параметры
Глобальные хранилища данных
Общие локальные хранилища данных
Для внутренних данных можно создавать только специфичные для экземпляра данные, что означает, что каждый экземпляр модели или компонента работает на отдельной копии данных. Для этой категории необходимо использовать класс хранения примеров. SignalStruct, которая появляется после подготовки модели для создания кода с помощью инструмента быстрого запуска. Кроме того, можно создать и использовать собственный структурированный класс хранения с помощью словаря Embedded Coder Dictionary.
Дополнительные сведения см. в разделе Что такое повторный ввод кода? и выберите класс хранения для представления контроллинговых данных в сгенерированном коде.
Сопоставления кода можно копировать при преобразовании подсистемы в ссылочную модель.
В помощнике по преобразованию привязок модели выберите Копировать сопоставления кода.
В окне команд MATLAB используйте Simulink.SubSystem.convertToModelReference функция с разделенной запятыми парой, состоящей из 'CopyCodeMappings' и true.
Редактор сопоставлений кода | coder.mapping.api.CodeMapping