Этот пример помогает вам начать писать код приложения, чтобы взаимодействовать с параметрами модели. Чтобы начать писать код приложения, чтобы взаимодействовать с образцовыми сигналами и состояниями, смотрите Использование 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