Используйте целевые строения подключения и API подключения для настройки симуляции процессора в цикле (PIL) для целевых окружений.
Через целевое строение подключения вы задаете:
Имя строения для целевой реализации API возможности подключения.
Настройки, которые определяют набор совместимых Simulink® модели. Например, набор моделей, которые имеют определенный системный целевой файл, файл make-файла шаблона и аппаратную реализацию.
Для PIL симуляция требуется целевая реализация API возможности подключения, которая интегрирует сторонние программы для:
Перекрестная компиляция сгенерированного кода, создание PIL-приложения, которое запускается на целевом компьютере.
Загрузка, запуск и остановка приложения на целевом компьютере.
Связь между Simulink и целью.
Для PIL симуляции могут быть много различных строений подключения. Зарегистрируйте строение подключения в Simulink путем создания sl_customization.m
файл и размещение его в MATLAB® путь поиска файлов.
Когда вы запускаете PIL симуляцию, программное обеспечение определяет, какие из доступных строений подключения использовать. Программное обеспечение ищет строение подключения, которая совместима с тестируемой моделью. Если программное обеспечение находит несколько или не находит совместимых строений подключения, программное обеспечение генерирует сообщение об ошибке с информацией об устранении проблемы.
Эта схема показывает компоненты целевого API подключения PIL.
Необходимо предоставить реализации трех компонентов API:
Build API - задайте набор инструментов Simulink Coder™ или подход make-файла шаблона для создания сгенерированного кода.
Launcher API - Управление тем, как Simulink запускает и останавливает исполняемый файл PIL.
Communications API - настройка соединения между Simulink и PIL-объектом. Embedded Coder® обеспечивает поддержку хоста для TCP/IP и последовательной связи, которую можно адаптировать для других протоколов.
На этих шагах описывается процесс создания целевой реализации API возможности подключения. Пример кода, показанный на шагах, взят из ConnectivityConfig.m
в разделе Configure Processor-In-The-Loop (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, работающим на вашем компьютере разработчика, и развернутым кодом, выполняющимся на целевой компьютер.
The rtiostream
интерфейс предоставляет типовой канал связи, который можно реализовать в виде целевых драйверов подключения для области значений типов соединений. В примере показано, как сконфигурировать собственный драйвер на целевой стороне для TCP/IP, чтобы работать с драйвером TCP/IP на главной стороне по умолчанию. Коммуникации TCP/IP по умолчанию допускают коммуникацию с высокой пропускной способностью между хостом и объектом, которую можно использовать для передачи данных, таких как видео.
Примечание
Если вы настраиваете rtiostream
Реализация TCP/IP для ваших PIL симуляций, вы должны выключить алгоритм Nagle для серверной стороны соединения. Если алгоритм Nagle не выключен, ваши PIL симуляции могут запускаться со значительно меньшей скоростью. The
В файле показано, как можно выключить алгоритм 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