Обмен данными UDP при помощи общей платы Ethernet

В этом примере показано, как настроить двухсторонний обмен данными с помощью платы Ethernet, совместно используемой при соединении между компьютерами компьютеров разработчика и целевыми компьютерами. Используя это строение, вы можете общаться между двумя Simulink® Real-Time™ системы, между продуктами Simulink Real-Time и 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 Сторона отправки

Блок

Параметр

Значение

Byte Packing

Output port (packed) data type

'uint8'

Input port (unpacked) data types (cell array)

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

Byte alignment

1

UDP Send

Local IP address

Use host-target connection

Local port

-1 (автоматический выбор)

To IP address

192.168.7.5

To port

25000

Sample time (-1 for inherited)

0.01

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

  • Настройки Byte Packing блоков совпадают с Byte Unpacking блоком slrt_ex_udpsendreceiveB.

slrt_ex_udpsendreceiveA Приемная сторона

Блок

Параметр

Значение

UDP Receive

Local IP address

Use host-target connection

Local port

25000

Receive width

80

Receive from any source

off

From IP address

192.168.7.2

Sample time (-1 for inherited)

0.01

Byte Unpacking

Output port (unpacked) data types (cell array)

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

Output port (unpacked) dimensions (cell array)

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

Byte alignment

2

  • Второй выходной порт блока UDP Receive передается в терминатор строки. Можно использовать этот выход для определения момента прибытия пакета. То же самое верно и для выходов блока Byte Unpack.

  • Receive width блока UDP Receive соответствует ширине выходного порта блока Byte Packing в slrt_ex_udpsendreceiveB.

  • Настройки Byte Unpacking блоков совпадают с настройками Byte Packing блока slrt_ex_udpsendreceiveB.

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

Настройка slrt_ex_udpsendreceiveB

Итоговая slrt_ex_udpsendreceiveB модель показана на рисунке.

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

slrt_ex_udpsendreceiveB Приемная сторона

Блок

Параметр

Значение

UDP Receive

Local IP address

Use host-target connection

Local port

25000

Receive width

75

Receive from any source

off

From IP address

192.168.7.5

Sample time (-1 for inherited)

0.01

Byte Unpacking

Output port (unpacked) data types (cell array)

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

Output port (unpacked) dimensions (cell array)

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

Byte alignment

1

  • Второй выходной порт блока UDP Receive передается в терминатор строки. Можно использовать этот выход для определения момента прибытия пакета. То же самое верно и для выходов блока Byte Unpack.

  • Receive width блока UDP Receive соответствует ширине выходного порта блока Byte Packing в slrt_ex_udpsendreceiveA.

  • Настройки Byte Unpacking блоков совпадают с настройками Byte Packing блока в slrt_ex_udpsendreceiveA.

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

Блок

Параметр

Значение

Byte Packing

Output port (packed) data type

'uint8'

Input port (unpacked) data types (cell array)

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

Byte alignment

2

UDP Send

Local IP address

Use host-target connection

Local port

-1 (автоматический выбор)

To IP address

192.168.7.2

To port

25000

Sample time (-1 for inherited)

0.01

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

  • Настройки Byte Packing блоков совпадают с настройками Byte Unpacking блока slrt_ex_udpsendreceiveA.

  • Количество распакованных байтов 79. Выравнивание байтов 2. Блок Byte Packing заполняет выходной вектор 0 для выравнивания по четному контуру.

См. также

|

Похожие примеры

Подробнее о