Receive CAN FD messages from specified CAN FD device
Vehicle Network Toolbox: CAN FD Communication
The CAN FD Receive block receives messages from the CAN network and delivers them to the Simulink® model. It outputs one message or all messages at each timestep, depending on the block parameters.
You need a license for both Vehicle Network Toolbox™ and Simulink software to use this block.
The CAN FD Receive block has two output ports:
f() output port is a trigger to a Function-Call
subsystem. If the block receives a new message, it triggers a Function-Call from
this port. You can then connect to a Function-Call Subsystem (Simulink) to
unpack and process a message.
Msg output port contains a CAN message received at that
particular timestep. The block outputs messages as a Simulink bus signal. For more information on Simulink bus objects, see Composite Signals (Simulink).
The CAN FD Receive block stores CAN messages in a first-in, first-out (FIFO) buffer. The FIFO buffer delivers the messages to your model in the queued order at every timestep.
You cannot have more than one CAN FD Receive block in a model using the same PEAK-System device channel.
The CAN FD Receive block supports the use of Simulink Accelerator™ mode. Using this feature, you can speed up the execution of Simulink models. For more information, see Acceleration (Simulink).
The CAN FD Receive block supports the use of code generation along with the packNGo function to group required source code and dependent shared libraries. For more information, see Code Generation.
Vehicle Network Toolbox Simulink blocks allow you to generate code, enabling models containing these blocks to run in Accelerator, Rapid Accelerator, External, and Deployed modes.
You can use Vehicle Network Toolbox, Simulink Coder™, and Embedded Coder® software together to generate code on the host end that you can use to implement your model. For more information on code generation, see Build Process (Simulink Coder).
The block generates code with limited portability. The block
uses precompiled shared libraries, such as DLLs, to support I/O for
specific types of devices. With this block, you can use the
supported by Simulink
Coder to set up and manage the build
information for your models. The
packNGo (Simulink Coder) function
allows you to package model code and dependent shared libraries into
a zip file for deployment. You do not need MATLAB® installed on
the target system, but the target system needs to be supported by MATLAB.
To set up
In this example,
gcs is the current model
that you want to build. Building the model creates a zip file with
the same name as model name. You can move this zip file to another
machine and there build the source code in the zip file to create
an executable which can run independent of MATLAB and Simulink.
The generated code compiles with both C and C++ compilers. For more
information, see Build Process Customization (Simulink Coder).
On Linux® platforms, you need to add the folder where you unzip the libraries to
the environment variable
Configure your CAN FD Configuration block before you configure the CAN FD Receive block parameters.
Select the CAN device and a channel on the device you want to receive CAN messages from. This field lists all the devices installed on the system. It displays the vendor name, the device name, and the channel ID. The default is the first available device on your system.
Select the filter on this block for standard IDs. Valid choices are:
Allow all (default): Allows all standard IDs to
pass the filter.
Allow only: Allows only ID or range of IDs
specified in the text field. You can specify a single ID or an array
of IDs. You can also specify disjointed IDs or arrays separated by a
comma. For example, to accept IDs from 400 through 500, and 600
through 650, enter
Standard IDs must be positive integers from 0 to 2047. You can also
specify hexadecimal values with the
Block all: Blocks all standard IDs from passing
Select the filter on this block for extended IDs. Valid choices are:
Allow all (default): Allows all extended IDs to
pass the filter.
Allow only: Allows only those IDs specified in
the text field. You can specify a single ID or an array of IDs. You
can also specify disjointed IDs or arrays separated by a comma. For
example, to accept IDs from 3000 through 3500, and 3600 through
Extended IDs must be positive integers from 0 to 536870911. You can
also specify hexadecimal values using the
Block all: Blocks all extended IDs from passing
Specify the sampling time of the block during simulation, which is the
simulation time as described by the Simulink documentation. This value defines the frequency at which the
CAN FD Receive block runs during simulation. If the block
is inside a triggered subsystem or to inherit sample time, you can specify
-1 as your sample time. You can also specify a
MATLAB variable for sample time. The default value is 0.01 (in
Select how many messages the block receives at each specified timestep. Valid choices are:
all (default): The CAN FD
Receive block delivers all available messages in the
FIFO buffer to the model during a specific timestep. The block
generates one function call for each delivered message. The output
port always contains one CAN message at a time.
1: The CAN FD Receive block
delivers one message per timestep from the FIFO buffer to the
If the block does not receive any messages before the next timestep, it outputs the last received message.