В этом примере показано, как настроить двухсторонний обмен данными с помощью платы 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.
Модели передают между ними два разных набора данных, один набор данных из 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_udpsendreceiveAUDP- данных, который будет отправлен, имеет ширину 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 |
|
Input port (unpacked) data types (cell array) |
| |
Byte alignment |
| |
UDP Send | Local IP address |
|
Local port |
| |
To IP address |
| |
To port |
| |
Sample time (-1 for inherited) |
|
The Length входной порт получает выход блока Width, который вычисляет ширину сигнала, соединенного с Data порт.
Настройки Byte Packing блоков совпадают с Byte Unpacking блоком slrt_ex_udpsendreceiveB.
slrt_ex_udpsendreceiveA Приемная сторонаБлок | Параметр | Значение |
|---|---|---|
UDP Receive | Local IP address |
|
Local port |
| |
Receive width |
| |
Receive from any source |
| |
From IP address |
| |
Sample time (-1 for inherited) |
| |
Byte Unpacking | Output port (unpacked) data types (cell array) |
|
Output port (unpacked) dimensions (cell array) |
| |
Byte alignment |
|
Второй выходной порт блока 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 |
|
Local port |
| |
Receive width |
| |
Receive from any source |
| |
From IP address |
| |
Sample time (-1 for inherited) |
| |
Byte Unpacking | Output port (unpacked) data types (cell array) |
|
Output port (unpacked) dimensions (cell array) |
| |
Byte alignment |
|
Второй выходной порт блока 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 |
|
Input port (unpacked) data types (cell array) |
| |
Byte alignment |
| |
UDP Send | Local IP address |
|
Local port |
| |
To IP address |
| |
To port |
| |
Sample time (-1 for inherited) |
|
The Length входной порт получает выход блока Width, который вычисляет ширину сигнала, соединенного с Data порт.
Настройки Byte Packing блоков совпадают с настройками Byte Unpacking блока slrt_ex_udpsendreceiveA.
Количество распакованных байтов 79. Выравнивание байтов 2. Блок Byte Packing заполняет выходной вектор 0 для выравнивания по четному контуру.