Этот пример помогает вам начать запись кода приложения для взаимодействия с параметрами модели. Чтобы начать запись кода приложения для взаимодействия с сигналами модели и состояниями, смотрите Использование C API для доступа к сигналам модели и состояниям.
C API предоставляет вам гибкость записи собственного кода приложения для взаимодействия с сигналами модели, состояниями, входами/выходами корневого уровня и параметрами. Ваш целевой код приложения компилируется с сгенерированным кодом в исполняемую программу. Целевой код приложения обращается к массивам структур C API в
(или model
_capi.c.cpp
). Возможно, у вас есть код на базе хоста, который взаимодействует с кодом приложения на базе целевого компьютера. Или у вас может быть другой код на основе целевого устройства, который взаимодействует с кодом приложения на основе целевого устройства. Файлы rtw_modelmap.h
и rtw_capi.h
, расположен в
(open), предоставить макросы для доступа к структурам в этих массивах и их представителям.matlabroot
/ rtw/c/src
Вот пример приложения, которое печатает значения параметров настраиваемых параметров в модели к стандартному выходу. Этот код предназначен как начальная точка для доступа к адресам параметров. Можно расширить код, чтобы выполнить настройку параметра. Заявка:
Использует rtmGetDataMapInfo
макрос для доступа к информации о отображении в mmi
подструктура структуры модели реального времени
rtwCAPI_ModelMappingInfo* mmi = &(rtmGetDataMapInfo(rtM).mmi);
где rtM
- указатель на структуру модели реального времени в
(или model
.c.cpp
).
Использует rtwCAPI_GetNumModelParameters
чтобы получить количество параметров модели в сопоставленном C API:
uint_T nModelParams = rtwCAPI_GetNumModelParameters(mmi);
Использует rtwCAPI_GetModelParameters
для доступа к массиву структур параметров модели, отображенных в C API:
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
, модель примера C API. Следующие шаги применяются к обоим 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.
Очистите 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