Цель, чтобы разместить передачу при помощи UDP

В этом примере показано, как использовать блоки UDP, чтобы отправить данные от целевого компьютера до компьютера разработчика. Этот пример использует целевой компьютер, расположенный в IP-адресе 192.168.7.5, и использует компьютер разработчика, расположенный в IP-адресе 192.168.7.2.

Приложение реального времени передачи slrt_ex_target_to_host_UDP работает на целевом компьютере, и отправьте данные сигнала в объект UDP, который скрипт создает в MATLAB на компьютере разработчика.

При использовании протокола UDP для того, чтобы передать данные к или от целевого компьютера, рассмотрите эти проблемы:

  • Модель Simulink на компьютере разработчика запускается с такой скоростью, как это может. Скорость запуска модели не синхронизируется с часами реального времени.

  • UDP является протоколом без установления соединения, который не проверяет, чтобы подтвердить, что пакеты были переданы. Пакеты данных могут быть потеряны или пропущены.

  • На целевом компьютере блоки UDP запускаются в фоновой задаче, которая выполняет каждый временной шаг после того, как задача в реальном времени завершается. Если блок не может запустить или завершить фоновую задачу, прежде чем следующий временной шаг, данные не смогут быть переданы.

  • Пакеты данных о UDP передаются по подключению Ethernet между разработкой и целевыми компьютерами. Эти передачи совместно используют пропускную способность с подключением Ethernet.

Для получения дополнительной информации о UDP и Simulink Real-Time, смотрите Коммуникационного Setup UDP.

Открытая модель, сборка и приложение реального времени загрузки

Эта модель управляет передаточной функцией первого порядка с сигналом прямоугольной волны и отправляет сигналы ввода и вывода передаточной функции в компьютер разработчика с помощью UDP. Чтобы открыть модель, в командном окне MATLAB, введите:

open_system(fullfile(matlabroot,'toolbox','slrealtime','examples','slrt_ex_target_to_host_UDP'));

mdl = 'slrt_ex_target_to_host_UDP';
mdlOpened = 0;
systems = find_system('type', 'block_diagram');
if ~any(strcmp(mdl, systems))
  mdlOpened = 1;
  open_system(fullfile(matlabroot,'toolbox','slrealtime','examples',mdl));
end

Создайте модель и загрузите на целевой компьютер.

  • Сконфигурируйте для немногословной сборки.

  • Отметьте блок Byte Unpacking выход для регистрации данных.

  • Сборка и приложение загрузки.

  • Откройте инспектора данных моделирования.

Этот код показывает, как отметить сигналы программно для регистрации данных. Можно также отметить сигналы для регистрации данных в Редакторе Simulink. Можно просмотреть записанные данные в в Инспекторе Данных моделирования.

set_param(mdl,'RTWVerbose','off');
set_param(mdl,'StopTime','10');
targetIP = '192.168.7.5';
set_param([mdl,'/UDP Receive'],'ipAddress',targetIP);
hostIP = '192.168.7.2';
set_param([mdl,'/UDP Send'],'toAddress',hostIP)
set_param([mdl,'/UDP Receive'],'fmAddress',hostIP)
handle = get_param([mdl,'/Byte Unpacking '],'PortHandles');
Outport = handle.Outport(1);
Simulink.sdi.markSignalForStreaming(Outport,'on');
slbuild(mdl);
tg = slrealtime;
load(tg,mdl);
### Successful completion of build procedure for: slrt_ex_target_to_host_UDP
### Created MLDATX ..\slrt_ex_target_to_host_UDP.mldatx

Build Summary

Top model targets built:

Model                       Action                       Rebuild Reason                                    
===========================================================================================================
slrt_ex_target_to_host_UDP  Code generated and compiled  Code generation information file does not exist.  

1 of 1 models built (0 models already up to date)
Build duration: 0h 0m 53.286s

Закройте модель, если она открыта.

if (mdlOpened)
  bdclose(mdl);
end

Создайте объект UDP в MATLAB на Компьютере разработчика

uByte = udpport("IPV4","LocalHost",hostIP,"LocalPort",8002);

Запустите модель на целевом Tomputer

start(tg);

Считайте компьютер разработчика данных и записи

tic;
while (toc<10)
    data = read(uByte,16);
    write(uByte,data,targetIP,25000);
    data = read(uByte,16);
end

Просмотрите сигналы в инспекторе данных моделирования

Simulink.sdi.view;

Отключите объект UDP на компьютере разработчика

clear uByte;