El problema
que nadie cuenta
Sacar el motor de nafta es la mitad fácil. La otra mitad es que el auto sigue siendo un auto:
el tablero, el testigo de marcha, el velocímetro, el techo del cabrio y la dirección asistida
viajan por el bus CAN y esperan hablar con una ECU de nafta que ya no controla nada.
La computadora original quedó alimentada en el auto, aislada del bus, porque el tablero
necesita sus heartbeats. Sin motor real emite en modo limp permanente: contadores clavados y
valores irreales. Entre esa computadora y el resto del auto va un gateway propio que filtra,
regenera y traduce.
Nada de esto está publicado. Mercedes no documenta el bus del 451, así que hubo que sacarlo
por ingeniería inversa: capturar el tráfico con la computadora original conectada y sin ella
para saber qué mensaje emite cada uno, mover una cosa por vez —el volante, el freno, una
puerta, el selector— y ver qué byte cambia. Después, verificarlo inyectando el valor y
mirando si el tablero responde.
10mensajes decodificados
55parámetros del controlador, abiertos
4buses CAN + 1 RS485
Lo que salió de ahí: el bus del Smart, decodificado
| ID | Hz | Qué es | Cómo se lee |
| 0x212 | 99 | RPM del motor | bytes 2-3 BE, valor literal |
| 0x200 | 40 | Velocidad del tablero + freno de mano | bytes 2-3 BE ÷ 18 = km/h |
| 0x412 | 10 | Odómetro | b2·65536 + b3·256 + b4 = km |
| 0x423 | 50 | Contacto, luces, puertas | b0 = 0x05 andando; b2 bitfield puertas |
| 0x408 | 10 | Combustible, temp. ambiente, marcha | b4 raw → °C; b6: 0x89 N / 0x8A A / 0x8B R |
| 0x270 | 22 | Selector de caja | b0: 0x00 N · 0x04 R · 0x06/0x0A/0x0D D |
| 0x236 | 46 | Levas del volante | b0: 0x02 = + · 0x04 = − |
| 0x418 | — | Modo de caja | b0: 0x46 auto · 0x20 manual |
| 0x3D5 | — | Batería de 12 V | b3 ÷ 10 = V |
| 0x608 | 10 | Temperatura de motor | b0 − 40 = °C |
Y el controlador del motor, también
El motor eléctrico no está en ningún bus CAN: habla por RS485, con un protocolo propio del
fabricante que tampoco está publicado. Venía con un programa de fábrica para Windows y nada
más: ni documentación, ni forma de leerlo desde otro lado.
Se escuchó el puerto serie mientras ese programa trabajaba y se reconstruyó el protocolo.
Leer un parámetro resultó ser el comando 0x69; el de escritura no aparecía por ningún
lado y salió probando por fuerza bruta hasta que el controlador contestó: 0x68.
Con eso quedaron abiertos los 55 parámetros internos, de F0 a F54.
Los de arriba del rango solo se leen —corriente, RPM reales, temperatura de controlador y de
motor, voltaje— y son los que alimentan el tablero. Los de abajo se escriben, y ahí está lo
interesante: la curva de par, la rampa de aceleración, el tope de velocidad y cuánto
frena el motor al soltar el acelerador son parámetros. Escribirlos es lo que permite
tener modos de manejo distintos y cambiarlos desde la pantalla, con el auto andando, sin
desconectar nada ni volver al taller.
Protocolo reconstruido: 0x69 leer · 0x68 escribir · valor de
16 bits · checksum = suma de los bytes.
Estado en vivo: F49 corriente · F50 RPM · F51 temp. controlador ·
F52 temp. motor · F53 voltaje · F54 código de error.