Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Protokół diagnostyczny do opla

avital 18 Sty 2006 15:57 8676 8
  • #1 18 Sty 2006 15:57
    avital
    Poziom 15  

    Witam
    Czy ktoś mógłby się podzielić jakąś specyfikacją protokołu kwp do opli,
    wszystko co za free z netu mam, albo jakiś monitor-terminal najlepiej z rozpoznawaniem komend, ze starszym (kw1281) poszło łatwo.
    Pisze programik do immo opel do kodowania kluczy, immo1 gotowe a immo 2 które po kwp2000 w powijakach...

    0 8
  • #2 06 Lis 2007 08:52
    wszim
    Poziom 13  

    Witam
    Odgrzewam stary wątek. Nie wiem czy udało ci się zdobyć informacje i czy możesz sie nimi podzielić. Mam podobne potrzeby, tzn chcę zrobić prosty program do logowania kliku parametrów aby wyznaczyć charakterystyki pracy dla różnych zewnętrznych sytuacji. Korzystając z dokumentacji ISO protokołu KWP2000 oraz z podglądu transmisji udało mi się zlokalizować ramkę, która mnie interesuje. Niestety nie wiem jak wydobyć z niej pola danych.

    Pomijając kwestie inicjacji transmisji, program AB-COM (bo z takiego korzystam) odczytuje dane z ECU silnika korzystając z ramki:

    komenda z ABCOMa = 80 11 F1 02 21 01 A6
    poszczególne bajty
    80 - physical addressing
    11- Target address byte (11 to silnik)
    F1 - Source address byte
    02 - Additional length byte (ilość kolejnych dodatkowych danych, tu 2 kolejne bajty)
    21 - readDataByLocalIdentifier
    01 - recordLocalIdentifier (czyli chyba rekord nr 1)
    A6 - CS (suma kontrolna która jest sumą wszystkich poprzedzających bajtów modulo 256 czyli obcięta do bajta)

    odpowiedź ze sterownika
    80 F1 11 68 61 01 ... 102 bajty danych i 57 jako CS

    80 - physical addressing
    F1 - Source address byte
    11- Target address byte
    68 - ilość nastepujących danych
    61 - Positive Response Message
    01 -ecordLocalIdentifier (czyli rekord nr 1 lub od rekordu 1)
    ...
    response code
    ...
    57 CS (suma kontrolna )


    No i jak z tych 102 bajtów danych (response code) wyczytać 62 parametry pracy silnika.

    Silnik na którym to sprawdzam to Z16XEP Astra G

    0
  • #4 30 Gru 2010 17:55
    eruanno
    Poziom 9  

    Witam!

    Odświeżam temat, gdyż wraz z kolegą próbujemy stworzyć minikomputer pokładowy do samochodu marki Opel Corsa-B (z silnikiem X12SZ, rocznik '96) i potrzeba nam kilka informacji. Aktualnie jesteśmy w stanie zainicjować połączenie poprzez łącze OBD. Odbywa się ono w następujący sposób:

    Wysyłamy:
    0x86 - pobudzenie z prędkością 5 baud na linii K (złącze OBD 16 pin)
    ... Przełączenie na ok. 8000 baud ...

    Odpowiedź:
    0x55
    0x51
    0x80

    Wysyłamy:
    0x7F - negacja poprzedniego bajtu

    Odbieramy:
    0x15 0xF6 0x39 0x30 0x32 0x32 0x20 0x43 0x35 0x20 0x39 0x30
    0x32 0x32 0x31 0x32 0x36 0x31 0x20 0x44 0x4A 0x2B
    0x15 0xF6 ... i tak w kółko...

    W rozszyfrowaniu danych pomogła ta strona, ale niestety to za mało. Wiem, a raczej domyślam się, że dane są wysyłane w ramkach postaci:

    Code:
    długość ramki [1 bajt] + dane + suma kontrolna (negacja zwyklej sumy w kodzie U2)


    Zapytania mają być nadawane niby pomiędzy ramkami.

    Pytania:
    1. Przede wszystkim jak nazywa się protokół?
    2. Gdzie można znaleźć jakiś w miarę dokładny opis tegoż protokołu?
    3. Jak bardzo odbiega od OBD-II? Chodzi mi o to, czy mogę stosować tryby i PID opisywane na wikipedii?

    Za wszelką pomoc z góry dziękuję.

    0
  • #5 30 Gru 2010 18:42
    1078231
    Użytkownik usunął konto  
  • #6 30 Gru 2010 19:28
    eruanno
    Poziom 9  

    Sposób inicjalizacji powieliliśmy na podstawie obserwacji tego, co jest wysyłane przez interfejs opcom, więc zakładam, że została ona przeprowadzona poprawnie (program w końcu wyświetla poprawne dane).

    Dodam, że nie interesują mnie sprawy typowo diagnostyczne (kody błędów, etc.) lecz dane bieżące (rpm, itd..)

    0
  • #7 30 Gru 2010 19:32
    1078231
    Użytkownik usunął konto  
  • #9 10 Kwi 2011 16:18
    eruanno
    Poziom 9  

    Witam,

    trochę czasu już minęło, więc postanowiłem napisać co się wydarzyło "potem", aby nie wydawało się ludziom, że problem wciąż jest otwarty.

    Zacznę od odpowiedzi na własne pytania:

    Cytat:
    1. Przede wszystkim jak nazywa się protokół?

    Protokół nazywa się KW81. Co ciekawe niewiele ma wspólnego z KW82, czy nawet KW1281 (w każdym razie dzięki za link TVP3)

    Cytat:
    2. Gdzie można znaleźć jakiś w miarę dokładny opis tegoż protokołu?

    Link do jedynej pomocnej nam strony - grupy dyskusyjnej właśnie wygasł :). Kilka ciekawych informacji wygrzebałem jeszcze na jakimś hiszpańskim forum, ale link do tematu gdzieś się zawieruszył (www.corsa-club.ar/foro/)

    Cytat:
    3. Jak bardzo odbiega od OBD-II? Chodzi mi o to, czy mogę stosować tryby i PID opisywane na wikipedii?

    Oj bardzo. W każdym razie nie tędy droga.

    Pisałem o tym, że w kółko otrzymujemy jakieś ramki (identyfikator ECU). Zapytania należało wysyłać pomiędzy tymi ramkami (istniała pomiędzy nimi przerwa, trwająca kilkadziesiąt ms). Zapytanie 02 07 F7 sprawiło, że ECU w sposób ciągły zwracał zrzut chwilowego stanu interesujących nas czujników (45 bajtowe ramki, w tym pierwsze 10 - nie licząc nagłówka - kody błędów, reszta - informacje, które były kluczowe dla naszego projektu, czyli RPM, prędkość, przepustnica, napięcie akum. itd.). Kilka doświadczeń wystarczyło do zidentyfikowania, który bajt odpowiada za wymienione parametry.

    W każdym razie wszystko działa, a żeby nie być gołosłownym:

    Protokół diagnostyczny do opla

    Gdyby ktoś bardzo potrzebował szczegółów niech napisze na PW, ja ze swojej strony dziękuję pozostałym za pomocną dłoń :)

    Temat pewnie do zamknięcia, ale nie ja go tworzyłem, więc siedzę cicho...

    0