Дослідження ЕБУ через J2534 адаптер
В останні кілька років отримали широке поширення адаптери ELM327. Розповсюдження своє вони отримали завдяки налагодженій роботі китайської промисловості. Для рядового автовласника можливостей цього адаптера цілком достатньо - переглянути параметри роботи двигуна, подивитися помилки. Але не всі операції з ЕБУ можна виконати через адаптер ELM327. Причина швидше криється в його апаратних можливостях - він зібраний на базі не нового процесора PIC, і для роботи з сучасними високонавантаженими CAN шинами його просто недостатньо. На сьогоднішній день набирають популярності адаптери, що працюють за стандартом J2534. Його підтримка з'являється в різних діагностичних програмах для користувачів (наприклад, ScanXL, FORScan), а також професійної дилерської діагностики (наприклад, Techstream для Toyota, MDI для GM). При цьому через дилерську діагностику можна зробити такі речі, як розширена діагностика всіх систем автомобіля, налаштування параметрів роботи кожного з них, перепрограмування ЕБУ, прив'язка ключів і т.д.
У цій статті я хочу розповісти про роботу з ЕБУ через адаптер J2534. Розповім я це все на прикладі ЕБУ ACDelco автомобіля Chevrolet Aveo, CHIPSOFT J2534 адаптера та інженерної програми DrewTech J2534 Tool.
Отже, запускаємо програму, вибираємо J2534 пристрій, через який будемо працювати і тиснемо "Load DLL". Якщо пристрій підключено, то в нижньому лівому куті вікна програми побачимо інформацію про протоколи, які підтримує адаптер:

Потім натискаємо кнопку "Open" і отримуємо докладну інформацію про адаптер:

Внизу вікна у рядку статусу відображається результат виконання команди. Якби виникла помилка, то вона була написана тамі там же було її розшифрування. Вибираємо протокол ISO15765 і натискаємо "Connect", швидкість BaudRate повинна бути 500000:

Тепер потрібно настроїти фільтрацію повідомлень, які будуть оброблятися. Справа в тому, що в CAN шині сучасного автомобіля "гуляє" дуже багато CAN пакетів (у мене на заведеній Kia Carens в середньому проходить за секунду близько 2000), які нас зараз не цікавлять. Щоб вони нам не заважали, ми вводимо фільтрацію лише тих, хто нас цікавить. Переходимо на закладку "Filters", в полях Mask вводимо "ff ff ff ff", у полі Pattern - "00 00 07 e8", у полі Flow Control - "00 00 07 e0". Tx Flags встановлюємо 0x00000040, Тип фільтра встановлюємо як "Flow" та натискаємо "Apply":

Тепер можемо надсилати команди на ЕБУ. Наприклад, відправимо команду отримання VIN-коду від ЕБУ. Переходимо на вкладку "Messages" та в полі "Scratch Pad" вводимо "00 00 07 E0 1A 90". Це запит на отримання VIN коду від ЕБУ (00 00 07 E0 - це CAN ідентифікатор одержувача повідомлення, тобто ЕБУ двигуна, 1A - запит на отримання ідентифікаційних даних, 90 - отримати VIN код). Тепер необхідно запустити цикл опитування ЕБУ, щоб отримати результат виконання запиту. Для цього натискаємо кнопку "Start". Після цього можна відправити повідомлення, натиснувши кнопку "Send". Якщо все зроблено правильно, то побачимо таку картинку:

Стрілки з написом "out" показують запити, які були відправлені на ЕБУ. Стрілки з написом "in" показують відповіді, отримані від ЕБУ. У нашому випадку ми отримали у відповідь "4B 4C 31 54 47 35 36 45 38 39 42 33 38 30 32 37 31", що відповідає коду VIN KL1TG56E89B380271.
Щоб закрити з'єднання, достатньо закрити програму.
Описаний у статті приклад працюватиме набільшості сучасних автомобілів, які працюють по CAN шині. Не працюватиме точно на Honda. Це пов'язано з тим, що ЕБУ Honda використовують інший ідентифікатор CAN.
Дехто може запитати, а чи не зламаю я щось, якщо таким чином полезу до ЕБУ? Відповім, що ні. Для виконання критичних операцій завжди потрібно пройти парольний доступ (який індивідуальний у кожного виробника і навіть у конкретної марки авто). Тому не знаючи його, щось серйозне з наслідками для ЕБУ та авто зробити не можна.
Для тих, хто хоче глибше розібратися в тому, які команди існують і як інтерпретувати відповіді ЕБУ, надішлю їх до опису стандарту ISO14230-3. У ньому це описано.