Строение генерации кода 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.

Для получения дополнительной информации см. раздел «Определение классов памяти, разделов памяти и шаблонов функций для программной архитектуры» и «Создание классов памяти при помощи Custom Storage Class Designer».

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

Уменьшите усилия по подготовке модели к генерации кода 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 ссылка справа от имени категории. При нажатии на эту ссылку обновляется диаграмма модели.
Аргументы параметра моделиПараметры в рабочем пространстве модели, которые вы конфигурируете как аргументы модели. Эти параметры доступны в блоке модели, чтобы позволить каждому образцу модели предоставить свое собственное значение. Чтобы задать параметр в качестве аргумента модели, установите флажок Model Data Editor Parameters > Argument >.
Параметры моделиПараметры, которые заданы в модели, такие как параметры в рабочем пространстве модели. Исключает аргументы модели.
Внешние параметрыПараметры, которые вы определяете как объекты в базовом рабочем пространстве или в словаре данных. Эти параметры могут использоваться несколькими моделями в приложении. Чтобы просмотреть и сконфигурировать эти параметры в редакторе Отображения, нажмите Refresh ссылка справа от имени категории. При нажатии на эту ссылку обновляется диаграмма модели.
Константы

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

  • Значение является массивом, большим, чем порог разворачивания цикла.

  • Адрес значения необходим в коде.

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

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

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

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

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

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

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

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

  • Model parameters

  • Model parameter arguments

  • External parameters

  • Internal data

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

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

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

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

Функции по умолчанию Строения

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

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

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

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

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

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

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

Моделируйте категории функций

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

Категория функции моделиОписание
Инициализация/завершениеФункции точки входа для инициализации и завершения
ВыполнениеФункции точки входа для инициирования выполнения и сброса
Общая утилитаОбщие служебные функции

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

Может потребоваться определить шаблон индивидуальной настройки функции в словаре Embedded Coder. Если кто-то не определил шаблоны индивидуальной настройки функции для модели, редактор Отображения представляет Default как единственная опция шаблона.

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

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

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

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

Общие значения функции словаря по умолчанию

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

Строения отдельных элементов данных и функций

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

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

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

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

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

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

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

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

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

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

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

    Если необходимо определить класс памяти, используйте словарь Embedded Coder. Выберите Code Interface > Embedded Coder Dictionary.

  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. Сгенерируйте и проверьте код.

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

Сконфигурируйте функции

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

  2. Сконфигурируйте отображения по умолчанию для категорий функций. Выберите Code Interface > Default Code Mappings. В редакторе Отображения на вкладке Function Defaults выберите категорию функции и установите шаблон индивидуальной настройки функции.

    Может потребоваться определить шаблон индивидуальной настройки функции. По умолчанию шаблоны недоступны. Чтобы определить шаблон индивидуальной настройки функции, используйте словарь Embedded Coder. Выберите Code Interface > Embedded Coder Dictionary.

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

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

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

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

См. также

| |

Похожие темы