Используйте целевые конфигурации подключения и целевой API подключения для настройки моделирования процессора в цикле (PIL) для целевых сред.
С помощью целевой конфигурации подключения можно указать:
Имя конфигурации для целевой реализации API-интерфейса подключения.
Параметры, определяющие набор совместимых моделей Simulink ®. Например, набор моделей, имеющих определенный системный целевой файл, файл создания шаблона и аппаратную реализацию.
Для моделирования PIL требуется целевая реализация API подключения, которая интегрирует сторонние инструменты для:
Перекрестная компиляция сгенерированного кода, создание приложения PIL, которое выполняется на целевом оборудовании.
Загрузка, запуск и остановка приложения на конечном объекте.
Обмен данными между Simulink и целью.
Для моделирования PIL можно использовать множество различных конфигураций целевых соединений. Зарегистрируйте конфигурацию подключения в Simulink, создав sl_customization.m и поместите его в путь поиска MATLAB ®.
При выполнении моделирования PIL программное обеспечение определяет, какую из доступных конфигураций подключения использовать. Программа ищет конфигурацию подключения, совместимую с тестируемой моделью. Если программа находит несколько совместимых конфигураций подключения или нет, программа генерирует сообщение об ошибке с информацией о решении проблемы.
На этой схеме показаны компоненты целевого API подключения PIL.

Необходимо предоставить реализации трех компонентов API:
API построения - укажите подход Simulink Coder™ toolchain или makefile шаблона для создания сгенерированного кода.
API Launcher - управление запуском и остановкой исполняемого файла PIL в Simulink.
Коммуникационный API - настройка связи между Simulink и целевым объектом PIL. Embedded Coder ® обеспечивает серверную поддержку TCP/IP и последовательной связи, которую можно адаптировать для других протоколов.
Эти шаги описывают создание целевой реализации API подключения. Пример кода, показанный на шагах, взят из ConnectivityConfig.m в разделе Настройка процессора в петле (PIL) для пользовательского целевого объекта.
Создание подкласса rtw.connectivity.Config.
ConnectivityConfig < rtw.connectivity.Config
В подклассе:
Иллюстрировать примерами rtw.connectivity.MakefileBuilder, который настраивает процесс построения.
builder = rtw.connectivity.MakefileBuilder(componentArgs, ...
targetApplicationFramework, ...
exeExtension);Создание подкласса rtw.connectivity.Launcher, которая загружает и выполняет приложение с помощью стороннего инструмента.
launcher = mypil.Launcher(componentArgs, builder);
Настройте rtiostream Реализация API канала связи хост-объект.
Для целевой стороны необходимо указать код драйвера для связи, например TCP/IP или последовательной связи. Чтобы интегрировать этот код в процесс построения, создайте подкласс rtw.pil.RtIOStreamApplicationFramework.
На стороне хоста можно использовать поставляемую библиотеку для TCP/IP или последовательной связи. Иллюстрировать примерами rtw.connectivity.RtIOStreamHostCommunicator, которая загружает и инициализирует указанную библиотеку.
hostCommunicator = rtw.connectivity.RtIOStreamHostCommunicator(componentArgs, ...
launcher, ...
rtiostreamLib);
Если требуется профилирование генерируемого кода во время выполнения, создайте объект таймера, который предоставляет сведения об аппаратном таймере и связанных исходных файлах. См. раздел Указание аппаратного таймера.
Примечание
При каждом изменении реализации подключения закройте и снова откройте модели, чтобы обновить их.
Чтобы зарегистрировать реализацию API целевого подключения в качестве целевой конфигурации подключения в Simulink, выполните следующие действия.
Создать или обновить sl_customization.m файл. В этом файле:
Создайте целевой объект конфигурации подключения, который задает, например, имя конфигурации для реализации целевого API-интерфейса подключения и совместимых моделей.
Призвать registerTargetInfo.
Добавить папку, содержащую sl_customization.m к пути поиска и обновите настройки.
addpath(sl_customization_path); sl_refresh_customizations;
Дополнительные сведения см. в разделе rtw.connectivity.ConfigRegistry.
Чтобы проверить целевую конфигурацию подключения на ранней стадии и независимо от разработки модели и создания кода, используйте предоставленную piltest функция. С помощью этой функции можно запустить набор тестов. В тестах функция выполняет различные модели нормального уровня безопасности, SIL и PIL. Функция сравнивает результаты и выдает ошибки, если обнаруживает различия между режимами моделирования.
Пошаговые примеры см. в разделе:
Конфигурирование процессора в петле (PIL) для пользовательского целевого объекта
В этом примере показано, как создать пользовательскую реализацию PIL с использованием целевых API-интерфейсов подключения. Можно изучить код, который настраивает процесс сборки для поддержки PIL, средства загрузки и выполнения и канала связи между хостом и целевым объектом. Для активации полной конфигурации PIL на основе хоста выполните действия, описанные в примере.
Создание целевого канала связи для моделирования процессора в петле (PIL)
В этом примере показано, как реализовать канал связи для использования с продуктом Embedded Coder и встроенной целью. Этот канал связи обеспечивает обмен данными между различными процессами. Моделирование PIL требует обмена данными между программным обеспечением Simulink, работающим на компьютере разработчика, и развернутым кодом, выполняющимся на целевом оборудовании.
rtiostream интерфейс обеспечивает общий канал связи, который можно реализовать в виде целевых драйверов подключения для различных типов соединений. В примере показано, как настроить собственный драйвер на стороне назначения для TCP/IP для работы с драйвером TCP/IP на стороне хоста по умолчанию. Связь TCP/IP по умолчанию обеспечивает высокоскоростную связь между хостом и целевым объектом, которую можно использовать для передачи таких данных, как видео.
Примечание
При настройке rtiostream Реализация TCP/IP для моделирования PIL, необходимо отключить алгоритм Nagle для серверной стороны соединения. Если алгоритм Nagle не выключен, моделирование PIL может выполняться со значительно более низкой скоростью. В файле показано, как можно отключить алгоритм Nagle:matlabroot/toolbox/coder/rtiostream/src/rtiostreamtcpip/rtiostream_tcpip.c
/* Disable Nagle's Algorithm*/ option = 1; sockStatus = setsockopt(lFd,IPPROTO_TCP,TCP_NODELAY,(char*)&option,sizeof(option));
В этом примере также показано, как реализовать пользовательские целевые драйверы подключения, например, с использованием последовательного соединения, CAN или USB как для главной, так и для целевой стороны канала связи.
piltest | rtw.connectivity.Config | rtw.connectivity.ConfigRegistry | rtw.connectivity.Launcher | rtw.connectivity.MakefileBuilder | rtw.connectivity.RtIOStreamHostCommunicator | rtw.pil.RtIOStreamApplicationFramework