3. Señales: del valor físico a los bits
#Mensaje y señal
Una trama CAN tiene hasta 8 bytes (64 bits) de datos. Raramente un único valor ocupa la trama entera: el fabricante divide los bytes en varias señales. Una trama de motor puede traer, por ejemplo, las RPM en 16 bits, la temperatura en 8 bits, la posición del acelerador en 8 bits y algunos interruptores de 1 bit.
Para leer o escribir una señal es necesario saber exactamente:
- Bit de inicio y tamaño: dónde comienza la señal dentro de la trama y cuántos bits ocupa.
- Orden de bytes: Intel o Motorola (se explica a continuación).
- Con o sin signo: si el valor puede ser negativo (en la pantalla del CAN personalizable, campo Tipo de valor: Con señal o Sin señal).
- Factor y offset: cómo convertir el número entero transmitido en el valor físico.
#Valor bruto y valor físico
Lo que viaja por la red es siempre un número entero, el valor bruto. El valor físico (rpm, °C, bar, %) sale de un cálculo simple:
valor físico = valor bruto × factor + offset

El factor define la resolución. Un factor 0,1 en una presión en bar significa que cada unidad del valor bruto vale 0,1 bar. El offset desplaza el rango. La temperatura con offset −40 permite transmitir desde −40 °C hacia arriba usando solo números positivos. Para transmitir, el cálculo es el inverso: valor bruto = (valor físico − offset) ÷ factor.
#Orden de bytes: Intel y Motorola
Cuando una señal ocupa más de un byte, es necesario saber qué byte viene primero.
- Intel (little-endian): el byte menos significativo viene primero. En el DBC aparece como @1.
- Motorola (big-endian): el byte más significativo viene primero. En el DBC aparece como @0.
El bit de inicio también cambia de significado. En la convención usada por los archivos DBC, en Intel el bit de inicio es el bit menos significativo de la señal; en Motorola es el bit más significativo, y la numeración sigue byte a byte.

Equivocarse en el orden de bytes no genera un error: genera un número absurdo. Una señal de 16 bits con los bytes invertidos transforma 1000 rpm en 59395 rpm. Si el valor leído salta de forma extraña o queda enorme, la primera sospecha es el orden de los bytes.
#Señales con signo (negativas)
Los valores que pueden ser negativos, como el avance de ignición, la corrección de combustible o la aceleración lateral, suelen transmitirse en complemento a dos, la forma estándar de escribir números negativos en binario: la mitad superior del rango de valores brutos cuenta como negativa. En una señal de 8 bits con signo, los valores brutos 0 a 127 valen 0 a 127 y 128 a 255 valen de −128 a −1; el valor bruto 255 (0xFF) significa −1. Si la señal se configura sin signo, el mismo dato aparece como 255. En el DBC, el signo + indica sin signo y − indica con signo.