Фильтрация на мак адресе

Фильтрация данных о Ethernet с помощью Мак адресов.

Этот пример показывает, как использовать блоки в библиотеке xpcethernetlib, чтобы отфильтровать данные о Ethernet на основе Мак адреса отправителя. Данные сигнала отправляются моделью передатчика, xpcEnetDemo2Tx, работая на одном целевом компьютере, TargetPC1, к модели получателя, xpcEnetDemo2Rx, работая на втором целевом компьютере, TargetPC2. Блок "Filter Address" используется, чтобы задать исходные Мак адреса, которые будут приняты. В этом простом примере пакеты данных, содержащие один из трех исходных Мак адресов, пройдут через блок Filter Address в модели получателя:

  1. Мак адрес: 40:41:42:43:44:45

  2. Мак адрес: 20:21:22:23:24:25

  3. Мак адрес: 50:51:52:53:54:55

Примечание: Только пакеты с Мак адресом 20:21:22:23:24:25 на самом деле переданы, получены и построены.

Требования

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

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

Щелкните здесь, чтобы открыть модель Tx: xpcEnetDemo2Tx. Эта модель управляет осциллятором с сигналом прямоугольной волны и отправляет сигналы ввода и вывода осциллятора в целевой компьютер Rx с помощью необработанного Ethernet. Пакеты передаваемых данных имеют заданный Мак адрес 20:21:22:23:24:25. Откройте модель.

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

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

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

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

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

set_param('xpcEnetDemo2Tx','RTWVerbose','off');
evalc('rtwbuild(''xpcEnetDemo2Tx'')');
if (mdlOpen)
  bdclose('xpcEnetDemo2Tx');
end

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

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

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

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

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

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

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

set_param('xpcEnetDemo2Rx','RTWVerbose','off');
evalc('rtwbuild(''xpcEnetDemo2Rx'')');
if (mdlOpen)
  bdclose('xpcEnetDemo2Rx');
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);