Структуры данных в сгенерированном коде

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

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

Стандартные структуры данных

В модели корневой уровень Inport и блоки Outport представляют первичные входные параметры и выходные параметры алгоритма блока. По умолчанию генератор кода агрегировал эти блоки в стандартные структуры те входные и выходные данные хранилища.

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

Таблица показывает некоторые структуры общих данных в сгенерированном коде. Имя типа структуры и, если применимо, переменная структуры в коде, который вы генерируете из модели, зависит от настроек модели. Независимо от настроек имя типа структуры в коде содержит краткое название из столбца Short Name of Structure Type в таблице.

Структуры данных, сгенерированные для модели

Краткое название типа структурыДанные, представленные в структуре
ExtU

Данные из корневых блоков Inport

ExtY

Данные из корневых блоков Outport

B

Блокируйте выходные сигналы

ConstB

Блокируйте выходные параметры, которые имеют постоянные значения

P

Параметры блоков

ConstP

Постоянные параметры

DW

Дискретные состояния блока

XDis

Состояние активированных подсистем

InstP

Аргументы параметра

SharedDSMРазделяемые локальные хранилища данных

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

  • Прямое приложение классов памяти. Например, можно использовать классы памяти, чтобы представлять сигналы, настраиваемые параметры и состояния как отдельные глобальные переменные. Для получения дополнительной информации смотрите Настройку генерации кода C для Элементов Интерфейса модели.

  • Параметры конфигурации, такие как те на Optimization разделяют на области в диалоговом окне Configuration Parameters. Можно настроить эти параметры конфигурации, чтобы управлять представлением по умолчанию данных. Для получения дополнительной информации смотрите Параметры конфигурации Модели: Оптимизация Генерации кода.

Структура данных модели реального времени

Получить доступ к полям структуры данных моделирования S-функции (SimStruct), программное обеспечение Simulink обеспечивает набор функций. Генератор кода заменяет SimStruct с оптимизированной моделью реального времени (rtModel) структура данных.

Генерация кода при помощи GRT и системных конечных файлов ERT использует структуру данных модели реального времени (rtModel). Эта структура инкапсулирует информацию модели специфичную в намного более компактной форме, чем структура симуляции SimStruct. В зависимости от модели информация модели специфичная включает данные, такие как внутренние данные для допускающих повторное использование функций и состояния ошибки.

Когда вы устанавливаете упаковку интерфейса Code на Reusable function, данные модели пакетов генератора кода (такие как блок I/O, Dwork и параметры) в структуру данных модели реального времени. Генератор кода передает структуру модели реального времени в отношении сгенерированных функций точки входа модели. Если вы устанавливаете ввод-вывод корневого уровня Передачи относительно Part of model data structure, вход и выход модели корневого уровня пакетов генератора кода в структуру данных модели реального времени.

Эффективные возможности сгенерированного кода зависят от генерации rtModel вместо SimStruct, включая:

  • Целочисленные абсолютные и прошедшие услуги по синхронизации

  • Независимые таймеры для асинхронных задач

  • Генерация улучшенного кода API C для сигнала, состояния и контроля параметра

  • Сокращение структуры данных, чтобы минимизировать ее размер (только ERT-выведенные системные конечные файлы)

Структура данных модели реального времени задана в main.c или main.cpp файл, который сгенерирован, когда вы создаете свою модель. Для моделей ERT, если вы очищаете параметр конфигурации модели, Генерируют пример основная программа, rtModel.h файл сгенерирован. rtModel.h файл содержит #include директивы требуются rt_main.c или rt_cppclass_main.cpp статический основной программный модуль. rt_main.c или rt_cppclass_main.cpp включает rtModel.h получить доступ к структурам данных модели специфичным и точкам входа, потому что статический основной программный модуль не создается во время генерации кода.

Генератор кода обеспечивает набор макросов для доступа к rtModel структура данных. Они макросы походят на ssSetxxx и ssGetxxx макросы, что использование S-функций, чтобы получить доступ к SimStruct данные, включая невстроенные S-функции скомпилированы генератором кода.

Используйте набор макросов rtmGetxxx и rtmSetxxx получить доступ к структуре данных модели реального времени. Они макросы используются в сгенерированном коде, а также в main.c или main.cpp модуль вашего внешнего кода. Если вы настраиваете main.c или main.cpp (или помехи или сгенерированный файл), используйте rtmGetxxx и rtmSetxxx вместо ssSetxxx и ssGetxxx макросы.

Использование rtmGetxxx и rtmSetxxx макросы эквивалентны для ssSetxxx и ssGetxxx версии, за исключением того, что вы заменяете SimStruct S структурой данных модели реального времени rtM. Эта таблица приводит rtmGetxxx и rtmSetxxx макросы, которые используются в grt_main.c и grt_main.cpp.

Макросы для доступа к структуре данных модели реального времени

Синтаксис Макроса rtm

Описание

rtmGetdX(rtm)

Получите производные блочно-непрерывных состояний

rtmGetOffsetTimePtr(RT_MDL rtM)

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

rtmGetNumSampleTimes(RT_MDL rtM)

Получите количество шагов расчета блока

rtmGetPerTaskSampleHitsPtr(RT_MDL)

Возвратите указатель на NumSampleTime × NumSampleTime матрица

rtmGetRTWExtModeInfo(RT_MDL rtM)

Возвратите структуру данных информации о режиме external mode модели (используемый генератором кода только для режима external mode)

rtmGetRTWLogInfo(RT_MDL)

Возвратите структуру данных, используемую логгированием генератора кода (используемый только генератором кода)

rtmGetRTWRTModelMethodsInfo(RT_MDL)

Возвратите структуру данных информации о методах модели реального времени (используемый только генератором кода)

rtmGetRTWSolverInfo(RT_MDL)

Возвратите структуру данных, содержащую информацию о решателе модели (используемый только генератором кода)

rtmGetSampleHitPtr(RT_MDL)

Возвратите указатель на вектор флага Sample Hit

rtmGetSampleTime(RT_MDL rtM, int TID)

Получите шаг расчета задачи

rtmGetSampleTimePtr(RT_MDL rtM)

Получите указатель на шаг расчета задачи

rtmGetSampleTimeTaskIDPtr(RT_MDL rtM)

Получите указатель на ID задачи

rtmGetSimTimeStep(RT_MDL)

Возвратите идентификатор типа шага симуляции (MINOR_TIME_STEP, MAJOR_TIME_STEP)

rtmGetStepSize(RT_MDL)

Возвратите основной размер шага модели

rtmGetT(RT_MDL,t)

Получите текущее время симуляции

rtmSetT(RT_MDL,t)

Установите время следующего демонстрационного хита

rtmGetTaskTime(RT_MDL,tid)

Получите текущее время для текущей задачи

rtmGetTFinal(RT_MDL)

Получите время остановки симуляции

rtmSetTFinal(RT_MDL,finalT)

Установите время остановки симуляции

rtmGetTimingData(RT_MDL)

Возвратите структуру данных, используемую путем синхронизации механизма модели (используемый только генератором кода)

rtmGetTPtr(RT_MDL)

Возвратите указатель на текущее время

rtmGetTStart(RT_MDL)

Получите время начала симуляции

rtmIsContinuousTask(rtm)

Определите, непрерывна ли задача

rtmIsMajorTimeStep(rtm)

Определите, является ли симуляция на существенном шаге

rtmIsSampleHit(RT_MDL,tid)

Определите, поражен ли шаг расчета

rtmGetErrorStatus(rtm)

Получите текущее ошибочное состояние

rtmSetErrorStatus(rtm,val)

Установите текущее ошибочное состояние

rtmGetErrorStatusPointer(rtm)

Возвратите указатель на текущее ошибочное состояние

rtmGetStopRequested(rtm)

Возвратитесь, требуют ли остановку

rtmGetBlockIO(rtm)

Получите структуру данных блока I/O

rtmSetBlockIO(rtm,val)

Установите структуру данных блока I/O

rtmGetContStates(rtm)

Получите непрерывную структуру данных состояний

rtmSetContStates(rtm,val)

Установите непрерывную структуру данных состояний

rtmGetDefaultParam(rtm)

Получите структуру данных параметров по умолчанию

rtmSetDefaultParam(rtm,val)

Установите структуру данных параметров по умолчанию

rtmGetPrevZCSigState(rtm)

Получите предыдущую структуру данных состояния сигнала пересечения нулем

rtmSetPrevZCSigState(rtm,val)

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

rtmGetRootDWork(rtm)

Получите структуру данных DWork

rtmSetRootDWork(rtm,val)

Установите структуру данных DWork

rtmGetU(rtm)

Доберитесь корень вводит структуру данных (когда корневые входные параметры передаются как часть структуры данных модели),

rtmSetU(rtm,val)

Установите корневую входную структуру данных (когда корневые входные параметры будут переданы как часть структуры данных модели),

rtmGetY(rtm)

Получите корневую выходную структуру данных (когда корневые выходные параметры будут переданы как часть структуры данных модели),

rtmSetY(rtm,val)

Установите корневую выходную структуру данных (когда корневые выходные параметры будут переданы как часть структуры данных модели),

Для получения дополнительной информации смотрите Макросы SimStruct и Функции, Перечисленные Использованием.

Похожие темы