# Comunicaciones



# CAN - Introducción

El coche tiene dos subsistemas que reciben acciones de control y dan feedback de su estado:

- Sistema de tracción
- Sistema de dirección

# CAN - Sistema de tracción

  
Cómo bien hemos expresado en la introducción, el sistema de tracción se controla mediante CAN.

Este código está procesando mensajes de una red CAN en un sistema llamado **MasterDrive**, donde se manejan distintos **PDOs (Process Data Objects)** para la comunicación entre un **Master**, un **Slave** y una **Computadora**.

### 📌 **¿Qué significan las constantes?**

Las constantes como `PDO1_MISO_MtoC` y `PDO1_MOSI_MtoS` representan los identificadores **CAN ID** de los mensajes en la red.  
Estas son definiciones de **valores hexadecimales** que indican qué tipo de mensaje es cada uno.

<div class="overflow-x-auto contain-inline-size" id="bkmrk-constante-id-%28hex%29-i"><table data-end="1435" data-start="502"><thead data-end="616" data-start="502"><tr data-end="616" data-start="502"><th data-end="538" data-start="502">Constante</th><th data-end="549" data-start="538">ID (Hex)</th><th data-end="564" data-start="549">ID (Decimal)</th><th data-end="616" data-start="564">Significado</th></tr></thead><tbody data-end="1435" data-start="730"><tr data-end="849" data-start="730"><td>`PDO1_MISO_MtoC`</td><td>`0x1A6`</td><td>`422`</td><td>Master → Computer (Datos de corriente, voltaje, batería)</td></tr><tr data-end="960" data-start="850"><td>`PDO1_MOSI_MtoS`</td><td>`0x227`</td><td>`551`</td><td>Master → Slave (Comandos de control)</td></tr><tr data-end="1075" data-start="961"><td>`PDO2_MISO_MtoC`</td><td>`0x2A6`</td><td>`678`</td><td>Master → Computer (Datos de velocidad, temperatura)</td></tr><tr data-end="1191" data-start="1076"><td>`PDO2_MISO_StoC`</td><td>`0x2A7`</td><td>`679`</td><td>Slave → Computer (Temperatura y corriente del Slave)</td></tr><tr data-end="1302" data-start="1192"><td>`PDO1_MISO_StoM`</td><td>`0x1A7`</td><td>`423`</td><td>Slave → Master (Estados y fallas del Slave)</td></tr><tr data-end="1435" data-start="1303"><td>`PDO1_MOSI_CtoM`</td><td>`0x226`</td><td>`550`</td><td>Computer → Master (Acción de control Accelerador)</td></tr></tbody></table>

</div>[candump-2025-02-13\_124653\_conector\_rojo.log](https://wiki.racarla.es/attachments/1)

# CAN - Herramientas

- https://github.com/linux-can/can-utils
- [https://mintonperformance.com/blogs/controller-area-networking/setup-and-installation-of-can-utils-on-linux-2022-update?srsltid=AfmBOoqO-Zz8XW9iiHUu\_DC6VKThbfrxMTdchiCR2tbKv1svMpi2Hj2f](https://mintonperformance.com/blogs/controller-area-networking/setup-and-installation-of-can-utils-on-linux-2022-update?srsltid=AfmBOoqO-Zz8XW9iiHUu_DC6VKThbfrxMTdchiCR2tbKv1svMpi2Hj2f)
- 

# CAN - Bibliografía

Tutoriales:

- Blog - mbedded.ninja - How To Use SocketCAN With The Command-Line In Linux - [https://blog.mbedded.ninja/programming/operating-systems/linux/how-to-use-socketcan-with-the-command-line-in-linux/](https://blog.mbedded.ninja/programming/operating-systems/linux/how-to-use-socketcan-with-the-command-line-in-linux/)
- Blog - mbedded.ninja - How To Use SocketCAN With C++ In Linux [https://blog.mbedded.ninja/programming/operating-systems/linux/how-to-use-socketcan-with-c-in-linux/](https://blog.mbedded.ninja/programming/operating-systems/linux/how-to-use-socketcan-with-c-in-linux/)