Tacòmetre Digital per a Harley Davidson Sportster (Part 3 - Harley Davidson i SAE J1850 VPW)
08 Apr 2016 - 0 CommentsPart1 / Part2 / Part3 / Part4 / Part5 / Part6 / Part7 / Part8 / Part9 / Part10 / Part11 / Part12 / Part13 / Part14 / Part15
La manera curta i millor d’entendre aquest protocol és llegint aquest document (en anglès). La manera llarga és llegint directament la SAE J1850. De totes maneres, tot seguit resumiré els punts bàsics que s’han d’entendre per a poder programar un codi per rebre i interpretar els missatges de l’ECU motor.
D’acord amb l’estandard SAE J1850 VPW, a la moto tindrem un sol cable per on circularà la informació en funció d’uns nivells de voltatge i d’un temps de transmissió. Els nivells són:
- Passiu: 0 - 3,5V (estat natural del bus)
- Actiu: 4,25V - 20V (les unitats de control poden activar el bus mitjançant transistors)
Les principals propietats del bus són: - Serial bus: l’informació s’envia bit a bit.
- Asíncron: la informació que s’envia entre nodes és controlada pel mateix emissor en comptes de ser sincronitzada per un señal de rellotge.
- Master-less: cap node té superioritat o té el control sobre els altres.
- Peer to peer: tots els nodes tenen la mateixa capacitat de transmetre en tot moment.
Una propietat molt important dels nodes és que quan un node parla, ell mateix analitza el bus per saber si el que està dient és efectivament el que hi ha al bus, més endavant entendrem el perquè.
Arbitrarietat:
En aquest tipus de busos tothom podrà parlar quan vulgui i per això s’ha d’establir unes regles per a que tothom s’entengui. N’hi haurà dues:
-
1- El node escolta el bus.
- a) Si ningú està transmetent un missatge durant un temps predefinit, llavors el node pot començar a transmetre.
- b) Si algú està transmetent, llavors s'espera a que acabi i després s'espera un temps determinat abans de començar a transmetre.
Tot es resol físicament. Com ja hem dit, el bus està en estat natural en mode passiu i per tant, els nodes només han d’activar o desactivar el transistor per posar el bus en mode actiu o passiu. Si un node està transmetent un bit passiu però llegeix que el bus està actiu, això vol dir que algun altre node està parlant a la vegada.
Tot radica als 3 bytes de la capçalera del missatge. Allà, un d’aquests bytes indica la prioritat del missatge que l’enginyer haurà establert amb anterioritat (per exemple: un missatge de RPM ha de ser més important que un missatge de temperatura, ja que en un segon la temperatura és bastant estable degut a la inèrcia tèrmica, però les RPM poden variar molt).
Els missatges amb més prioritat seran per tant aquells amb més bits actius al començament del missatge.
Composició d’un missatge:
Parts d’un missatge típic a Harley Davidson:
Amb aquest format el màxim número de bytes que es pot enviar al cos del missatge és d’11.
El node que vulgui començar a transmetre un missatge ha de començar amb un bit actiu de 200us. Després d’aquest temps, a continuació vindrà la informació de la capçalera.
Pot estar composta des d’un fins a tres bytes. En el cas particular d’HD hi trobarem 3 bytes:
Significat del byte#1 de la capçalera:
Exemple (RPM: $28 $1B $10)
$28
- 001: Valor proper a alta prioritat
- 0: Capçalera de 3 bytes
- 1: IFR no necessari
- 0: Adreça funcional
- 00:- $1B
- Adreça objectiu/ ID primari: RPM - Status ID $10
- Adreça d'Origen (ECM: ecu motor)
- Nota: Altres adreces: 40 (Display), 61 (Body Control)
Tant l’adreça objectiu com el cos del missatge vénen definits a la SAE 2178-4 (Message Definition for Three Byte Headers).
Els ID primaris solen tenir ID secundaris que permeten obtenir informació més detallada. A l’exemple de les RPM, l’ID primari ($1B) en té 3:
El PRN (Paremeter Reference Number) és una referència que surt especificada en aquesta SAE 2178-4 per a cadascun dels Sec ID. Amb aquest PRN podrem anar a la SAE 2178-2 (Data Parameter Definitions) i saber quants bytes rebrem, fórmula per convertir els bytes rebuts en un valor decimal i quines unitats seran.
Per exemple, si busquem pel PRN 000C (RPM - Alta Resolució), ens diu que les unitats són RPM i que la resolució és d’1/4 (1bit=0,25 rpm). Per tant, si rebem pel bus els bytes 28 1B 10 02 0A F0 tindrem:
DATA BITS:
La informació enviada a través del bus és a base de 0s i 1s. Aquest protocol té la característica de que els 1s i 0s transmesos poden ser actius i passius.Exemple amb el primer byte de la capçalera anterior (0x28: 0b00101000):
Nota: Com veieu, un 0 Passiu sempre guanyarà a un 1 Passiu (El 0 és temporalment més curt i per tant canviarà al següent bit que tocarà ser Actiu abans i per tant l'1 haurà perdut l'arbitrarietat). El mateix passa amb el 0 Actiu, aquest és temporalment més llarg que l'1 Actiu.
Taules d'especificació
Capa física:
- El bus serà d'1 cable pel qual es transmetrà informació (1s i 0s) a una velocitat de 10,4 Kb/s mitjançant Pulsos d'Amplada Variable.- Màxima longitud del cable: 40m
- Màxim número de nodes (unitats de control): 32
- Un bit 0 sempre ha de dominar sobre un bit 1
- Màxim número de bytes al cos del missatge: 12
Índex de projecte:
Part1 /
Part2 /
Part3 /
Part4 /
Part5 /
Part6 /
Part7 /
Part8 /
Part9 /
Part10 /
Part11 /
Part12 /
Part13 /
Part14 /
Part15