How to send n number of messages through standard can pack unpack and speedgoat IO blocks
10 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
AKHILA
am 25 Nov. 2024
Kommentiert: Dimitri MANKOV
am 9 Dez. 2024
Hi,
I am simulating my slx file having standard can pack unpack blocks along with J1939 blocks in real time using speedgoat IO blocks in loopback model. But having a delay in the receiving those signals when number of messages are more. I am chnaging in SLRT explorer but signal is not received in another block for a long time. But working fine wiht J1939 blocks, only standard CAN is having problem. Can someone explain why there is a delay and how to overcome those
Akzeptierte Antwort
Dimitri MANKOV
am 3 Dez. 2024
Hi Akhila,
Could you please provide more details about that you mean by "I am changing in SLRT explorer but signal is not received in another block for a long time"? Do you mean there's a delay between the moment that you update a parameter value and the moment when...:
- ... that parameter gets updated on the target machine, or
- ... the corresponding signal change is refected on the CAN bus?
Does this affect any signals, or only signals that are fed to CAN blocks? Does this happen only when you try to send more than X messages? Have you considered the average load of your CAN bus?
To answer your main question, you can find examples showing how to send any desired number of messages through standard CAN Pack / Unpack and Speedgoat IO driver blocks on the Speedgoat website here.
Bear in mind that any CAN bus has a limited bandwidth, and that you cannot send more than a certain amount of messages per second. That number of messages depends on the payload of each CAN message, on the selected baudrate, on the other devices connected to the bus, etc. The "CAN Status" blocks from the Speedgoat I/O Blockset can help you estimate how far away you are from reaching the max. load / capacity of your bus.
I hope this is helpful!
Dimitri
2 Kommentare
Dimitri MANKOV
am 9 Dez. 2024
Hi Akhila,
It sounds like you're using CAN Read blocks in a "Single read from FIFO buffer" mode: when more than one message is received every time step, you must empty the entire message buffer every time step to see all new messages. Otherwise, you will read less messages that you are receiving, causing the CAN messages to accumulate in the buffer, and you will see the new messages in your model several time steps too late.
Please have a look at the Usage Notes for CAN driver blocks in the Speedgoat documentation here:
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Target Computer Setup finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!