How to receive and transmit multiple CAN-Messages in a single time-step on a Raspberry Pi 3B?

Hi all,
I am trying to set up a Simulink model on a Raspberry Pi 3B with Matlab 2021b. The model has to receive sensor-data and transmit results via a CAN-Bus with a bitrate of 500000. As CAN-Hat I am using the 2-CH CAN HAT from Waveshare (https://www.waveshare.com/wiki/2-CH_CAN_HAT).
The model has to send and transmit multiple CAN-messages in a single time-step. The implementation essentially looks like this:
The CAN_read subsystem runs at a shorter sample-time than the rest of the model to ensure all messages are received.
In the testet scenarios the model is removed so that I can enable mat-file logging and the system runs without task-overruns.
With the CAN_write subsystem commented out, the CAN messages are received normally. A Signal may look like this:
With the CAN_write subsystem active the same signal will look like this:
When comparing both plots it can be seen that with CAN_write enabled there are large gaps between the received messages of this signal.
Does anyone know what may cause this behavior, and how I can solve this?
Can I even use Receive- and Transmit-Blocks in such a manner? Is it not recommended to use more than one CAN-Transmit block?

Antworten (1)

Enrico Landolfi
Enrico Landolfi am 23 Nov. 2021
Bearbeitet: Enrico Landolfi am 23 Nov. 2021
Hi,
I have a similar problem with more than one can message featured by more signals, it seems that there is a delay between the CAN transmit and CAN receive, using two raspberry connected throgh CAN bus.
Any solution?

Kategorien

Produkte

Version

R2021b

Gefragt:

am 5 Nov. 2021

Bearbeitet:

am 23 Nov. 2021

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by