Если элемент данных в модели не имеет имени (например, сигнал не имеет метки или состояние не имеет имени), необходимо указать идентификатор кода для элемента данных при настройке его для генерации кода Си. Задайте идентификатор кода, указав значение для свойства класса хранения Identifier.
Нельзя использовать сопоставления кода для настройки переменных MATLAB ®, которые используются в качестве параметров блока. Преобразовать переменные в Simulink.Parameter объектов в рабочем пространстве модели. Результирующие объекты данных отображаются в редакторе сопоставлений кодов в качестве параметров модели.
Сопоставления кодов используются для настройки только одного дискретного состояния на блок в модели.
Если модель содержит настраиваемый, нефинитный параметр, например, со значением inf, генератор кода не применяет заданное сопоставление параметров по умолчанию. Параметр отображается как поле в структуре данных параметров по умолчанию. rtP (см. раздел Структура данных модели в реальном времени).:
Сопоставления кодов по умолчанию для категорий Внешние параметры и Глобальные хранилища данных должны быть одинаковыми для моделей в иерархии ссылок на модели.
При редактировании модели в контексте приложения кодера следует помнить о взаимосвязи между инструментами редактирования модели 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