Informieren Sie sich über die Möglichkeiten der On-Board-Diagnose im Buch Fahrzeugdiagnose mit OBD . Dowiedz się o możliwościach diagnostyki pokładowej diagnostyki pojazdu w książce z OBD.
Das Buch bei Elektor oder im OBD2-Shop bestellen. Książka w Elektor lub OBD2-Shop porządku.
Inhaltsverzeichnis (ca. 41 KB) als PDF Spis treści (około 41 KB) i PDF
OBD KW 1281 Protokoll Protokół OBD KW 1281
Inhalt Zawartość
Einführung Wprowadzenie
Informationsquellen W przypadku
Protokolltyp Typ protokołu
Testumgebung środowisku testowym
KW1281 - Initialisierung KW1281 - Zainicjowanie
KW1281 - Timing KW1281 - Timing
KW1281 - Gerätedaten KW1281 - Urządzenie danych
KW1281 - Sensordaten KW1281 - Sensor Data
KW1281 - Kommunikationsende KW1281 - Koniec komunikatu
KW1281 - Kommunikationsfehler KW1281 - Błąd w komunikacji
KW1281 - Fehlerspeicher auslesen/löschen KW1281 - Odczyt pamięci błędów / kasowanie
Einführung Wprowadzenie
Hinweis: Die folgenden Informationen sind teilweise nicht mehr auf dem letzten Stand des Wissens. Uwaga: Poniższe informacje nie są części, na skraju wiedzy. Mehr Infos bietet mein og Buch. Więcej info moja wyżej książki.
Die bisherigen Informationen zeigen, wie mit Hilfe des Interface von Jeff und dem ELM323 Daten aus dem Bordcomputer via OBD2 ausgelesen werden können. Ostatnie informacje wskazują, w jaki sposób za pomocą interfejsu Jeff i ELM323 komputer pokładowy, mogą być odczytywane przez OBD2 od danych. Bei Jeffs Interface wird die Software VAG-COM benutzt und beim ELM323 ScanTool. W interfejsie Jeff jest używane oprogramowanie i VAG-COM ELM323 skanujące. Beide Lösungen haben ihre bereits erläuterten Vor- und Nachteile . Oba rozwiązania zostały już wyjaśnione wady i zalety . Nach dem ich bereits erfolgreich einen µC mit dem ELM323 verbunden habe, sollte noch der µC mit Jeffs Interface realisiert werden. Po tym, jak już pomyślnie mikrokontrolera z ELM323 jest podłączony, nie powinna mikrokontrolera z interfejsem Jeffs może być zrealizowany. Dies vor allem, da ich an speziellen Daten interessiert bin, die der ELM nicht liefert, sehr wohl aber per VAG-COM aus meinem VW T4 ausgelesen werden können. Jest to przede wszystkim dlatego, że jestem zainteresowany konkretne dane, które nie dostarczają ELM może być bardzo dobrze czytać ale VAG-COM z mojego VW T4.
Während die Kommunikation via ELM323 relativ einfach realisierbar ist, erfordert Jeffs Interface einen wesentlich höheren Aufwand, da das Interface lediglich eine Anpassung der Signalpegel vornimmt und kein Protokoll unterstützt, so daß man die gesamte Kommunikation mit dem Bordcomputer selber programmieren muß. Podczas komunikacji przez ELM323 może być zrealizowany w stosunkowo łatwy sposób, interfejs Jeffs wymaga dużo wyższe koszty, ponieważ interfejs sprawia, że tylko dostosowanie poziomu sygnału i wspiera protokół, trzeba program tak, że wszystkie komunikaty z komputera pokładowego się. Dafür stehen einem dann auch viel mehr Daten zur Verfügung. To właśnie wtedy dużo więcej danych.
Um die immer wieder auftauchende gleiche Frage vorwegzunehmen: Jeffs Interface und somit auch meine µC-Lösung funktionieren nur mit VAG-Fahrzeugen, die auch von VAG-COM ausgelesen werden können. Aby ponownie pojawiła się przewidzieć to samo pytanie: Jeff interfejs, a także moje rozwiązanie mikrokontroler będzie działać tylko z VAG pojazdów przez VAG-COM mogą być odczytane. Wer will, kann mein Forum nutzen, in dem ich interessante Fragen auch ggf. beantworte - Standardfragen, die man auch per Google lösen kann, ignoriere ich. Jeśli chcesz, moje forum użytkowania, gdzie również można znaleźć odpowiedzi na interesujące pytania - standardowe pytania za pośrednictwem Google może rozwiązać, to zignorować.
Informationsquellen W przypadku
Vom Kauf der SAE Dokumentation J2818 kann nur dringend abgeraten werden! Zakup SAE dokument J2818 można zaleca przeciwko niej! Für US$ 61 bekommt man so gut wir gar nichts geboten. W USA 61 dolarów dostaje najlepsze zaoferował nic. Auf den zehn Seiten stehen nur allgemeine Infos, wie sie hier bei mir und in meinem Buch auch zu finden sind. W dziesięciu stron są tylko informacje ogólne, takie jak te znajdujące się tu ze mną w mojej książce.
Im Web findet man nur spärliche Informationen zu dem Protokoll, um mit den Steuergeräten des Autos Daten auszutauschen. W internecie można znaleźć niewiele informacji na temat protokołu do kontroli ruchu samochodu w celu wymiany danych. Zum Teil liegt das daran, daß nicht viel existiert, aber auch daran, daß viele Chip-Tuner sich zwar in die Materie eingearbeitet haben, aber nichts von ihren Betriebsgeheimnissen preisgeben wollen. Częściowo jest to dużo, ponieważ nie istnieje, ale również, że wielu tunerów chip rzeczywiście włączone do sprawy, ale nie ujawnia ich tajemnic handlowych. Deshalb diese Seite, auf der ich mein erarbeitetes Wissen zusammenfassen möchte. W związku z tym strona, na której chciałbym podsumować moje nabytej wiedzy.
Bei der Recherche habe ich folgende Quellen gefunden, die mir weitergeholfen haben: Podczas badania znalazłem następujących źródeł, które pomogły mi:
Hex Microsystems . Microsystems Hex . Ausführliche Informationen zur Kommunikation - besonders zur Initialisierung. Szczegółowe informacje na temat komunikacji - zwłaszcza na inicjalizację. Alternativer Link: VW info page Alternatywny Link: strona info VW
Yahoo! Group opendiag . Yahoo! Grupa opendiag . Kostenlose Anmeldung erforderlich. Darmowa rejestracja wymagane. Wird immer wieder als Geheimtip angepriesen, ist aber nicht der ultimative Tip. Jest to starał się ponownie jako wskazówka, ale nie ostatecznym końcu. Ein paar Infos finden sich im Ordner 'Files'. Niektóre informacje można znaleźć w folderze "Pliki".
Einige nicht so wichtige Links, die Infos bieten, die teilweise noch im weiteren Verlauf benötigt werden: Niektóre mniej ważne linki, które oferują informacje, z których niektóre są nadal potrzebne w trakcie:
ECU Emulator . Emulator ECU . Software, die ein Motorsteuergerät simuliert. Oprogramowanie, które symuluje jednostki sterującej silnika. Habe keine guten Erfahrungen sammeln können, da das Programm nach meiner Erfahrung nicht korrekt arbeitet. Nie mam doświadczenia mogą zarobić dobre jak program z mojego doświadczenia nie działa.
Chiptuningforum . Chiptuning Forum . Wie der Name schon sagt. Jak sama nazwa wskazuje.
Protokolltyp Typ protokołu
Die Steuergeräte im Auto nutzen verschiedene Protokolle. ECU w samochodzie używają różnych protokołów. Da ich nur KW1281 bzw. KWP1281 (KW steht für KeyWord) benötige, beschränken sich alle Ausführungen auf dieses Protokoll. Od kiedy tylko KW1281 lub KWP1281 (KW oznacza słowo kluczowe), wymagają, aby wszystkie odwołania ogranicza się do tego protokołu. Andere Protokolle sind teilweise ähnlich oder auch ganz anders. Inne protokoły są podobne w części lub zupełnie inny. Gerne wird KW1281 und ISO 9141-2 zusammen geworfen. KW1281 jak ISO 9141-2 i jest wyrzucany razem. Es handelt sich aber dabei um zwei getrennte Protokolle, die lediglich die gleichen Anschlüsse an der OBD-Buchse benutzen. To jednak składać się z dwóch osobnych protokołów, które są tylko przy użyciu tego samego połączenia z gniazda OBD. Wer VAG-COM besitzt (Demoversion reicht), kann das Protokoll des Steuergerätes links oben im Programm ablesen, sobald ein Controller ausgelesen wird. Kto ma VAG-COM (wersja demo wystarczy), dziennik administratora odczytać w lewym górnym rogu programu, gdy kontroler jest czytana.
Testumgebung środowisku testowym
Das Hauptproblem bei der Protokoll-Analyse und Programmierung besteht darin, daß das Auto auf der Straße parkt und der Computer weit weg davon in der Wohnung steht. Główny problem związany z analizy logów i programowania jest to, że samochód jest zaparkowany na ulicy, a komputer jest z dala od niego w mieszkaniu. Also muß man das Auto irgendwie auf den Schreibtisch holen, wenn man nicht im Winter im Auto programmieren will (meine Standheizung respektive die Batterie hat dabei schon einmal leiden müssen). Więc trzeba jakoś samochodu na pulpicie, jeśli nie chcesz, aby program w zimie w samochodzie (mojej nagrzewnicy odpowiednio, bateria ma cierpieć wcześniej). Zum Glück wird nicht das ganze Auto benötigt, sondern nur ein Steuergerät. Na szczęście, cały samochód nie jest potrzebny, ale tylko jeden organ kontroli. Im Auto sind zahlreiche dieser Controller verbaut. W samochodzie, wiele z tych kontrolerów są zainstalowane. Das interessanteste ist das Motorsteuergerät (ECM - Engine Control Module), aber auch für ABS, Airbag, Instrumente usw. gibt es separate Einheiten, die unter dem Begriff ECU (Electronic Control Unit) zusammengefaßt werden. Najbardziej interesujące jest moduł kontroli silnika (ECM - Engine Control Module), ale także ABS, poduszka powietrzna, instrumenty, itp. Istnieją oddzielne jednostki, które są zgrupowane pod nazwą ECU (Electronic Control Unit). Hat man so ein Steuergerät, kann man es auf dem Schreibtisch mit Spannung versorgen und Jeffs Interface anschließen (ein paar nette Fotos von Bastlern ). Jeśli ktoś ma taki kontroler, może być biurko z zasilaczem i interfejsem do przyłączenia się Jeff's (jakieś fajne zdjęcia hobbystów ). Problematisch ist nur: Welches Steuergerät und wie wird es angeschlossen? Problemem jest, który kontroler i jak jest podłączony?
Bei ebay werden Steuergeräte, die neu bis über 1.000 Euro kosten können, haufenweise angeboten. kontrolerów Ebay, które mogą teraz kosztować nawet do 1000 €, oferowane są w pryzmach. Motorsteuergeräte sind recht beliebt. urządzeń sterowania silnikiem są bardzo popularne. In Deutschland natürlich vor allem die von VAG (und hier vor allem vom Golf - welch Wunder). W Niemczech, oczywiście, przede wszystkim przez VAG (a zwłaszcza z Zatoki Perskiej - jakim cudem). Meist sind es vermutlich Chip-Tuner, die die Geräte haben wollen, um entweder ein zerschossenes zu ersetzen oder, um Experimente zu machen. Większość z nich prawdopodobnie chip tunerów, którzy chcą urządzeń albo zastąpić strzał lub do eksperymentów. Dumm, das wir ja auch ein VAG-Gerät wollen, nicht aber bereit sind, die hochgeschraubten Preise zu bezahlen. Głupi, że chcemy VAG-urządzenia, ale nie chcą płacić wysokich cen przykręcone. Ideal wäre natürlich genau das gleiche Gerät, das auch im eigenen Fahrzeug verbaut ist. Doskonale byłoby oczywiście dokładnie to samo urządzenie zainstalowane w swoim pojeździe. Die Typenbezeichnung zeigt VAG-COM bei VAG Number an (so). Nazwa wskazuje, VAG-COM VAG Liczba w (patrz wyżej). Nun, für meinen T4 absolut unrealistisch, da selten und teuer. Teraz moje T4, całkowicie nierealne, ponieważ jest to rzadkie i drogie. Also erst einmal ein Modell für die ersten Gehversuche suchen. Tak, raz modelu pierwsze kroki szukasz. Auch wenn die eigentlich spannenden Daten alle aus dem ECM stammen, so reicht ein ABS oder Airbag Controller erst einmal aus, um wenigstens die ersten Protokollklippen zu umschiffen. Chociaż naprawdę ekscytujące danych to z ECM, ABS lub poduszki kontrolerów, że tylko raz w celu ominięcia przynajmniej pierwsze skały protokołu. Diese sind meist wesentlich billiger (bis ca. € 20,-), denn wer baut eine gebrauchte Lebensversicherung schon in seinen eigenen Wagen ein. Te są zazwyczaj znacznie tańsze (do około € 20, -), bo kto buduje ubezpieczeń na życie już używany w jego własnym samochodem. Da diese Geräte aber tweilweise keine Meßwerte liefern, wird später auf jeden Fall ein ECM fällig. Ponieważ urządzenia te dostarczają tweilweise ale nie wartości, jest w późniejszym okresie w każdym przypadku ECM.
Jetzt fehlen nur noch Informationen über den Anschluß des Controllers, also die Pinbelegung der an die 100 Pins. Po prostu brak informacji o połączenie kontrolera, więc pinout z 100 pinów. Im Web ist hier wieder wenig zu finden. W sieci znowu niewiele można znaleźć. Ein paar Pinouts habe ich gefunden. Kilka pinów znalazłem. Diese werde ich im Forum veröffentlichen und hoffe, daß weitere von Euch hinzukommen. I to w forum post i mam nadzieję, że więcej się przyłączyć. Diese Controller waren mir aber bei ebay immer zu teuer. Sterowniki te miał mnie na ebay, ale zawsze zbyt drogie. Meinen herzlichen Dank deshalb an Wladimir von WGSoft , der mir einen Tip gab und auch die passende Pinbelegung zur Hand hatte. Serdecznie dziękuję zatem Włodzimierz WGSoft , który dałem cynk i odpowiednich pinów pod ręką miał. Inzwischen habe ich auch herausgefunden, daß das Programm Autodata die Pinbelegung für die meisten ECUs (aber keines ABS-Steuergeräte etc.) kennt. Tymczasem, ja również, że program Autodata pinów ECU w większości (ale nie central ABS, itp.), wiem. Da die relevanten Steuergeräte nicht brandneu sind, reicht auch eine ältere Version aus. Ponieważ odpowiednie urządzenia sterujące nie są marki, począwszy od starszej wersji. Sobald man weiß, für welches Fahrzeug das Motorsteuergerät verwendet wurde, kann man sich die Pins anzeigen lassen. Gdy już wiesz, co pojazd był używany do sterowania silnikiem, można pozwolić szpilki show.
Kennt man die bei VAG-COM (so) als Component bezeichnete Typenbezeichnung, hilft vielleicht auch die Liste bei EVC weiter. Znając w VAG-COM (patrz wyżej) jako element wyznaczonego rodzaju, mogą również pomóc w liście dalej EVC.
Was jetzt benötigt wird, ist ein Lötkolben und ein Netzteil. Obecnie konieczne jest lutownica i zasilania. Das Steuergerät muß mit ca. 12V versorgt werden. Centrala musi być wyposażona w około 12V. Es ist notwendig alle der oft zahlreich vorhandenen Anschlüsse für Masse (GND) und V cc (Plus) zu verbinden. Konieczne jest, aby wszystkie często wiele połączeń istniejących na ziemi (GND) i V cc (Plus) do podłączenia. Der Anschluß für die K-Leitung des OBD-2-Steckers von Jeffs Adapter wird mit dem Diagnosesignal des Steuergerätes verbunden. Połączenie na K-line z OBD-2 złącza Jeffs, łączy się z sygnału diagnostycznego regulatora.
Wurde alles richtig angeschlossen, dann muß es möglich sein, Jeffs Adapter mit dem Steuergerät wie gewohnt an den PC anzuschließen und das Steuergerät mit VAG-COM auszulesen. Jeśli wszystko zostało poprawnie podłączone, to musi być możliwe adapter Jeffs do kontrolera, jak zwykle na komputerze, podłączyć i odczytać ECU z VAG-COM. Je nach Modell werden verschiedene Geräteinformationen angezeigt. W zależności od modelu, informacji o urządzeniu jest wyświetlane. Außerdem können Meßwerte und Fehlercodes ausgelesen werden. Ponadto, wyniki pomiarów i kody błędów są czytane. Da das Steuergerät nicht an irgendwelche Meßfühler angeschlossen ist, werden immer wieder neue Fehler aufgezeichnet (eventuell Versorgungsspannung zum Steuergerät kurz unterbrechen), auch wenn man die bisherigen löscht. Ponieważ kontroler nie jest podłączony do dowolnego czujnika rejestrowane ponownie i ponownie nowego błędu (które mogą przerwać dostaw do centrali krótki), nawet jeśli usuniesz istniejące. Der Versuchaufbau auf dem Schreibtisch ist nun komplett und es kann an die Protokoll-Analyse gehen. Eksperymentalne ustawienie na biurku jest zakończona i może pójść do analizy logów.
Um unterschiedliche Meßwerte abfragen zu können und die Anzahl der von der ECU gespeicherten auftretenden Fehler zu reduzieren, kann man relativ einfach einige Meßfühler simulieren. W celu zmniejszenia zapytanie różnych wartości może, a liczba uratowanych przez błąd ECU występujących można symulować kilka stosunkowo prostych czujników. Die meisten Sensoren liefern eine Widerstandsänderung. Większość czujników prowadzi do zmiany oporu. Lediglich die Geschwindigkeit und die Motordrehzahl wird aus einem Taktsignal abgeleitet, welches aufweniger ist. Jedynie prędkość i obroty silnika pochodzi od sygnału zegarowego, który jest skomplikowany. Wird an die Anschlüsse eines Sensors (die Pins und die Widerstandswerte kann man mit Autodata in Erfahrung bringen) ein Widerstand angeschlossen, läßt sich der entsprechende Fehler nachhaltig aus dem Speicher löschen. Jeśli połączenia z czujnika (kołki i wartości oporności może być związane z Autodata doświadczenia), rezystora podłączany do odpowiedniego błąd może trwale usunąć go z pamięci. Anstatt eines Festwiderstandes kann man auch ein Potentiometer anschließen, um änderbare Meßwerte zu simulieren. Zamiast stałego rezystora można podłączyć również potencjometr do symulacji zmiennych wartościach. Folgende Tabelle zeigt exemplarisch drei Sensoren für die ECU 030 906 032 E: W poniższej tabeli przedstawiono przykłady trzech czujników 030 906 032 ECU E:
Sensor Sensor |
Pin 1 Pin 1 |
Pin 2 Pin 2 |
Widerstand Odporność |
Meßwert Pomiaru |
Einlaß Lufttemperatur Temperatura powietrza wlotowego |
54 54 |
56 56 |
2,2KΩ Dla sygnału 2.2 |
24°C 24 ° C |
Motor Kühlmitteltemperatur Temperatura płynu chłodzącego silnika |
54 54 |
74 74 |
330Ω 330Ω |
79°C 79 ° C |
Einlaß Luftdruck ciśnienie powietrza wlotowego |
54 54 |
70 70 |
1KΩ 1KΩ |
ca. 590mbar o 590mbar |
|
62 62 |
70 70 |
10KΩ 10k |
|
KW1281 - Initialisierung KW1281 - Zainicjowanie
Um mit dem Controller zu kommunizieren sind zwei Phasen wichtig: Aby komunikować się z kontrolerem dwie fazy są ważne:
Der Controller muß aufgeweckt werden, so daß er weiß, man will mit ihm kommunizieren. Regulator musi być tak, że obudził wie, chcesz się z nim porozumieć. Niedrige Baudrate 5Bd, 7O1. Niskie tempo transmisji 5Bd, 7O1.
Die eigentliche Kommunikation mit üblicherweise 4800, 9600 oder 10400 Baud, 8N1 Rzeczywistej komunikacji z reguły 4800, 9600 lub 10400 bodów, 8N1
Bei KW1281 erfolgt die Initialisierung, also das wake up, etwas ungewöhnlich: Mit einer Übertragungsgeschwindigkeit von lediglich 5 Baud wird an den Controller dessen Adresse geschickt. W KW1281 jest inicjowany, więc obudzić się coś niezwykłego: z prędkością transmisji tylko 5 baud przesyłane do kontrolera adres. Die Adressen sind analog zu den Controller-Nummern in VAG-COM. Adresy są analogiczne do liczby kontroli w VAG-COM. Zu beachten ist dabei, daß in VAG-COM die Zahlenangaben für die Module in hexadezimaler schreibweise stehen. Należy zauważyć, że w VAG-COM dane dotyczące modułów w szesnastkowym. Also 1 für das Motorsteuergerät, 3 für ABS, 15 (Hex) (21 Dezimal) für Airbags usw. Nach dem aufwecken werden alle weiteren Daten mit einer wesentlich höheren Baudrate übermittelt. Więc 1 dla sterowania silnikiem, 3 dla ABS, 15 (Hex) (21 dziesiętnie) do poduszki powietrzne, itp. Po obudzić wszystkie inne dane przekazywane są w znacznie wyższej szybkości transmisji. Problematisch ist aber die niedrige Baudrate. Problem jednak jest niska szybkość transmisji danych. Auf dem PC gibt es nur wenige Programme, die so langsame Baudraten unterstützen. Na komputerze jest kilka programów, które obsługują tak wolno szybkości przesyłania danych. Auf dem ATmega8 µC ist sie nicht über den internen USART möglich. Na mikrokontroler ATmega8 nie jest możliwe za pomocą wewnętrznej USART. Auf dem PC kommt wohl noch das Problem hinzu, daß der Umschaltvorgang von 5Bd zu 9600 etc. zu lange dauert, so daß Daten in der Zwischenzeit verloren gehen. Na komputerze jest prawdopodobnie jeszcze dodatkowy problem, że przełączanie 5Bd do 9600 itd. trwa zbyt długo, tak że dane są tracone w międzyczasie. Ein Umstand, der für mein µC Projekt nicht relevant aber interessant ist. Fakt, że dla mojego projektu mikrokontrolera nie ma znaczenia, ale ciekawe.
Aus den genannten Gründen wird ein Trick genutzt, um das 5Bd wake up zu durchlaufen. Z tych powodów trik przemierzać 5Bd obudzić. Um das Protokoll zu analysieren gibt es zwei Möglichkeiten, bei denen die Kommunikation vom Diagnosegerät (bspw. VAS1551) mit dem Steuergerät belauscht wird: Aby przeanalizować protokół, istnieją dwa sposoby, w których komunikacja jest podsłuchana przez urządzenie diagnostyczne (np. VAS1551) do sterowania:
Mit einem Datenlogger (z. B. Portmon ) wird die serielle Schnittstelle des PCs bzw. die Datenleitung zwischen Werkstattdiagnosegerät (VAS1551) und KFZ protokolliert. Z rejestratora danych (np. Portmon ) Samochody, portu szeregowego komputera PC lub kabel łączący urządzenie rozpoznania warsztatu (VAS1551) i zarejestrowane. Portmon verliert bei mir allerdings Daten, da der Puffer scheinbar nicht groß genug ist. Portmon gubi mnie, jednak dane, ponieważ bufor nie jest najwyraźniej wystarczająco duża. Sehr gute Ergebnisse liefert Free Serial Port Monitor . Bardzo dobre wyniki Serial Port Monitor . Allerdings führt das Programm auf einem meiner Rechner zum Totalabsturz - also Vorsicht. Jednak program prowadzi do jednego z moich komputerów do całkowitej awarii - więc uważaj. Dafür ist der Puffer groß genug. Ale bufor jest wystarczająco duży.
Mit einem Oszilloskop werden die Signalpegel an der K-Leitung abgegriffen. Z oscyloskopu, poziom sygnału na K-line można wykorzystać.
Die erste Methode ist einfach, hat aber den Nachteil, daß sie nicht hundertprozentig akkurat ist. Pierwsza metoda jest prosta, ale ma tę wadę, że nie jest w pełni dokładne. Ich hatte teilweise den Verdacht, daß nicht alle Daten protokolliert wurden. Miałem pewne podejrzenia, że nie wszystkie dane zostały zarejestrowane. Allerdings findet man so heraus, wie die 5Bd Initialisierung abgewickelt wird: Statt die Geschwindigkeit an der Schnittstelle zu wechseln, wird diese gleich auf die gewünschte Datenrate für die folgende Kommunikation eingestellt (bspw. 9600Bd) und dann wird mit SET_BREAK die Übertragung simuliert: Jednak dowiadujemy się, w jaki sposób inicjalizacji jest obsługiwana 5Bd: Zamiast zmieniać prędkość na styku, to jest równa żądanej szybkości dane dla następujących komunikacji (np. 9600), a następnie symulowany z przeniesieniem SET_BREAK:
IOCTL_SERIAL_SET_BREAK_ON IOCTL_SERIAL_SET_BREAK_ON
IOCTL_SERIAL_SET_RTS IOCTL_SERIAL_SET_RTS
IOCTL_SERIAL_CLR_DTR IOCTL_SERIAL_CLR_DTR
IOCTL_SERIAL_SET_BREAK_OFF -> Start-Bit? IOCTL_SERIAL_SET_BREAK_OFF -> Start-bit?
IOCTL_SERIAL_CLR_RTS IOCTL_SERIAL_CLR_RTS
IOCTL_SERIAL_SET_BREAK_ON -> 0 IOCTL_SERIAL_SET_BREAK_ON -> 0
IOCTL_SERIAL_SET_RTS IOCTL_SERIAL_SET_RTS
IOCTL_SERIAL_SET_BREAK_ON -> 0 IOCTL_SERIAL_SET_BREAK_ON -> 0
IOCTL_SERIAL_SET_RTS IOCTL_SERIAL_SET_RTS
IOCTL_SERIAL_SET_BREAK_ON -> 0 IOCTL_SERIAL_SET_BREAK_ON -> 0
IOCTL_SERIAL_SET_RTS IOCTL_SERIAL_SET_RTS
IOCTL_SERIAL_SET_BREAK_ON -> 0 IOCTL_SERIAL_SET_BREAK_ON -> 0
IOCTL_SERIAL_SET_RTS IOCTL_SERIAL_SET_RTS
IOCTL_SERIAL_SET_BREAK_ON -> 0 IOCTL_SERIAL_SET_BREAK_ON -> 0
IOCTL_SERIAL_SET_RTS IOCTL_SERIAL_SET_RTS
IOCTL_SERIAL_SET_BREAK_ON -> 0 IOCTL_SERIAL_SET_BREAK_ON -> 0
IOCTL_SERIAL_SET_RTS IOCTL_SERIAL_SET_RTS
IOCTL_SERIAL_SET_BREAK_ON -> 0 IOCTL_SERIAL_SET_BREAK_ON -> 0
IOCTL_SERIAL_SET_RTS IOCTL_SERIAL_SET_RTS
IOCTL_SERIAL_SET_BREAK_OFF -> 1 IOCTL_SERIAL_SET_BREAK_OFF -> 1
IOCTL_SERIAL_CLR_RTS IOCTL_SERIAL_CLR_RTS
IOCTL_SERIAL_SET_DTR IOCTL_SERIAL_SET_DTR
Zwischen den einzelnen Umschaltungen liegen genau 200ms, woraus sich dann die 5Bd (1000ms/5bps) ergeben. leży dokładnie między poszczególnymi 200ms przełączających, z których następnie 5Bd (1000ms/5bps) wynik. Im Beispiel wird die Adresse 1 angesprochen. W przykładzie, adres 1 zostaną rozwiązane. Dezimal 1 entspricht Binär 000 0001. Binary odpowiada po przecinku 1 000 0001
Meine anfängliche Vermutung, daß die Behauptung, die Initialisierung findet mit 7O1 statt (also 7 Daten-Bit, einer ungeraden ( O dd) Parität und einem Stop-Bit), nicht stimmt, hat sich bei genauer Anaylse als falsch erwiesen. Moje pierwsze założenie, że twierdzą, że inicjalizacja odbywa się 7O1 (7-bit danych, kurs (O dd) parzystości i jeden bit stopu) jest fałszywe, okazała się błędna w Anaylse szczegółów. Die für die jeweiligen Adressen benötigte Signalform wird genau eingehalten, wobei bei der seriellen Übertragung zuerst das niederwertige Bit des Datenwortes gesendet wird. Czas potrzebny na odpowiednie adresy przebiegu obserwuje się ściśle, biorąc w transmisji szeregowej pierwszy niski nieco porządku słowo przesyłanych danych. Beispielsweise für Adresse 1: Na przykład dla adresu 1:
1->0 1000 000 0 1 = 1 Start-Bit (Wechsel von 1 auf 0), 7 Daten-Bits; 0 weil ungerade Parität erfüllt ist; 1 Stop-Bit 1 -> 0 1000 000 0 1 = 1 bit startu (zmiana z 1 na 0), 7 bitów danych, 0, ponieważ kurs warunek parzystości, 1 bit stopu
Auf der sicheren Seite ist, wer ein Oszilloskop nutzen kann. Po bezpiecznej stronie, którzy mogą korzystać z oscyloskopu. Vorteilhaft ist ein Speicheroszilloskop, da man bei der extrem niedrigen Übertragungsrate und des nur einmalig anliegenden Signals sonst nichts erkennt. Składowania oscyloskop jest korzystne, ponieważ jeden na bardzo niskie szybkości transmisji i jedynym sygnału nie widzi nic innego. Die Abbildung zeigt den Signalverlauf auf meinem Hameg 205-3. Na rysunku przedstawiono przebieg na mój HAMEG 205-3. Das Signal wurde direkt an der K-Line, also hinter Jeffs Interface abgegriffen, da die verschiedenen seriellen Schnittstellen unterschiedlich saubere Signale liefern, die bei der Analyse irritieren, wenn man das Signal am Eingang von Jeffs Interface abgreift. Sygnał został wzięty bezpośrednio z K-Line, za interfejs Jeff's, ponieważ porty szeregowe kilku różnych sygnałów, które zakłócają czysty do analizy, czy sygnał na wejściu interfejsu Jeffs. Die Initialisierungsphase wurde rot hervorgehoben: Fazie inicjacji zostało podkreślone na czerwono:
Die darauf folgenden Signalspitzen sind auf die anschließende Kommunikation mit höherer Baudrate nach dem wake up zurückzuführen. Kolejne szczyty ze względu na późniejszą z większą prędkość transmisji dla obudzić. Deutlich ablesbar sind die Signallängen: Der kurze Wechsel ist je 200ms lang und die längere Phase 1400ms. Wyraźnie widoczne, to sygnał długości: krótkie zmiany jest zawsze 200 ms długo i już 1400ms okresie. Die erste Signalflanke High->Low dient als Start-Bit. Pierwszy sygnał krawędzi wysokiego Niski służy jako bit startu. Um also das Steuergerät sauber zu initialisieren, lohnt es sich, den Signalverlauf zu analysieren und darauf zu achten, daß man die Signalzeiten genau einhält, wenn man die Datenübertragung nicht einem Schnittstellenbaustein überläßt. Tak, aby zainicjować sterownika czyste, warto przeanalizować wzór sygnał i zapewnienia, że są one zgodne z czasów sygnał dokładnie, kiedy transmisja danych nie pozostawiając modułu interfejsu.
Genau das wird auch von meinem Programm im µC gemacht ( vergl. Schaltbild ): Statt die Adresse des Steuergerätes mit 5Bd über den integrierten seriellen USART Schnittstellenbaustein zu generieren, wird die TxD Datenleitung (PD1), die an den T1 IN des MAX232 angeschlossen ist, direkt angesteuert, so daß der MAX232 die jeweiligen Signale ausgibt. To właśnie mój program w mikrokontrolerze również zrobić ( patrz schemat ): Adres kontrolera z 5Bd szeregowy zintegrowany USART Moduł interfejsu do tworzenia Zamiast tego, TXD linia danych (PD1), T1 w MAX232 podłączony jest do, to bezpośrednio kontrolowane, tak aby wyjść MAX232 odpowiednich sygnałów. Zu beachten ist bei der Programmierung noch, daß man vor der Initialisierung eine kurze Wartezeit einlegt, da durch das einschalten des Steuergerätes (Spannungsversorgung) oder vorherige Kommunikationen, noch Daten vom Controller gesendet werden, die man nicht nutzen will. Uwaga, w programowaniu jeszcze, że przed wstawieniem inicjowania krótki czas oczekiwania, ponieważ na przełomie urządzenie sterujące (zasilanie) lub komunikatami, lub dane są przesyłane ze sterownika, które nie będą go używać.
Die Kommunikation zur Initialisierung sieht folgendermaßen aus: Komunikacja z inicjalizacji w następujący sposób:
vom µC mikrokontrolera |
von ECU ECU |
Beschreibung Opis |
0x01 0x01 |
|
5 Baud Adresse des Steuergerätes 5 baud adres administratora |
|
0x55 0x55 |
Sync Byte zum festlegen der Baudrate bajt Sync, aby ustawić prędkość transmisji |
|
0x01 0x01 |
key word LSB (low significant byte) słowo kluczowe LSB (niskie znaczący bajt) |
|
0x8A 0x8A |
key word HSB (high significant byte) słowo kluczowe HSB (wysoki znaczący bajt) |
0x75 0x75 |
|
Komplement zur 0x8A Uzupełnienie 0x8A |
Ein paar Anmerkungen: Kilka uwag:
In dieser und folgenden Tabellen werden Zahlen stets in hexadezimaler schreibweise angegeben. W tym i następnych tabel, liczb zawsze są w systemie szesnastkowym notacja wskazane. Um dies zu verdeutlichen wird die C-Schreibweise 0x?? Aby się o tym, 0x C zapis? gewählt. wybrany. Zahlen in normaler schrweibweise sind Dezimalzahlen. Liczby w normalnych schrweibweise są liczbami dziesiętnymi. Der Windows Taschenrechner kann in der wissenschaftlichen Ansicht zwischen Dezimal, Hexadezimal und Binär umrechnen. Kalkulator Windows może przekształcić się w naukowe spojrzenie między dziesiętny, szesnastkowy i binarny.
Um dem sendenden Gerät den korrekten Empfang eines Bytes zu signalisieren wird häufig dessen Komplement zu 0xFF zurückgeschickt. Aby urządzenie wysyłające sygnał do prawidłowego odbioru bajt, którego uzupełnieniem jest często wysyłane do 0xFF. Dazu wird von 0xFF der empfangene Wert abgezogen. To jest odejmowana od otrzymanego 0xFF wartości. Beispielsweise 0xFF - 0x8A = 0x75 (255 - 138 = 117). Na przykład, 0xFF - 0x75 0x8A = (255 - 138 = 117).
Bereits das erste Byte welches vom Steuergerät (im folgenden oft der einfachheithalber ECU genannt) gesendet wird, wird mit der hohen Baudrate und 8N1 gesendet. Pierwszy bajt, który jest wysyłany z jednostki sterującej (dalej nazywany ze względu na prostotę ECU) jest wysyłany do wysokiej szybkości transmisji i 8N1.
Die Kommunikation findet meist im Wechsel statt. Komunikacja odbywa się zazwyczaj w wymianie. Der eine sendet, der andere bestätigt den korrekten Empfang mit dem Komplement. Ten wysyła, z drugiej potwierdza prawidłowego odbioru z uzupełnieniem. Nach dem ein Kommunikationsblock abgearbeitet wurde, beginnt der andere die Kommunikation. został stracony po zablokować komunikację, zaczyna innego rodzaju komunikacji.
Jedes vom µC gesendete Zeichen wird mit einem ECHO quittiert. Wszelkie znaki wysyłane z mikrokontrolera jest potwierdzony ECHO. Das bedeutet, das gesendete Zeichen wird automatisch an den Sender zurück geschickt. Oznacza to, że znaki wysyłane zostaną przesłane automatycznie do nadawcy. Dabei hat das Steuergerät nicht die Finger im Spiel und die Echos gehen stets sofort nach dem Abschicken ein, noch bevor Daten vom Steuergerät kommen. W tym przypadku kontroler nie palec w grze i echa zawsze od razu po podaniu przed Dane pochodzą z kontrolera. Diese Echos sind einfach zu ignorieren. Te echa go zignorować.
Großes Kopfzerbrechen hat mit die Baudrate nach der Initialisierungsphase gemacht. Major był ból głowy z szybkości transmisji po inicjalizacji. Ich ging davon aus, daß dies stets 9600 Baud ist. Sądziłem, że to zawsze jest 9600. Dem ist nicht so. Które nie jest tak. 9600 ist wohl nur weit verbreitet aber prompt nutzte meine ECU 10400 Baud. 9600 jest prawdopodobnie szeroko rozpowszechniane, ale szybko wziąłem ECU 10400 bodów. Da ich die falsche Baudrate gewählt hatte, kam nur Datenschrott statt der drei Bytes 0x55, 0x01 und 0x8A an. Jako, że wybrał źle szybkość transmisji, dane były tylko złom, zamiast trzy bajty 0x55, 0x01 i 0x8A. Erst als ich nach Tagen 10400Bd ausprobierte, klappte alles auf Anhieb. Tylko wtedy, gdy próbowałem 10400Bd dni, wszystko działało od razu. Deshalb ist es unumgänglich, die Baudrate zu ermitteln. Konieczne jest zatem określenie szybkości. Das geht sehr gut, in dem man die 5Bd Adresse an die ECU schickt und dann die Antwort bei 4800Bd empfängt. To jest bardzo dobre, w którym jeden wysyła 5Bd adres do ECU, a następnie otrzyma odpowiedź w 4800Bd. Ist es nicht 0x55, 0x01 und 0x8A, dann noch mal die Adresse mit 5Bd schicken und mit 9600Bd warten und ggf. anschließend noch mit 10400 Bd. Es kann auch sein, daß es weitere Baudraten gibt - über Infos freue ich mich. Czy nie jest to 0x55, 0x01 i 0x8A, a następnie wysłać ponownie adres z 5Bd i czekać 9600Bd, a nawet wtedy z 10 400 Bd Być może, że istnieją inne szybkości transmisji - więcej niż robię.
KW1281 - Timing KW1281 - Timing
Noch mehr Kopfzerbrechen als die Baudrate, hat mir das Timing bereitet. Więcej bóle głowy niż szybkość transmisji, dał mi czas. Wie erwähnt , traten bei mir verstärkt Kommunikationsprobleme auf, die ich nicht in den Griff bekam. Jak wspomniano , przyszedł ze mną w celu wzmocnienia problemów komunikacyjnych, które nie chwycił w Meine Tisch-ECU nutzt 10400Bd und zeigte keine Fehler. My tabeli ECU używa 10400Bd i nie wykazały żadnych błędów. Nur die im Auto (9600Bd) produzierte Fehler. Tylko w samochodzie (9600), wyprodukowanego błędów. Wie ich schon mal bemerkte, ist der µC mit 8MHz relativ schnell im Vergleich zu einem modernen PC, der mehr damit beschäftigt ist, Windows-Elemente neu zu malen. Jak powiedziałem wcześniej, mikrokontroler jest 8MHz stosunkowo szybko w porównaniu do nowoczesnych komputerów, tym bardziej jest zajęty malarstwo nowych elementów Windows. Deshalb wurde die Problematik bisher auch meines Wissens nach nirgends dokumentiert. Dlatego też kwestia została udokumentowana zgodnie z moją wiedzą i wszędzie.
Die Lösung ist trivial: Ich empfange ein Byte von der ECU und sende sofort eine Antwort oder ein anderes Anforderungs-Byte. Rozwiązanie jest proste: odebrać bajt z ECU i wysłać natychmiastowej reakcji lub innych bajtów wniosku. Das ist zu schnell. Jest to zbyt szybko. Ich habe leider keine genauen Angaben über die Zeitabstände. Nie mam dokładnych informacji na temat czasu. Nach dem ich aber vor jedem zu sendenden Byte eine Pause von 5ms einlege, steht die Verbindung absolut fehlerfrei. Po I konkursie, ale przed każdym bajt wysłać pauzę 5 ms, połączenie jest absolutnie dokładne. Der Interrupt-gesteurte Puffer sorgt dafür, daß keine Daten verloren gehen. Przerwanie bufor gesteurte że dane nie zostaną utracone. Wie es aussieht ist die ECU mit 10400Bd also schnell genug gewesen, um die Daten von meinem µC abzunehmen, was die 9600er nicht schaffte. Wygląda na to, ECU z 10400Bd zatem wystarczająco szybki, aby uzyskać dane z mojego mikrokontrolera wziąć to, co nie nadawało się do 9600.
Andererseits darf die Pause auch nicht zu groß werden. Z drugiej strony, przerwa nie stało się zbyt duże. Nach einer mir unbekannten Zeit (schätzungsweise <500ms) wird die Verbindung zur ECU abgebrochen. Zgodnie z nieznanym czasie (szacuje się na <500 ms), połączenie jest przerywane do ECU.
KW1281 - Gerätedaten KW1281 - Urządzenie danych
Nach dem das Steuergerät bereit ist, startet die Übertragung der Gerätespezifikation. jest gotowa, po którym centrala, transfer specyfikacji sprzętu. Hierbei meldet sich der Controller mit der VAG Nummer, der Gerätebezeichnung usw. VAG-COM stellt teilweise mehr Daten da, als das Gerät anscheinend liefert. Tutaj, kontroler sygnałów z numerem VAG, nazwę urządzenia, itp. VAG-COM jest częściowo dlatego, że więcej danych niż urządzenia najwyraźniej świadczy. Die gelieferten Daten sind meiner Meinung nach auch nicht ganz so spannend, so daß kleine Unstimmigkeiten ignoriert werden können. Danych zawartych w mojej opinii nie są tak ekscytujące, tak że niewielkie różnice są ignorowane. Wichtig ist, daß die Kommunikation zügig abläuft, da das Steuergerät nicht gerne wartet. Ważne jest, że komunikacja jest szybka, ponieważ ECU nie lubi czekać. Da zuvor der µC die Kommunikation begonnen hatte, ist nun die ECU dran und der µC ist nur damit beschäftigt, die Daten anzunehmen und mit dem Komplement zu bestätigen. Jak już wcześniej rozpoczął mikrokontrolera do komunikacji, a następnie ECU jest dostrojony i mikrokontrolera jest zajęty, aby zaakceptować dane i potwierdzić uzupełnienie.
Zuerst wird die VAG-Nummer bzw. Controller ID übertragen (in diesem Fall " 030906032E "): Po pierwsze, jest VAG-ID lub numer kontrolera transferu (w tym przypadku "030906032E"):
vom µC mikrokontrolera |
von ECU ECU |
Beschreibung Opis |
|
0x0F 0x0F |
block length (su); ECU ist Master długość bloku (patrz poniżej); ECU jest mistrzem |
0xF0 0xF0 |
|
Komplement Uzupełnienie |
|
0x01 0x01 |
block counter (su) blok licznika (patrz poniżej) |
0xFE 0xFE |
|
|
|
0xF6 0xF6 |
block title (su) tabelki (patrz poniżej) |
0x09 0x09 |
|
|
|
0x30 0x30 |
|
0xCF 0xCF |
|
|
|
0x33 0x33 |
"3" "3" |
0xCC 0xCC |
|
|
|
0x30 0x30 |
"0" "0" |
0xCF 0xCF |
|
|
|
0x39 0x39 |
"9" "9" |
0xC6 0xC6 |
|
|
|
0x30 0x30 |
"0" "0" |
0xCF 0xCF |
|
|
|
0x36 0x36 |
"6" "6" |
0xC9 0xC9 |
|
|
|
0x30 0x30 |
"0" "0" |
0xCF 0xCF |
|
|
|
0x33 0x33 |
"3" "3" |
0xCC 0xCC |
|
|
|
0x32 0x32 |
"2" "2" |
0xCD 0xCD |
|
|
|
0x45 0x45 |
"E" "E" |
0xBA 0xBA |
|
|
|
0x20 0x20 |
" " (Leerzeichen) "" (Puste) |
0xDF 0xDF |
|
|
|
0x20 0x20 |
" " "" |
0xDF 0xDF |
|
|
|
0x03 0x03 |
block end (su) końcu bloku (patrz poniżej) |
Ein paar Hinweise zu einzelnen Werten: Kilka uwag na temat poszczególnych wartości:
block length gibt die Anzahl der folgenden Daten-Bytes an. długość bloku to liczba bajtów danych do następujących. Inklusive des Bytes block length aber ohne das Byte block end . Zawiera bajt długość bloku, ale bajtowy blok bez końca.
block counter wird mit jedem Kommunikationsblock (egal, ob von der ECU oder dem µC) um eins inkrementiert. blok licznika jest komunikacja z każdym bloku (czy to przez ECU lub mikrokontrolera) jest zwiększany o jeden. Nach 0xFF wird er auf 0x00 gesetzt. Po jego wartość 0xFF 0x00.
block title signalisiert, um was für Daten es sich in diesem Kommunikationsblock handelt. Tytuł bloku wskazuje typ danych jest w bloku komunikacji.
0x05 - clear errors, alle Fehler löschen 0x05 - oczywiste błędy, usuń błąd
0x06 - end output, Ende der Kommunikation Wyjście koniec, koniec komunikacji - 0x06
0x07 - get errors, alle Fehler ausgeben 0x07 - pojawiają się błędy, wszystkie wyjścia błędów
0x09 - ack command 0x09 - komenda ACK
0x29 - group reading 0x29 - czytanie grupy
0xE7 - Antwort auf group reading Aufforderung 0xE7 - szybką reakcję na czytanie grupy
0xF6 - ASCII Daten 0xF6 - dane ASCII
0xFC - Antwort auf get errors Aufforderung 0xFC - Odpowiedź uzyskać szybką błędy
block end ist das einzige Byte, das nicht mit einem Komplement beantwortet wird und welches das Ende eines Kommunikationsblocks anzeigt. końcu bloku jest tylko bajt, który jest organizacją non-odpowiedź z uzupełnieniem, która wskazuje koniec bloku komunikacji.
Nun ist der µC wieder an der Reihe. Teraz mikrokontrolera jest z powrotem w serii. Er hat keine andere Wahl, als einen Bestätigungsblock (ack command) zu schicken und die ECU bestätigt die einzelnen Bytes mit dem Komplement: Nie ma wyboru, ale do zablokowania potwierdzenia (ACK polecenia), aby wysłać ECU i potwierdzone poszczególnych bajtów dopełniacza:
vom µC mikrokontrolera |
von ECU ECU |
Beschreibung Opis |
0x03 0x03 |
|
block length; µC ist Master blok długości; mikrokontrolera jest mistrzem |
|
0xFC 0xFC |
Komplement Uzupełnienie |
0x02 0x02 |
|
block counter blok licznika |
|
0xFD 0xfd |
|
0x09 0x09 |
|
ack command polecenie ACK |
|
0xF6 0xF6 |
|
0x03 0x03 |
|
block end koniec bloku |
Jetzt ist wieder die ECU an der Reihe. Teraz jest ECU w serii. Genau wie zuvor schon schickt sie jetzt den nächsten Datenblock (block counter = 3). Tak jak zrobili to teraz wysyła kolejny blok (blok licznik = 3). In diesem Datenblock wird die Bauteilbezeichnung angegeben. W tym bloku danych, nazwa składnika jest określony. Dies kann z. B. " ME7.5.10 " sein. To może być tak "ME7.5.10" być takie.
Anschließend schickt der µC wieder einen ack block (block counter = 4). Następnie mikrokontroler wysyła ACK innego bloku (blok licznik = 4).
Dieses Spiel wiederholt sich so lange, wie das Steuergerät Daten preis geben will. Ta gra jest powtarzana tak długo, jak długo dane kontrolera ujawni. In der Regel sind es insgesamt vier Datenblöcke: VAG-Nummer, Bauteilbezeichnung, Software Version (z. B. " 3013 ") und Händlerbezeichnung. Ogólnie rzecz biorąc, są w sumie cztery bloki danych: liczba VAG, nazwa komponentu, wersja oprogramowania (np. "3013") i nazwę sprzedawcy. Eventuell folgen aber noch weitere Zusatzdaten. Być może jednak dalszych dodatkowych danych.
Bei all diesen Angaben kann es sein, daß einzelne Bytes geliefert werden, die keinem ASCII-Zeichen entsprechen, so daß die Infos von denen von VAG-COM abweichen, zudem ich davon ausgehe, daß VAG-COM die empfangenen Daten auswertet und etwas aufbereitet, was man schon an der Darstellung der VAG-Nummer erkennen kann. Z tych wszystkich informacji, może być, że poszczególne bajty są dostarczane, co odpowiada każdy znak ASCII, tak, że szczegóły, które różnią się od VAG-COM, również Zakładam, że VAG-COM ocenia otrzymane dane i niektóre przetworzone co może być znane już w prezentacji numeru VAG.
Unter anderem kann die ECU anstatt eines ASCII-Wertes 0x00 liefern, was als cut-off signal bezeichnet wird. Między innymi, ECU zamiast wartości 0x00 ASCII dostarczają co odcięcia zostaną oznaczone jako sygnał. Was es damit auf sich hat, weiß ich nicht. Co w tym wszystkim chodzi, nie wiem. Ich ersetze einfach alle empfangenen Zeichen-Werte außerhalb des ASCII-Bereiches von 0x21-0x7A durch 0x3F ("?"). I tylko wymienić wszystkie znaki otrzymane wartości spoza zakresu ASCII 0x7A 0x21-0x3F przez ("?").
Auf den letzten Kommunikationsblock der ECU reagiert der µC wie gewohnt mit einem ack block. W ostatnim bloku komunikacji mikrokontrolera ECU odpowiada ACK, jak zwykle. Wenn die ECU dann keine weiteren Daten senden will, schickt sie nun selber einen ack block: Jeśli ECU wyśle dodatkowych danych, a następnie wysyła się ack bloku:
vom µC mikrokontrolera |
von ECU ECU |
Beschreibung Opis |
|
0x03 0x03 |
block length; ECU ist Master blok długości; ECU jest mistrzem |
0xFC 0xFC |
|
Komplement Uzupełnienie |
|
0x?? 0x? |
block counter (Wert je nach Anzahl der bisher ausgetauschten Blöcke) blok licznika (wartości w zależności od liczby wcześniej wymienione bloki) |
0x?? 0x? |
|
Komplement des block counter (Wert je nach Anzahl der bisher ausgetauschten Blöcke) Uzupełnienie przeciw bloku (wartość w zależności od liczby wcześniej wymienione bloki) |
|
0x09 0x09 |
ack command polecenie ACK |
0xF6 0xF6 |
|
|
|
0x03 0x03 |
block end koniec bloku |
Jetzt ist die Reihe wieder am µC. Teraz seria powraca na mikrokontrolera. Dieser schickt einfach einen ack block, um die Datenverbindung aufrecht zu halten. To po prostu wysyła ACK, aby utrzymać połączenie danych żyje. Die ECU sendet dann wieder einen ack block, dann der µC usw. bis in alle Ewigkeit. ECU następnie wysyła potwierdzenie ACK, to mikrokontroler i tak dalej przez całą wieczność. Schickt der µC keinen ack block bricht die ECU die Verbindung alsbald ab und es muß wieder mit einer 5Bd Initialisierung begonnen werden. Mikrokontroler nie wysyła przerwy bloku ack, ECU zamyka połączenie natychmiast i musi zostać ponownie uruchomiony z 5Bd inicjalizacji. Während der folgenden Phasen kann der µC auch jederzeit statt einer Datenanforderung o. ä. einen ack block senden, woraufhin die ECU mit einem ack block antwortet. W następnej fazie mikrokontrolera można wysyłać w dowolnym momencie zamiast wymaganych danych lub podobnych ack blok, po którym ECU odpowiada ACK.
KW1281 - Sensordaten KW1281 - Sensor Data
Anstatt die Datenverbindung durch den endlosen Austausch von ack blocks aufrecht zu erhalten, kann der µC auch die Initiative ergreifen und Meßwerte bzw. Sensordaten anfordern. Zamiast utrzymania połączenia danych przez niekończące się wymiany bloków ack się, mikrokontrolera również podjąć inicjatywę i zwraca się odczyty i danych z czujników. Anstatt eines ack blocks sendet er dann, wenn er an der Reihe wäre, ein group reading . Zamiast tego wysyła pakiet ACK, jeśli zwracał się do czytania grupy.
Bevor wir einen Blick auf das Protokoll werfen, zuerst einmal ein paar Infos zum Verständnis: Per group reading wird das Steuergerät aufgefordert vier Meßwertblöcke zu liefern. Zanim przyjrzymy się z dziennikiem, przede wszystkim niektórych informacji w celu zrozumienia: Per czytanie grupy, kontroler poprosił czterech Meßwertblöcke dostarczyć. Dabei gibt es Gruppen von 1 bis 255. Niektóre grupy od 1 do 255 Welche vier Meßwerte in einer Gruppe geliefert werden ist unterschiedlich und je nach Modell des Steuergerätes anders. Jakie są cztery wartości jest dostarczana w grupie różni się w zależności od modelu i kontrolera inaczej. Es kann vorkommen, daß ein Meßwertblock keine Angaben enthält und in einer Gruppe können die gleichen Meßwerte geliefert werden, wie in einer anderen. Zdarza się, że wartość mierzona blok nie zawiera danych i w grupie, takie same pomiary są przewidziane, jak w innym. Das kann praktisch sein, denn so kann man schauen, ob es eine Gruppe gibt, in der vier gewünschte Meßwerte geliefert werden. Jest to przydatne, ponieważ można sprawdzić, czy istnieje grupa, dostarczane są w cztery odczyty wymagane. Ansonsten ist es aber kein Problem, beliebig viele Gruppen abzufragen. W przeciwnym razie to nie jest problem, każde zapytanie na wiele grup. Vor den Meßwerten wird immer die Kennzahl für den Meßwerttyp übermittelt. Przed rozpoczęciem pomiarów się kluczową postacią dla Meßwerttyp jest złożony. Die Kennzahl hat abhängig vom Steuergerät (und eventuell auch der Gruppe (noch nicht geprüft)) in der sie vorhanden ist, eine andere Bedeutung hat. Wskaźnik ten zależy od kontrolera (i ewentualnie grupy (jeszcze nie testowane)), w którym istnieje, ma odmienne znaczenie. So kann zum Beispiel die gleiche Kennzahl einmal für die Außentemperatur und einmal für die Öl-Temperatur stehen. Tak więc, na przykład, tego samego kodu do temperatury zewnętrznej i raz dla temperatury oleju. Die Meßwerte sind stets in zwei Bytes aufgeteilt. Zmierzone wartości są zawsze składa się z dwóch bajtów. Erst durch eine Rechenoperation wird aus den zwei Bytes der tatsächliche Meßwert. Jedynie poprzez obliczenie dwóch bajtów rzeczywistej wartości mierzonej. Je nach Sensortyp ist die Rechenoperation eine andere. W zależności od rodzaju czujnika, operacji arytmetycznej jest inny.
Dies ist deshalb auch der "spaßige" Teil: Es gilt für jedes Steuergerät individuell herauszufinden, welche Daten je Gruppe geliefert werden und wie diese zu berechnen sind. Jest to zatem "zabawy" część: To się indywidualnie dla każdej jednostki sterującej, który dostarczył dane dla każdej grupy i oblicza się jak one.
Wie immer gibt es ein paar Infos im Netz, die lückenhaft sind und von mir so weit wie möglich ergänzt sind - über Zusatzinfos freue ich mich mal wieder! Jak zawsze, jest kilka informacji w sieci, które są niepełne i uzupełnione mnie w miarę możliwości - na dodatkowe informacje znowu jestem! Die folgende Tabelle (basierend auf der Datei Value-calculation.txt aus der Yahoo! Gruppe opendiag) zeigt die Kennzahlen für die Sensordaten (1. Byte) und deren Umrechnung, wobei a für das erste Meßwert-Byte (2. Byte) steht und b für das zweite Byte (3. Byte). W poniższej tabeli (na podstawie calculation.txt wartość plik Yahoo! Grupa opendiag off) przedstawia dane dla danych z czujników (1 bajt) i jego zamiany, 2. bajt), w którym zmierzono po raz pierwszy bajt (skrót i b na drugi bajt (3 bajty). Alle Angaben sind noch unbestätigt. Wszystkie szczegóły są jeszcze potwierdzone. Lediglich die mit einem √ in der Spalte Bedeutung versehenen sind von mir geprüft. Tylko zostało przetestowane z √ w kolumnie oznaczonej znaczenie dla mnie.
Kennzahl Index |
Bedeutung Znaczenie |
Berechnung Obliczenie |
Einheit Jednostka |
|
|
1: ECU 1: ECU |
23: Instruments 23: Instrumenty |
|
|
1 1 |
Motordrehzahl √ Prędkość obrotowa silnika √ |
Motordrehzahl √ Prędkość obrotowa silnika √ |
0.2*a*b 0,2 * a * b |
rpm obr / min |
2 2 |
Absolute Drosselklappenstellung (???) (???) Absolute położenia przepustnicy |
|
a*0.002*b 0002 * a * b |
% % |
3 3 |
|
|
0.002*a*b 0002 * a * b |
Deg Deg |
4 4 |
|
|
abs(b-127)*0.01*a abs (b-127) * 0,01 * |
"ATDC" if Value >127, else"BTDC" "ATDC", jeżeli wartość> 127, bo "BTDC" |
5 5 |
Öl-Temperatur √ √ temperatury oleju |
Außentemperatur √ Poza √ temperatury |
a*(b-100)*0.1 oder 0.1*a*b - 10*a * (b-100) lub 0.1 * 0.1 * a * b - 10 * |
°C (beide Formeln scheinen OK zu sein) ° C (Obie formuły wydają się być OK też) |
6 6 |
Versorgungsspannung ECU (= Batterie) √ napięcie zasilania ECU (= bateria) √ |
Versorgungsspannung ECU (= Batterie) √ napięcie zasilania ECU (= bateria) √ |
0.001*a*b 0,001 * a * b |
V V |
7 7 |
Fahrzeuggeschwindigkeit √ Prędkość pojazdu √ |
Fahrzeuggeschwindigkeit √ Prędkość pojazdu √ |
0.01*a*b 0,01 * a * b |
km/h kmh |
8 8 |
Bit Value Cruise Control??? Wartość Bit Cruise Control? |
|
0.1*a*b 0,1 * a * b |
(no units) (Brak jednostek) |
9 9 |
|
|
(b-127)*0.02*a (B-127) * 0,02 * |
Deg Deg |
10 10 |
|
|
if b==0 then "COLD", else"WARM" czy b == 0 then "COLD", bo "WARM" |
|
11 11 |
|
|
0.0001*a*(b-128)+1 0,0001 * a * (b-128) +1 |
- - |
12 12 |
|
|
0.001*a*b 0,001 * a * b |
Ohm Om |
13 13 |
|
|
(b-127)*0.001*a (B-127) * 0,001 * |
mm mm |
14 14 |
|
|
0.005*a*b 0,005 * a * b |
bar bar |
15 15 |
CAN Bus Status??? status magistrali CAN? |
|
0.01*a*b 0,01 * a * b |
ms ms |
16 16 |
Bin. Am. Bits Bity |
|
??? ? |
bitvalue bitvalue |
17 17 |
??? ? |
|
chr(a) chr(b) chr (a) chr (b) |
- - |
18 18 |
Absolute Pressure, Atmospheric,Pressure, Intake Manifold,Pressure Ciśnienie bezwzględne, atmosferyczne, ciśnienie, kolektora dolotowego, ciśnienia |
|
0.04*a*b 0,04 * a * b |
mbar mbar |
19 19 |
|
Tankinhalt √ Tank √ |
a*b*0.01 a * b * 0,01 |
l l |
20 20 |
|
|
a*(b-128)/128 * (b-128) / 128 |
% % |
21 21 |
Modul. Module. Piston,Movement Sender (???) Voltage Ruch tłoka (???) Napięcie Channel |
|
0.001*a*b 0,001 * a * b |
V V |
22 22 |
|
|
0.001*a*b 0,001 * a * b |
ms ms |
23 23 |
EGR Valve, Duty Cycle / Inj. Timing ??? Zawór EGR Cykl pracy / Inj timingi? |
|
b/256*a b/256 * |
% % |
24 24 |
|
|
0.001*a*b 0,001 * a * b |
A |
25 25 |
|
|
(b*1.421)+(a/182) (B * 1421) + (a/182) |
g/s g / s |
26 26 |
|
|
ba ba |
C C |
27 27 |
Ign. IGN. Timing Calculated/Actual ??? Czas Obliczone / Actual? |
|
abs(b-128)*0.01*a abs (b-128) * 0,01 * |
° ("ATDC" if Value <128, else"BTDC" ???) ° ("ATDC", jeżeli wartość <128, w przeciwnym wypadku "BTDC"?) |
28 28 |
|
|
ba ba |
- - |
29 29 |
Kennfeld Mapa |
|
if b<a then "1.Kennfeld"else "2.Kennfeld" jeśli b <a następnie "1.Kennfeld" else "2.Kennfeld" |
|
30 30 |
|
|
b/12*a B/12 * |
Deg k/w stopni C / w |
31 31 |
Preheating,Time ??? Podgrzewanie, czas? |
|
b/2560*a b/2560 * |
°C ° C |
32 32 |
??? ? |
|
if b>128 : b-256 else b jeżeli b> 128: b-256 b więcej |
- - |
33 33 |
Stellung Gaspedal √ stanowisko Accelerator √ |
|
100*b/a (if a==0 then 100*b) 100 * b / a (jeśli == 0 to 100 * b) |
% % |
34 34 |
|
|
(b-128)*0.01*a (B-128) * 0,01 * |
kW kW |
35 35 |
Treibstoff-Verbrauch √ √ Zużycie paliwa |
|
0.01*a*b 0,01 * a * b |
l/h l / h |
36 36 |
|
Ges. Laufleistung (letzte Stelle gerundet) √ Całkowity przebieg (ostatnia cyfra w zaokrągleniu) √ |
a*2560+b*10 a + b * 2560 * 10 |
km km |
37 37 |
|
Öldruck (???) Ciśnienie oleju (???) |
??? ? |
"Oil Pr. 2 < min" "Pr Oil Min 2 <" |
38 38 |
|
|
(b-128)*0.001*a (B-128) * 0,001 * |
Deg k/w stopni C / w |
39 39 |
Inj. Quantity Driver Request/Torque Limitation/Smoke Limitation [bei T4 5,8mg/h im Leerlauf] Inj Wniosek Ilość Driver / Moment ograniczenie / Smoke Ograniczenie [T4 5,8 mg / h na biegu jałowym] |
|
b/256*a b/256 * |
mg/h mg / h |
40 40 |
|
|
b*0.1+(25.5*a)-400 b * 0.1 + (25.5 *) -400 |
A |
41 41 |
|
|
b+a*255 b + a * 255 |
Ah Ah |
42 42 |
|
|
b*0.1+(25.5*a)-400 b * 0.1 + (25.5 *) -400 |
Kw Kw |
43 43 |
|
|
b*0.1+(25.5*a) b * 0.1 + (25.5 *) |
V V |
44 44 |
|
Uhrzeit √ Czas √ |
a : b a: b |
h:m h: m |
45 45 |
|
|
0.1*a*b/100 0,1 * a * B/100 |
|
46 46 |
|
|
(a*b-3200)*0.0027 (* B-3200) * 0,0027 |
Deg k/w stopni C / w |
47 47 |
|
|
(b-128)*a (B-128) * |
ms ms |
48 48 |
|
|
b+a*255 b + a * 255 |
- - |
49 49 |
Mass Air/Rev. Masa powietrza / Rev oder Air Mass,Calculated oder Air Mass,Actual??? Masa lub powietrzną, lub Mass Air oblicza rzeczywiste? |
|
(b/4)*a*0,1 (B / 4) * a * 0.1 |
mg/h mg / h |
50 50 |
??? ? |
|
(b-128)/(0.01*a), if a==0 (b-128)/0.01 (B-128) / (0,01 *), jeżeli a == 0 (b-128) / 0,01 |
mbar mbar |
51 51 |
??? ? |
|
((b-128)/255)*a ((B-128) / 255) * |
mg/h mg / h |
52 52 |
|
|
b*0.02*aa b * 0,02 * aa |
Nm Nm |
53 53 |
Luftdurchfluß Luftmassenmesser (???) (???) Air powietrza przepływomierza masowego |
|
(b-128)*1.4222+0.006*a (B-128) * 0006 * 1,4222 |
g/s g / s |
54 54 |
|
|
a*256+b * 256 + b |
Count Liczyć |
55 55 |
|
|
a*b/200 * b/200 |
s s |
56 56 |
|
|
a*256+b * 256 + b |
WSC WSC |
57 57 |
|
|
a*256+b+65536 * 256 + b +65536 |
WSC WSC |
58 58 |
|
|
1.0225*b, if b>128 then 1.0225*(256-b) 1,0225 * b, jeżeli b> 128 to 1,0225 * (256-b) |
\s \ S |
59 59 |
|
|
(a*256+b)/32768 (* 256 + b) / 32 768 |
- - |
60 60 |
|
|
(a*256+b)*0.01 (A + B * 256) * 0.01 |
sec s |
61 61 |
|
|
(b-128)/a, if a==0 (b-128) (B-128) / a, jeśli a == 0 (b-128) |
- - |
62 62 |
|
|
0.256*a*b 0256 * a * b |
S S |
63 63 |
Text Tekst |
|
chr(a) + chr(b) + "?" chr () + chr (b) + "?" |
- - |
64 64 |
|
Widerstand √ √ Resistance |
a+b a + b |
Ohm Om |
65 65 |
|
|
0.01*a*(b-127) 0,01 * a * (b-127) |
mm mm |
66 66 |
|
|
(a*b)/511.12 (A * B) / 511,12 |
V V |
67 67 |
|
|
(640*a)+b*2.5 (640 * a) + b * 2,5 |
Deg Deg |
68 68 |
|
|
(256*a+b)/7.365 (256 * a + b) / 7365 |
deg/s deg / s |
69 69 |
|
|
(256*a +b)*0.3254 (256 * a + b) * 0,3254 |
Bar Bar |
70 70 |
|
|
(256*a +b)*0.192 (256 * a + b) * 0192 |
m/s 2 m / s 2 |
Will man nun wissen, welche Meßwerte in welcher Gruppe geliefert werden, kann man einfach nacheinander alle 256 Gruppen auslesen und die Kennzahlen notieren. Jeśli chcesz wiedzieć, jakie wartości są w grupie, które można po prostu czytać je jeden po drugim, 256 grup i spisać numerów. Hilfreich kann aber auch VAG-COM sein. Pomocne ale może być również VAG-COM. Liest man das Steuergerät mit VAG-COM aus, kann man auf die Schaltfläche Meas. Czytanie ECU z VAG-COM, można kliknąć przycisk pomiarowy. Blocks - 08 klicken und dann nacheinander genau die Gruppen durchklicken und die jeweiligen vier Sensordaten ablesen. Bloki - 08, a następnie kliknij bardzo grup klikając jeden po drugim, a każdy z czterech czujników odczytać danych. Alternativ kann man auch die Labelfiles studieren, die sich auch im Unterordner Labels befinden. Alternatywnie, można także etykiety plików , badanie etykiety są w podfolderach. Anhand der VAG-Nummer kann man die entsprechende Datei identifizieren. W oparciu o VAG-liczba może zidentyfikować odpowiedni plik. Dabei gibt es aber mir teilweise unklare Konventionen, denn zum einen gibt es redirects für Steuergerätenummern und für meine getesteten Steurgeräte gab es keine Labelfiles, obwohl VAG-COM die Bezeichner kannte. Istnieją jednak, czasami niejasne konwencji, bo dla jednego nie ma przekierowania dla jednostek kontrolnych i numerów dla mojego testowane Steurgeräte nie było plików z etykietami, chociaż VAG-COM wiedziała o identyfikator. Hat man aber das passende Labelfile, findet man in dieser Textdatei Angaben über die Gruppen und die gelieferten Daten. Ale jeśli ktoś ma prawo pliku ekologicznego można znaleźć w pliku tekstowym informacje na temat grup i danych. Beispielsweise 022-906-032-AYL.lbl : Na przykład 022-906-032-AYL.lbl:
002,0,Basic Functions (Mass Air Flow) 002,0, podstawowe funkcje (przepływ powietrza Mass)
002,1,Engine Speed,,Specification: 650...750 RPM 002,1, prędkość silnika,, Specyfikacja: 650 750 obr. / min ..
002,2,Engine Load,,Specification: 12.0...26.0 % 002,2, obciążenie silnika,, Specyfikacja: 12,0 ... 26,0%
002,3,Injection,Timing,Specification: 1.0...4.0 ms 002,3, odmierzanie czasu wtrysku, Specyfikacja: 1,0 ... 4,0 ms
002,4,Intake Air Mass,,Specification: 2.5...5.0 g/s 002,4, Mass Air Intake, Specyfikacja: 2,5 ... 5,0 g / s
Hierbei handelt es sich um die Gruppe mit der Kennzahl 2. Jest to grupa z ocena 2 Nach dem Komma werden die vier Datenblöcke unterteilt. Po danych cztero punktowe bloki są podzielone. 0 gibt es nicht und ist nur eine Kategoriebezeichnung für VAG-COM. 0, nie ma i to tylko nazwa kategorii VAG-COM. Das erste Byte liefert die Engine Speed (Motordrehzahl), das zweite Byte dann den Ladedruck usw. Pierwszy bajt podaje prędkości obrotowej silnika (prędkość obrotowa silnika), drugi bajt ciśnienia ładowania, itp.
Die Kennzahl 16 liefert einen Binärwert. Wskaźnik 16 stanowi wartość binarną. Teilweise findet man in den Labelfiles die Bedeutung der einzelnen Bits. Niektóre znajdują się w pliki etykiet, znaczenie poszczególnych bitów. Beispielsweise für die zweite Gruppe in 074-906-018.lbl : Na przykład, dla drugiej grupy w 074-906-018.lbl:
; Measuring block 002 - Idle ; Blok pomiarowy 002 - Idle
2,1,Engine,Speed 2,1, prędkość obrotowa silnika
2,2,Accelerator,Position 2.2, stanowisko Accelerator
2,3,Operating,Condition 1) 2,3, podczas pracy, stan 1)
2,4,Coolant,Temperature 2,4, płynu chłodzącego, temperatury
; ;
; 1) 010-OK , 1) 010-OK
; 011-Air Conditioning switched on ; 011 klimatyzacja włączony
Der dritte Datenblock liefert einen Bytewert, der in der Binärdarstellung ua angibt, ob die Klimaanlage an ist. Trzeci blok danych zawiera bajt, który określa wartość binarną, w szczególności, czy klimatyzacja jest włączona.
Wenn die Reihe wieder am µC ist, kann dieser wie gesagt auch ein group reading statt des ack blocks schicken: Jeśli seria powraca na mikrokontrolera, może wysłać, a także grupy czytanie słów zamiast bloków ack:
vom µC mikrokontrolera |
von ECU ECU |
Beschreibung Opis |
0x04 0x04 |
|
block length; µC ist Master blok długości; mikrokontrolera jest mistrzem |
|
0xFB 0xFB |
Komplement Uzupełnienie |
0x?? 0x? |
|
block counter blok licznika |
|
0x?? 0x? |
Komplement Uzupełnienie |
0x29 0x29 |
|
block title (group reading) tabelki (czytanie grupy) |
|
0xD6 0xD6 |
|
0x02 0x02 |
|
group Kennzahl (0x01 bis 0xFF) die gelesen werden soll ID grupy (0x01 do 0xFF) do czytania |
|
0xFD 0xfd |
|
0x03 0x03 |
|
block end koniec bloku |
Hierauf antwortet die ECU beispielsweise (ECU 030-906-032E): Następnie ECU odpowiada, na przykład (ECU 030-906-032E):
vom µC mikrokontrolera |
von ECU ECU |
Beschreibung Opis |
|
0x0F 0x0F |
block length; ECU ist Master blok długości; ECU jest mistrzem |
0xF0 0xF0 |
|
Komplement Uzupełnienie |
|
0x?? 0x? |
block counter blok licznika |
0x?? 0x? |
|
Komplement Uzupełnienie |
|
0xE7 0xE7 |
block title (Antwort auf group reading) Tytuł bloku (odpowiedź na czytanie grupy) |
0x18 0x18 |
|
|
|
0x01 0x01 |
Kennzahl für 1. Kod 1 Datenblock bloku danych |
0xFE 0xFE |
|
|
|
0xC8 0xC8 |
1. 1. Sensordaten-Byte = Meßwert a danych Sensor-byte = odczyt |
0x37 0x37 |
|
|
|
0x00 0x00 |
2. 2. Sensordaten-Byte = Meßwert b Sensor danych bajt = b czytania |
0xFF 0xFF |
|
|
|
0x21 0x21 |
Kennzahl für 2. Kod do 2. Datenblock bloku danych |
0xDE 0xDE |
|
|
|
0x85 0x85 |
1. 1. Sensordaten-Byte = Meßwert a danych Sensor-byte = odczyt |
0x7A 0x7A |
|
|
|
0x85 0x85 |
2. 2. Sensordaten-Byte = Meßwert b Sensor danych bajt = b czytania |
0x7A 0x7A |
|
|
|
0x0F 0x0F |
Kennzahl für 3. Kod na 3. Datenblock bloku danych |
0xF0 0xF0 |
|
|
|
0x29 0x29 |
1. 1. Sensordaten-Byte = Meßwert a danych Sensor-byte = odczyt |
0xD6 0xD6 |
|
|
|
0x00 0x00 |
2. 2. Sensordaten-Byte = Meßwert b Sensor danych bajt = b czytania |
0xFF 0xFF |
|
|
|
0x12 0x12 |
Kennzahl für 4. Kod dla 4 Datenblock bloku danych |
0xED 0xED |
|
|
|
0xFA 0xFA |
1. 1. Sensordaten-Byte = Meßwert a danych Sensor-byte = odczyt |
0x05 0x05 |
|
|
|
0x5A 0x5A |
2. 2. Sensordaten-Byte = Meßwert b Sensor danych bajt = b czytania |
0xA5 0xA5 |
|
|
|
0x03 0x03 |
block end koniec bloku |
Anschließend kann der µC ein weiteres group reading für eine beliebige Gruppe anfordern. Następnie mikrokontroler może wystąpić do innego czytania grupy dla każdej grupy.
Völlig zur Verzweifelung hat mich getrieben, daß die ECU aus meinem Bus während des group readings nach einigen (unterschiedlich häufigen) erfolgreichen group readings ein Byte 0x0F schickt, nach dem der µC an der Reihe war und das Byte für die block length geschickt hat. I został doprowadzony do rozpaczy zupełnie, że ECU wysyła mój autobus w grupy po kilka odczytów (różnica pomiędzy jeden) udany odczyt grupy bajt 0x0F, po którym mikrokontroler nadeszła jego kolej i wysłał bajtów na długość bloku. Scheint ein Fehler zu sein, denn es trat nur auf, wenn der Motor lief und nicht, wenn nur die Zündung ein war. Wydaje się, że błąd, ponieważ miał on miejsce tylko wtedy, gdy silnik nie został uruchomiony i kiedy tylko zapłonu. Anschließend ist die Kommunikation beendet und man muß wieder mit der Initialisierung beginnen. Następnie komunikat jest zakończone i należy ponownie uruchomić inicjalizacji. Inzwischen habe ich das als Timing-Problem erkannt. Tymczasem, mam problem z taktowaniem wykryte.
Im Beispiel sendete die ECU folgende Daten für die zweite Gruppe, die dann umgerechnet werden können: W przykładzie, ECU wysyła następujące dane dla drugiej grupy, które można następnie przekształcić:
Kennzahl Index |
Meßwert a Pomiaru |
Meßwert b Pomiar b |
Berechnung (vgl. oben) Kalkulacja (patrz wyżej) |
Ergebnis Ocena |
1 1 |
200 200 |
0 0 |
a*0.2*b 0,2 * a * b |
200*0,2*0 = 0 rpm 200 * 0,2 * 0 = 0 obr / min |
33 33 |
133 133 |
133 133 |
100*b/a (if a==0 then 100*b) 100 * b / a (jeśli == 0 to 100 * b) |
100*133/133 = 100% 100 * 133/133 = 100% |
15 15 |
41 41 |
0 0 |
0.01*a*b 0,01 * a * b |
0,01*41*0 = 0ms 0,01 * 41 * 0 = 0ms |
18 18 |
250 250 |
90 90 |
0.04*a*b 0,04 * a * b |
0,04*250*90 = 900Mbar 0,04 * 250 * 90 = 900Mbar |
Als Beispiel eine Auflistung der ersten 26 groups, wie sie die ECU (074 906 018 A) aus meinem T4 111KW liefert: Jako przykład, zbiór pierwszych 26 grup, otrzymanych od ECU (074 906 018) z mojego T4 111KW:
group # grupa nr |
1. 1. Kennzahl Index |
2. 2. Kennzahl Index |
3. 3. Kennzahl Index |
4. 4. Kennzahl Index |
1 1 |
1 1 |
39 39 |
21 21 |
5 5 |
2 2 |
1 1 |
33 33 |
16 16 |
5 5 |
3 3 |
1 1 |
49 49 |
49 49 |
23 23 |
4 4 |
1 1 |
27 27 |
27 27 |
23 23 |
5 5 |
1 1 |
39 39 |
27 27 |
5 5 |
6 6 |
7 7 |
16 16 |
16 16 |
8 8 |
7 7 |
5 5 |
17 17 |
5 5 |
5 5 |
8 8 |
1 1 |
39 39 |
39 39 |
39 39 |
9 9 |
1 1 |
39 39 |
39 39 |
17 17 |
10 10 |
49 49 |
18 18 |
18 18 |
33 33 |
11 11 |
1 1 |
18 18 |
18 18 |
23 23 |
12 12 |
16 16 |
31 31 |
6 6 |
5 5 |
13 13 |
51 51 |
51 51 |
51 51 |
51 51 |
14 14 |
51 51 |
17 17 |
17 17 |
17 17 |
15 15 |
1 1 |
39 39 |
35 35 |
39 39 |
16 16 |
2 2 |
16 16 |
16 16 |
6 6 |
17 17 |
17 17 |
17 17 |
17 17 |
17 17 |
18 18 |
7 7 |
16 16 |
7 7 |
7 7 |
19 19 |
21 21 |
21 21 |
17 17 |
17 17 |
20 20 |
1 1 |
39 39 |
21 21 |
33 33 |
21 21 |
49 49 |
49 49 |
23 23 |
16 16 |
22 22 |
27 27 |
27 27 |
23 23 |
7 7 |
23 23 |
18 18 |
18 18 |
23 23 |
18 18 |
24 24 |
5 5 |
5 5 |
5 5 |
8 8 |
25 25 |
17 17 |
17 17 |
17 17 |
17 17 |
26 26 |
63 63 |
50 50 |
53 53 |
17 17 |
Eine Gesamtübersicht der ersten 128 Byte liegt als Textdatei vor. Ogólny przegląd Pierwsze 128 bajtów w pliku tekstowym wcześniej. Es können also die Meßwerte für die Kennzahlen 1, 2, 5, 6, 7, 8, 15, 16, 17, 18, 21, 23, 27, 31, 32, 33, 35, 39, 49, 50, 51, 53, 63 abgefragt werden. Jest zatem możliwe, że zmierzonych wartości dla liczby 1, 2, 5, 6, 7, 8, 15, 16, 17, 18, 21, 23, 27, 31, 32, 33, 35, 39, 49, 50, 51, nazwać 53, 63.
Interessant ist auch der Umstand, daß andere Steuergeräte die gleiche obige Tabelle mit den Kennzahlen verwenden. Równie interesujący jest fakt, że wykorzystanie innych urządzeń kontroli, tym samym stole z podanych powyżej liczb. Liest man beispielsweise mein T4 Steuergerät Kombiinstrument (7D0 920 823 C) aus (Adresse 0x17), bekommt man für die ersten beiden groups die Kennzahlen 7, 1, 37, 44 und 36, 19, 64, 5 geliefert. Textdatei mit allen Werten . Jeśli czytasz takie jak mój T4 tablicy przyrządów sterowania (7D0 920 823 C) (adres 0x17), dostaje na pierwszych dwóch grup, liczby 7, 1, 37, 44 i 36, 19, 64, 5 dostarczona. pliku tekstowego z wszelkich wartości .
KW1281 - Kommunikationsende KW1281 - Koniec komunikatu
Soll die Datenverbindung beendet werden, weil der µC die Kommunikation einstellen möchte, sollte man einen sauberen end output block schicken: Jeśli połączenie danych zostanie zakończona, ponieważ mikrokontroler chce ustawić komunikacji powinny być czyste, aby wysłać wyjście koniec bloku:
vom µC mikrokontrolera |
von ECU ECU |
Beschreibung Opis |
0x03 0x03 |
|
block length; µC ist Master blok długości; mikrokontrolera jest mistrzem |
|
0xFC 0xFC |
Komplement Uzupełnienie |
0x?? 0x? |
|
block counter blok licznika |
|
0x?? 0x? |
Komplement Uzupełnienie |
0x06 0x06 |
|
block title (end ouput) Tytuł bloku (ouput końca) |
|
0xF9 0xF9 |
|
0x03 0x03 |
|
block end koniec bloku |
Anschließend kann ein Steuergerät bei Bedarf wieder mit der gewohnten 5Bd Initialisierung aufgeweckt werden. Następnie, jednostki sterującej, w razie potrzeby ponownie obudził znane inicjalizacji 5Bd.
KW1281 - Kommunikationsfehler KW1281 - Błąd komunikacji
Wie schon geschildert , kann es während der Kommunikation seitens der ECU zu Fehler kommen. Noch nicht ganz sicher bin ich mir beim Ablauf , wie auf einen solchen Fehler reagiert wird. Jak opisano , może być komunikat błędu ECU przyjdzie czas. Nie wiesz, jestem w trakcie takiego błędu będzie odpowiadał na takie. Ich habe zwei Arten von Fehlern protokollieren können, die beide nur bei wiederholten group readings auftraten. Mam do utworu dwa rodzaje błędów, że obie grupy tylko z powtarzających się pomiarów. Der Fehler wird wohl durch zwei gleiche Bytes zur Fehlersignalisierung markiert. Błąd jest dobrze oznakowane przez dwa identyczne bajtów błąd sygnalizacji. Allerdings werden unterschiedliche Bytes gesendet. Jednak różne bajty są wysyłane. Bisher scheint sich folgendes Bild abzuzeichnen: Jak dotąd wydaje się, że pojawiające się w następujący sposób:
vom µC mikrokontrolera |
von ECU ECU |
Beschreibung Opis |
|
0x?? 0x? |
beliebiges Byte Każdy z bajtów |
|
0x0F oder 0x27 0x0F i 0x27 |
1. 1. Byte zur Fehlerkennzeichnung (?). Bytes identyfikacji błąd (?). 0x0F nach dem zuvor 0x05 gesendet wurde. 0x0F 0x05 jest wysyłany przez wyżej. 0x27 nach 0x57 0x27 do 0x57 |
|
0x0F oder 0x27 0x0F i 0x27 |
2. 2. Byte zur Fehlerkennzeichnung (?) Bytes identyfikacji błąd (?) |
0x?? 0x? |
|
Komplement zum letzten Byte (2. Fehlerbyte) Uzupełnienie ostatni bajt (2 błąd byte) |
|
0x55 0x55 |
Sync Byte zum festlegen der Baudrate (Bedeutung unklar) bajt Sync ustawić (niejasne znaczenie) z szybkości transmisji |
|
0x01 0x01 |
key word LSB (low significant byte) (Bedeutung unklar) słowo kluczowe LSB (niski bajt) (znaczenie niejasne) |
|
0x8A 0x8A |
key word HSB (high significant byte) (Bedeutung unklar) słowo kluczowe HSB (wysoki bajt) (znaczenie niejasne) |
0x75 0x75 |
|
Komplement zu 0x8A Uzupełnienie 0x8A |
Wie man sieht, schickt die ECU nach Signalisierung des Fehlers die drei Bytes wie bei der Initialisierung . Jak widać, ECU wysyła sygnał do winy, trzy bajty jak w inicjalizacji . Durch diese Aktion wird der block counter auf Null zurückgesetzt. Ta akcja przeciw bloku jest wyzerowany. Der nächste von der ECU gesendete Block beginnt mit dem block counter Wert 1. Następny blok wysłane przez ECU rozpoczyna się od bloku licznika z 1
Es folgt eine ähnliche Phase wie nach der Initialisierung: Wynika podobne fazy po inicjalizacji:
Die ECU schickt einen 0xF6 ASCII Daten Block mit der Controller ID und weiteren ASCII Zeichen, deren Bedeutung ich noch nicht untersucht habe. ECU wysyła blok danych ASCII 0xF6 z ID kontrolera i innych znaków ASCII, których znaczenia nie były badane.
Der µC bestätigt mit einem ACK block Blok mikrokontrolera potwierdzone ACK
Die ECU schickt einen weiteren 0xF6 ASCII Daten Block mit weiteren ASCII Zeichen. ECU wysyła kolejne 0xF6 bloku danych ASCII kolejne znaki ASCII.
Der µC bestätigt mit einem ACK block Blok mikrokontrolera potwierdzone ACK
Die ECU schickt einen weiteren 0xF6 ASCII Daten Block mit weiteren ASCII Zeichen. ECU wysyła kolejne 0xF6 bloku danych ASCII kolejne znaki ASCII.
Der µC bestätigt mit einem ACK block Blok mikrokontrolera potwierdzone ACK
Die ECU schickt einen weiteren 0xF6 ASCII Daten Block mit weiteren ASCII Zeichen. ECU wysyła kolejne 0xF6 bloku danych ASCII kolejne znaki ASCII.
Jetzt kommt etwas merkwürdiges. Teraz coś dziwnego. Statt eines ACK block schickt der µC: Zamiast ACK wysyłanego przez mikrokontrolera:
vom µC mikrokontrolera |
von ECU ECU |
Beschreibung Opis |
0x03 0x03 |
|
block length; µC ist Master blok długości; mikrokontrolera jest mistrzem |
|
0xFC 0xFC |
Komplement Uzupełnienie |
0x08 0x08 |
|
block counter blok licznika |
|
0xF7 0xF7 |
Komplement Uzupełnienie |
0x00 0x00 |
|
Was auch immer dies bedeutet Cokolwiek to znaczy to |
|
0xFF 0xFF |
Komplement Uzupełnienie |
0x03 0x03 |
|
block end koniec bloku |
Anschließend sendet die ECU wieder einen 0xF6 ASCII Daten Block mit weiteren ASCII Zeichen. Następnie wysyła ECU ponownie 0xF6 bloku danych ASCII kolejne znaki ASCII. Dies scheint dann der letzte zu sein, denn jetzt beginnt wieder das Wechselspiel, bei dem zuerst der µC einen ACK block und dann die ECU einen sendet, bis der µC einen anderen Befehl schickt. Wydaje się to być ostatni, teraz zaczyna się od nowa, wzajemne, na pierwszy mikrokontroler ACK, a następnie wysyła do ECU mikrokontroler wysyła różne polecenia.
KW1281 - Fehlerspeicher auslesen/löschen KW1281 - Odczyt pamięci błędów / kasowanie
Folgend noch die Vorgehensweise zum Auslesen von Fehlern und das Löschen. Jeszcze dalej, procedura błędów odczytu i usuwania. Zuerst fordert der µC alle Fehlercodes an. Pierwszy zwany mikrokontroler do kodów błędów. Eine Möglichkeit, nur die Anzahl der gespeicherten Fehler zu erfragen, scheint es nicht zu geben. Jednym ze sposobów, by spytać tylko liczba zapisanych błędów, to wydaje się brakować.
vom µC mikrokontrolera |
von ECU ECU |
Beschreibung Opis |
0x03 0x03 |
|
block length; µC ist Master blok długości; mikrokontrolera jest mistrzem |
|
0xFC 0xFC |
Komplement Uzupełnienie |
0x?? 0x? |
|
block counter blok licznika |
|
0x?? 0x? |
Komplement Uzupełnienie |
0x07 0x07 |
|
block title (get errors) Tytuł bloku (pojawiają się błędy) |
|
0xF8 0xF8 |
|
0x03 0x03 |
|
block end koniec bloku |
Nun sendet die ECU alle gespeicherten Fehlercodes. Teraz ECU wysyła wszystkie przechowywane kody błędów. In der ersten Antwort werden maximal vier Fehlercodes gesendet. W pierwszej odpowiedzi do czterech kodów błędów są wysyłane.
vom µC mikrokontrolera |
von ECU ECU |
Beschreibung Opis |
|
0x0F 0x0F |
block length; ECU ist Master blok długości; ECU jest mistrzem |
0xF0 0xF0 |
|
Komplement Uzupełnienie |
|
0x?? 0x? |
block counter blok licznika |
0x?? 0x? |
|
Komplement Uzupełnienie |
|
0xFC 0xFC |
block title (Antwort auf get errors) Tytuł bloku (odpowiedzi, aby uzyskać błędy) |
0x03 0x03 |
|
|
|
0x46 0x46 |
1. 1. Fehlercode High Byte Kod błędu High Byte |
0xB9 0xB9 |
|
|
|
0x5A 0x5A |
1. 1. Fehlercode Low Byte Błąd kodu niski bajt |
0xA5 0xA5 |
|
|
|
0xA3 0xA3 |
1. 1. Fehlercode Status-Byte Kod błędu bajt statusu |
0x5C 0x5C |
|
|
|
0x40 0x40 |
2. 2. Fehlercode High Byte Kod błędu High Byte |
0xBF 0xBF |
|
|
|
0x71 0x71 |
2. 2. Fehlercode Low Byte Błąd kodu niski bajt |
0x8E 0x8E |
|
|
|
0x23 0x23 |
2. 2. Fehlercode Status-Byte Kod błędu bajt statusu |
0xDC 0xDC |
|
|
|
0x46 0x46 |
3. 3. Fehlercode High Byte Kod błędu High Byte |
0xB9 0xB9 |
|
|
|
0x1E 0x1E |
3. 3. Fehlercode Low Byte Błąd kodu niski bajt |
0xE1 0xE1 |
|
|
|
0x23 0x23 |
3. 3. Fehlercode Status-Byte Kod błędu bajt statusu |
0xDC 0xDC |
|
|
|
0x46 0x46 |
4. 4. Fehlercode High Byte Kod błędu High Byte |
0xB9 0xB9 |
|
|
|
0x20 0x20 |
4. 4. Fehlercode Low Byte Błąd kodu niski bajt |
0xDF 0xDF |
|
|
|
0x23 0x23 |
4. 4. Fehlercode Status-Byte Kod błędu bajt statusu |
0xDC 0xDC |
|
|
|
0x03 0x03 |
block end koniec bloku |
Die jeweils beiden ersten Bytes eines jeden Fehlercodes werden hintereinander gesetzt und interpretiert. Każda z dwóch pierwszych bajtów kody błędów są kolejno i interpretowane. Aus beispielsweise 0x46 und 0x5A ergibt sich 0x465A. Na przykład, 0x46 i 0x5A 0x465A wyników. Dies entspricht Dezimal 18010 und gibt den Volkswagen Diagnostic Trouble Code (DTC) an. Jest to równoważne po przecinku jest 18010 i Volkswagen Diagnostic Trouble Code (DTC) do.
Das dritte Fehler-Byte (Status-Byte) beschreibt den Fehler näher und gibt z. B. an, ob der Fehler nur sporadisch auftritt oder in welcher Form das Signal abweicht. Trzeci bajt błąd (status byte) szczegółowo opisuje błąd i wskazuje, na przykład, czy błąd występuje tylko sporadycznie, lub odbiega w jakiejkolwiek formie sygnału.
Für obiges Beispiel kann man so feststellen, daß der zweite gemeldete Fehler 0x4071 (16497) heißt und dies bedeutet Intake Air Temp.Circ High Input ( Einlaß Lufttemperatur Schaltkreis zu hoher Eingang ). W powyższym przykładzie możemy zatem stwierdzić, że drugi zgłosiło błąd (16 497) jest 0x4071 i oznacza, że wlotu powietrza Temp.Circ wejście High (temperatura wlotowa obiegu powietrza z wysokim nakładzie).
Nach dem der erste Block mit den Fehlern geschickt wurde, antwortet der µC mit dem üblichen ack block. został wysłany po pierwszym bloku z błędami, mikrokontroler reaguje zwykle blok-ACK. Wenn weitere Fehler vorliegen, schickt die ECU dann einen weiteren Block mit dem block title 0xFC. Jeśli są dalsze błędy, ECU następnie wysyła innego bloku z 0xFC tytuł bloku. Dieser kann kürzer sein, wenn z. B. nur noch drei Fehler folgen (0x0C für block length). To może być krótszy, jeśli na przykład tylko trzy błędy (0x0C na długość bloku). Darauf reagiert der µC wieder mit einem ack block und die ECU schickt ggf. weitere Fehler oder antwortet selber mit einem ack block, wenn keine weiteren Fehler vorliegen. Na co odpowiada mikrokontroler z powrotem z blokowych ack i ECU wysyła żadnych dodatkowych błędów lub reaguje z ack samym blokiem, jeśli nie dalsze błędy.
Sind keine gespeicherten Fehler vorhanden sieht die Antwort der ECU folgendermaßen aus: Jeśli nie istnieje wina przechowywane widzi odpowiedzi ECU w następujący sposób:
vom µC mikrokontrolera |
von ECU ECU |
Beschreibung Opis |
|
0x06 0x06 |
block length; ECU ist Master blok długości; ECU jest mistrzem |
0xF9 0xF9 |
|
Komplement Uzupełnienie |
|
0x?? 0x? |
block counter blok licznika |
0x?? 0x? |
|
Komplement Uzupełnienie |
|
0xFC 0xFC |
block title (Antwort auf get errors) Tytuł bloku (odpowiedzi, aby uzyskać błędy) |
0x03 0x03 |
|
|
|
0xFF 0xFF |
kein Fehler vorh. (1. Fehlercode High Byte) Nr prev błąd (kod błędu 1 High byte) |
0x00 0x00 |
|
|
|
0xFF 0xFF |
kein Fehler vorh. (1. Fehlercode Low Byte) Nr prev błąd (kod błędu 1 Low byte) |
0x00 0x00 |
|
|
|
0x88 0x88 |
kein Fehler vorh. (1. Fehlercode Daten-Byte) Nr prev błąd (1 bajt danych kod błędu) |
0x77 0x77 |
|
|
|
0x03 0x03 |
block end koniec bloku |
Ist man sich sicher, daß die gespeicherten Fehler gelöscht werden können, ist dies ebenfalls möglich: Jeśli masz pewność, że przechowywane błędy mogą być usunięte, możliwe jest również:
vom µC mikrokontrolera |
von ECU ECU |
Beschreibung Opis |
0x03 0x03 |
|
block length; µC ist Master blok długości; mikrokontrolera jest mistrzem |
|
0xFC 0xFC |
Komplement Uzupełnienie |
0x?? 0x? |
|
block counter blok licznika |
|
0x?? 0x? |
Komplement Uzupełnienie |
0x05 0x05 |
|
block title (clear errors) Tytuł bloku (ClearErrors) |
|
0xFA 0xFA |
|
0x03 0x03 |
|
block end koniec bloku |
Darauf reagiert die ECU mit einem normalen 0x09 ACK block. Następnie, ECU reaguje bloku z normalnym 0x09 ACK. Daraufhin kann dann der µC wieder wie gewohnt Befehle senden. Następnie mikrokontroler może wysłać z powrotem normalnie poleceń. Sinnvoll könnte es zum Beispiel sein, anschließend noch einmal den Fehlerspeicher auszulesen, um zu überprüfen, ob das Löschen geklappt hat. To ma sens to może być, na przykład, a następnie ponownie odczytać dziennik błędów aby sprawdzić, czy usunięcie pracował.