Код, сопоставляющий редактор

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

Описание

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

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

Откройте код, сопоставляющий редактор

  • Чтобы подготовить модель к генерации кода, используйте Быстрый запуск Embedded Coder. Быстрый запуск помещает вашу модель в перспективу Кода, которая включает редактор Отображений Кода.

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

  • В окне модели выберите Code> C/C++ Code> Configure Model in Code Perspective.

  • Если вы закрываете редактор Отображений Кода, окно Model Editor остается в перспективном режиме Кода. Чтобы вновь открыть редактор Отображений Кода, выберите View> Code Mappings.

Примеры

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

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

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

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

    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. Перспектива открытого кода путем выбора Code> C/C++ Code> Configure Model in Code Perspective.

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

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

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

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

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

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

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

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

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

  5. В Property Inspector, набор 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. Установите 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.

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

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

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

    #include "roll_output_data.h"
    #include "roll_heading_mode.h"
    #include "roll_input_data.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, step и terminate. Чтобы объединяться генерируют код с существующим внешним кодом или выполнить именование стандартов или инструкций, можно настроить правило именования значения по умолчанию. Этот пример показывает, как добавить текстовую строку myproj_ как префикс к $R$. Корректировка правила именования значения по умолчанию может сэкономить время, специально для многоскоростных моделей, для которых генератор кода производит уникальную функцию step для каждого уровня.

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

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

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

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

  1. В окне модели откройте Словарь Embedded Coder путем нажатия на Code> C/C++ Code> Embedded Coder Dictionary.

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

  3. Нажмите Add.

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

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

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

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

  1. Перспектива открытого кода путем выбора Code> C/C++ Code> Configure Model in Code Perspective.

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

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

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

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. Скопируйте внешние файлы кода в свою текущую папку MATLAB.

    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. Введите перспективу Кода путем выбора Code> C/C++ Code> Configure Model in Code Perspective.

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

  1. Откройте редактор Отображений Кода и выберите вкладку Entry-Point Functions.

  2. Настройте имя функции функции точки входа использование одного из этих методов:

    • В соответствии со столбцом Function Name, непосредственно отредактируйте имя функции.

    • В соответствии со столбцом Function Preview, кликните по прототипной гиперссылке функции, чтобы открыть диалоговое окно настройки. В C Initialize Function Name поле редактируют имя функции.

    В данном примере поменяйте имя функции на roll_run.

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

  4. Установите флажок Configure arguments for Step function prototype. Нажмите Get Default, чтобы открыть таблицу, которая отображает настройки по умолчанию для аргументов.

  5. Настройте аргументы со следующими изменениями:

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

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

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

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

  7. Подтвердите изменения clicking Validate.

  8. Нажмите OK, чтобы выйти из диалогового окна.

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

  1. Сгенерируйте код и перейдите к Представлению кода.

  2. Проверьте обновления в сгенерированном файле C, rtwdemo_roll.c. Используйте поле Search, чтобы найти обновленную функцию step (roll_run) как элемент в списке.

  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)

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

Свойства

развернуть все

Функции точки входа

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

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

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

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

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

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

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

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

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

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

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

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

Введенный в R2018a