3. Sinais: do valor físico aos bits
#Mensagem e sinal
Um quadro CAN tem até 8 bytes (64 bits) de dados. Raramente um único valor ocupa o quadro inteiro: o fabricante divide os bytes em vários sinais. Um quadro de motor pode trazer, por exemplo, a rotação em 16 bits, a temperatura em 8 bits, a posição do acelerador em 8 bits e algumas chaves de 1 bit.
Para ler ou escrever um sinal é preciso saber exatamente:
- Bit de início e tamanho: onde o sinal começa dentro do quadro e quantos bits ocupa.
- Ordem dos bytes: Intel ou Motorola (explicado a seguir).
- Com ou sem sinal: se o valor pode ser negativo (no CAN Personalizável, campo Tipo de valor).
- Fator e offset: como converter o número inteiro transmitido no valor físico.
#Valor bruto e valor físico
O que viaja na rede é sempre um número inteiro, o valor bruto. O valor físico (rpm, °C, bar, %) sai de uma conta simples:
valor físico = valor bruto × fator + offset

O fator define a resolução. Fator 0,1 numa pressão em bar significa que cada unidade do valor bruto vale 0,1 bar. O offset desloca a faixa. Temperatura com offset −40 permite transmitir de −40 °C para cima usando só números positivos. Para transmitir, a conta é a inversa: valor bruto = (valor físico − offset) ÷ fator.
#Ordem dos bytes: Intel e Motorola
Quando um sinal ocupa mais de um byte, é preciso saber qual byte vem primeiro.
- Intel (little-endian): o byte menos significativo vem primeiro. No DBC aparece como @1.
- Motorola (big-endian): o byte mais significativo vem primeiro. No DBC aparece como @0.
O bit de início também muda de significado. Na convenção usada pelos arquivos DBC, em Intel o bit de início é o bit menos significativo do sinal; em Motorola é o bit mais significativo, e a contagem segue byte a byte.

Errar a ordem dos bytes não dá erro: dá um número absurdo. Um sinal de 16 bits com os bytes trocados transforma 1000 rpm em 59.395 rpm. Se o valor lido pula de forma estranha ou fica enorme, a primeira suspeita é a ordem dos bytes.
#Sinais com sinal (negativos)
Valores que podem ser negativos, como avanço de ignição, correção de combustível ou aceleração lateral, costumam ser transmitidos em complemento de dois, a forma padrão de escrever números negativos em binário: a metade de cima da faixa de valores brutos conta como negativa. Num sinal de 8 bits com sinal, os valores brutos 0 a 127 valem 0 a 127 e 128 a 255 valem de −128 a −1; o valor bruto 255 (0xFF) significa −1. Se o sinal for configurado como sem sinal, o mesmo dado aparece como 255. No DBC, o sinal + indica sem sinal e − indica com sinal.