Передача в реальном времени и получает по Ethernet

Свяжитесь между двумя моделями Simulink® Real-Time™ по Ethernet.

В этом примере показано, как использовать блоки в библиотеке xpcethernetlib связываться между двумя целевыми компьютерами по Ethernet. Данные сигнала отправляются моделью передатчика, xpcEnetDemo1Tx, работая на одном целевом компьютере, TargetPC1, к модели получателя, xpcEnetDemo1Rx, работая на втором целевом компьютере, TargetPC2. Блоки в xpcethernetlib включите "необработанный" Ethernet для IO в реальном времени.

Требования

Чтобы запустить этот пример, вы будете нуждаться в двух целевых компьютерах, каждом с установленным и сконфигурировали выделенную карту Ethernet (в дополнение к карте Ethernet, используемой в подключении Ethernet между разработкой и целевыми компьютерами). Обратитесь к документации Simulink Real-Time относительно основанных на модели коммуникаций Ethernet для деталей. После того, как сконфигурированный, устанавливает Шину PCI и Паз в блоке "Real-Time Ethernet Configuration" xpcEnetDemo1Tx и xpcEnetDemo1Rx к той из карты Ethernet, установленной в TargetPC1 и TargetPC2 соответственно.

Открытый, сборка и загрузка модель Tx к TargetPC1

Щелкните здесь, чтобы открыть модель Tx: xpcEnetDemo1Tx. Эта модель управляет генератором с сигналом прямоугольной волны и отправляет сигналы ввода и вывода генератора в целевой компьютер Rx с помощью необработанного Ethernet.

Откройте модель.

mdlOpen = 0;
systems = find_system('type', 'block_diagram');
if ~any(strcmp(systems, 'xpcEnetDemo1Tx'))
  mdlOpen = 1;
  open_system(fullfile(matlabroot,'toolbox','rtw','targets','xpc','xpcdemos','xpcEnetDemo1Tx'))
end

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

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

  • Установите настройку Ethernet совпадать с настройками целевого компьютера

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

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

set_param('xpcEnetDemo1Tx','RTWVerbose','off');
set_param('xpcEnetDemo1Tx/Real-time Ethernet Configuration','Driver','Intel Gigabit','Bus','5','Slot','0')
evalc('rtwbuild(''xpcEnetDemo1Tx'')');
tgTx = slrt('TargetPC1');
load(tgTx,'xpcEnetDemo1Tx');
if (mdlOpen)
  bdclose('xpcEnetDemo1Tx');
end

Открытый, сборка и загрузка модель Rx к TargetPC2

Щелкните здесь, чтобы открыть модель Rx: xpcEnetDemo1Rx. Эта модель получает данные, отправленные xpcEnetDemo1Tx и распаковывает данные для отображения в целевом осциллографе. Откройте модель.

mdlOpen = 0;
systems = find_system('type', 'block_diagram');
if ~any(strcmp(systems, 'xpcEnetDemo1Rx'))
  mdlOpen = 1;
  open_system(fullfile(matlabroot,'toolbox','rtw','targets','xpc','xpcdemos','xpcEnetDemo1Rx'))
end

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

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

  • Установите настройку Ethernet совпадать с настройками целевого компьютера

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

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

set_param('xpcEnetDemo1Rx','RTWVerbose','off');
set_param('xpcEnetDemo1Rx/Real-time Ethernet Configuration','Driver','Intel Gigabit','Bus','8','Slot','10')
evalc('rtwbuild(''xpcEnetDemo1Rx'')');
tgRx = slrt('TargetPC2');
load(tgRx,'xpcEnetDemo1Rx');
if (mdlOpen)
  bdclose('xpcEnetDemo1Rx');
end

Запустите обе Модели

Используя переменные объекта Simulink Real-Time tgTx и tgRx, запустите модели.

  • Запустите модель Tx.

  • Запустите модель Rx.

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

start(tgTx);
start(tgRx);
pause(5);

Отобразите осциллограф целевого компьютера Tx

Просмотрите видеодисплей целевого компьютера Tx. Это отображает график данных сигнала, который отправляется в целевой компьютер Rx через необработанный Ethernet. Используйте команду:

tgTx.viewTargetScreen

Отобразите осциллографы целевого компьютера Rx

Просмотрите видеодисплей целевого компьютера Rx. Это отображает график данных сигнала, который получен от целевого компьютера Tx через необработанный Ethernet. Используйте команду:

tgRx.viewTargetScreen

Остановите обе Модели

Когда сделано, мешайте моделям запуститься.

  • Остановите модель Tx.

  • Остановите модель Rx.

stop(tgTx);
stop(tgRx);