Генератор кода организует данные, используемые моделью в структурах данных. Для каждой модели генератор кода хранит данные, такие как сигналы и состояния, в глобальных структурах, которые также упоминаются как стандартные структуры данных. Используйте эти структуры данных, чтобы получить доступ к данным в сгенерированном коде.
Модель реального времени (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 и параметры) в структуру данных модели реального времени. Генератор кода передает структуру модели реального времени в отношении сгенерированных функций точки входа модели. Если вы устанавливаете ввод-вывод корневого уровня Передачи как (Embedded Coder) к Part of model data structure
, вход и выход модели корневого уровня пакетов генератора кода в структуру данных модели реального времени.
Эффективные возможности сгенерированного кода зависят от генерации rtModel
вместо SimStruct
, включая:
Целочисленные абсолютные и прошедшие услуги по синхронизации
Независимые таймеры для асинхронных задач
Генерация улучшенного кода API C для сигнала, состояния и контроля параметра
Сокращение структуры данных, чтобы минимизировать ее размер (только ERT-выведенные системные конечные файлы)
Структура данных модели реального времени задана в main.c
или main.cpp
файл, который сгенерирован, когда вы создаете свою модель. Для моделей ERT, если вы очищаете параметр конфигурации модели, Генерируют пример основная программа (Embedded Coder), 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 | Описание |
---|---|
| Получите производные блочно-непрерывных состояний |
| Возвратите указатель, чтобы векторизовать, который хранит смещения шага расчета модели, сопоставленной с rtM |
| Получите количество шагов расчета блока |
| Возвратите указатель на |
| Возвратите структуру данных информации о режиме external mode модели (используемый генератором кода только для режима external mode) |
| Возвратите структуру данных, используемую логгированием генератора кода (используемый только генератором кода) |
| Возвратите структуру данных информации о методах модели реального времени (используемый только генератором кода) |
| Возвратите структуру данных, содержащую информацию о решателе модели (используемый только генератором кода) |
| Возвратите указатель на вектор флага Sample Hit |
| Получите шаг расчета задачи |
| Получите указатель на шаг расчета задачи |
| Получите указатель на ID задачи |
| Возвратите идентификатор типа шага симуляции ( |
| Возвратите основной размер шага модели |
| Получите текущее время симуляции |
| Установите время следующего демонстрационного хита |
| Получите текущее время для текущей задачи |
| Получите время остановки симуляции |
| Установите время остановки симуляции |
| Возвратите структуру данных, используемую путем синхронизации механизма модели (используемый только генератором кода) |
| Возвратите указатель на текущее время |
| Получите время начала симуляции |
| Определите, непрерывна ли задача |
| Определите, является ли симуляция на существенном шаге |
| Определите, поражен ли шаг расчета |
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 и Функции, Перечисленные Использованием.