Diccionari.cat
Optimot, consultes lingüístiques

caHome tachometerHDHD-tacho-part3

Tacòmetre Digital per a Harley Davidson Sportster (Part 3 - Harley Davidson i SAE J1850 VPW)

Part1 / 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.
2- Un cop està transmetent el missatge, en el cas en que el bit que està transmetent no sigui el mateix que el que s'està transmetent al bus, automàticament pararà ja que ha perdut l'arbitrarietat. Això vol dir que un altre node està transmetent un missatge que té més prioritat que el seu.

Source: Momex.cat

I com es defineix la prioritat dels missatges?

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.

Idò?

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: Source: Momex.cat

Amb aquest format el màxim número de bytes que es pot enviar al cos del missatge és d’11.

SOF (Start Of Frame = Inici de Missatge)

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.

Header (Capçalera)

Pot estar composta des d’un fins a tres bytes. En el cas particular d’HD hi trobarem 3 bytes:

Byte #1: Indicarà als altres nodes la configuració de la capçalera (p.exemple: 1 o 3 bytes)
Source: Momex.cat
Byte #2: Adreça Objectiu o ID primari. Aquest valor el trobarem a la SAE J2178-4 i pot ser un Command ID o un Status ID.
Byte #3: Adreça Origen

Significat del byte#1 de la capçalera:
Source: Momex.cat


Exemple (RPM: $28 $1B $10)
$28 Source: Momex.cat

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)
Cos del Missatge

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:

Sec ID 01- Baixa Resolució - PRN 1022
Sec ID 02 - Alta Resolució - PRN 000C
Sec ID 20 - RPM ralentí - PRN 1023


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:

28 1B 10: Capçalera d'RPM
02: ID Secondari per RPM d'alta resolució
0A F0: Valor d'RPM. Per calcular-lo farem:
(byte0 * 0x100+byte1)/4= (0x0A * 0x100+0xF0)/4
(10 * 256+240)/4= (2560+240)/4= 2800/4= 700rpm

CRC (Cyclical Redundant Check = Comprobació cíclica de redundància)
És 1 byte després del cos del missatge que s'ha obtingut pel node emissor mitjançant un càlcul matemàtic. Aquest número (CRC) és únic per aquesta combinació de bytes (capçalera + cos del missatge). Quan el node receptor ha rebut els bytes pel bus de dades també realitza la mateixa operació i obté un CRC. Si el CRC enviat i el calculat són el mateix, llavors vol dir que no hi ha hagut cap error de transmissió i que la informació rebuda és bona. En cas contrari, s'hauria de desestimar la informació perquè és corrupta o compromesa.
End of Data (EOD)
Després del CRC, es deixa el bus en mode passiu durant 200us. Després de l'EOD, els receptors poden respondre el missatge o enviar-ne un altre de nou.

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.
I què vol dir això?
Doncs que com que el bus pot estar en mode actiu o passiu (explicat a dalt), podem transmetre per exemple un 1 en mode actiu o passiu, variant únicament el temps. La taula següent ho resumeix:
Source: Momex.cat Source: Momex.cat

Exemple amb el primer byte de la capçalera anterior (0x28: 0b00101000): Source: Momex.cat Com veieu els bits es van alternant entre actiu i passiu. Com que el SOF dicta quin és el primer en començar (Actiu), el primer bit de la capçalera serà passiu i la resta ja vindrà forçada per l'alternança. Tots els bits dels bytes del missatge es transmetran començant pel bit més significatiu, és a dir, bit7, bit6,..., bit0.
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ó

Source: Momex.cat

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

Source: Momex.cat

Índex de projecte:
Part1 / Part2 / Part3 / Part4 / Part5 / Part6 / Part7 / Part8 / Part9 / Part10 / Part11 / Part12 / Part13 / Part14 / Part15

keywords: HD, harley, davidson, tachometer, tacho, rpm, J1850, SAE, VPW, especificacions