Определение кода и ограничения отображения и факторы

Ограничения

  • Если элемент данных в модели без имени (например, сигнал не имеет никакой метки, или состояние не имеет никакого имени), необходимо задать идентификатор кода для элемента данных при конфигурировании его для генерации кода 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.

Для получения дополнительной информации смотрите то, Что Повторно используемый Код? и Выберите Класс памяти для Управления Представлением данных в Сгенерированном коде.

Скопируйте отображения кода при преобразовании подсистем в модели, на которые ссылаются,

Можно скопировать отображения кода, когда вы преобразуете подсистему в модель, на которую ссылаются.

Смотрите также

|

Похожие темы