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