Acabo de encontrar una información muy interesante, un extracto del iso 15765-2
isoSe define que se deben enviar tramas de 8 bytes de largo (campo de datos). Pero se usa un campo PCI (Protocol Control Information), en donde se marca si la trama es simple o extendida y la longitud de los datos. O sea, la trama CAN siempre es de lonitud 8, y el primer campo (o más si es una multitrama) es un flag que nos marca si la trama es extendida o simple, y la longitud de los datos enviados.
Tipos de tramas:
PDU Type PCI Type byte
Single Frame (SF) 0
First Frame (FF) 1
Consecutive Frame (CF) 2
Flow Control (FC) 3
Para enviar una trama con menos de 7 bytes de datos, se usa el flag SF, o sea, el primer Byte del campo de datos es 0x, donde x es la longitud del campo de datos.
Por ejemplo, queremos pedir a la centralita el valor de las revoluciones del motor, en este caso la petición sería 01 0C, al construir la trama, habría que poner:
ID= 7E0, lenght= 8, data= 02 01 0C 00 00 00 00 00
Y la respuesta será de la forma:
ID= 7E8, length= 8, data= 04 41 0C xx yy 00 00 00
donde xx yy es el valor de las revoluciones del motor en hexadecimal, el valor entero es:
RPM = ((xx*256) + yy)/4