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