Строение генерации кода C для элементов интерфейса модели

Генератор кода обеспечивает тулинг для вас, чтобы контролировать представление данных и, если у вас есть Embedded Coder®, функции точки входа в сгенерированном коде. Например, можно сконфигурировать данные и функции для генерации кода, чтобы они соответствовали стандартам и рекомендациям кода, интегрировать сгенерированный код с внешним кодом или адресовать требования к памяти.

Генератор кода производит код для элементов данных моделей и функций:

  • Данные, такие как входные порты, сигналы, состояния и параметры, которые ваш код приложения может считать и записывать.

  • Функции точки входа, такие как model_step, который ваш код приложения вызывает, чтобы выполнить алгоритм модели.

Можно сконфигурировать элементы данных моделей и функции для генерации кода с помощью интерфейса программирования Code Mappings editor или отображений кода (coder.mapping.api.CodeMapping). Для конфигурирования функций требуется Embedded Coder. Для элементов данных используйте редактор Code Mappings или API отображения кода вместо, или в дополнение к созданию и настройке объектов данных Simulink. Редактор и API позволяют вам конфигурировать:

  • Настройки генерации кода по умолчанию, которые применяются в модели для категории элементов данных

  • Настройки строения, которые применяются к отдельным элементам данных

Эта схема показывает общий рабочий процесс:

Iterative flow diagram that shows steps of configuring default mappings, overriding default mappings for individual model elements, and creating code definitions for model elements.

Миграция

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

При необходимости в рамках миграции Simulink конфигурирует словарь Embedded Coder Dictionary, который использует модель. При сохранении модели отображений кода сохраняются как часть модели.

Для получения дополнительной информации, такой как эффекты миграции и что следует учитывать перед миграцией, смотрите Миграция строений данных модели к отображениям кода.

Определения кода

Определения кода включают классы памяти. Класс памяти определяет свойства, такие как внешний вид и местоположение, которые генератор кода использует при создании кода для связанных данных.

Разделы памяти контролируют размещение данных и определений функций в памяти. В некоторых случаях можно выбрать конкретный раздел памяти, который требуется при конфигурировании элементов данных и функций.

Генератор кода обеспечивает предопределенные определения кода для элементов данных. Если у вас есть Embedded Coder, можно использовать Embedded Coder Dictionary для создания и совместного использования определений кода, например, для стандартизации кода, который вы генерируете из нескольких моделей или для создания определений для различных окружений во время выполнения приложения. Создание пользовательских определений позволяет вам достичь целей генерации кода, которым предопределенные определения не могут удовлетворить. Для элементов данных у вас также есть опция создания определений кода, созданных в пакетах с помощью Embedded Coder Custom Storage Class Designer.

Определения кода, которые вы создаете с помощью словаря Embedded Coder, появляются в Code Mappings editor и доступны с помощью API отображений кода. Для некоторых определений, которые вы создаете с помощью Custom Storage Class Designer, можно отобразить определения в редакторе Отображения, настроив словарь Embedded Coder для обращения к ним.

По умолчанию определения кода, которые вы создаете с помощью словаря Embedded Coder для модели, хранятся в файле модели. Вы можете делиться определениями кода между моделями и проектами, храня определения в Simulink® словарь данных. Со словарем данных, чтобы изменить общее определение, вы меняете определение в одном месте - словаре Embedded Coder.

Для получения дополнительной информации смотрите Задать классы памяти, Разделы памяти и Функциональные шаблоны для программной архитектуры (Embedded Coder) и Создать классы памяти при помощи Custom Storage Class Designer (Embedded Coder).

Строения по умолчанию для данных

Уменьшите усилия по подготовке модели к генерации кода C, задав строения по умолчанию для категорий элементов данных, например, inports или параметры рабочего пространства модели, по модели. Применение строений по умолчанию может сэкономить время и уменьшить риск введения ошибок в код, особенно для больших моделей и моделей, из которых вы генерируете мультиобразец.

Строения по умолчанию применяются во всей модели, исключая модели-ссылки. Simulink сохраняет отдельный набор отображений кода как часть каждой модели в иерархии модели-ссылки.

Если модель включает значительное количество элементов массива данной категории (для примера более 10), более эффективно конфигурировать категорию с помощью настройки по умолчанию, а затем переопределить эту настройку для особых случаев.

Настройки по умолчанию могут помочь вам уменьшить ручной ввод данных.

  • Когда вы добавляете блоки и сигналы к модели, новые элементы данных наследуют настройки по умолчанию.

  • Чтобы изменить настройки генерации кода сразу для многих элементов данных, внесите изменения в одно место - настройки по умолчанию.

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

Вы конфигурируете настройки данных по умолчанию с помощью вкладки Code Mappings editor Data Defaults или setDataDefault функция.

Данные модели

Вы конфигурируете настройки данных по умолчанию с помощью вкладки Code Mappings editor Data Defaults или setDataDefault функция. На вкладке Data Defaults или вызове функции можно выбрать или указать эти категории элементов данных.

Категория элемента моделиОписание
InportsВходные порты корневого уровня модели, такие как блоки Inport и In Bus Element.
Вспомогательные портыВыходные порты корневого уровня модели, такие как блоки Outport и Out Bus Element.
Сигналы, состояния и внутренние данныеЭлементы данных, которые являются внутренними для модели, такие как выходные сигналы блоков, дискретные состояния блока, хранилища данных и сигналы пересечения нулем.
Общие локальные хранилища данныхData Store Memory блоки, которые имеют параметры блоков Share across model instances установленные. Эти хранилища данных доступны только в модели, где они определены. Значение хранилища данных разделяется между образцами модели.
Глобальные данныеДанные хранятся, которые заданы сигнальным объектом в базовом рабочем пространстве или в словаре данных. Эти хранилища данных могут использоваться несколькими моделями в приложении. Чтобы просмотреть и сконфигурировать эти хранилища данных в редакторе Отображения, нажмите Refresh ссылка справа от имени категории. При нажатии на эту ссылку обновляется диаграмма модели.
Параметры моделиПараметры, которые заданы в модели, такие как параметры в рабочем пространстве модели. Исключает аргументы модели.
Внешние параметрыПараметры, которые вы определяете как объекты в базовом рабочем пространстве или в словаре данных. Эти параметры могут использоваться несколькими моделями в приложении. Чтобы просмотреть и сконфигурировать эти параметры в редакторе Отображения, нажмите Refresh ссылка справа от имени категории. При нажатии на эту ссылку обновляется диаграмма модели.

Факторы по конфигурированию настроек генерации кода по умолчанию для данных

Перед конфигурированием настроек генерации кода по умолчанию для элементов данных примите во внимание факторам, перечисленные в этой таблице.

ФакторДополнительная информация
Какие категории относятся к вашей модели?Категории элементов данных в предыдущей таблице
Используется ли в модели несколько образцов данных, находящихся в категории? Если ответ да, применение отображений по умолчанию выгодно. В противном случае рассмотрите настройку генерации кода для каждого элемента данных по отдельности.
Какой класс памяти соответствует требованиям генерации кода для каждой категории? Выберите класс памяти для контроля представления данных в сгенерированном коде
Вы хотите помешать оптимизации исключить конкретные данные из кода? Исключение категорий данных оптимизациями

После того, как вы сконфигурируете одну или несколько категорий элементов модели, установка разделов памяти и параметров конфигурации Shared utilities identifier format модели не влияет на строение модели. Когда вы открываете приложение кодера, Simulink переносит настройки параметра конфигурации модели в редактор Отображения. В рамках миграции Simulink конфигурирует словарь Embedded Coder Dictionary, который использует модель, как описано в Migration of Memory Section и Shared Utility Settings from Параметры Конфигурации to Code Mappings (Embedded Coder).

Исключение категорий данных оптимизациями

Оптимизация генерации кода может исключить данные из кода, что означает, что ваш код приложения не может взаимодействовать с данными. Для получения общей информации об устранении данных оптимизациями смотрите, Как Сгенерированный код хранит Внутренний сигнал, Состояние и Данные параметра (Embedded Coder).

Оптимизация может исключить данные только в этих категориях:

  • Model parameters

  • Model parameter arguments

  • External parameters

  • Internal data

После устранения данных с оптимизациями генератор кода применяет настройки генерации кода по умолчанию в отображениях кода к остальным данным. Для параметров и сигнальных линий оптимизация может исключить данные для целой категории. Если это исключение происходит, настройки по умолчанию, заданные для этой категории, не применяются к данным.

Чтобы предотвратить удаление оптимизации отдельных элементов данных, явно примените класс памяти к отдельному элементу. Класс памяти управляет внешним видом данных в сгенерированном коде. Чтобы заставить элемент данных использовать заданный по умолчанию класс памяти, явно примените класс памяти Model default. Смотрите раздел «Выбор класса памяти для управления представлением данных в сгенерированном коде».

Общие значения данных словаря по умолчанию

Если вы связываете модель со словарем данных Simulink, который включает словарь кодера, конфигурирующий определения кода по умолчанию для категорий данных, можно использовать редактор Отображения, чтобы применить значения по умолчанию словаря. В редакторе Отображения на вкладке Data Defaults выберите категорию и установите класс памяти равным Dictionary Default. Если кто-то вносит изменения в настройки по умолчанию в словаре общего кодера, генератор кода применяет обновленные настройки по умолчанию при производстве кода для вашей модели. См. «Настройка отображения кода по умолчанию в общем словаре» (Embedded Coder).

Строения для отдельных элементов данных

После настройки параметров по умолчанию для всей модели можно переопределить значения по умолчанию для отдельных элементов данных. Индивидуальное строение элемента данных применяется к определенному элементу данных в модели. Сконфигурируйте элементы данных по отдельности, когда:

  • Модель включает несколько элементы массива данной категории, которые имеют уникальные требования к источнику, именованию или размещению.

  • Вы сконфигурировали настройки по умолчанию и хотите переопределить настройку по умолчанию для отдельного элемента.

Для отдельных элементов данных первоначально для класса памяти задано значение Auto, что означает, что генератор кода может исключить или изменить представление соответствующего кода в целях оптимизации. Если оптимизация невозможна, генератор кода применяет строение модели по умолчанию.

  • Чтобы избежать оптимизации и заставить генератор кода использовать строение по умолчанию, установите класс памяти равным Model default.

  • Чтобы переопределить строение по умолчанию, задайте класс памяти, который удовлетворяет требованиям генерации кода для этого элемента данных.

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

Сконфигурируйте данные

  1. Откройте приложение Simulink Coder™.

  2. Сконфигурируйте отображения по умолчанию для категорий элементов данных. Выберите Code Interface > Default Code Mappings. В редакторе Отображения на вкладке Data Defaults выберите категорию элемента модели и установите класс памяти. В Property Inspector установите свойства класса памяти так, чтобы они совпадали с требованиями модели.

  3. Решите, следует ли переопределять настройки строения по умолчанию для отдельных элементов данных. Если вы решили не переопределять настройки, перейдите к шагу 8.

  4. Идентифицируйте переменный MATLAB, которые вы хотите сконфигурировать по отдельности, и сохраните строения в файле модели. В Model Explorer преобразуйте переменные в Simulink.Parameter объекты. Получившиеся объекты данных появляются в редакторе Отображения в качестве параметров модели.

  5. Идентифицируйте сигналы, представляющие данные алгоритма, которые вы хотите контролировать, в то время как сгенерированный код выполняет и конфигурируйте эти сигналы индивидуально. Для каждого сигнала, который вы идентифицируете, выполните одно из следующих действий:

    • Для данных о сигнале, который характерен для модели (не является общим), добавьте сигналы к редактору Отображения.

    • Для данных общего сигнала создайте и сконфигурируйте Simulink.Signal объекты.

  6. Сконфигурируйте отдельные элементы данных. В редакторе Отображения щелкните вкладку категории, выберите элемент данных и установите класс памяти. В Property Inspector задайте значения свойств классов памяти. Чтобы изменить настройку параметра конфигурации модели Default parameter behavior, щелкните ссылку, указывающую поведение, когда класс памяти установлен на Auto. В диалоговом окне Model Configuration Parameters измените настройку параметра на Tunable или Inline.

    Для получения информации о конфигурировании определенных типов элементов данных смотрите:

  7. Чтобы просмотреть и сконфигурировать внешние объекты данных, которые хранятся в базовом рабочем пространстве или словаре данных, в редакторе Отображения, на вкладке Data Defaults, нажмите Refresh ссылка справа от имени категории.

  8. Сгенерируйте и проверьте код.

Для получения дополнительной информации и примеров смотрите:

См. также

|

Похожие темы