Scenariusz
Podczas zbierania zestawów danych samochodowych przez rejestrowanie ruchu CAN przez port OBD-II z prawdziwego pojazdu do wykrywania włamań, mam na przykład pewną ramkę CAN z 11-bitowym identyfikatorem CAN 0x00a0
.
Pytanie
Wszyscy wiemy, że identyfikator CAN reprezentuje priorytet wiadomości i znaczenie, ale jaki jest związek między identyfikatorem CAN a ECU? Czy każdy ECU ma wyłączny identyfikator CAN lub różne ECU (takie jak ECU, który kontroluje poduszkę powietrzną i inne) mogą wysyłać ramkę CAN z tym samym identyfikatorem CAN w pewnych okolicznościach?
Odpowiedzi:
Nie ma silnego sprzężenia między adresem CAN a modułem w magistrali. Im niższa wartość identyfikatora, tym wyższy priorytet w autobusie. Z pamięci działa to w sprzęcie, ponieważ niższa liczba pociąga za sobą autobus i depcze na identyfikatorze o wyższym identyfikatorze.
Różne komunikaty mogą być przekazywane wokół magistrali CAN przy użyciu ich unikalnego identyfikatora i 8 bajtów, które są następstwem przesyłania danych sygnału.
Na przykład moduł ABS prawdopodobnie miałby niską identyfikację, aby wysłać wiadomość do wszystkich węzłów odsłuchowych, że tryb antypoślizgowy pojazdu jest aktywny. Komunikat o niskim priorytecie (większy identyfikator CAN) mówi, że moduł zbiornika paliwa zgłosi poziom napełnienia zbiornika do zestawu wskaźników.
Protokół OBD działa w podobny sposób, narzędzie skanujące dołącza do magistrali jako węzeł przy użyciu adresu takiego jak 0x7DF i wysyła żądanie danych, używając 8 bajtów danych, które następują po ID. Każdy węzeł na magistrali (na przykład ECU) może odpowiedzieć odpowiednimi danymi, których żąda narzędzie skanujące, robi to przy użyciu adresu z zakresu 0x7E8-> 0x7EF (zakres pozwala na odpowiedź wielu węzłów, 0x7E8 jest dość typowy - strona wiki wyjaśnia protokół tutaj https://en.wikipedia.org/wiki/OBD-II_PIDs
źródło