ALDL-Protokoll: Unterschied zwischen den Versionen

Aus LadaWiki
Zeile 416: Zeile 416:
 
  |-
 
  |-
 
  |52
 
  |52
  |CLCCMW (Bit3=Schubabschaltung aktiv)
+
  |CLCCMW (Bit3=Schubabschaltung aktiv, Bit7=Drosselklappe geschlossen)
 
  |
 
  |
 
  |
 
  |
 
  |$81
 
  |$81
  |Bit3=0 Schubabschaltung nicht aktiv
+
  |Bit3=0 Schubabschaltung nicht aktiv, Bit7=1 Drosselklappe geschlossen
 
  |-
 
  |-
 
  |53
 
  |53

Version vom 2. April 2014, 05:17 Uhr

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.

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

Der Inhalt der empfangenen Bytes

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.

Löschen der gespeicherten Fehler

Vielleicht ALDL-Modus 10 (0x0A) oder 4 (0x04)

In der config-Datei von David Rolston für EFIlive findet sich hier der Initialisierungsstring „$F4,$57,$0A,$20,$8B“, der aber nicht funktioniert. Hier muss geforscht werden. Wenn man Fehler mit einem TECH1 zurücksetzt wäre es denkbar, dabei den Datenstrom mit einem PC zu beobachten.