Если элемент данных в модели без имени (например, сигнал не имеет никакой метки, или состояние не имеет никакого имени), необходимо задать идентификатор кода для элемента данных при конфигурировании его для генерации кода C. Установите идентификатор кода путем определения значения для свойства Identifier класса памяти.
Вы не можете использовать отображения кода, чтобы сконфигурировать переменные MATLAB®, которые используются в качестве параметров блоков. Преобразуйте переменные в Simulink.Parameter
объекты в рабочем пространстве модели. Получившиеся объекты данных появляются в редакторе Отображений Кода как параметры модели.
Используйте отображения кода, чтобы сконфигурировать только одно дискретное состояние на блок в модели.
Если модель содержит настраиваемый, неличный параметр, например, со значением inf
, генератор кода не применяет заданное отображение параметра по умолчанию. Параметр появляется как поле в структуре данных параметра по умолчанию rtP
(см. стандартные структуры данных в сгенерированном коде (Embedded Coder)).:
Отображения кода по умолчанию для категорий External parameters и Global data stores должны быть тем же самым для моделей в иерархии модели - ссылки.
При редактировании модели в контексте приложения кодера необходимо знать об отношении между инструментами редактирования моделей Simulink®, такими как копия и отмена и отображения кода. В контексте приложения кодера, когда вы выполняете копию-и-вставку или операции редактирования вырезания и вклейки в модели, приложение кодера сохраняет отображения кода для отдельных элементов данных. Например, в модели, если вы копируете и вставляете исходный блок сигнала, который сконфигурирован с определенным классом памяти, вставленная версия порта сигнала сохраняет тот же класс памяти.
В то время как можно использовать отмену и восстановить операции для редактирования действий с элементами данных модели, они недоступны при конфигурировании отображений кода. Например, если вы удаляете блок состояния, и затем нажимаете Undo, блок вновь появляется в холсте модели, и настройка кода для состояния вновь появляется в отображениях кода. В редакторе Отображений Кода, если вы изменяете настройки класса памяти для состояния от Auto
к Model default
, и затем нажмите Undo, класс памяти не возвращается к Auto
. В этом случае изменение принадлежит отображению кода, не элементу данных модели.
Кодом, который вы генерируете из модели или компонента (модель, на которую ссылаются, или подсистема) является multi-instance code, если это позволяет вашему приложению обеспечивать несколько независимых экземпляров компонента во время выполнения. Например, можно сгенерировать повторно используемый, код мультиэкземпляра из целой модели путем установки параметра конфигурации модели Code interface packaging на Reusable function
. Для получения общей информации о моделях мультиэкземпляра и компонентах, смотрите Повторное использование кода.
При некоторых обстоятельствах применяя классы памяти может:
Препятствуйте тому, чтобы вы генерировали код мультиэкземпляра.
Заставьте некоторые элементы данных появляться в сгенерированном коде как одиночные элементы, что означает, что каждый экземпляр модели или компонента непосредственно получает доступ к тем же разделяемым, глобальным данным, создавая зависимости между экземплярами.
Чтобы избежать ошибок и неожиданной генерации кода одно экземпляра и одноэлементных данных, наблюдайте инструкции и ограничения ниже.
Когда вы примените класс памяти непосредственно к элементу данных (см. Настройку генерации кода C для Элементов Интерфейса модели):
Чтобы сгенерировать код мультиэкземпляра, необходимо применить класс памяти только к объектам параметра, хранилищам глобальных данных, разделяемым локальным хранилищам данных и вводу-выводу корневого уровня.
Класс памяти дает только к одноэлементным данным.
Когда вы примените класс памяти по умолчанию (см. Настройку генерации кода C для Элементов Интерфейса модели):
Для этих категорий данных можно сгенерировать только одноэлементные данные:
Model parameters
External parameters
Global data stores
Shared local data stores
Для Internal data можно сгенерировать только специфичные для экземпляра данные, что означает каждый экземпляр модели, или компонент работает с отдельной копией данных. Для этой категории необходимо использовать класс памяти в качестве примера SignalStruct
, который появляется после подготовки модели для генерации кода с инструментом Quick Start. В качестве альтернативы можно создать и использовать собственный класс структурированного хранилища при помощи Словаря Embedded Coder.
Для получения дополнительной информации смотрите то, Что Повторно используемый Код? и Выберите Класс памяти для Управления Представлением данных в Сгенерированном коде.
Можно скопировать отображения кода, когда вы преобразуете подсистему в модель, на которую ссылаются.
В Model Reference Conversion Advisor выберите Copy code mapping information to the new converted model.
В окне команды MATLAB используйте Simulink.SubSystem.convertToModelReference
функция с разделенной запятой парой, состоящей из 'CopyCodeMappings'
и true
.
Редактор отображений кода | coder.mapping.api.CodeMapping