Quantcast

Documentation Center

  • Trial Software
  • Product Updates

Real-Time Transmit and Receive over Ethernet

Communicate between two Simulink Real-Time™ models over Ethernet.

This example shows how to use blocks in the library xpcethernetlib to communicate between two target computers over Ethernet. Signal data is sent by the transmitter model, xpcEnetDemo1Tx, running on one target computer, TargetPC1, to the receiver model, xpcEnetDemo1Rx, running on the second target computer, TargetPC2. The blocks in xpcethernetlib enable "raw" Ethernet for real-time IO.

Requirements

To run this example, you will need two target computers each with a properly installed and configured dedicated Ethernet card (in addition to the Ethernet card used for host-target communications). Refer to the Simulink Real-Time documentation on model-based Ethernet communications for details. Once configured, set the PCI Bus and Slot in the "Ethernet Init" block of xpcEnetDemo1Tx and xpcEnetDemo1Rx 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: xpcEnetDemo1TxxpcEnetDemo1Tx. 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.

% Open the model.
mdlOpen = 0;
systems = find_system('type', 'block_diagram');
if ~any(strcmp(systems, 'xpcEnetDemo1Tx'))
  mdlOpen = 1;
  open_system('xpcEnetDemo1Tx');
end

% Build the model and download to the Tx target computer, TargetPC1.
set_param('xpcEnetDemo1Tx','RTWVerbose','off'); % Configure for a non-Verbose build.
rtwbuild('xpcEnetDemo1Tx');                     % Build and download application.
### Starting Simulink Real-Time build procedure for model: xpcEnetDemo1Tx
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: xpcEnetDemo1Tx
### Looking for target: TargetPC1
### Download model onto target: TargetPC1
% Close the model if we opened it.
if (mdlOpen)
  bdclose('xpcEnetDemo1Tx');
end

Open, Build, and Download the Rx Model to TargetPC2

Click here to open the Rx model: xpcEnetDemo1RxxpcEnetDemo1Rx. This model receives data sent by xpcEnetDemo1Tx and unpacks the data for display in a target scope.

% Open the model.
mdlOpen = 0;
systems = find_system('type', 'block_diagram');
if ~any(strcmp(systems, 'xpcEnetDemo1Rx'))
  mdlOpen = 1;
  open_system('xpcEnetDemo1Rx');
end

% Build the model and download to the Rx target computer, TargetPC2.
set_param('xpcEnetDemo1Rx','RTWVerbose','off'); % Configure for a non-Verbose build.
rtwbuild('xpcEnetDemo1Rx');                     % Build and download application.
### Starting Simulink Real-Time build procedure for model: xpcEnetDemo1Rx
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: xpcEnetDemo1Rx
### Looking for target: TargetPC2
### Download model onto target: TargetPC2
% Close the model if we opened it.
if (mdlOpen)
  bdclose('xpcEnetDemo1Rx');
end

Run both Models

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

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

Display the Tx Target Computer Scope

Take a snapshot of the Tx target computer video display. Plotted is the signal data that's sent to the Rx target computer via raw Ethernet.

tgTx.viewTargetScreen

Display the Rx Target Computer Scopes

Take a snapshot of the Rx target computer video display. Plotted is the signal data received from the Tx target computer via raw Ethernet.

tgRx.viewTargetScreen

Stop both Models

When done, stop the models from running.

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

% EOF xpcEnetDemo1.m
Was this topic helpful?