Отримані кадри від транспортних засобів з декількома чіпами ECU


10

Я, як правило, не "людина в машині", тому, сподіваюся, я можу пояснити це досить добре, щоб отримати тут допомогу:

Надсилаючи повідомлення на пристрій OBD-II, я отримую одну відповідь у більшості тестованих автомобілів. Однак з автомобілями, які, мабуть, мають більше одного мікросхеми ECU, я отримую відповідь від кожного з них. Наприклад, якщо я надсилаю 01 0C команду PID на транспортний засіб з 3 мікросхемами ECU, я отримую 3 відповіді, які, як правило, дуже схожі, але все ж різні.

01 00Команда повинна повертати 4 байта, що встановлюють підтримуваний ИДП транспортного засобу, але також повертає 4 байт для кожного ECU - один з них є повністю конкретизовано 4 байта з декількома прапорами і вимикається, в той час як інші , здається, тільки увімкнено декілька прапорів (поки що ці прапори, здається, завжди є прапорами, які включені до "головної" відповіді, але я не впевнений, якщо це завжди так).

Приклад:

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

Останні два рядки складаються з прапорів, які також позначені у першому рядку, але у рядку 3 є один додатковий прапор, якого у рядку 2 немає.

Мені здається, що, можливо, є один ECU, який кваліфікується як "основний" чіп, який я повинен слухати, коли я надсилаю команди, і (я думаю) я розумію, що я можу використовувати маску / фільтр CAN ID для зверніть увагу лише на ті, що мені потрібні.

Питання: чи дійсно є "первинний ECU", на який я повинен звернути увагу, чи всі ці відповіді однаково важливі? Якщо є основний, на який я повинен орієнтуватися, чи є команда, яку я можу надіслати, щоб визначити, яка є "найбільш важливою"?

Транспортні засоби перевірені на:

2011 Chevy Cruze               [2 ECUs]
2015 BMW M5                    [3 ECUs]
2015 Range Rover Autobiography [3 ECUs]

1
Може бути корисним сказати нам, на яку марку та модель ви спробували це. Що я знаю, це те, що автомобілі з 3 ECU, як правило, встановлюються з двома звичайними ECU (по одному для кожного банку двигунів) і одним "головним" ECU, який управляє сигналами до / з (і, можливо, між?) Двома звичайними ECU. "Головний" ECU насправді не набагато більше того, тому якщо встановлено діагностичний код несправності, джерелом цього буде звичайний ECU, а не "master". Однак, можливо, вам доведеться опитати головного через інтерфейс OBD-II, щоб отримати DTC. Я б хотів, щоб я міг вам допомогти більше, ніж це, але це все, що я маю зараз.
Заїд

1
Я програмний інженер, але не використовував OBD або CAN, але чи допомагає ця сторінка взагалі? Схоже, має бути спосіб фільтрувати повідомлення.
JPhi1618

@Zaid Дякую за додаткову інформацію. Я оновив своє запитання щодо автомобілів, на яких я тестував, але це щось, що мені потрібно вирішити для будь-якої кількості даних транспортних засобів; це може не мати значення, залежно від точної відповіді, яку я повинен очікувати при надсиланні непідтримуваних ПІД, але я просто хотів охопити всі мої бази
Rein S

@ JPhi1618 Це насправді майже той самий контекст, який мені це знадобилось. Це, можливо, це шлях, який я повинен слідувати! Дякую купу за посилання, я заглиблююсь у неї трохи глибше.
Rein S

1
Якщо ви знайдете що-небудь цікаве, що, на вашу думку, ви можете скласти "відповідь", поверніться і дайте відповідь на власне запитання. Це повністю дозволено.
JPhi1618

Відповіді:


5

Якщо ваш автомобіль 2008 року або новіший, він використовує протокол can, ви можете скористатися командою AT CR, щоб вибрати, з якого ECU ви хочете почути.
Ось як:
надіслати

AT H1

це включить заголовки, щоб побачити адреси ECU.
надіслати

0100

це команда OBD, щоб показати, який із під-файлів від 1-20 підтримується.
ваша відповідь повинна бути такою:

7E8064100BE3EA813
7E906410098188013
>

це показує, що у вас є 2 ECU 7E8 (двигун) 7E9 (коробка передач),
я бачив 5 повернених ECU: 7E8,7E9,7EA, 7EB, 7EC.
Для того, щоб почути лише один ECU, ви видаєте AT CRA xxx, де xxx - адреса ECU.
надіслати наступне

AT CRA 7E8

потім

0100

повернеться:

7E8064100BE3EA813

надіслати

AT H0

щоб вимкнути заголовки, потім надішліть:

0100

і ти повернешся просто

4100BE3EA813

Якщо ваш автомобіль становить 29 біт, то резонанс 0100 буде виглядати приблизно так:

18DAF11806410088180013
18DAF110064100BE5FA813
>

це показує 2 ECU 18DAF118 (трансмісія) та 18DAF110 (двигун).
надіслати

AT CRA 18DAF110

чути просто з двигуна.


Привіт !! Я працюю над прототипом для системи діагностики транспортних засобів. Я переглянув вашу відповідь, але у мене мало запитів ... 1) чи є якась команда AT, щоб перевірити, скільки ECU є. 2) коли заголовок вимкнений , ніж чому тільки один рядок «4100BE3EA813» відображається не як «410098188013»
Dev

4

МОЖЕ працювати не так, як ви думаєте.

CAN не заснований на модулі, це на основі повідомлень. Жоден модуль не спілкується безпосередньо з будь-яким іншим модулем. У CAN модуль генерує повідомлення з адресою, яка ідентифікує дані, які будуть міститись у повідомленні. Також адреса надає важливість повідомлення. Чим нижча адреса, тим вище пріоритет.

Наприклад, ABS передасть швидкість автомобіля. Кожен інший модуль, який потребує даних, прочитає їх у.

Немає модуля, який важливіший за будь-який інший, важливий пріоритет повідомлення.


Просто слідкуйте за цим питанням: Якщо немає жодного модуля, який би важливіший за інший, чи є якась причина для фільтрації відповідей з декількох ECU? Наприклад, якщо я вимагаю RPM для BMW M5, я отримую 3 відповіді (вони, як правило, схожі, але ніколи абсолютно не однакові). Чи варто просто "довіряти" першій відповіді як точному читанню? Будь-яка причина не просто піти з першою відповіддю на кожен запит?
Rein S

Якщо всі відповіді мають однакову адресу, то довіряйте першому. Якщо вони не мають однієї адреси, тоді довіряйте тій, що має найвищий пріоритет. Найвищий пріоритет має найнижчу адресу.
vini_i
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.