ALDL-Protokoll

Aus LadaWiki
Wechseln zu: Navigation, Suche
ALDL-Kommunikation im Log von EFIlive V4

Allgemein

ALDL - Assembly Line Data Link

Das ALDL-Protokoll, welches Lada bei den SPI-Modellen verwendet, orientiert sich an den gängigen GM-Formaten. Leider gibt es kein anderes Fahrzeug, welches exakt den Lada-Code verwendet.

Die Kommunikation mit dem Steuergerät erfolgt mit 8192 Baud mit TTL-typischer Spannung von 5V. Für die Kommunikation mit einem PC kann ein Eigenbau-Interface genutzt werden. Auch ein TECH1 oder Selbstbaulösungen kommunizieren über ALDL mit dem Steuergerät.

Kommunikation mit dem Steuergerät

ALDL Modus 01 auswählen

Um an die Daten des Steuergerätes zu kommen, die sämtliche Sensorwerte, gespeicherte Fehler und sonstige Fahrzeugdaten enthalten, ist es notwendig das Steuergerät in einem bestimmten Modus anzusprechen.

Der ALDL-Modus 1 (0x01) ist hierbei der Wichtigste. Angestoßen wird dieser, indem
$F4,$57,$01,$20,$94
zum Steuergerät gesendet wird.
$F4 = Frame ID 
$57 = Message length ($55+Anzahl Datenbytes)
$01 = data byte 1 (hier Mode Number)
$20 = data byte 2 (hier offensichtlich ein Parameter)
$94 = Prüfsumme (die Berechnung dieser ist in der EFIlive-Hilfe erklärt)

Antwort vom Steuergerät

Auf diesen Initialisierungsstring antwortet das Steuergerät einige Millisekunden später mit einem Datenwort aus 69 Bytes. Hier eine Beispiel-Kommunikation (Zeilenumbrüche eingefügt):

gesendet: $F4,$57,$01,$20,$94
empfangen:
$F4,$97,$01,
$19,$6D,$40,$04,$00,$74,$46,$11,$03,$32,
$06,$1D,$00,$00,$19,$56,$FB,$78,$23,$7B,
$06,$06,$50,$00,$F4,$60,$53,$B1,$50,$C7,
$88,$94,$00,$00,$00,$66,$87,$70,$00,$F3,
$A7,$00,$00,$85,$00,$00,$CC,$01,$20,$E9,
$00,$81,$01,$80,$6F,$00,$00,$04,$A4,$09,
$80,$0A,$44,$13,$00,$CB

ALDL Modus 04 auswählen

Modus 4 ist der "Controller-Mode". Er dient dazu, dem Steuergerät klare Anweisungen zu geben wie z.B. Aktoren ansteuern/einstellen oder gespeicherte Fehler zu löschen.

Die Anforderung zum Löschen des Fehlerspeichers sieht beispielsweise so aus:

gesendet: $F4 $60 $04 $00 $00 $40 $00 $00 $00 $00 $00 $00 $00 $68 
empfangen: $F4 $56 $04 $B2 

In diesem Modus stecken die wichtigen Informationen im Sendewort und das empfangene Wort ist immer gleich und bedeutet nur "OK, Anweisung verstanden".


Der Inhalt der empfangenen Bytes im Modus 01

Auszug aus dem Configfile "nivatext.xml" für EFIlive von David Rolston

Um die empfangenen Daten deuten zu können, muss man sich mit dem GM-typischen Protokollaufbau anderer GM-Steuerteile befassen. Eine Liste verschiedener Steuerteile und deren Codes findet sich hier: http://www.diy-efi.org/files/gmecm/ALDLstuff.zip

David Rolston (http://ladaniva.co.uk) hat ein Configfile (http://www.ladaniva.co.uk/nivalive.zip) für EFILive V4 geschrieben, welches einen Großteil der Bytes deuten kann. Dieses Configfile ist aktuell wahrscheinlich die vollständigste Zusammenfassung des Lada-ALDL-Protokolles, die verfügbar ist. Es stammt ursprünglich vermutlich von einem anderen Fahrzeug und enthält deshalb falsche Fragmente, die nicht zum Lada passen.

Die empfangenen Bytes sind hier hexadezimal dargestellt. Die meisten Werte müssen zur Weiterverarbeitung in Dezimalzahlen (z.B. Sensorwerte) oder Binärdaten (z.B. Fehlercodes) umgerechnet werden.

Byte Bedeutung Faktor Offset Beispiel Ergebnis
Initialisierung (Frame-ID) $F4
Initialisierung (Länge des Strings) $97
ALDL-Modus $01
1(16bit) Eprom-ID ($19$6D=Lada 21073, $19$63=Lada 21214) $19$6D Lada 21073
3 Fehlercodes 1 (Bit0=Fehler Nr.24, Bit1=23, Bit2=22, Bit3=21, Bit4=15, Bit5=14, Bit6=13,Bit7=12) $40
4 Fehlercodes 2 (Bit0=Fehler Nr.42, Bit1=41, Bit2=35, Bit3=34, Bit4=33, Bit5=32, Bit6=31,Bit7=25) $04
5 Fehlercodes 3 (Bit0=Fehler Nr.55, Bit1=54, Bit2=53, Bit3=26, Bit4=51, Bit5=45, Bit6=44,Bit7=43) $00
6 Kühlmitteltemperatur 0,75 -40 $74 47°C
7 Startup Coolant Temp (?) 0,75 -40 $46 12,5°C
8 Spannung Drosselklappensensor 0,019608 0 $11 0,33V
9 Drosselklappenöffnung in % 0,392157 0 $03 1,18%
10 Motordrehzahl 25 0 $32 1250 RPM
11 Refpulse MSB (?) $06
12 Refpulse LSB (?) $1D
13 Geschwindigkeit 1 (1,60934 für km/h) $00 0MPH
14 ungenutzt $00
15 Spannung Lambdasonde 4,44 0 $19 111mV
16 O2-Sensor Cross Counts (?) $56
17 $FB
18 $78
19 $23
20 $7B
21 IST-Position Leerlaufregler 1 0 $06 6 (0 geschlossen, 255 offen)
22 SOLL-Position Leerlaufregler 1 0 $06 6 (0 geschlossen, 255 offen)
23 Solldrehzahl Leerlauf 12,5 0 $50 1000RPM
24 wahrscheinlich Ventil Aktivkohlefilter in % 0,392157 0 $00 geschlossen
25 $F4
26 MAP (Unterdruck am Ansaug) 0,37 10,34 $60 46kPa
27 $53
28 $B1
29 Ansauglufttemperatur 0,75 -40 $50 40°C
30 $C7
31 Batteriespannung 0,1 0 $88 13,6V
32 Zündwinkelvorverstellung 0,351565 0 $94 52° (?)
33 Zündwinkelvorverstellung (?) $00
34 Zündwinkelvorverstellung (?) $00
35(16bit) Einspritzdauer 0,07629 0 $00$66 7,78ms
37 SOLL-Verhältnis Luft/Kraftstoff 0,1 0 $87 13,5
38 $70
39 Motor Laufzeit (wird um 1 erhöht, wenn Bit40 bei 255 angekommen ist) 0 255 $00 0
40 Motor Laufzeit in Sekunden 0 1 $F3 243Sekunden
41 $A7
42 $00
43 ungenutzt $00
44 $85
45 $00
46 $00
47 $CC
48 $01
49 $20
50 Modeword1 (Bit1=Fahrzeug bewegt sich, Bit7=Motor läuft) $E9 Bit1=0 steht; Bit7=1 Motor läuft
51 $00
52 CLCCMW (Bit3=Schubabschaltung aktiv, Bit7=Drosselklappe geschlossen) $81 Bit3=0 Schubabschaltung nicht aktiv, Bit7=1 Drosselklappe geschlossen
53 $01
54 $80
55 $6F
56 $00
57 LCCPMW (Bit0 Motorlüfter aktiv) $00 Bit0=0 Motorlüfter nicht aktiv
58 $04
59 $A4
60 $09
61 $80
62 $0A
63 $44
64 $13
65 $00
66 Prüfsumme $CB

(Tabelle wird ergänzt, die mit Fragezeichen versehenen Felder sollten besser beschrieben werden bzw. müssen noch verstanden werden)

Aktuelle Probleme und Unklarheiten

Byte 32, Zündzeitpunkt

Dieses Byte soll den Wert des Zündzeitpunktes im Bezug auf den OT angeben. Er sollte Werte von 0 bis 40 ($00 bis $72) haben und gibt an, wieviel Grad vor OT gezündet wird. Wir gehen für die Berechnung von einem Faktor von 0,351565 aus. In unteren Drehzahlbereichen werden aber größere Winkel (teilweise >40°) angezeigt, die weder stimmen können noch mit Werten übereinstimmen, die ein TECH1 zu diesem Zeitpunkt liefert. Bei höheren Drehzahlen befinden sich die übermittelten Werte in denkbaren Größenordnungen. Möglicherweise muss auf den Hexadezimalwert zunächst das Zweierkomplement oder ähnliche Umrechnungen angewandt werden.

Aktoren

Die Zustände aller Aktoren außer des Leerlaufreglers, des Lüfters und vermutlich des Ventils des Aktivkohlefilters (Lambdasondenheizung, Saugrohrheizung, Benzinpumpe) sind bisher nicht erkennbar. Vermutet wird eine binäre Übertragung in einem Modeword. Das aktive Ansprechen (aus-/einschalten oder einstellen) aller Aktoren (vermutlich im Modus 4) ist ebenfalls noch nicht gelungen.