Этот пример показывает, как использовать блоки UDP, чтобы отправить данные между двумя целевыми компьютерами. Модель TargetToTargetRealtimeUDP1
работает на TargetPC1. Модель TargetToTargetRealtimeUDP2
работает на TargetPC2. Обе модели отправляют и получают пакеты данных сигнала.
Примечание: При рассмотрении UDP как протокол для того, чтобы передать данные к/от среде Simulink® Real-Time™, важно знать о следующем:
UDP является протоколом без установления соединения, который не проверяет, чтобы подтвердить, что пакеты были переданы или получены. Пакеты данных могут быть потеряны или пропущены.
Для получения дополнительной информации об использовании UDP с Simulink Real-Time см. документацию относительно поддержки ввода-вывода UDP.
Щелкните здесь, чтобы открыть этот пример: TargetToTargetUDP
.
Щелкните здесь, чтобы открыть модель 1: TargetToTargetRealtimeUDP1
.
Откройте модель.
mdlOpen = 0; systems = find_system('type', 'block_diagram'); if ~any(strcmp('TargetToTargetRealtimeUDP1', systems)) mdlOpen = 1; open_system(fullfile(matlabroot,'toolbox','rtw','targets','xpc','xpcdemos','TargetToTargetRealtimeUDP1')); end
Создайте модель и загрузите на целевой компьютер.
Сконфигурируйте для немногословной сборки.
Сконфигурируйте параметры UDP для TargetPC1.
Сборка и приложение загрузки.
set_param('TargetToTargetRealtimeUDP1','RTWVerbose','off'); set_param('TargetToTargetRealtimeUDP1/UDP Configure','PCIBus','5') set_param('TargetToTargetRealtimeUDP1/UDP Configure','PCISlot','0') set_param('TargetToTargetRealtimeUDP1/UDP Configure','PCIFunction','0') rtwbuild('TargetToTargetRealtimeUDP1');
### Starting Simulink Real-Time build procedure for model: TargetToTargetRealtimeUDP1 Warning: This model contains blocks that do not handle sample time changes at runtime. To avoid incorrect results, only change the sample time in the original model, then rebuild the model. ### Successful completion of build procedure for model: TargetToTargetRealtimeUDP1 ### Created MLDATX ..\TargetToTargetRealtimeUDP1.mldatx ### Looking for target: TargetPC1 ### Download model onto target: TargetPC1
Закройте модель, если мы открыли ее.
if (mdlOpen) bdclose('TargetToTargetRealtimeUDP1'); end
Щелкните здесь, чтобы открыть модель 2: TargetToTargetRealtimeUDP2
.
Откройте модель.
mdlOpen = 0; systems = find_system('type', 'block_diagram'); if ~any(strcmp('TargetToTargetRealtimeUDP2', systems)) mdlOpen = 1; open_system(fullfile(matlabroot,'toolbox','rtw','targets','xpc','xpcdemos','TargetToTargetRealtimeUDP2')); end
Создайте модель и загрузите на целевой компьютер.
Сконфигурируйте для немногословной сборки.
Сконфигурируйте параметры UDP для TargetPC2.
Сборка и приложение загрузки.
set_param('TargetToTargetRealtimeUDP2','RTWVerbose','off'); set_param('TargetToTargetRealtimeUDP2/UDP Configure','PCIBus','8') set_param('TargetToTargetRealtimeUDP2/UDP Configure','PCISlot','10') set_param('TargetToTargetRealtimeUDP2/UDP Configure','PCIFunction','0') rtwbuild('TargetToTargetRealtimeUDP2');
### Starting Simulink Real-Time build procedure for model: TargetToTargetRealtimeUDP2 Warning: This model contains blocks that do not handle sample time changes at runtime. To avoid incorrect results, only change the sample time in the original model, then rebuild the model. ### Successful completion of build procedure for model: TargetToTargetRealtimeUDP2 ### Created MLDATX ..\TargetToTargetRealtimeUDP2.mldatx ### Looking for target: TargetPC2 ### Download model onto target: TargetPC2
Закройте модель, если мы открыли ее.
if (mdlOpen) bdclose('TargetToTargetRealtimeUDP2'); end
Используя переменные объекта Simulink Real-Time tg1
и tg2
, запустите модели.
Запустите модель TargetPC1. Объект Simulink является tg.
Запустите модель TargetPC2. Объект Simulink является tg2.
Запуститесь в течение 5 секунд.
start(tg); start(tg2); pause(5);
Используя переменные объекта Simulink Real-Time tg1
и tg2
, остановите модели.
Остановите модель TargetPC1. Объект Simulink является tg.
Остановите модель TargetPC2. Объект Simulink является tg2.
stop(tg); stop(tg2);
tg.viewTargetScreen();
tg2.viewTargetScreen();