Генератор кода предоставляет инструменты для управления представлением данных и, при наличии Embedded Coder ®, функциями начальной точки в сгенерированном коде. Например, можно настроить данные и функции для создания кода в соответствии со стандартами и инструкциями по кодированию, интегрировать сгенерированный код с внешним кодом или выполнить адресные требования к памяти.
Генератор кода создает код для элементов и функций данных модели:
Такие данные, как входные данные, сигналы, состояния и параметры, из которых может быть считан и записан код приложения.
Функции начального уровня, такие как
, который код приложения вызывает для выполнения алгоритма модели.model
_step
Элементы и функции данных модели можно настроить для генерации кода с помощью редактора сопоставлений кодов или интерфейса программирования сопоставлений кодов (coder.mapping.api.CodeMapping
). Для настройки функций требуется встроенный кодер. Для элементов данных вместо создания и настройки объектов данных Simulink или в дополнение к ним используйте редактор сопоставлений кода или API сопоставлений кода. Редактор и API позволяют настраивать:
Параметры создания кода по умолчанию, применяемые в модели для категории элементов данных или функций
Параметры конфигурации, применяемые к отдельным элементам данных или функциям
На этой диаграмме показан общий рабочий процесс:
При открытии модели, созданной в выпуске перед R2020b, Simulink ® переносит определения кода, указанные в модели, в сопоставления кода модели.
При необходимости в рамках миграции Simulink настраивает словарь встроенного кодера, используемый моделью. При сохранении модели сопоставления кода сохраняются как часть модели.
Дополнительные сведения, например, о последствиях миграции и о том, что следует учитывать перед миграцией, см. в разделе Миграция конфигураций данных модели в сопоставления кода.
Определения кода включают классы хранения, шаблоны настройки функций и разделы памяти. Класс хранения определяет такие свойства, как внешний вид и местоположение, которые генератор кода использует при создании кода для связанных данных. Шаблон настройки функции определяет, как генератор кода создает код для функций. Для категории функций можно определить правило именования функций и расположение в памяти для определений функций (раздел памяти).
Разделы памяти управляют размещением данных и определений функций в памяти. В некоторых случаях при конфигурировании элементов и функций данных можно выбрать конкретный раздел памяти.
Генератор кода предоставляет предопределенные определения кода для элементов данных. Если имеется Embedded Coder, можно использовать Embedded Coder Dictionary для создания и совместного использования определений кода, например, для стандартизации кода, генерируемого из нескольких моделей, или для создания определений для различных сред выполнения приложений. Создание пользовательских определений позволяет достичь целей создания кода, которым предопределенные определения не могут соответствовать. Для элементов данных можно также создать определения кода, созданные в пакетах с помощью конструктора пользовательских классов хранения Embedded Coder.
Определения кода, созданные с помощью словаря Embedded Coder, появляются в редакторе Сопоставления кода и доступны с помощью API сопоставления кода. Для некоторых определений, создаваемых с помощью Custom Storage Class Designer, можно сделать определения отображаемыми в редакторе сопоставлений кодов, настроив для них Embedded Coder Dictionary.
По умолчанию определения кода, созданные с помощью словаря встроенного кодера для модели, хранятся в файле модели. Можно совместно использовать определения кода между моделями и проектами, сохранив определения в словаре данных Simulink ®. При использовании словаря данных для изменения общего определения необходимо изменить определение в одном месте - словаре встроенного кодера.
Дополнительные сведения см. в разделах Определение классов хранения, разделов памяти и шаблонов функций для архитектуры программного обеспечения и Создание классов хранения с помощью пользовательского конструктора классов хранения.
Сократите усилия по подготовке модели для генерации кода C, указав конфигурации по умолчанию для категорий элементов данных, например, для входов или параметров рабочей области модели, для всей модели. Применение конфигураций по умолчанию позволяет сэкономить время и снизить риск появления ошибок в коде, особенно для более крупных моделей и моделей, из которых создается многоэкземплярный код.
Конфигурации по умолчанию применяются ко всей модели, исключая ссылочные модели. Simulink сохраняет отдельный набор сопоставлений кода как часть каждой модели в иерархии привязок модели.
Если модель включает значительное количество элементов данной категории (например, более 10), более эффективно настроить категорию с помощью настройки по умолчанию, а затем переопределить эту настройку для особых случаев.
Параметры по умолчанию позволяют сократить ввод данных вручную.
При добавлении блоков и сигналов в модель новые элементы данных наследуют настройки по умолчанию.
Чтобы изменить настройки генерации кода сразу для многих элементов данных, внесите изменения в одном месте - настройках по умолчанию.
Для повышения эффективности используйте правила именования при внесении изменений в другие части модели.
Настройка значений по умолчанию выполняется с помощью редактора сопоставлений кодов
, вкладки «Значения по умолчанию» или setDataDefault
функция.
Настройка значений по умолчанию выполняется с помощью редактора сопоставлений кодов
, вкладки «Значения по умолчанию» или setDataDefault
функция. На закладке Значения по умолчанию (Data Defaults) или вызове функции можно выбрать или указать эти категории элементов данных.
Категория элементов модели | Описание |
---|---|
Inports | Входные порты корневого уровня модели, такие как блоки Inport и In Bus Element. |
Вспомогательные порты | Выходные порты корневого уровня модели, такие как блоки Outport и Out Bus Element. |
Сигналы, состояния и внутренние данные | Элементы данных, являющиеся внутренними для модели, такие как выходные сигналы блоков, состояния дискретных блоков, хранилища данных и сигналы пересечения нулей. |
Общие локальные хранилища данных | Блоки памяти хранилища данных, для которых установлен параметр блока Общий доступ для экземпляров модели. Эти хранилища данных доступны только в той модели, где они определены. Значение хранилища данных является общим для всех экземпляров модели. |
Глобальные хранилища данных | Хранилища данных, определяемые сигнальным объектом в базовой рабочей области или в словаре данных. Эти хранилища данных могут использоваться несколькими моделями в приложении. Чтобы просмотреть и настроить эти хранилища данных в редакторе сопоставлений кодов, нажмите кнопку Refresh ссылка справа от имени категории. Если щелкнуть эту ссылку, будет обновлена схема модели. |
Аргументы параметра модели | Параметры в рабочей области модели, настраиваемые как аргументы модели. Эти параметры отображаются в блоке модели, чтобы каждый экземпляр модели мог предоставить свое собственное значение. Чтобы задать параметр в качестве аргумента модели, установите флажок Редактор данных модели > Параметры > Аргумент. |
Параметры модели | Параметры, определенные в модели, такие как параметры в рабочем пространстве модели. Исключает аргументы модели. |
Внешние параметры | Параметры, определяемые как объекты в базовой рабочей области или в словаре данных. Эти параметры могут использоваться несколькими моделями в приложении. Чтобы просмотреть и настроить эти параметры в редакторе сопоставлений кодов, нажмите кнопку Refresh ссылка справа от имени категории. Если щелкнуть эту ссылку, будет обновлена схема модели. |
Константы | Вывод блока с постоянным значением и параметры, которые не удалось встроить. Эти значения хранятся в переменных по одной из следующих причин.
|
Если для категории элементов данных установлено хранилище по умолчанию Default
, можно указать раздел памяти.
Перед настройкой параметров генерации кода по умолчанию для элементов данных необходимо учесть рекомендации, приведенные в этой таблице.
Соображение | Дополнительные сведения |
---|---|
Какие категории имеют отношение к модели? | Категории элементов данных в предыдущей таблице |
Использует ли модель несколько экземпляров данных, входящих в категорию? Если ответ «да», то полезно применять сопоставления по умолчанию. В противном случае рассмотрите возможность индивидуальной настройки генерации кода для каждого элемента данных. | |
Какой класс хранения соответствует требованиям к созданию кода для каждой категории? | Выбор класса склада для представления контроллинговых данных в сгенерированном коде |
Вы хотите структурировать данные модели? Например, если модель настроена на создание кода в нескольких экземплярах, структуры могут повысить эффективность кода и удобочитаемость. | Упорядочение данных по структурам в сгенерированном коде |
Требуется ли генератор кода для хранения данных в определенных областях памяти? Например, рассмотрим, следует ли хранить данные инициализации в медленной памяти и алгоритмические или вычислительные данные в быстрой памяти. | |
Запретить оптимизацию для исключения определенных данных из кода? | Исключение категорий данных путем оптимизации |
Нужно ли определять новые классы хранения, которые можно выбрать в редакторе сопоставления кодов? |
После настройки одной или нескольких категорий элементов модели настройка разделов памяти и параметров конфигурации модели формата идентификатора общих утилит не влияет на конфигурацию модели. При открытии приложения кодера Simulink переносит настройки параметров конфигурации модели в редактор сопоставлений кода. В рамках миграции Simulink настраивает используемый в модели словарь встроенного кодера, как описано в разделе «Миграция памяти» и «Общие настройки утилит» из параметров конфигурации в сопоставления кода.
Оптимизация генерации кода может исключить данные из кода, что означает, что код приложения не может взаимодействовать с данными. Общие сведения об исключении данных с помощью оптимизации см. в разделе Как сгенерированный код хранит внутренний сигнал, состояние и данные параметров.
Оптимизация позволяет исключить данные только в следующих категориях:
Параметры модели
Аргументы параметра модели
Внешние параметры
Внутренние данные
После исключения данных с оптимизацией генератор кода применяет настройки генерации кода по умолчанию в сопоставлениях кода к оставшимся данным. Для параметров и сигнальных линий оптимизация может исключить данные для всей категории. При таком исключении параметры по умолчанию, заданные для этой категории, не применяются к данным.
Чтобы не допустить исключения оптимизаций отдельных элементов данных, явным образом примените класс хранения к отдельному элементу. Класс хранения управляет внешним видом данных в созданном коде. Чтобы принудительно использовать указанный класс хранения по умолчанию для элемента данных, явным образом примените класс хранения Model default
. См. раздел Выбор класса склада для представления контроллинговых данных в сгенерированном коде.
Если модель связана со словарем данных Simulink, включающим словарь кодера, который настраивает определения кодов по умолчанию для категорий данных, можно использовать редактор сопоставления кодов для применения значений словаря по умолчанию. В редакторе сопоставлений кодов на вкладке «Значения по умолчанию» выберите категорию и задайте для класса хранения значение Dictionary Default
. Если кто-то изменяет настройки по умолчанию в общем словаре кодеров, генератор кода применяет обновленные настройки по умолчанию при создании кода для модели. См. раздел Настройка сопоставления кодов по умолчанию в общем словаре.
Сократите усилия по подготовке модели для генерации кода C, указав конфигурации по умолчанию для категорий и функций, таких как функции инициализации/завершения и выполнения, в модели. Применение конфигураций по умолчанию позволяет сэкономить время и снизить риск появления ошибок в коде, особенно для более крупных моделей и моделей, из которых создается многоэкземплярный код.
Конфигурации по умолчанию применяются ко всей модели, исключая ссылочные модели. Simulink сохраняет отдельный набор сопоставлений кода как часть каждой модели в иерархии привязок модели.
Если модель включает значительное количество функций данной категории (например, более 10), более эффективно настроить категорию с помощью настройки по умолчанию, а затем переопределить эту настройку для особых случаев.
Параметры по умолчанию позволяют сократить ввод данных вручную.
При добавлении блоков и сигналов в модель новые функции наследуют настройки по умолчанию.
Чтобы изменить настройки генерации кода сразу для многих функций, внесите изменения в одном месте - настройках по умолчанию.
Для повышения эффективности используйте правила именования при внесении изменений в другие части модели.
Настройка параметров функции по умолчанию выполняется с помощью редактора сопоставлений кодов
на вкладке «Параметры функции по умолчанию» или в диалоговом окне setDataDefault
функция. На закладке Значения по умолчанию (Function Defaults) или вызове функции можно выбрать или указать эти категории функций.
Тип функции модели | Описание |
---|---|
Инициализация/завершение | Функции начального уровня для инициализации и завершения |
Выполнение | Функции начального уровня для инициирования выполнения и сброса |
Общая утилита | Общие служебные функции |
Генератор кода использует правила именования по умолчанию для именования функций точки входа. Чтобы интегрировать созданный код с существующим внешним кодом или соответствовать стандартам или рекомендациям по именованию, можно скорректировать правило именования по умолчанию. Корректировка правила именования по умолчанию может сэкономить время, особенно для многоскоростных моделей, для которых генератор кода создает уникальный step
функция для каждой скорости.
Возможно, потребуется определить шаблон настройки функции в словаре встроенного кодера. Если кто-то не определил шаблоны настройки функций для модели, в редакторе Сопоставления кодов (Code Mappings) Default
как единственный вариант шаблона.
Перед настройкой параметров генерации кода по умолчанию для функций необходимо учесть рекомендации, приведенные в этой таблице.
Соображение | Дополнительные сведения |
---|---|
Какие категории имеют отношение к модели? | Типы функций в предыдущей таблице |
Используется ли в модели несколько экземпляров функций, входящих в категорию? Если ответ «да», то полезно применять сопоставления по умолчанию. В противном случае рассмотрите возможность индивидуальной настройки генерации кода для каждой функции. | Конфигурирование генерации кода C для функций точек входа модели |
Какой шаблон настройки функции соответствует требованиям к созданию кода для каждой категории? | Определение классов хранения, разделов памяти и шаблонов функций для архитектуры программного обеспечения |
Требуется ли генератору кода сохранять код функции в определенных областях памяти? Например, рассмотрим, следует ли хранить данные инициализации в медленной памяти и алгоритмические или вычислительные данные в быстрой памяти. | |
Нужно ли определять новые шаблоны настройки функций, которые можно выбрать в редакторе сопоставления кодов? | |
Существуют ли требования к именованию функций? Если ответ - да, то что это? К каким категориям применяются требования? |
После настройки одной или нескольких категорий элементов модели настройка разделов памяти и параметров конфигурации модели формата идентификатора общих утилит не влияет на конфигурацию модели. При открытии приложения кодера Simulink переносит настройки параметров конфигурации модели в редактор сопоставлений кода. В рамках миграции Simulink настраивает используемый в модели словарь встроенного кодера, как описано в разделе «Миграция памяти» и «Общие настройки утилит» из параметров конфигурации в сопоставления кода.
Если модель связана со словарем данных Simulink, включающим словарь кодера, который настраивает определения кодов по умолчанию для категорий функций, можно использовать редактор сопоставления кодов для применения значений словаря по умолчанию. В редакторе Сопоставления кодов на вкладке Значения по умолчанию для функции выберите категорию и задайте для шаблона настройки функции значение Dictionary Default
. Если кто-то изменяет настройки по умолчанию в общем словаре кодеров, генератор кода применяет обновленные настройки по умолчанию при создании кода для модели. См. раздел Настройка сопоставления кодов по умолчанию в общем словаре.
После настройки настроек по умолчанию для всей модели можно переопределить значения по умолчанию для отдельных элементов данных и функций. Отдельный элемент данных или конфигурация функции применяются к определенному элементу данных или функции в модели. Конфигурировать элементы данных и функции по отдельности в следующих случаях:
Модель включает несколько элементов данной категории, которые имеют уникальные требования к источнику, именованию или размещению.
Настройки по умолчанию настроены, и необходимо переопределить настройки по умолчанию для отдельного элемента.
Для отдельных элементов данных сначала устанавливается класс хранения Auto
, что означает, что генератор кода может исключить или изменить представление соответствующего кода в целях оптимизации. Если оптимизация невозможна, генератор кода применяет конфигурацию модели по умолчанию.
Чтобы избежать оптимизации и заставить генератор кода использовать конфигурацию по умолчанию, задайте для класса хранения значение Model default
.
Чтобы переопределить конфигурацию по умолчанию, укажите класс хранения, соответствующий требованиям к созданию кода для этого элемента данных.
Если элемент данных в модели не имеет имени (например, сигнал не имеет метки или состояние не имеет имени), необходимо указать идентификатор кода для элемента данных при настройке его для генерации кода Си. Задайте идентификатор кода, указав значение для свойства класса хранения Identifier.
Для отдельных функций можно настроить имя функции. Для функций выполнения, таких как пошаговые функции и функции Simulink для модели, можно настроить аргументы функции.
Откройте приложение Embedded Coder.
Настройка сопоставлений по умолчанию для категорий элементов данных. Выберите Интерфейс кода > Сопоставления кодов по умолчанию. В редакторе сопоставлений кодов на вкладке «Значения по умолчанию» выберите категорию элементов модели и задайте класс хранения. В инспекторе свойств задайте свойства класса хранения в соответствии с требованиями модели.
Если требуется определить класс хранения, используйте Embedded Coder Dictionary. Выберите Интерфейс кода > Embedded Coder Dictionary.
Решите, следует ли переопределять параметры конфигурации по умолчанию для отдельных элементов данных. Если вы решили не переопределять настройки, перейдите к шагу 8.
Определите переменные MATLAB, которые необходимо настроить индивидуально, и сохраните конфигурации в файле модели. В обозревателе моделей преобразуйте переменные в Simulink.Parameter
объекты. Результирующие объекты данных отображаются в редакторе сопоставлений кодов в качестве параметров модели.
Определите сигналы, представляющие данные алгоритма, которые необходимо контролировать во время выполнения сгенерированного кода, и настройте эти сигналы по отдельности. Для каждого идентифицируемого сигнала выполните одно из следующих действий:
Для данных сигналов, специфичных для модели (не общих), добавьте сигналы в редактор сопоставлений кодов.
Для общих сигнальных данных создайте и сконфигурируйте Simulink.Signal
объекты.
Сконфигурируйте отдельные элементы данных. В редакторе сопоставлений кодов перейдите на вкладку категории, выберите элемент данных и задайте класс хранения. В инспекторе свойств задайте значения свойств класса хранения. Чтобы изменить настройку параметра конфигурации модели Поведение параметра по умолчанию, щелкните ссылку, указывающую поведение, когда для класса хранения установлено значение Auto
. В диалоговом окне Параметры конфигурации модели (Model Configuration Parameters) измените значение параметра на Tunable
или Inline
.
Для получения информации о настройке определенных типов элементов данных см.:
Чтобы просмотреть и настроить внешние объекты данных, хранящиеся в базовой рабочей области или словаре данных, в редакторе сопоставлений кодов на вкладке «Значения по умолчанию» нажмите кнопку Refresh
ссылка справа от имени категории.
Создание и просмотр кода.
Дополнительные сведения и примеры см. в следующих разделах:
Откройте приложение Embedded Coder.
Настройка сопоставлений по умолчанию для категорий функций. Выберите Интерфейс кода > Сопоставления кодов по умолчанию. В редакторе Сопоставления кодов на вкладке Параметры функции выберите категорию функции и задайте шаблон настройки функции.
Может потребоваться определить шаблон настройки функции. Шаблоны по умолчанию недоступны. Для определения шаблона настройки функции используйте Embedded Coder Dictionary. Выберите Интерфейс кода > Embedded Coder Dictionary.
Решите, следует ли переопределять настройки конфигурации по умолчанию для отдельных функций. Если вы решили не переопределять настройки, перейдите к шагу 5.
Сконфигурируйте отдельные функции точки входа. В редакторе сопоставлений кодов перейдите на вкладку Функции, выберите функцию и задайте шаблон настройки функции. Кроме того, можно указать имя функции. Для функций выполнения, таких как функция шага модели, можно настроить аргументы функции. Если щелкнуть ссылку предварительного просмотра функции, откроется диалоговое окно, которое можно использовать для настройки всего интерфейса функции.
Создание и просмотр кода.
Дополнительные сведения и примеры см. в следующих разделах:
Редактор сопоставлений кода | coder.mapping.api.CodeMapping
| Словарь встроенного кодера