Kiedyś obiecałem, że opublikuje kod źródłowy prostego emulatora protokołu KWP2000 - oto on w pełnej krasie :P
Napisany został w Processingu bo tak było po prostu najszybciej ;] Processing jest prostym językiem dla początkujących na którym bazuje Arduino IDE, ale to w sumie nie ma żadnego znaczenia w tym momencie.
Programik ma bardzo prostą klawiszologię:
'r' - resetuje do stanu "nie zainicjowano połączenia"
'q' - włącza podmianę wartości dla wybranego bajtu w ReadDataByLocalIdentifier
'w' - następny bajt
's' - poprzedni bajt
'd' - wartość bajtu +1
'a' - wartość bajtu -1
ecuemu.pde
piątek, 29 października 2010
czwartek, 21 października 2010
Windows sockets initialization failed
Biblioteka Winsock odpowiada za obsługę połączeń tcp w systemie windows. Jak się okazuje problemy z nią związane migrowały aż do najnowszych wersji systemu Windows Vista i Windows 7 :)
Czasami jakiś wirus lub de-instalacja programu potrafi nam zepsuć system i wtedy przy próbie połączenia z internetem, otrzymujemy komunikat podobny do tego: Windows sockets initialization failed
Problem nie jest groźny ale doszukanie się dobrego rozwiązania chwile zajmuje, dlatego podaje je tutaj, na wypadek gdybym sam zapomniał :)
Z linii poleceń należy klepnąć komendę resetującą bibliotekę winsock:
netsh winsock reset
Następnie restartujemy system. Jeżeli to nie pomogło, możemy dodatkowo spróbować zrestartować ustawienia firewalla:
netsh firewall reset
Czasami jakiś wirus lub de-instalacja programu potrafi nam zepsuć system i wtedy przy próbie połączenia z internetem, otrzymujemy komunikat podobny do tego: Windows sockets initialization failed
Problem nie jest groźny ale doszukanie się dobrego rozwiązania chwile zajmuje, dlatego podaje je tutaj, na wypadek gdybym sam zapomniał :)
Z linii poleceń należy klepnąć komendę resetującą bibliotekę winsock:
netsh winsock reset
Następnie restartujemy system. Jeżeli to nie pomogło, możemy dodatkowo spróbować zrestartować ustawienia firewalla:
netsh firewall reset
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.
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.
Subskrybuj:
Posty (Atom)
-
Tekst wyjątkowo jest w języku angielskim Before you start reading, p lease read article on lwn , if you have not already done so . The ...
-
Będzie to kontynuacja ostatniego wpisu na temat wymiany kontrolera w Monoprice Maker Ultimate / Wanhao D6. Niestety temat kalibracji dru...
-
Niedawno zostało odkryte kilka problemów w Linuksowej obsłudze protokołu TCP. Najpoważniejszy problem o sygnaturze CVE-2019-11477 umożl...