%% Basic CAN FD Communication
% This example uses MathWorks Virtual CAN FD channels to set up 
% transmission and reception of CAN FD messages, using Simulink(R). The
% Virtual channels are connected in a loopback configuration. 
%
% Vehicle Network Toolbox(TM) provides Simulink blocks for transmitting and 
% receiving live messages via Simulink models over networks utilizing
% the Controller Area Network Flexible Data (CAN FD) format. This example
% uses the CAN FD Configuration, CAN FD Pack, CAN FD Transmit, CAN FD
% Receive and CAN FD Unpack blocks to perform data transfer over a CAN FD 
% bus. These blocks operate similarly to the existing CAN blocks, but are
% intended for use only on networks or devices that support the CAN FD
% protocol.

% Copyright 2017 The MathWorks, Inc.

%% Transmit and Receive CAN FD Messages
% Create a model to transmit and receive a CAN FD message carrying a sine
% wave data signal. The model transmits a single message per timestep. A
% CAN database file (.dbc) defines the message and signal used in the
% model.
%
% <<../Model.PNG>>

%% Process CAN FD Messages
% The CAN FD Receive block generates a function-call trigger if it receives a 
% new message at any particular timestep. This indicates to other blocks in
% the model that a message is available for decoding activities. Signal
% decoding and processing is performed inside the function-triggered
% subsystem.
%
% <<../Subsystem.PNG>>

%% Visualize Signal Data
% Plot the sine wave values before and after transmission. The X-axis 
% corresponds to the simulation timestep and the Y-axis corresponds to the
% value of the signal. Note that the phase shift in the two plots. 
% This represents the propagation delay as the signal travels across the 
% network.
%
% <<../Scope.PNG>>

%% Extend the Example
% MathWorks CAN FD Virtual channels were used for this example. You can however
% connect your models to other supported hardware. You can also modify the
% model to transmit at periodic rates.