В этом примере показано, как настроить двухсторонний обмен данными с помощью платы 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_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 |
|
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
для выравнивания по четному контуру.