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

Ограничения

  • Если элемент данных в модели не называется (для примера сигнал не имеет метки или состояние не имеет имени), вы должны задать идентификатор кода для элемента данных при конфигурировании его для Генерации кода C. Установите идентификатор кода путем определения значения для Identifier свойства класса памяти.

  • Вы не можете использовать отображения кода для настройки MATLAB® переменные, которые используются в качестве параметров блоков. Преобразуйте переменные в Simulink.Parameter объекты в рабочем пространстве модели. Получившиеся объекты данных появляются в редакторе Отображения в качестве параметров модели.

  • Используйте отображения кода, чтобы сконфигурировать только одно дискретное состояние на блок в модели.

  • Если модель содержит настраиваемый, нефинитный параметр, например, со значением infгенератор кода не применяет заданное отображение параметров по умолчанию. Параметр появляется как поле в структуре данных параметра по умолчанию rtP (см. Структура данных модели реального времени).:

Ограничения соответствия кода по умолчанию

Отображения кода по умолчанию для категорий 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 Dictionary.

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

Копирование отображений кода при преобразовании подсистем в ссылочные Модели

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

См. также

|

Похожие темы