exponenta event banner

Обмен данными UDP с использованием общей платы Ethernet

В этом примере показано, как настроить двусторонний обмен данными с помощью платы Ethernet, совместно используемой для соединения между разработчиками и целевыми компьютерами. С помощью этой конфигурации можно взаимодействовать между двумя системами Simulink ® Real-Time™, между продуктами Simulink в реальном времени и Simulink или между двумя моделями Simulink. Если одна или обе системы работают как модель Simulink не реального времени, обязательно задайте время выборки .

В этом примере не требуется настраивать выделенную плату Ethernet, поскольку в этом примере используется соединение между разработчиками и целевыми компьютерами.

Примеры моделей имеют имена slrt_ex_udpsendreceiveA и slrt_ex_udpsendreceiveB. Замените примеры портов и IP-адресов портами и адресами в соответствии с требованиями сети. В этом примере используется целевой компьютер, расположенный по IP-адресу 192.168.7.5 и использует компьютер разработки, расположенный по IP-адресу 192.168.7.2.

Передача данных UDP

Модели переносят два различных набора данных между ними, один набор данных из slrt_ex_udpsendreceiveA кому slrt_ex_udpsendreceiveB и другой набор данных в противоположном направлении.

В этом примере входные данные генерируются с помощью блоков Simulink Constant, использующих функцию случайных чисел MATLAB ® (rand). Программа Simulink Coder™ использует эту функцию во время генерации кода для генерации случайных чисел. Создание вектора uint8 (3x3), используйте функцию MATLAB:

uint8(255 * rand(3,3))

потому что 255 - максимальное значение для 8-разрядного целого числа без знака. Другие значения генерируются аналогично.

slrt_ex_udpsendreceiveA кому slrt_ex_udpsendreceiveB

Ширина передаваемых данных UDP составляет 75 байт. Данные для переноса находятся в следующих форматах:

  • [3 3] из uint8 (9 байт)

  • [1 1] из uint16 (2 байта)

  • [2 4] из double (64 байта)

При упаковке данные выравниваются по 1-байтовым границам.

slrt_ex_udpsendreceiveB кому slrt_ex_udpsendreceiveA

Передаваемые данные UDP имеют ширину 79 байт. Данные для переноса находятся в следующих форматах:

  • [4 1] из single (16 байт)

  • [2 2] из double (32 байта)

  • [2 2] из uint32 (16 байт)

  • [5 3] из int8 (15 байт)

При упаковке данные выравниваются по 2-байтовым границам. Во время упаковки добавляется байт площадки с нулевым значением.

Настроить slrt_ex_udpsendreceiveA

Финал slrt_ex_udpsendreceiveA показано на рисунке.

В таблицах перечислены параметры для сторон передачи и приема модели.

slrt_ex_udpsendreceiveA Сторона отправки

Блок

Параметр

Стоимость

Упаковка байтов

Тип данных выходного порта (упакованный)

'uint8'

Типы данных входного порта (распакованные) (массив ячеек)

{'uint8', 'uint16', 'double'}

Выравнивание байтов

1

Отправка UDP

Локальный IP-адрес

Use host-target connection

Локальный порт

-1 (автовыбор)

По IP-адресу

192.168.7.5

К порту

25000

Время выборки (-1 для унаследованных)

0.01

  • Length входной порт принимает выход блока Width, который вычисляет ширину сигнала, подключенного к Data порт.

  • Параметры блока упаковки байтов соответствуют блоку распаковки байтов slrt_ex_udpsendreceiveB.

slrt_ex_udpsendreceiveA Сторона получения

Блок

Параметр

Стоимость

Получение UDP

Локальный IP-адрес

Use host-target connection

Локальный порт

25000

Ширина приема

80

Получение из любого источника

off

От IP-адреса

192.168.7.2

Время выборки (-1 для унаследованных)

0.01

Распаковка байтов

Типы данных выходного порта (распакованные) (массив ячеек)

{'single', 'double', 'uint32', 'int8'}

Размеры выходного порта (распакованный) (массив ячеек)

{4, [2 2], [2 2], [5 3]}

Выравнивание байтов

2

  • Второй выходной порт блока приема UDP посылается в терминатор. Этот вывод можно использовать для определения момента поступления пакета. То же самое справедливо для выходов блока распаковки байтов.

  • Ширина приема блока приема UDP соответствует ширине выходного порта блока упаковки байтов в slrt_ex_udpsendreceiveB.

  • Параметры блока распаковки байтов соответствуют параметрам блока упаковки байтов slrt_ex_udpsendreceiveB.

  • Количество распакованных байтов: 79. Выравнивание байтов: 2. Блок распаковки байтов предполагает, что входной вектор включает площадку 0 для выравнивания вектора по четной границе.

Настроить slrt_ex_udpsendreceiveB

Финал slrt_ex_udpsendreceiveB модель показана на рисунке.

В таблицах перечислены параметры приемной стороны и передающей стороны модели.

slrt_ex_udpsendreceiveB Сторона получения

Блок

Параметр

Стоимость

Получение UDP

Локальный IP-адрес

Use host-target connection

Локальный порт

25000

Ширина приема

75

Получение из любого источника

off

От IP-адреса

192.168.7.5

Время выборки (-1 для унаследованных)

0.01

Распаковка байтов

Типы данных выходного порта (распакованные) (массив ячеек)

{'uint8', 'uint16', 'double'}

Размеры выходного порта (распакованный) (массив ячеек)

{[3 3], 1, [2 4]}

Выравнивание байтов

1

  • Второй выходной порт блока приема UDP посылается в терминатор. Этот вывод можно использовать для определения момента поступления пакета. То же самое справедливо для выходов блока распаковки байтов.

  • Ширина приема блока приема UDP соответствует ширине выходного порта блока упаковки байтов в slrt_ex_udpsendreceiveA.

  • Параметры блока распаковки байтов соответствуют блоку упаковки байтов в slrt_ex_udpsendreceiveA.

slrt_ex_udpsendreceiveB Сторона отправки

Блок

Параметр

Стоимость

Упаковка байтов

Тип данных выходного порта (упакованный)

'uint8'

Типы данных входного порта (распакованные) (массив ячеек)

{'single', 'double', 'uint32', 'int8'}

Выравнивание байтов

2

Отправка UDP

Локальный IP-адрес

Use host-target connection

Локальный порт

-1 (автовыбор)

По IP-адресу

192.168.7.2

К порту

25000

Время выборки (-1 для унаследованных)

0.01

  • Length входной порт принимает выход блока Width, который вычисляет ширину сигнала, подключенного к Data порт.

  • Параметры блока упаковки байтов соответствуют параметрам блока распаковки байтов slrt_ex_udpsendreceiveA.

  • Количество распакованных байтов: 79. Выравнивание байтов: 2. Блок Byte Packing вставляет выходной вектор с помощью 0 для выравнивания по четной границе.

См. также

|

Связанные примеры

Подробнее