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