LabView & OBD2

Jeśli masz coś do powiedzenia w sprawie LabVIEW napisz. Tutaj są tematy, których nie można uściślić do innych działów.
pwok
Posty: 7
Rejestracja: 22 paź 2013 21:23
Wersja środowiska: LabVIEW 2012

LabView & OBD2

Post autor: pwok »

Witam,
Tworzę projekt, który na celu ma odbieranie informacji np. o temperaturze silnika, ze złącza diagnostycznego OBD poprzez RS232. Do tego celu chciałbym użyć środowiska LabView. Czy są dostępne pakiety LabView umożliwiające łatwiejsze napisanie programu? Proszę o wskazówki.
Awatar użytkownika
Pitol
Moderator
Posty: 983
Rejestracja: 19 lip 2007 00:00
Wersja środowiska: LabVIEW 2019
Lokalizacja: Kraków

LabView & OBD2

Post autor: Pitol »

A to co wujek google oferuje nie pomoże? Nie mam czasu się zagłębiać w każdy link ale próba wyszukania "OBD+LabVIEW" daje trochę rezultatów...
ObrazekObrazekObrazek
Chcesz taki podpis? Zajrzyj tutaj
pwok
Posty: 7
Rejestracja: 22 paź 2013 21:23
Wersja środowiska: LabVIEW 2012

Re: LabView & OBD2

Post autor: pwok »

Oczywiście google pomaga :)

Mam jeszcze jedno pytanie, czy gotowy interfejs diagnostyczny OBDII ELM327 pod USB będzie miał możliwość komunikacji pod LabView, czyli wysyłanie poleceń oraz odbieranie informacji od sterownika np. o temperaturze silnika, temp. z zewnętrzne z czujnika itp.?

wiadomo, nie ma rzeczy niemożliwych, ale wolę zapytać czy nie ma problemów z komunikacją.

Pozdrawiam.
milten
Posty: 77
Rejestracja: 25 paź 2011 20:49
Wersja środowiska: LabVIEW 2012

LabView & OBD2

Post autor: milten »

Jeżeli jest widziany jako port COM w systemie, to bez problemu możesz się komunikować przez VISA
Jeżeli nie ma, to jedynie przez gotową bibliotekę, jeżeli takową dostarcza producent.

Po szybkim przeczesaniu internetu znalazłem informacje, że powinien być widziany jako port COM w systemie. Jeżeli tak jest w rzeczywistości, to pozostaje Ci tylko znaleźć polecenia jakie wysyłać, aby odczytać dane.
Ostatnio zmieniony 23 paź 2013 23:30 przez milten, łącznie zmieniany 2 razy.
Obrazek
pwok
Posty: 7
Rejestracja: 22 paź 2013 21:23
Wersja środowiska: LabVIEW 2012

Re: LabView & OBD2

Post autor: pwok »

Witam,
Powracam z pytaniem. Stworzyłem VI gdzie bez problemu komunikuję się z OBD. Wysłanie komend np. 010D (prędkość) powoduje otrzymanie odpowiedzi "Searching... 41 0D XX XX". Otrzymanie odpowiedzi trwa jednak na tyle długo, że program nie nadąża nad zmianami np. obrotów silnika. Do z czytania temperatury jest w porządku, ale do szybkich zmian niestety nie. Czy jest jakiś szybszy sposób na to?
milten
Posty: 77
Rejestracja: 25 paź 2011 20:49
Wersja środowiska: LabVIEW 2012

LabView & OBD2

Post autor: milten »

Są 2 prawdopodobne przyczyny takiego stanu rzeczy:
- interfejs OBD w twoim samochodzie nie jest przystosowany, aby rejestrować wszystkie zmiany (opis niżej)
- interfejs OBDII ELM327 jest za wolny w komunikacji i przetwarzaniu (mniej prawdopodobne)

Z tego co czytałem, to OBD w założeniach miał służyć do diagnostyki ogólnej, czyli podpinasz się do niego i wiesz z czym masz problem (na przykład masz jakieś problemy z pompą paliwa, to dostajesz kod błędu, że coś nie tak z pompą paliwa itp.).

https://en.wikipedia.org/wiki/OBD-II_PIDs
Tutaj masz opis jak działa odczyt PID-a (domyślam się, że z niego korzystasz).
Prawdopodobnie ramka CAN która jest wysyłana przez interfejs OBD ma niski priorytet (priorytetowanie ramek w sieci CAN; chyba, że Twój samochód używa czegoś innego, choć wątpię) i długo musi czekać na wolną magistralę, przez co czas odczytu tej informacji jest tak długi.

Sprawdź szybkość działania w już gotowym programie a najlepiej w kilku. Wtedy będziesz miał pewność, czy to wina interfejsu, czy może odpytujesz interfejs w nieoptymalny sposób.

Możesz spróbować się podpiąć bezpośrednio do magistrali komunikacyjnej swojego samochodu, a wtedy będziesz miał na bieżąco podgląd co jest wysyłane przez każde z urządzeń. Minusem takiego rozwiązania jest posiadanie wiedzy co czym jest w samochodzie, bo bez tego to możesz rok spędzić na rozkodowywaniu poszczególnych ramek.

To co napisałem oparte jest na wiedzy głównie z wikipedii i nie musi mieć odzwierciedlenia w rzeczywistości, tak więc głowy za to nie dam.
Ostatnio zmieniony 10 lis 2013 10:40 przez milten, łącznie zmieniany 3 razy.
Obrazek
pwok
Posty: 7
Rejestracja: 22 paź 2013 21:23
Wersja środowiska: LabVIEW 2012

Re: LabView & OBD2

Post autor: pwok »

Dziękuję za odpowiedź.

Mój program oparty jest na maszynie stanów. W każdym ze stanów przez VISA write wysyłam do sterownika komunikaty. Następnie w pętli while Visa read odczytuje to co przychodzi ze sterownika i sprawdza czy wystąpił znak ">" 0x3E, jeśli tak kończy pętlę i przechodzi do następnego stanu, np. odczytu obrotów silnika. Pętla musi odczekiwać 25ms za każdym razem, bez tego czasu pokazuje błędne odczyty.

Przykład:
Od sterownika dostaję:

" " (puste)
010C
" "
" "
41 0C 0D 00
" "
>

Czyli jeden odczyt obrotów silnika trwa 25ms*(liczba komunikatów)= 150ms.
Można to jakoś przyspieszyć?
milten
Posty: 77
Rejestracja: 25 paź 2011 20:49
Wersja środowiska: LabVIEW 2012

LabView & OBD2

Post autor: milten »

Puste znaki, to po prostu brak jakichkolwiek danych na porcie. Dodatkowo powinien być jeszcze zwracany error, że osiągnąłeś timeout.

Co do samego przyśpieszenia, to nie wiem. Wygląda na to, że po prostu odczyt danych tyle trwa.

https://www.youtube.com/watch?v=vQSsUPrGLHs
Około 10 minuty widać opóźnienie jakie ma obrotomierz w samochodzie a ten używający OBD.

Najlepiej podeślij program, bo tak na sucho to ciężko powiedzieć.
Obrazek
ODPOWIEDZ