Этот пример помогает вам начать писать код приложения, чтобы взаимодействовать с параметрами модели. Чтобы начать писать код приложения, чтобы взаимодействовать с образцовыми сигналами и состояниями, смотрите Использование C API к доступу к Образцовым Сигналам и состояниям.
API C предоставляет вам гибкость записи вашего собственного кода приложения, чтобы взаимодействовать с образцовыми сигналами, состояниями, входными параметрами/выходными параметрами корневого уровня и параметрами. Ваш основанный на цели код приложения скомпилирован со сгенерированным кодом в исполняемую программу. Основанный на цели код приложения получает доступ к массивам структур API C в
(или model_capi.c
.cpp
). У вас может быть основанный на хосте код, который взаимодействует с вашим основанным на цели кодом приложения. Или, у вас может быть другой основанный на цели код, который взаимодействует с вашим основанным на цели кодом приложения. Файлы rtw_modelmap.h
и rtw_capi.h
, расположенный в (открытом)
, обеспечивают макросы для доступа к структурам в этих массивах и их участниках.matlabroot/rtw/c/src
Вот пример приложения, который распечатывает значения параметров настраиваемых параметров в модели к стандартному выводу. Этот код предназначается как отправная точка для доступа к адресам параметра. Можно расширить код, чтобы выполнить настройку параметра. Приложение:
Использует макрос
rtmGetDataMapInfo
, чтобы получить доступ к информации об отображении в подструктуре mmi
структуры модели реального времени
rtwCAPI_ModelMappingInfo* mmi = &(rtmGetDataMapInfo(rtM).mmi);
где
rtM
является указателем на структуру модели реального времени в
(или model.c
.cpp
).
Использование
rtwCAPI_GetNumModelParameters
, чтобы вложить количество параметров модели сопоставило API C:
uint_T nModelParams = rtwCAPI_GetNumModelParameters(mmi);
Использование
rtwCAPI_GetModelParameters
, чтобы получить доступ к массиву структур параметра модели, сопоставленных в API C:
rtwCAPI_ModelParameters* capiModelParams = \
rtwCAPI_GetModelParameters(mmi);
Циклы по массиву
capiModelParams
, чтобы получить доступ к отдельным структурам параметра. Вызов функционального capi_PrintModelParameter
отображает значение параметра.
Код примера приложения предоставлен ниже:
{
/* Get CAPI Mapping structure from Real-Time Model structure */
rtwCAPI_ModelMappingInfo* capiMap = \
&(rtmGetDataMapInfo(rtwdemo_capi_M).mmi);
/* Get number of Model Parameters from capiMap */
uint_T nModelParams = rtwCAPI_GetNumModelParameters(capiMap);
printf("Number of Model Parameters: %d\n", nModelParams);
/* If the model has Model Parameters, print them using the
application capi_PrintModelParameter */
if (nModelParams == 0) {
printf("No Tunable Model Parameters in the model \n");
}
else {
unsigned int idx;
for (idx=0; idx < nModelParams; idx++) {
/* call print utility function */
capi_PrintModelParameter(capiMap, idx);
}
}
}
Служебная функция печати расположена в
. Этот файл содержит служебные функции для доступа к структурам API C.matlabroot/rtw/c/src/rtw_capi_examples.c
Чтобы познакомиться с примером кода, попытайтесь создать модель, которая отображает настраиваемые параметры блоков и переменные MATLAB®. Можно использовать
rtwdemo_capi
, модель API в качестве примера C. Следующие шаги применяются и к grt.tlc
и к системным конечным файлам ert.tlc
, если в противном случае не обозначено.
В командной строке MATLAB введите
rtwdemo_capi
, чтобы открыть модель в качестве примера.
Сохраните топ-модель
rtwdemo_capi
и модель rtwdemo_capi_bot
, на которую ссылаются, к той же перезаписываемой папке работы.
Если вам лицензируют для программного обеспечения Embedded Coder®, и вы хотите использовать системную целевую мозаику
ert.tlc
вместо grt.tlc
по умолчанию, перейдите к панели Code Generation диалогового окна Configuration Parameters и используйте параметр System target file, чтобы выбрать системный конечный файл ert.tlc
. Убедитесь, что вы также выбираете ert.tlc
для модели rtwdemo_capi_bot
, на которую ссылаются.
Подтвердите эти образцовые настройки параметра конфигурации:
Выберите Generate C API for parameters.
Если вы используете системный конечный файл
ert.tlc
, выберите Support complex numbers.
Выберите MAT-file logging.
Нажмите Apply.
Обновите настройки параметра конфигурации в модели, на которую ссылаются,
rtwdemo_capi_bot
, чтобы совпадать изменениями, которые вы внесли в топ-модели.
Используйте панель Custom Code, чтобы встроить ваш код пользовательского приложения в сгенерированный код. Выберите панель Custom Code, и затем нажмите Initialize function. Поле ввода Initialize function отображено.
В поле ввода Initialize function введите или скопируйте и вставьте код примера приложения, показанный перечисленный выше шаг 1. Это встраивает код приложения в
функцию
.model_initialize
Примечание
Если вы переименовали топ-модель rtwdemo_capi
, обновите имя rtwdemo_capi_M
в коде приложения, чтобы отразить новое имя модели.
Нажмите Include directories и введите
, где matlabroot/rtw/c/src
представляет корень вашей папки установки MATLAB. (Если вы задаете путь Windows®, который содержит пробел, поместите текст в двойных кавычках.)matlabroot
В подпанели Additional Build Information нажмите Source files и введите
rtw_capi_examples.c
.
Нажмите Apply.
На панели Code Generation проверьте, что флажок Generate code only снимается.
Создайте модель и сгенерируйте исполняемую программу. Например, в системе Windows, сборка генерирует исполняемый файл
rtwdemo_capi.exe
в вашей текущей рабочей папке.
В Окне Команды MATLAB введите
!rtwdemo_capi
, чтобы запустить исполняемый файл. Выполнение программы отображает информацию о параметре в Командном окне.
>> !rtwdemo_capi
** starting the model **
Number of Model Parameters: 5
Ki =
7
Kp =
4
p1 =
0.15
0.36
0.81
p2 =
0.09 0.75 0.57
0.13 0.96 0.059
p3 =
ans(:,:,1) =
0.23 0.82 0.04 0.64
0.35 0.01 0.16 0.73
ans(:,:,2) =
0.64 0.54 0.74 0.68
0.45 0.29 0.18 0.18
Похожие темы
- Как сгенерированный код обменивается данными со средой (Simulink Coder)
- Как сгенерированный код хранит внутренний сигнал, состояние и данные о параметре (Simulink Coder)