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