Code Mappings Editor

Объединенные элементы данных модели и точка входа функционируют с определениями кода

Описание

Редактор Отображений Кода является графическим интерфейсом, где можно сконфигурировать элементы данных модели и функции точки входа для генерации кода. Сопоставьте каждую категорию элемента данных модели с определенным классом памяти в модели. Класс памяти задает свойства, такие как внешний вид и местоположение, которое генератор кода использует при создании кода для связанных данных. Можно также сопоставить каждую категорию функций точки входа модели с определенным функциональным шаблоном настройки. Шаблоны задают, как генератор кода производит код для присоединенных функций. В редакторе Отображений Кода можно заменить отображения по умолчанию для определенных функций точки входа. Замените отображения по умолчанию для определенных элементов данных при помощи представления Code Model Data Editor.

Редактор Отображений Кода отображение состоит из таблиц с вкладками: Data Defaults, Function Defaults и Functions. Используйте таблицы, чтобы установить определения кода для категорий элементов данных модели и функций или отдельных функций. Раздел Code Property Inspector отображает ваш выбор и задан ли раздел memory для класса памяти или функционального шаблона настройки.

Откройте редактор отображений кода

  • В Apps gallery, под Code generation, нажимают Embedded Coder. Вкладка C Code открывается, который включает редактор Отображений Кода. Кликните по вкладке Code Mappings.

  • Во вкладке C Code выберите Settings> Code Mappings.

  • В холсте модели кликните по перспективному управлению в нижнем правом углу и выберите Code. Затем кликните по вкладке Code Mappings.

Примеры

Сконфигурируйте генерацию кода для корневого Inports и выходных портов

Сконфигурируйте генерацию кода для корневых блоков Inport и Outport в модели. Применение настроек по умолчанию может сэкономить время, специально для крупномасштабных моделей, которые используют существенное количество данных. После применения отображений по умолчанию можно настроить отображения для отдельных элементов данных при помощи Model Data Editor.

Настройте среду в качестве примера

  1. Скопируйте внешние файлы кода в перезаписываемую папку.

    copyfile(fullfile(matlabroot,'toolbox','rtw','rtwdemos','roll_input_data.c'));
    copyfile(fullfile(matlabroot,'toolbox','rtw','rtwdemos','roll_input_data.h'));
    copyfile(fullfile(matlabroot,'toolbox','rtw','rtwdemos','roll_heading_mode.c'));
    copyfile(fullfile(matlabroot,'toolbox','rtw','rtwdemos','roll_heading_mode.h'));
  2. Открытая модель rtwdemo_roll. Сохраните копию в папке модели, где вы скопировали внешние файлы кода.

  3. Откройте приложение Embedded Coder. В Apps gallery, под Code generation, нажимают Embedded Coder. Вкладка C Code открывается, который включает редактор Отображений Кода.

Сконфигурируйте отображения по умолчанию

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

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

  • Представляйте переменные для блоков модели Outport как отдельные глобальные переменные.

  • Задайте выходные переменные в roll_output_data.c и объявите их в roll_output_data.h.

  1. Под Code Mappings нажмите кнопку Refresh.

  2. Кликните по вкладке Data Defaults если не уже выбранный.

  3. Установите класс памяти для категории элемента модели Inports к ImportFromFile.

  4. В Property Inspector, набор Header File к roll_input_data.h.

  5. Установите класс памяти для категории элемента модели Outports к ExportToFile.

  6. Установите Header File на roll_output_data.h и Definition File к roll_output_data.c.

Замените отображения по умолчанию

Замените исходное местоположение по умолчанию для переменной HDG_Mode импорта. Та переменная объявляется во внешнем файле roll_heading_mode.h.

  1. Откройте Model Data Editor путем нажатия на вкладку Model Data Editor.

  2. Выберите HDG_Mode строка.

  3. Установите Storage Class на ImportFromFile.

  4. В Property Inspector расширьте раздел Code . Установите Header File на roll_heading_mode.h.

Сконфигурируйте установки параметров всей модели

  1. Сконфигурируйте генератор кода, чтобы произвести имена переменных в коде для блоков Inport и Outport, которые совпадают с именами переменных во внешних файлах roll_input_data.h и roll_heading_mode.h. Установите параметр конфигурации модели Global variables на $N$M, удаление rt префикс, который генератор кода применяет по умолчанию.

  2. Включайте внешние исходные файлы roll_input_data.c и roll_heading_mode.c в генерации кода и процессе сборки. Установите параметр конфигурации модели Source files на roll_input_data.c roll_heading_mode.c.

  3. Сохраните модель.

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

Сгенерируйте код и проверьте, что код, сгенерированный для блоков Inport и Выхода, появляется, как вы ожидаете.

  • rtwdemo_roll.h включает эти заголовочные файлы, сопоставленные с классами памяти:

    #include "roll_output_data.h"
    #include "roll_input_data.h"
    #include "roll_heading_mode.h"
    
  • roll_heading_mode.c включает roll_heading_mode.h и задает переменную HDG_Mode.

    #include "roll_heading_mode.h"
    
    boolean_T HDG_Mode;
  • roll_input_data.c задает переменные, объявленные в roll_input_data.h.

    #include "roll_input_data.h"
    
    boolean_T AP_Eng;
    real32_T HDG_Ref;
    real32_T Rate_FB;
    real32_T Phi;
    real32_T Psi;
    real32_T TAS;
    real32_T Turn_Knob;
  • roll_output_data.c включает это экспортируемое определение данных:

    real32_T Ail_Cmd;
  • roll_output_data.h включает это экспортируемое объявление данных:

    extern real32_T Ail_Cmd;

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

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

Настройте среду в качестве примера

  1. Открытая модель rtwdemo_multirate_multitasking. Сохраните копию в перезаписываемую папку.

  2. Откройте приложение Embedded Coder. В Apps gallery, под Code generation, нажимают Embedded Coder. Вкладка C Code открывается, который включает редактор Отображений Кода.

Задайте правило именования функции

Создайте функциональный шаблон настройки, который задает правило именования myproj_$R$N.

  1. Откройте Словарь Embedded Coder. Во вкладке C Code выберите Settings> Embedded Coder Dictionary.

  2. Кликните по вкладке Function Customization Templates.

  3. Нажмите Add.

  4. В столбце Name новой строки таблицы назовите новый шаблон myproj_FunctionTemplate.

  5. В столбце Function Name войдите, именование управляют myproj_$R$N.

  6. Закройте словарь Embedded Coder.

Сконфигурируйте отображения по умолчанию

  1. Во вкладке C Code, под Code Mappings, кликают по вкладке Function Defaults.

  2. Для Initialize/Terminate и категорий функции Execution, измените функциональный шаблон настройки по умолчанию от Default к myproj_FunctionTemplate.

  3. Сохраните модель.

Сгенерируйте и рассмотрите код

Сгенерируйте код и проверьте имена функций точки входа.

void myproj_rtwdemo_multirate_multitasking_step0(void) /* Sample time: [1.0s, 0.0s] */
{
  (rtM->Timing.RateInteraction.TID0_1)++;
  if ((rtM->Timing.RateInteraction.TID0_1) > 1) {
       rtM->Timing.RateInteraction.TID0_1 = 0;
  }

  if (rtM->Timing.RateInteraction.TID0_1 == 1) {
      rtDW.RateTransition = rtDW.RateTransition_Buffer0;
  }
      rtY.Out2 = 2.0 * rtDW.RateTransition + rtU.In1_1s;
      rtY.Out1 = (3.0 * rtDW.RateTransition + rtU.In1_1s) * 5.0 + rtY.Out2;
}

/* Model step function for TID1 */
void myproj_rtwdemo_multirate_multitasking_step1(void) /* Sample time: [2.0s, 0.0s] */
{
  rtDW.RateTransition_Buffer0 = rtDW.Integrator_DSTATE;
  rtDW.Integrator_DSTATE += 2.0 * rtU.In2_2s;
}

void myproj_rtwdemo_multirate_multitasking_initialize(void)
{
  /* (no initialization code required) */
}

void myproj_rtwdemo_multirate_multitasking_terminate(void)
{
  /* (no terminate code required) */
}

Настройте отдельные функции точки входа

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

Настройте среду

  1. Скопируйте внешние файлы кода в перезаписываемую папку.

    copyfile(fullfile(matlabroot,'toolbox','rtw','rtwdemos','roll_input_data.c'));
    copyfile(fullfile(matlabroot,'toolbox','rtw','rtwdemos','roll_input_data.h'));
    copyfile(fullfile(matlabroot,'toolbox','rtw','rtwdemos','roll_heading_mode.c'));
    copyfile(fullfile(matlabroot,'toolbox','rtw','rtwdemos','roll_heading_mode.h'));
  2. Открытая модель rtwdemo_roll. Сохраните копию в папке модели, где вы скопировали внешние файлы кода.

  3. Откройте приложение Embedded Coder. В Apps gallery, под Code generation, нажимают Embedded Coder. Вкладка C Code открывается, который включает редактор Отображений Кода.

Настройте функции точки входа

  1. Под Code Mappings кликните по вкладке Functions.

  2. Настройте имя шага (выполнение) функция. В столбце Function Name введите имя roll_run.

  3. Настройте аргументы step функция. Откройте диалоговое окно настройки для step функция путем нажатия на прототипную гиперссылку в столбце Function Preview.

  4. Выберите Configure arguments for Step function prototype.

  5. Чтобы открыть таблицу, которая отображает настройки по умолчанию для аргументов, нажмите Get Default.

  6. Настройте аргументы:

    • От C return argument выпадающий список выберите Ail_Cmd.

    • Для каждого порта, в поле C Identifier Name, удаляют arg_ префикс с их имен по умолчанию.

    • Для HDG_Mode Inport, от C Type Qualifer выпадающий список, выбирают Pointer. В C Identifier Name поле изменяют название на HDG_Ref

  7. Нажмите Apply и проверьте, что прототип функции отражает изменения.

  8. Подтвердите изменения путем нажатия на Validate.

  9. Нажмите OK.

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

  1. Сгенерируйте код.

  2. В представлении Code проверьте обновления в сгенерированном файле C rtwdemo_roll.c. Найти обновленный step функция (roll_run), используйте поле Search.

  3. Выберите step функция, чтобы проверить ее прототип.

    real32_T roll_run(real32_T Phi, real32_T Psi, real32_T Rate_FB, real32_T TAS,
                      boolean_T AP_Eng, boolean_T *HDG_Mode, real32_T *HDG_Ref,
                      real32_T Turn_Knob)

Связанные примеры

Параметры

Значения по умолчанию данных

Называет категорию элементов модели Simulink®. Класс памяти, который вы устанавливаете для категории, применяется к элементам в той категории в модели.

Категория элемента моделиОписание
InportsВходные порты корневого уровня модели.
Выходные портыВыходные порты корневого уровня модели.
Параметры моделиПараметры, которые заданы в модели, такой как параметры в рабочем пространстве модели. Исключает аргументы модели.
Аргументы параметра моделиПараметры блоков в рабочем пространстве модели, которое вы конфигурируете в качестве аргументов модели. Эти параметры отсоединены в блоке модели, чтобы позволить каждому экземпляру модели ввести свое собственное значение. Чтобы задать параметр в качестве аргумента модели, установите флажок Model Data Editor + Parameters + Argument.
Внешние объекты параметраПараметры, которые вы задаете как объекты в базовом рабочем пространстве или в словаре данных. Многоуровневые модели в приложении могут использовать эти параметры.
Разделяемые локальные хранилища данныхData Store Memory блокирует с параметрами блоков установленный Share across model instances. Эти хранилища данных доступны только в модели, где они заданы. Значение хранилища данных совместно используется через экземпляры модели.
Хранилища глобальных данныхХранилища данных, которые заданы объектом сигнала в базовом рабочем пространстве или в словаре данных. Многоуровневые модели в приложении могут использовать эти хранилища данных.
Внутренние данныеЛокальные данные, такие как хранилища данных, дискретные состояния блока, блокируют выходные сигналы и сигналы пересечения нулем.
КонстантыБлок постоянного значения выход и постоянные параметры в модели.

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

Функциональные значения по умолчанию

Называет категорию функций модели Simulink. Функциональный шаблон настройки, который вы устанавливаете для категории, применяется к функциям в той категории в модели.

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

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

Функции

Идентифицирует тип функции точки входа. Для основанных на уровне моделей это свойство обеспечивает частоту дискретизации step функции.

Определение (спецификация), что использование генератора кода, чтобы определить свойства, такие как внешний вид и местоположение, для кода, который это производит для функции модели.

Назовите это использованием генератора кода для функции модели. Для ступенчатой функции, ступенчатой функции базовой ставки для основанных на уровне моделей, ячейка таблицы Function Name обеспечивает доступ к кнопке, которая открывает диалоговое окно Configure C Step Function Interface. Кликните по имени функции, кликните по вертикальным точкам и нажмите Configure Prototype. Чтобы настроить целый интерфейс ступенчатой функции, используйте диалоговое окно Configure C Step Function Interface.

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

Смотрите также

Введенный в R2018a