Zasadniczo nie jestem „samochodem”, więc mam nadzieję, że wyjaśnię to wystarczająco dobrze, aby uzyskać pomoc:
Wysyłając wiadomości do urządzenia OBD-II, otrzymuję jedną odpowiedź w większości testowanych samochodów. Jednak w przypadku samochodów, które najwyraźniej mają więcej niż jeden układ ECU, otrzymuję odpowiedź od każdego z nich. Na przykład, jeśli wyślę 01 0C
polecenie PID do pojazdu z 3 układami ECU, otrzymam 3 odpowiedzi, które są na ogół bardzo podobne, ale wciąż różne.
01 00
Komenda ma zwrócić 4 bajty, które stwierdza obsługiwane PID pojazdu, ale również zwraca 4 bajty dla każdego ECU - jedna jest w pełni uregulowana 4 bajty z kilkoma flagami z przerwami, podczas gdy inne wydają się mieć tylko garść flag włączonych (dotychczas te flagi wydają się zawsze flagami zawartymi w odpowiedzi „głównej”, ale nie jestem pewien, czy tak jest zawsze).
Przykład:
SENT: 01 00
RECEIVED:
00 BF BF AC D3 - This response has the most binary flags turned on
00 98 18 80 11 - 8 flags on here
00 98 18 80 13 - 9 flags on here
Ostatnie dwa wiersze składają się z flag, które są również oznaczone w pierwszej linii, ale linia 3 ma jedną dodatkową flagę, której nie ma linia 2.
Wydaje mi się, że być może istnieje jeden ECU, który kwalifikuje się jako „główny” układ, którego powinienem słuchać podczas wysyłania poleceń i (chyba) rozumiem, że mogę użyć maski / filtra CAN ID do zwracaj uwagę tylko na te, których potrzebuję.
Pytanie brzmi: czy naprawdę istnieje „podstawowy ECU”, na który powinienem zwrócić uwagę, czy też wszystkie te odpowiedzi są jednakowo ważne? Jeśli istnieje podstawowa, na którą muszę kierować, czy istnieje polecenie, które mogę wysłać, aby ustalić, które jest „najbardziej znaczące”?
Pojazdy testowane na:
2011 Chevy Cruze [2 ECUs]
2015 BMW M5 [3 ECUs]
2015 Range Rover Autobiography [3 ECUs]
Odpowiedzi:
Jeśli twój pojazd ma wersję 2008 lub nowszą, korzysta z protokołu can, możesz użyć polecenia AT CR, aby wybrać, z którego ECU chcesz słyszeć.
Oto jak:
wyślij
spowoduje to włączenie nagłówków, aby zobaczyć adresy ECU.
wysłać
jest to polecenie OBD pokazujące, które z pidów od 1-20 są obsługiwane.
twoja odpowiedź powinna brzmieć:
pokazuje to, że masz 2 ECU 7E8 (silnik) 7E9 (skrzynia biegów),
widziałem 5 zwróconych ECU: 7E8,7E9,7EA, 7EB, 7EC.
Aby usłyszeć tylko jeden ECU, wydajesz AT CRA xxx, gdzie xxx to adres ECU.
wyślij następujące
następnie
wróci:
wysłać
aby wyłączyć nagłówki, a następnie wyślij:
i wrócisz właśnie
Jeśli twój pojazd ma 29 bitów, to odpowiedź 0100 będzie wyglądać mniej więcej tak:
pokazuje to 2 ECU 18DAF118 (skrzynia biegów) i 18DAF110 (silnik).
wysłać
usłyszeć tylko z silnika.
źródło
CAN nie działa tak, jak myślisz.
CAN nie jest oparty na modułach, jest oparty na komunikatach. Żaden moduł nie mówi bezpośrednio do żadnego innego modułu. W CAN moduł generuje komunikat z adresem, który identyfikuje dane, które będą zawarte w komunikacie. Również adres określa ważność wiadomości. Im niższy adres, tym wyższy priorytet.
Na przykład ABS przekaże prędkość pojazdu. Każdy inny moduł, który potrzebuje danych, wczyta je.
Nie ma modułu ważniejszego niż jakikolwiek inny, ważny jest priorytet komunikatu.
źródło