Целевая передача хоста при помощи 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, смотрите UDP Communication Setup.

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

Эта модель управляет передаточной функцией первого порядка с сигналом квадратной волны и отправляет входные и выходные сигналы передаточной функции в компьютер разработчика, используя 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

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

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

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

  • Создайте и загрузите приложение.

  • Откройте Данные моделирования Inspector.

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

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);

Запуск модели на целевом томпутере

start(tg);

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

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

Просмотрите сигналы в Данные моделирования Inspector

Simulink.sdi.view;

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

clear uByte;