Фильтрация данных о Ethernet с помощью блока Ethernet Rx.
В этом примере показано, как использовать блоки в библиотеке xpcethernetlib
отфильтровать данные о Ethernet на основе EtherType пакета. EtherType является полем в Ethernet сетевой стандарт, который определяет, какой протокол транспортируется в пакете Ethernet. Пакеты данных сигнала отправляются моделью передатчика, xpcEnetDemo4Tx
, работая на одном целевом компьютере, TargetPC1, к модели получателя, xpcEnetDemo4Rx
, работая на втором целевом компьютере, TargetPC2. Блок "Ethernet Rx" используется, чтобы задать критерии фильтра EtherType. В этом простом примере два отдельных Ethernet блоки Rx используются, чтобы получить и отфильтровать пакеты данных. Один блок Ethernet Rx принимает пакеты SERCOS-III (EtherType - 88CD
), второй блок Ethernet Rx принимает пакеты EtherCAT® (EtherType - 88A4
). Перейдите к вкладке Filter в соответствующем Ethernet блоки Rx, чтобы видеть опции спецификации EtherType.
Примечания:
Действительный SERCOS-III и пакеты EtherCAT не передаются. Только поле EtherType в пакете Ethernet собирается эмулировать эти типы.
Эта модель показывает, как получить и обработать пакеты с помощью нескольких Ethernet блоки Rx. Сравните этот пример с xpcEnetDemo3
который использует один блок Ethernet Rx и затем анализирует пакеты данных с блоком Network Buffer Filter. Используйте метод, показанный в этом примере, xpcEnetDemo4
, если вы хотите больше чем один блок Ethernet Rx - возможно, каждый содержавшийся в отдельных подсистемах.
Чтобы запустить этот пример, вы будете нуждаться в двух целевых компьютерах, каждом с установленным и сконфигурировали выделенную карту Ethernet (в дополнение к карте Ethernet, используемой в подключении Ethernet между разработкой и целевыми компьютерами). Обратитесь к документации Simulink® Real-Time™ относительно основанных на модели коммуникаций Ethernet для деталей. После того, как сконфигурированный, устанавливает Шину PCI и Паз в блоке "Real-time Ethernet Configuration" xpcEnetDemo4Tx
и xpcEnetDemo4Rx
к той из карты Ethernet, установленной в TargetPC1 и TargetPC2 соответственно.
Щелкните здесь, чтобы открыть модель Tx: xpcEnetDemo4Tx
. Эта модель управляет генератором с сигналом прямоугольной волны и отправляет сигналы ввода и вывода генератора в целевой компьютер Rx. Вход генератора (прямоугольная волна) передается как пакет SERCOS-III и генератор, выход передается как пакет EtherCAT. Откройте модель.
mdlOpen = 0; systems = find_system('type', 'block_diagram'); if ~any(strcmp(systems, 'xpcEnetDemo4Tx')) mdlOpen = 1; open_system(fullfile(matlabroot,'toolbox','rtw','targets','xpc','xpcdemos','xpcEnetDemo4Tx')); end
Создайте модель и загрузите на целевой компьютер Tx, TargetPC1.
Сконфигурируйте для немногословной сборки.
Установите настройку Ethernet совпадать с настройками целевого компьютера.
Сборка и приложение загрузки.
Закройте модель, если мы открыли ее.
set_param('xpcEnetDemo4Tx','RTWVerbose','off'); set_param('xpcEnetDemo4Tx/Real-time Ethernet Configuration','Driver','Intel Gigabit','Bus','5','Slot','0'); evalc('rtwbuild(''xpcEnetDemo4Tx'')'); tgTx = slrt('TargetPC1'); load(tgTx,'xpcEnetDemo4Tx'); if (mdlOpen) bdclose('xpcEnetDemo4Tx'); end
Щелкните здесь, чтобы открыть модель Rx: xpcEnetDemo4Rx
. Эта модель фильтрует пакеты на основе EtherType и распаковывает полученные данные для отображения в целевых осциллографах. Откройте модель.
mdlOpen = 0; systems = find_system('type', 'block_diagram'); if ~any(strcmp(systems, 'xpcEnetDemo4Rx')) mdlOpen = 1; open_system(fullfile(matlabroot,'toolbox','rtw','targets','xpc','xpcdemos','xpcEnetDemo4Rx')); end
Подсистема получателя SERCOS-III
open_system('xpcEnetDemo4Rx/SERCOS-III Receiver');
Подсистема получателя EtherCAT
open_system('xpcEnetDemo4Rx/EtherCAT Receiver');
Выберите Ethertype (s) процента по вкладке Filter блока Ethernet Rx. Как пример, пакет SERCOS-III выбран здесь:
Создайте модель и загрузите на целевой компьютер Rx, TargetPC2.
Сконфигурируйте для немногословной сборки. * Настройка Ethernet набора, чтобы совпадать с настройками целевого компьютера. Сборка и приложение загрузки. Закройте модель, если мы открыли ее.
set_param('xpcEnetDemo4Rx','RTWVerbose','off'); set_param('xpcEnetDemo4Rx/Real-time Ethernet Configuration','Driver','Intel Gigabit','Bus','8','Slot','10'); evalc('rtwbuild(''xpcEnetDemo4Rx'')'); tgRx = slrt('TargetPC2'); load(tgRx,'xpcEnetDemo4Rx'); if (mdlOpen) bdclose('xpcEnetDemo4Rx'); end
Используя переменные объекта Simulink Real-Time tgTx
и tgRx
, запустите модели.
Запустите модель Tx.
Запустите модель Rx.
Позвольте моделям, запущенным в течение по крайней мере 5 секунд.
start(tgTx); start(tgRx); pause(5);
Просмотрите видеодисплей целевого компьютера Tx. Это отображает график данных сигнала, который отправляется в целевой компьютер Rx через необработанный Ethernet. Используйте команду:
tgTx.viewTargetScreen;
Просмотрите видеодисплей целевого компьютера Rx. Это отображает график данных сигнала, полученных от целевого компьютера Tx через необработанный Ethernet. Обратите внимание на то, что только данные с SERCOS-III и EtherCAT EtherTypes, проходят через соответствующий Ethernet блоки Rx. Используйте команду:
tgRx.viewTargetScreen;
Когда сделано, мешайте моделям запуститься.
Остановите модель Tx.
Остановите модель Rx.
stop(tgTx); stop(tgRx);