Генератор кода предоставляет инструменты вам, чтобы управлять представлением данных и, если у вас есть Embedded Coder®, функции точки входа в сгенерированном коде. Например, можно сконфигурировать данные и функции для генерации кода, чтобы выполнить стандарты кода и инструкции, интегрировать сгенерированный код с внешним кодом или требования к памяти адреса.
Генератор кода производит код для элементов данных модели и функций:
Данные, такие как импорт, сигналы, состояния и параметры, из которых ваш код приложения может читать и записать в.
Точка входа функционирует, такие как
, который ваш код приложения вызывает, чтобы выполнить алгоритм модели.model
шаг
Можно сконфигурировать элементы данных модели и функции для генерации кода при помощи Code Mappings editor или интерфейса программирования отображений кода (coder.mapping.api.CodeMapping
). Embedded Coder требуется, чтобы конфигурировать функции. Для элементов данных используйте API отображений редактора или кода Отображений Кода вместо, или в дополнение к, создавая и конфигурируя Объекты данных Simulink. Редактор и API позволяют вам сконфигурировать:
Настройки генерации кода по умолчанию, которые применяются в модели для категории элементов данных или функций
Параметры конфигурации, которые применяются к отдельным элементам данных или функциям
Эта схема показывает полный рабочий процесс:
Когда вы открываете модель, созданную в релизе, прежде чем R2020b, Simulink® переместит определения кода, заданные в модели к отображениям типового кодекса.
При необходимости, как часть миграции, Simulink конфигурирует Словарь Embedded Coder, который использует модель. Когда вы сохраняете модель, отображения кода сохранены как часть модели.
Для получения дополнительной информации, такие как эффекты миграции и что рассмотреть перед миграцией, смотрите Миграцию Настроек Данных модели к Отображениям Кода.
Определения кода включают классы памяти, функциональные шаблоны настройки и разделы памяти. Класс памяти задает свойства, такие как внешний вид и местоположение, что генератор кода использует при создании кода для связанных данных. Функциональный шаблон настройки задает, как генератор кода производит код для функций. Для функциональной категории можно задать правило для именования функций и местоположения в памяти для функциональных определений (раздел memory).
Разделы памяти управляют размещением данных и функциональных определений в памяти. В некоторых случаях можно выбрать определенный раздел memory, который вы хотите при конфигурировании элементов данных и функций.
Генератор кода предоставляет предопределенные определения кода для элементов данных. Если у вас есть Embedded Coder, можно использовать Словарь Embedded Coder, чтобы создать и совместно использовать определения кода, например, стандартизировать код, который вы генерируете от многоуровневых моделей или создать определения для различных сред выполнения приложения. Создание пользовательских определений позволяет вам достигнуть целей генерации кода, которым не могут удовлетворить предопределенные определения. Для элементов данных у вас также есть опция создания определений кода, созданных в пакетах при помощи Custom Storage Class Designer Embedded Coder.
Определения кода, которые вы создаете при помощи словаря Embedded Coder, появляются в Code Mappings editor и доступны при помощи API отображений кода. Для некоторых определений, которые вы создаете при помощи Custom Storage Class Designer, можно заставить определения появиться в редакторе Отображений Кода путем конфигурирования Словаря Embedded Coder, чтобы относиться к ним.
По умолчанию определения кода, которые вы создаете при помощи Словаря Embedded Coder для модели, хранятся в файле модели. Можно совместно использовать определения кода между моделями и проектами путем хранения определений в словаре данных Simulink®. Со словарем данных, чтобы изменить разделяемое определение, вы изменяете определение в одном месте — Словарь Embedded Coder.
Для получения дополнительной информации смотрите, Задают Классы памяти, Разделы Памяти и Шаблоны функций для Программной архитектуры и Создают Классы памяти при помощи Custom Storage Class Designer.
Уменьшайте усилие по подготовке модели для генерации кода C путем определения настроек по умолчанию для категорий элементов данных, например, импорт или параметры рабочего пространства модели, через модель. Применение настроек по умолчанию может сэкономить время и снизить риск представления ошибок в коде, особенно для больших моделей и моделей, из которых вы генерируете код мультиэкземпляра.
Настройки по умолчанию применяются в модели, исключая модели, на которые ссылаются. 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
, у вас есть опция определения раздела memory.
Прежде, чем сконфигурировать настройки генерации кода по умолчанию для элементов данных, учтите факторы, перечисленные в этой таблице.
Фактор | Больше информации |
---|---|
Какие категории относятся к вашей модели? | Категории элемента данных в предыдущей таблице |
Модель использует несколько экземпляров данных, которые находятся в категории? Если ответ да, применение отображений по умолчанию выгодно. В противном случае рассмотрите генерацию кода конфигурирования для каждого элемента данных индивидуально. | |
Какой класс памяти выравнивается с вашими требованиями генерации кода для каждой категории? | Выберите Storage Class for Controlling Data Representation in Generated Code |
Вы хотите, чтобы данные модели были структурированы? Например, если вы сконфигурировали модель для генерации кода мультиэкземпляра, структуры могут повысить эффективность кода и удобочитаемость. | Организуйте данные в структуры в сгенерированном коде |
Генератор кода требуется хранить данные в определенных областях памяти? Например, рассмотрите, хранить ли данные об инициализации в медленной памяти и алгоритмические или вычислительные данные в быстродействующей памяти. | |
Вы хотите препятствовать тому, чтобы оптимизация устранила определенные данные из кода? | Устранение категорий данных оптимизацией |
Необходимо ли задать новые классы памяти, которые можно выбрать в Коде, Сопоставляющем редактор? |
После того, как вы сконфигурируете одну или несколько категорий элементов модели, разделы установки memory и параметры конфигурации модели Shared utilities identifier format не оказывает влияния на настройку модели. Когда вы открываете приложение кодера, Simulink перемещает настройки параметра конфигурации модели на редактор Отображений Кода. Как часть миграции, Simulink конфигурирует Словарь Embedded Coder, который модель использует, как описано в Миграции Раздела Memory и Разделяемых Служебных Настройках от Параметров конфигурации до Отображений Кода.
Оптимизация генерации кода может устранить данные из кода, что означает, что ваш код приложения не может взаимодействовать с данными. Для получения общей информации об устранении данных оптимизацией, смотрите Как Хранилища Сгенерированного кода Внутренний Сигнал, состояние и Данные о Параметре.
Оптимизация может устранить данные в этих категориях только:
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 для функций точки входа модели |
Которые функционируют, шаблон настройки выравнивается с вашими требованиями генерации кода для каждой категории? | Задайте классы памяти, разделы памяти и шаблоны функций для программной архитектуры |
Категории требуют, чтобы генератор кода сохранил функциональный код в определенных областях памяти? Например, рассмотрите, хранить ли данные об инициализации в медленной памяти и алгоритмические или вычислительные данные в быстродействующей памяти. | |
Необходимо ли задать новые функциональные шаблоны настройки, которые можно выбрать в Коде, Сопоставляющем редактор? | |
У вас есть требования именования функции? Если ответ да, каковы они? К которым категориям применяются требования? |
После того, как вы сконфигурируете одну или несколько категорий элементов модели, разделы установки memory и параметры конфигурации модели Shared utilities identifier format не оказывает влияния на настройку модели. Когда вы открываете приложение кодера, Simulink перемещает настройки параметра конфигурации модели на редактор Отображений Кода. Как часть миграции, Simulink конфигурирует Словарь Embedded Coder, который модель использует, как описано в Миграции Раздела Memory и Разделяемых Служебных Настройках от Параметров конфигурации до Отображений Кода.
Если вы соединяете модель со словарем данных Simulink, который включает словарь кодера, который конфигурирует определения кода по умолчанию для категорий функций, можно использовать редактор Отображений Кода, чтобы применить значения по умолчанию словаря. В редакторе Отображений Кода, на вкладке Function Defaults, выбирают категорию и устанавливают функциональный шаблон настройки на Dictionary Default
. Если кто-то вносит изменение в настройки по умолчанию в разделяемом словаре кодера, генератор кода применяет обновленные настройки по умолчанию при создании кода для модели. Смотрите Конфигурируют Отображение Кода По умолчанию в Разделяемом Словаре.
После того, как вы сконфигурируете настройки по умолчанию всей модели, можно заменить значения по умолчанию для отдельных элементов данных и функций. Отдельный элемент данных или функциональная настройка применяются к определенному элементу данных или функции в модели. Сконфигурируйте элементы данных, и функционирует индивидуально когда:
Модель включает несколько элементов данной категории, которые имеют уникальный источник, именование или требования размещения.
Вы сконфигурировали настройки по умолчанию, и вы хотите заменить настройку по умолчанию для отдельного элемента.
Для отдельных элементов данных первоначально класс памяти установлен в Auto
, что означает, что генератор кода может устранить или изменить представление соответствующих норм в целях оптимизации. Если оптимизация не возможна, генератор кода применяет настройку по умолчанию модели.
Чтобы избежать оптимизации и обеспечить генератор кода, чтобы использовать настройку по умолчанию, установите класс памяти на Model default
.
Чтобы заменить настройку по умолчанию, задайте класс памяти, который удовлетворяет требования генерации кода для того элемента данных.
Если элемент данных в модели без имени (например, сигнал не имеет никакой метки, или состояние не имеет никакого имени), необходимо задать идентификатор кода для элемента данных при конфигурировании его для генерации кода C. Установите идентификатор кода путем определения значения для свойства Identifier класса памяти.
Для отдельных функций можно настроить имя функции. Для функций выполнения, таких как ступенчатые функции и Simulink функционирует для модели, можно сконфигурировать аргументы функции.
Откройте приложение Embedded Coder.
Сконфигурируйте отображения по умолчанию для категорий элементов данных. Выберите Code Interface > Default Code Mappings. В редакторе Отображений Кода, на вкладке Data Defaults, выбирают категорию элемента модели и устанавливают класс памяти. В Property Inspector, свойства класса памяти набора выровняться с требованиями модели.
Если необходимо задать класс памяти, используйте Словарь Embedded Coder. Выберите Code Interface > Embedded Coder Dictionary.
Решите, заменить ли параметры конфигурации по умолчанию для отдельных элементов данных. Если вы принимаете решение не заменить настройки, перейдите к шагу 8.
Идентифицируйте переменные MATLAB, которые вы хотите сконфигурировать индивидуально и сохранить настройки в файле модели. В Model Explorer преобразуйте переменные в Simulink.Parameter
объекты. Получившиеся объекты данных появляются в редакторе Отображений Кода как параметры модели.
Идентифицируйте сигналы, представляющие данные об алгоритме, которые вы хотите контролировать, в то время как сгенерированный код выполняется, и сконфигурируйте те сигналы индивидуально. Для каждого сигнала, что вы идентифицируете, выполнить одно из следующих действий:
Для данных сигнала, который характерен для модели (не совместно использованный), добавьте сигналы в редактор Отображений Кода.
Для разделяемых данных сигнала создайте и сконфигурируйте Simulink.Signal
объекты.
Сконфигурируйте отдельные элементы данных. В редакторе Отображений Кода кликните по вкладке категории, выберите элемент данных и установите класс памяти. В Property Inspector, значениях свойств класса памяти набора. Чтобы изменить настройки параметра конфигурации модели Default parameter behavior, щелкните по ссылке, указывающей на поведение, когда класс памяти будет установлен в Auto
. В диалоговом окне Model Configuration Parameters измените установку параметра в Tunable
или Inline
.
Для получения информации о конфигурировании определенных типов элементов данных см.:
Чтобы просмотреть и сконфигурировать внешние объекты данных, которые хранятся в базовом рабочем пространстве или словаре данных, в редакторе Отображений Кода, на вкладке Data Defaults, нажимают Refresh
соединитесь справа от названия категории.
Сгенерируйте и рассмотрите код.
Для получения дополнительной информации и примеры, см.:
Задайте классы памяти, разделы памяти и шаблоны функций для программной архитектуры
Сконфигурируйте генерацию кода C по умолчанию для категорий элементов данных и функций
Сконфигурируйте блоки Корневого Уровня Inport для генерации кода C
Сконфигурируйте блоки выходного порта Корневого Уровня для генерации кода C
Сконфигурируйте генерацию кода C для функций точки входа модели
Откройте приложение Embedded Coder.
Сконфигурируйте отображения по умолчанию для категорий функций. Выберите Code Interface > Default Code Mappings. В редакторе Отображений Кода, на вкладке Function Defaults, выбирают функциональную категорию и устанавливают функциональный шаблон настройки.
Вы можете должны быть задать функциональный шаблон настройки. Шаблоны не доступны по умолчанию. Чтобы задать функциональный шаблон настройки, используйте Словарь Embedded Coder. Выберите Code Interface > Embedded Coder Dictionary.
Решите, заменить ли параметры конфигурации по умолчанию для отдельных функций. Если вы принимаете решение не заменить настройки, перейдите к шагу 5.
Сконфигурируйте отдельные функции точки входа. В редакторе Отображений Кода кликните по вкладке Functions, выберите функцию и установите функциональный шаблон настройки. В качестве альтернативы можно задать имя функции. Для функций выполнения, таких как ступенчатая функция модели, можно настроить аргументы функции. Щелчок по функциональной ссылке предварительного просмотра открывает диалоговое окно, которое можно использовать, чтобы настроить интерфейс целой функции.
Сгенерируйте и рассмотрите код.
Для получения дополнительной информации и примеры, см.:
Редактор Отображений кода | coder.mapping.api.CodeMapping
| Словарь Embedded Coder