piątek, 8 października 2010

Diagnostyka samochodowa (2)

Niestety pierwsza próba stworzenia mojego interfejsu pod USB zakończyła się porażką. Tak jak się spodziewałem konwertery i samo przesyłanie danych USB do UART wprowadzają pewne losowe opóźnienia i ciężko jest w ten sposób zainicjować poprawnie komunikacje z ECU. Ponieważ nie posiadam w tym momencie oscyloskopu (planuje kupić używany oscyloskop analogowy lub w ostateczności złożyć samemu jakąś zabawkę), nie potrafię w tym momencie nawet dokładnie powiedzieć jakiego rodzaju są to przesunięcia i zakłócenia. Najprostszym rozwiązaniem byłoby wstawienie mikro-kontrolera który zadbałby o właściwą synchronizacje. Chciałbym jednak najpierw zobaczyć jak to wszystko wygląda pod oscyloskopem, więc na razie interfejs na USB odkładam do szuflady.

Oczywiście nie oznacza to, że nie próbowałem zdobyć informacji na temat czujników na inne sposoby :)

Zdobyłem kompletną dokumentacje do kontrolerów stosowanych w różnych markach samochodów. Dzięki temu pewnie uda mi się w końcu połączyć z samym sterownikiem wyciągniętym z jakiegoś wraka. Podając odpowiednie impulsy na jego wejścia również będę w stanie określić w jaki sposób odczytywać wartości z jego czujników. Jest to jednak droga kosztowna, dlatego tymczasem próbuje jeszcze inaczej :)

Idea jest taka żeby stworzyć emulator ECU pracujący na komputerze do którego będą się łączyć programy diagnostyczne. Dzięki takiemu emulatorowi byłbym w stanie na bieżąco modyfikować wartości czujników i w ten sposób dowiedzieć się wszystkiego czego potrzebuję :)

Taki emulator udało mi się napisać w miarę szybko a dzięki wirtualnym portom COM wszystko można zrobić na jednym komputerze, bez potrzeby spinania dwóch maszyn kabelkiem Null-modem. Oczywiście znowu pojawiają się tutaj pewne problemy ale już zupełnie innej natury :/

Problem oczywiście leży w samych programach diagnostycznych. Autorzy takich programów wymuszają na użytkowniku kupienie interfejsu swojej produkcji i z innymi program nie chce współpracować, a tym bardziej nie można ustawić komunikacji przez zwykły port COM. Wygląda na to, że w sieci do Opla dostępne są tylko dwa programy: AutoScanner i OP-COM. Przy czym AutoScannera narazie nie używałem.

Z OP-COM jest sprawa o tyle ciekawa, że w sieci krąży jego beta wersja (Opel Tech2) nie zawierająca w ogóle odczytu czujników oraz wersja crackowana znana jako AB-COM.

Opel tech2 nie nadaje się więc do użycia a sporo użytkowników go poleca na forach :) Zresztą przeczytajcie tutaj sami co napisał autor programu. Natomiast AB-COM wygląda na to, że źle odczytuje bloki pomiarowe. Nie pokazuje mi napięcia z sondy Lambda, a inne wartości też nie zgadzają się do końca.

Jest jeszcze dostępne demo OP-COM, ale jak na razie nie chce "współpracować" :P Wersja demo jest spakowana programem Pecompact, który na szczęście da się łatwo wypakować. Być może głębsze wniknięcie w kod programu rozwiąże ten problem. Z tego powodu kod źródłowy emulatora zamieszczę dopiero za jakiś czas, po rozwiązaniu tego typu problemów. Być może dodam do niego funkcje emulacji któregoś z interfejsów współpracujących z OP-COMem.

2 komentarze:

  1. Witaj!

    Posiadam ECU Bosch MA1.7. Czy masz może gdzieś w swoich zbiorach informacje o komunikacji z tym serownikiem? Ma on linie K i L. Nigdzie nie mogę odnaleźć takich informacji jak prędkość komunikacji, budowa pakietu, obsługiwane komendy. Pragnę napisać program do wyświetlania informacji zawartych w ECU. Obecnie problem ten rozwiązałem poprzez stworzenie własnej centralki do instalacji LPG która wykorzystuje m.in. takie czujniki jak sonda lambda i tps i poprzez komunikację z PC wyświetlam te dane na laptopie.
    Pragnę jednak połączyć się z ECU. Jednak nigdzie nie znalazłem też opisu linii L. Wiem tylko że służy ona do inicjalizacji połączenia. Ale w jaki sposób tego nigdzie już nie znalazłem... Czy posiadasz na ten temat jakieś informacje?

    Serdecznie pozdrawiam.
    Paweł

    OdpowiedzUsuń

  2. Cześć, linię L obsługuje się _identycznie_ jak linie K, jednak po zainicjowaniu dalsza komunikacja idzie po linii K. Możliwe, że inicjację trzeba przeprowadzać równocześnie na obu liniach - nigdy nie miałem okazji przetestować takiego sterownika.

    Ważniejsze jest to dla jakiej marki dany sterownik został wyprodukowany, ponieważ to końcowy producent je programuje i dodaje swoje udziwnienia.

    OdpowiedzUsuń