Создайте строение подключения целевого PIL для Simulink

Целевые строения подключения для PIL

Используйте целевые строения подключения и API подключения для настройки симуляции процессора в цикле (PIL) для целевых окружений.

Через целевое строение подключения вы задаете:

  • Имя строения для целевой реализации API возможности подключения.

  • Настройки, которые определяют набор совместимых Simulink® модели. Например, набор моделей, которые имеют определенный системный целевой файл, файл make-файла шаблона и аппаратную реализацию.

Для PIL симуляция требуется целевая реализация API возможности подключения, которая интегрирует сторонние программы для:

  • Перекрестная компиляция сгенерированного кода, создание PIL-приложения, которое запускается на целевом компьютере.

  • Загрузка, запуск и остановка приложения на целевом компьютере.

  • Связь между Simulink и целью.

Для PIL симуляции могут быть много различных строений подключения. Зарегистрируйте строение подключения в Simulink путем создания sl_customization.m файл и размещение его в MATLAB® путь поиска файлов.

Когда вы запускаете PIL симуляцию, программное обеспечение определяет, какие из доступных строений подключения использовать. Программное обеспечение ищет строение подключения, которая совместима с тестируемой моделью. Если программное обеспечение находит несколько или не находит совместимых строений подключения, программное обеспечение генерирует сообщение об ошибке с информацией об устранении проблемы.

Создайте целевую реализацию API возможности подключения

Эта схема показывает компоненты целевого 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) для пользовательского целевого устройства.

  1. Создайте подкласс rtw.connectivity.Config.

    ConnectivityConfig < rtw.connectivity.Config

  2. В подклассе:

    • Создание экземпляров rtw.connectivity.MakefileBuilder, который конфигурирует процесс сборки.

      builder = rtw.connectivity.MakefileBuilder(componentArgs, ...
                                                 targetApplicationFramework, ...
                                                 exeExtension);

    • Создайте подкласс rtw.connectivity.Launcher, который загружает и выполняет приложение с помощью сторонней программы.

      launcher = mypil.Launcher(componentArgs, builder);

  3. Сконфигурируйте свои rtiostream Реализация API канала связи хост-объект.

    • Для целевой стороны необходимо предоставить код драйвера для связи, например, TCP/IP или последовательной связи. Чтобы интегрировать этот код в процесс сборки, создайте подкласс rtw.pil.RtIOStreamApplicationFramework.

    • Для хоста можно использовать библиотеку, поставляемую для TCP/IP или последовательной связи. Создание экземпляров rtw.connectivity.RtIOStreamHostCommunicator, который загружает и инициализирует указанную библиотеку.

      hostCommunicator = rtw.connectivity.RtIOStreamHostCommunicator(componentArgs, ...
                                                                     launcher, ...
                                                                     rtiostreamLib);

  4. Если вам требуется профилирование сгенерированного кода во время выполнения, создайте объект-таймер, который предоставляет подробную информацию о аппаратном таймере и связанных с ним исходных файлах. См. Раздел «Задание аппаратного таймера»

Примечание

Каждый раз, когда вы изменяете реализацию подключения, закрывайте и открывайте модели, чтобы обновить их.

Регистрация реализации API-интерфейса возможности подключения

Чтобы зарегистрировать целевую реализацию API возможности подключения как целевое строение возможности подключения в Simulink:

  1. Создайте или обновите sl_customization.m файл. В этом файле:

    • Создайте целевой объект строения подключения, который задает, для примера, имя строения для целевой реализации API возможности подключения и совместимых моделей.

    • Активируйте registerTargetInfo.

  2. Добавьте папку, содержащую sl_customization.m в путь поиска файлов и обновите индивидуальные настройки.

    addpath(sl_customization_path);
    sl_refresh_customizations;

Для получения дополнительной информации смотрите rtw.connectivity.ConfigRegistry.

Проверьте строение целевого подключения

Чтобы проверить целевое строение подключения на раннем этапе и независимо от разработки модели и генерации кода, используйте предоставленные piltest функция. С помощью функции можно запустить набор тестов. В тестах функция запускает различные нормальные, SIL и PIL симуляции. Функция сравнивает результаты и производит ошибки, если обнаруживает различия между режимами симуляции.

Примеры API целевого подключения

Для пошаговых примеров смотрите:

  • Сконфигурируйте процессор в цикле (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 matlabroot/ toolbox/coder/rtiostream/src/rtiostreamtcpip/rtiostream_tcpip.c В файле показано, как можно выключить алгоритм Nagle:

    /* Disable Nagle's Algorithm*/
    option = 1;
    sockStatus = setsockopt(lFd,IPPROTO_TCP,TCP_NODELAY,(char*)&option,sizeof(option));  
    Код для пользовательской реализации TCP/IP может потребовать изменения.

    Пример также показывает, как реализовать пользовательские целевые драйверы подключения, например, используя последовательный, CAN или USB для хоста и целевой стороны канала связи.

См. также

| | | | | |

Похожие темы