I was finally able to get communication from then VESC to my RPi
Without CAN-bus forward
With CAN-bus forward
CAN-bus meanings according to this source: https://triforce-docs.readthedocs.io/en/latest/canbus/canbus.html#canbus-control
Command | ID | Data | Data Length | Data Type | Units |
---|---|---|---|---|---|
CAN_PACKET_SET_DUTY | 0 | Motor Duty Cycle | 32-bit/4-by te | Signed Integer | Thous andth s of perce nt (5000 0 –> 50%) |
CAN_PACKET_SET_CURREN T | 1 | Motor Current | 32-bit/4-by te | Signed Integer | mAh |
CAN_PACKET_SET_CURREN T_BRAKE | 2 | Motor Brake Current | 32-bit/4-by te | Signed Integer | mAh |
CAN_PACKET_SET_RPM | 3 | Motor RPM | 32-bit/4-by te | Signed Integer | ERPM |
CAN_PACKET_SET_POS | 4 | Motor Position | |||
CAN_PACKET_FILL_RX_B UFFER | 5 | ||||
CAN_PACKET_FILL_RX_B UFFER_LONG | 6 | ||||
CAN_PACKET_PROCESS_RX _BUFFER | 7 | ||||
CAN_PACKET_PROCESS_SH ORT_BUFFER | 8 | ||||
CAN_PACKET_STATUS | 9 | Request status | N/A | ||
CAN_PACKET_SET_CURREN T_REL | 10 | ||||
CAN_PACKET_SET_CURREN T_BRAKE_REL | 11 |
So I gues I'm just getting the "process short buffer" messages
I imagine that my RPi would have to behave like a VESC master in order for my other VESC's to behave like slaves and get controlled via the CAN-bus
Any kind of links or knowledge that could get me in the right direction would be of big help
Finally figured it out! For future can-noobs
To send the RPM 1000 to my VESC with adress 61:
Hi kimpet,
I've recently started working with CAN and I'm trying to read all data that the VESC can provide over CAN using a Rpi and then have it printed on a display that can read CAN directly. I'm a bit stuck with trying to decipher packets and obtain current, voltage, and temperature data. I'm not able to find a comprehensive list of everything that the VESC writes into the CAN line.
From what I understand, I'm supposed to send a 'CAN_PACKET_STATUS' command over CAN and then the VESC is going to respond with all kinds of data? Any guidance on how I can go about this will be greatly appreciated.
Thank you in advance!
Edit: I'm using a CAN to USB converter that is plugged into a USB port on the Raspberry pi. So the pi is going to be reading USB data. I imagine this might also affect the packets that are sent/received?
I've added CAN frame description and packet/ID decoding for VESC 6 into a spreadsheet linked in my Github, for anyone in the future that comes across this.
https://github.com/CanonFlair/VESC_CAN