Генератор кода организует данные, используемые моделью в структурах данных. Для каждой модели генератор кода хранит данные, такие как сигналы и состояния, в глобальных структурах, которые также называются стандартными структурами данных. Используйте эти структуры данных для доступа к данным в сгенерированном коде.
Модель реального времени (rtModel
) структура данных является структурой данных верхнего уровня, которая содержит специфические для экземпляра данные, которые используются моделью для переиспользуемых функций. Генератор кода использует эту структуру данных только для генерации кода с мультиобразцами.
В модели блоки Inport и Outport корневого уровня представляют первичные входные параметры и выходы алгоритма блока. По умолчанию генератор кода агрегирует эти блоки в стандартные структуры, которые хранят входные и выходные данные.
Сигнальные линии, параметры блоков, состояния и другие данные модели появляются в сгенерированном коде как поля стандартных структур. Для получения общей информации смотрите Как Сгенерированный код хранит внутренний сигнал, состояние и данные параметра.
Таблица показывает некоторые общие структуры данных в сгенерированном коде. Имя типа структуры и, если применимо, структурной переменной в коде, который вы генерируете из модели, зависит от настроек модели. Независимо от параметров, имя типа структуры в коде содержит краткое имя из столбца Short Name of Structure Type в таблице.
Структуры данных, сгенерированные для модели
Краткое имя типа структуры | Данные, представленные в структуре |
---|---|
ExtU | Данные из корневых блоков Inport |
ExtY | Данные из корневых блоков Outport |
B | Блочные выходные сигналы |
ConstB | Выходы блоков с постоянными значениями |
P | Параметры блоков |
ConstP | Постоянные параметры |
DW | Дискретные состояния блока |
XDis | Состояние включенных подсистем |
InstP | Аргументы параметра |
SharedDSM | Общие локальные хранилища данных |
Можно исключить данные из появления в этих структурах при помощи:
Непосредственное применение классов памяти. Для примера можно использовать классы памяти, чтобы представлять сигналы, настраиваемые параметры и состояния как индивидуум глобальные переменные. Для получения дополнительной информации смотрите Строение Генерации кода C для Элементов Интерфейса Модели.
Параметры конфигурации, такие как параметры на панели Optimization в диалоговом окне Параметры конфигурации. Можно настроить эти параметры конфигурации, чтобы управлять представлением данных по умолчанию. Для получения дополнительной информации смотрите Параметры конфигурации модели: Оптимизация генерации кода.
Для доступа к полям структуры данных моделирования S-функции (SimStruct
), программное обеспечение Simulink обеспечивает набор функций. Генератор кода заменяет SimStruct
с оптимизированной моделью реального времени (rtModel
) структура данных.
Генерация кода при помощи целевых файлов системы GRT и ERT использует структуру данных модели реального времени (rtModel)
. Эта структура инкапсулирует специфическую для модели информацию в гораздо более компактной форме, чем структура симуляции SimStruct
. В зависимости от модели информация о модели включает в себя данные, такие как внутренние данные для переиспользуемых функций и состояние ошибки.
Когда вы устанавливаете упаковку интерфейса кода в Reusable function
генератор кода упаковывает данные модели (такие как блок ввода-вывода, Dwork и параметры) в структуру данных модели реального времени. Генератор кода передает структуру модели реального времени путем ссылки на сгенерированные функции точки входа модели. Если вы задаете Pass root-level ввод-вывод как Part of model data structure
генератор кода упаковывает входные входы и выходы модели корневого уровня в структуру данных модели реального времени.
Эффективные возможности сгенерированного кода зависят от генерации rtModel
а не SimStruct
, включая:
Целочисленные абсолютные и прошедшие услуги синхронизации
Независимые таймеры для асинхронных задач
Генерация улучшенного кода C API для контроля сигнала, состояния и параметра
Обрезка структуры данных для минимизации ее размера (только производные от ERT системные целевые файлы)
Структура данных модели реального времени определена в main.c
или main.cpp
файл, который генерируется при сборке модели. Для моделей ERT, если вы очистите параметр конфигурации модели Сгенерируйте пример основной программы, rtModel.h
файл сгенерирован. The rtModel.h
файл содержит #include
директивы, требуемые rt_main.c
или rt_cppclass_main.cpp
статический основной программный модуль. The 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 | Описание |
---|---|
| Получите производные непрерывных состояний блоков |
| Верните указатель на вектор, который хранит смещения шага расчета модели, связанной с rtM |
| Получите количество шагов расчета блока |
| Верните указатель на |
| Верните структуру данных о режиме external mode модели (используется генератором кода только для режима external mode) |
| Верните структуру данных, используемую генератором кода при логгировании (используется только генератором кода) |
| Верните структуру данных информации о методах модели реального времени (используется только генератором кода) |
| Возвращает структуру данных, содержащую информацию о решателе модели (используется только генератором кода) |
| Верните указатель на вектор флага Sample Hit |
| Получение шага расчета задачи |
| Получите указатель на шаг расчета задачи |
| Получите указатель на идентификатор задачи |
| Верните тип шага симуляции ( |
| Верните основной размер шага модели |
| Получите текущее время симуляции |
| Установите время следующего попадания выборки |
| Получите текущее время для текущей задачи |
| Получите время остановки симуляции |
| Установите время остановки симуляции |
| Верните структуру данных, используемую механизмом синхронизации модели (используется только генератором кода) |
| Возврат указателя на текущее время |
| Получите время начала симуляции |
| Определите, является ли задача непрерывной |
| Определите, находится ли симуляция в основном шаге |
| Определите, задан ли шаг расчета |
rtmGetErrorStatus(rtm) | Получите текущее состояние ошибки |
rtmSetErrorStatus(rtm,val) | Установите текущее состояние ошибки |
rtmGetErrorStatusPointer(rtm) | Возвращает указатель на текущее состояние ошибки |
rtmGetStopRequested(rtm) | Возвращает, запрашивается ли остановка |
rtmGetBlockIO(rtm) | Получите структуру данных ввода-вывода блоков |
rtmSetBlockIO(rtm,val) | Установите структуру данных ввода-вывода блоков |
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 и Функции, перечисленные в разделе Использование.