MATLAB Examples

Filtering on MAC Address

Filtering Ethernet data using MAC addresses.

This example shows how to use blocks in the library xpcethernetlib to filter Ethernet data based on the sender's MAC address. Signal data is sent by the transmitter model, xpcEnetDemo2Tx, running on one target computer, TargetPC1, to the receiver model, xpcEnetDemo2Rx, running on the second target computer, TargetPC2. The "Filter Address" block is used to specify the source MAC addresses that will be accepted. In this simple example, data packets containing one of three source MAC addresses will pass through the Filter Address block in the receiver model:

  1. MAC Address : 40:41:42:43:44:45
  2. MAC Address : 20:21:22:23:24:25
  3. MAC Address : 50:51:52:53:54:55

Note: Only packets with a MAC address 20:21:22:23:24:25 are actually transmitted, received, and plotted.

Contents

Requirements

To run this example, you will need two target computers each with, each with an installed and configured dedicated Ethernet card (in addition to the Ethernet card used for the Ethernet link between the development and target computers). Refer to the Simulink® Real-Time™ documentation on model-based Ethernet communications for details. Once configured, set the PCI Bus and Slot in the "Real-Time Ethernet Configuration" block of xpcEnetDemo2Tx and xpcEnetDemo2Rx to that of the Ethernet card installed in TargetPC1 and TargetPC2 respectively.

Open, Build, and Download the Tx Model to TargetPC1

Click here to open the Tx model: xpcEnetDemo2Tx. This model drives an oscillator with a square wave signal and sends the oscillator input and output signals to the Rx target computer using raw Ethernet. Transmitted data packets have a specified MAC address of 20:21:22:23:24:25. Open the model.

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

Build the model and download to the Tx target computer, TargetPC1.

  • Configure for a non-Verbose build.
  • Build and download application.
  • Close the model if we opened it.
set_param('xpcEnetDemo2Tx','RTWVerbose','off');
evalc('rtwbuild(''xpcEnetDemo2Tx'')');
if (mdlOpen)
  bdclose('xpcEnetDemo2Tx');
end

Open, Build, and Download the Rx Model to TargetPC2

Click here to open the Rx model: xpcEnetDemo2Rx. This model filters packets based on specified MAC addresses and unpacks the received data for display in target scopes. Open the model.

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

Build the model and download to the Rx target computer, TargetPC2.

  • Configure for a non-Verbose build.
  • Build and download application.
  • Close the model if we opened it.
set_param('xpcEnetDemo2Rx','RTWVerbose','off');
evalc('rtwbuild(''xpcEnetDemo2Rx'')');
if (mdlOpen)
  bdclose('xpcEnetDemo2Rx');
end

Run both Models

Using the Simulink Real-Time object variables tgTx and tgRx, start the models.

  • Start the Tx model.
  • Start the Rx model.
  • Let the models run for at least 5 sec.
start(tgTx);
start(tgRx);
pause(5);

Display the Tx Target Computer Scope

View the Tx target computer video display. It displays a plot of the signal data that's sent to the Rx target computer via raw Ethernet. Use command:

tgTx.viewTargetScreen

Display the Rx Target Computer Scopes

View the Rx target computer video display. It displays a plot of the signal data received from the Tx target computer via raw Ethernet. Note that data passes through only one of the MAC address filters. Use command:

tgRx.viewTargetScreen

Stop both Models

When done, stop the models from running.

  • Stop the Tx model.
  • Stop the Rx model.
stop(tgTx);
stop(tgRx);