Как считать ошибки obd2

Добавил пользователь Валентин П.
Обновлено: 20.09.2024

С ELM 327 не знаком только ленивый автолюбитель. Так как это самый доступный способ самостоятельно произвести чтение ошибок в своём автомобиле и при удачном стечении обстоятельств самостоятельно решить возникшую с автомобилем проблему.

ELM 327 это универсальный микроконтроллер, который позволяет читать данные из блоков управления автомобилем. Для используются специальные протоколы, “правильная” ELM 327 поддерживает 12 протоколов и это достаточно много.

Долгое время ELM 327 позволял только прочитать ошибки и стереть их. Проблема заключалась не в самом адаптере, а в программном обеспечении для него – не было хороших программ, которые бы раскрывали потенциал адаптера. Что и логично, разработка ПО занятие не из дешевых, особенно в данном случае. Но время идет, популярность особо не падает, как итог появляется достойный софт. В данном заметке хочу поговорить о программах для смартфонов с операционной системой Android , некоторые из перечисленных программ доступны в том числе и для пользователей iOS .

Начнём с программы CarScanner , субъективно, но на мой взгляд, это лучшее, что есть сегодня на рынке доступного ПО. Программа условно бесплатная, работает без оплаты с небольшим рекламным блоком внизу и некоторыми ограничениями. В любом случае доступ к Про версии стоит всего 260 рублей. Начать стоит с того, что программа очень простая в использовании и с русским языком, не нужно настраивать какие-то PID , что где-то искать и скачивать, всё доступно сразу, просто выбираешь профиль подключения со своим авто и получаешь данные.

Программа видит блоки, из которых она может вычитать ошибки, программа сама находит все датчики, данные с которых может получить, а также все тесты, результаты которых можно посмотреть. Самое приятное, она позволяет производить кодирование и адаптации, проще говоря включать скрытые функции автомобиля, об этом я более детально писал в заметке про то, что получилось активировать в моём автомобиле Skoda Rapid . При этом активации и сервисные функции доступны не только для VAG , уже точно есть Лада Vesta , есть Toyota (проверял на своём Rav 4) и много других автомобилей.

Вторая программа более узконаправленная и патриотичная (хотя для французского ВАЗ это уже не так актуально). Программа называется OpenDiag , читать информацию из блока управления двигателем можно бесплатно. Но если захотеть немного больше, то придется доплатить небольшие деньги за открытие дополнительных блоков – программа может читать блок безопасности, блок ЭУР и блок АКПП (вариатор Весты, АКПП Гранты). Так, например, на Весте пробег пишется в блок ЭУР, а в блок безопасности пишется количество циклов зажигания и время работы.

На приборной панели автомобиля горит ошибка двигателя? Рассмотрим порядок действий для определения причины возникшей неисправности.

В качестве OBD-II адаптера возьмем один из самых дешёвых и популярных — автосканер ELM327.

Для диагностики двигателя и определения кода ошибки понадобятся:

  • Ноутбук, планшет или смартфон с Android/iOS (подойдёт одно любое устройство из перечисленного).
  • Адаптер ELM327 с подходящим к вашему устройству типом связи (автосканер выпускается в различных версиях — USB, Wi-Fi и Bluetooth). Уточняйте у продавца заранее, будет ли предлагаемый им адаптер совместим с вашим компьютером или смартфоном.
  • Специальная программа для интерпретации полученных от автосканера данных (для определения кода ошибки подойдут бесплатные версии программ) — Torque Lite.

Общий порядок действий (на примере устройства с Android и адаптера ELM327 с Bluetooth связью):

  1. Подключаем адаптер ELM327 к специальному диагностическому разъёму OBD2 в вашем автомобиле.
  2. Включаем зажигание (можно запустить двигатель — автосканер будет работать даже в движении). На адаптере должны загореться светодиоды.
  3. Включаем Bluetooth в Android.
  4. В настройках Android заходим в беспроводные сети Bluetooth, далее выбираем поиск нового устройства для сопряжения. Идентификатор автосканера обычно OBDII, но может быть и другое имя. Стандартный пароль для сопряжения 1234 или 0000 (в случае неудачи попробуйте 9999, 1111, 5678, 6789).
  5. Открываем диагностическую программу на Android (например, Torque) и следуем инструкции ниже.

Настройка программы Torque для ELM327 и определение кода ошибки

Первым делом подружим программу с нашим диагностическим сканером.

Настройка программы в скриншотах

Возникли проблемы при настройке? Задайте вопрос в комментариях указав модель автомобиля и год его производства, а также как можно больше информации об используемом адаптере и переносном устройстве.

Сканируем ЭБУ на ошибки

Возвращаемся на главный экран программы. Желательно настроить профиль диагностируемого автомобиля, однако вы уже можете провести диагностику.

Также программа позволяет сбросить ошибки (как это сделать показано на скриншоте).

oshibki-torque

sbros-oshibok-torque

Если программа показывает, что в ЭБУ нет сохранённых кодов ошибок, то всё в порядке, либо ошибки были сброшены.

Адаптер елм 327 ( torque )— все подключается- но по ошибкам выдает — В эбу нет сохранённых кодов ошибок — хотя чек горит и проверял другим адаптером- ошибки выбивает
Подскажите в чем дело?

Современные автомобили имеют достаточное количество электроники, чтобы самостоятельно "рассказывать" о имеющихся неисправностях. Зачастую компьютерная диагностика позволяет быстро найти проблемный узел и произвести ремонт без лишних временных и финансовых трат. Считать ошибки с блоков управления можно разными способами. Я расскажу о методе, который подходит для любого автовладельца. Главным его преимуществом является доступность, диагностика этим способ не требует использования дополнительного оборудования.

Информация о наличии ошибок выводится блоком управления на приборную панель автомобиля. Самый известный сигнал неисправности – Check Engine . Он выглядит как схематически нарисованный двигатель. При наличии ошибки "чек" горит как до запуска силового агрегата, так и после. На исправном автомобиле он должен гаснуть. Мигающий Check Engine свидетельствует о пропусках в системе зажигания.

Многие автомобили оснащены функцией диагностики путём замыкания контактов в OBD2 разъёме. Такое решение позволяет водителям самостоятельно считать код ошибки. Затем им достаточно найти расшифровку полученного значения в Сети и определить, какой узел сообщил о неисправности. Для реализации такой возможности мы воспользуемся обычной скрепкой или невидимкой для волос .

Изначально следует найти, где именно находится разъём OBD2 в вашем автомобиле. Как правило, он располагается под рулевой колонкой или в подкапотном пространстве . Точную информацию можно найти в Сети или в руководстве по эксплуатации. Затем берём скрепку и распрямляем её. Можно воспользоваться любым другим тонким металлическим предметом, который хорошо гнётся.

Для проведения диагностики нужно замкнуть определённые контакты на OBD2 разъёме. У каждой модели автомобиля они разные , поэтому информацию также придётся предварительно узнать в документах к автомобилю или интернете. В нашем случае были замкнуты контакты 12 и 19.

Садимся в автомобиль и включаем зажигание. Сигнал Check Engine на незапущенном двигателе начнёт мигать. Сперва будут длинные сигналы, затем короткие. Длинные сигналы означают десятки, короткие – единицы . Запоминаем полученные значения и сопоставляем их. Например, если "чек" мигнул три раза длинно и семь раз коротко, то код ошибки – 37. По аналогии можно считывать информацию по ошибкам с других блоков управления.

Выбор подключения

Изначально необходимо пояснить что для подключения к авто будет использоваться ELM327 адаптер. ELM327 – это микросхема, которая позволяет преобразовать протоколы, используемые в диагностических шинах автомобилей в протокол RS232, которым мы и будем передавать данные. За счет того что передача данных по протоколу RS232 происходит последовательно возникает первая проблема – скорости передачи данных, которую мы постараемся обойти в одном из следующих пунктов.

Существует несколько вариаций адаптера ELM327, которые классифицируются по способу передачи данных – Bluetooth, WIFI, USB. Исходя из того что целью разработки является мобильное устройство под операционной системой Android можно подобрать две наиболее подходящие версии ELM327, такие как Bluetooth и WIFI. Так как способ получения и обработки данных один, а отличаются они всего лишь вариантами подключения к адаптеру, то можно выбрать всего один, организовать при помощи него диалог, а после добавить остальные варианты подключения.

ELM327 1.5 vs ELM327 2.1


Одной из первых проблем, с которыми можно столкнуться стала проблема выбора непосредственно адаптера, в нашем случае Bluetooth. Оказывается если вам необходимо поддерживать все (по крайней мере большинство) автомобилей необходимо выбирать версию v1.5 вместо v2.1, что на самом то деле необходимо несколько раз уточнить при покупке адаптера, потому как продавцы пытаются выдать версию адаптера не за ту, которая есть на самом деле, т.к. они особо ничем не отличаются. На деле же в версии v2.1 отсутствует поддержка протоколов J1850 PWM и J1850 VPW, что говорит о том, что у вас не получится подключиться к автомобилям, которые используют эти протоколы.

Подключение

Подключение к адаптеру происходит в несколько этапов:

  • Подключение к адаптеру (Bluetooth, WIFI)
  • Отправка инициализационных команд (инициализационной строки)

AT Z [reset all]
Сброс настроек адаптера до заводского состояния.
AT L1-0
Включить/Отключить символы перевода строки.
AT E1-0
Echo on – off
AT H1-0
Headers on – off
AT AT0-1-2
Adaptive Timing Off — adaptive Timing Auto1 — adaptive Timing Auto2
AT ST FF
Установить таймаут на максимум.
AT D [set all to Default]
Сброс настроек в исходное, настроенное пользователем состояние.
AT DP [Describe the current Protocol]
Сканер способен самостоятельно определять протокол автомобиля, к которому он подключен.
AT IB10 [set the ISO Baud rate to 10400]
Команда устанавливает скорость обмена данных для ISO 9141-2 и
ISO 14230-4 10400
AT IB96 [ set the ISO Baud rate to 9600]
Команда устанавливает скорость обмена данных для ISO 9141-2 и
ISO 14230-4 9600 для протоколов 3,4,5.
AT SP h [ Set Protocol h]
Команда выбора протокола h, где h:

0 – Automatic;
1 — SAE J1850 PWM (41.6 Kbaud);
2 — SAE J1850 VPW (10.4 Kbaud);
3 — ISO 9141-2 (5 baud init, 10.4 Kbaud);
4 — ISO 14230-4 KWP (5 baud init, 10.4 Kbaud);
5 — ISO 14230-4 KWP (fast init, 10.4 Kbaud);
6 — ISO 15765-4 CAN (11 bit ID, 500 Kbaud);
7 — ISO 15765-4 CAN (29 bit ID, 500 Kbaud);
8 — ISO 15765-4 CAN (11 bit ID, 250 Kbaud);
9 — ISO 15765-4 CAN (29 bit ID, 250 Kbaud);
AT SP Ah [Set Protocol h with Auto]

Команда устанавливает по умолчанию протокол h, если подключение по протоколу h не удалось, тогда адаптер начинает автоматический подбор протокола.

Исходя из описанных выше команд, формируем инициализационную строку.

Так же желательно обратить внимание на команду APSP0, таким образом мы устанавливаем по умолчанию автоматический подбор протокола, это может занять некоторое время.

Соответственно если пользователь знает какой у его авто протокол, то используя возможность смены протокола подключения он может поменять 0 на номер его протокола.

Считывание диагностических данных

Для считывания диагностических данных используются специальные команды PID’s.
PID (Parameter id’s — Бортовые диагностические идентификаторы параметров) – коды, которые используются для запроса показателей определенных датчиков автомобиля.

Основные пиды можно найти в Википедии, там полный набор основных команд, которые должны поддерживать все автомобили. Так же есть наборы команд для определенных марок и типов автомобилей, эти наборы предоставляются за отдельную плату. В нашем случае приложение заточено на базовую диагностику автомобилей соответственно мы используем базовый набор команд.

Также есть возможность получать текущие данные от автомобиля при этом команда получения данных от авто будет иметь вначале 01, указывая на то что мы хотим получить real data. Если же мы хотим получить сохраненные данные автомобиля, то вначале команды необходимо указать 02. Например, команда для получения текущей скорости автомобиля – 010D, а для получения сохраненной скорости – 020D.

Если внимательно посмотреть на то количество команд, которое предоставляется открытыми ресурсами, то можно как раз и заметить ту проблему, о которой я писал в самом начале, а именно проблема скорости ответа адаптера. Так как отправка и получение команд идет последовательно, то для того чтобы получить показания датчика на текущий момент времени необходимо дождаться ответа на все предыдущие команды. Соответственно если запрашивать на получение все команды, то большая вероятность того что обновление реальных данных будет происходить очень медленно. Но и эту проблему можно решить, если воспользоваться командами, которые отобразят только те команды, что существуют в автомобиле. Например:

0100 – PIDs supported [01 — 20]
0120 – PIDs supported [21 — 40]
0140 – PIDs supported [41 — 60]
0160 – PIDs supported [61 — 80]
0180 – PIDs supported [81 – A0]
01A0 – PIDs supported [A1 — C0]

Я продемонстрирую как определить какие датчики присутствуют в автомобиле при помощи одного из пидов. Например:

  • 0100 \\ запрос
  • BB1E3211 \\ ответ от авто


Используя следующую табличку можем определить какие пиды поддерживаются нашим автомобилем, начиная от 01 до 20:


Исходя из получившихся данных можем определить, что наш автомобиль поддерживает следующие пиды:


Теперь вместо отправки всех 32 команд и ожидания ответа на них, несмотря на то, что некоторые могут отсутствовать, мы будем использовать всего 15 команд. Но и это не предел так называемой оптимизации. Для того чтобы данные обновлялись еще быстрее советую запрашивать только данные о тех датчиках, которые отображаются на экране. Хотя это ограничивает некоторый функционал приложения. Например, запись истории.

Считывание и расшифровка ошибок автомобиля

Ошибки автомобиля тоже могут быть различными и для них тоже существуют отдельные команды. Например:

  • 03 – Для отображения сохраненных кодов ошибок
  • 0A – Для отображения постоянных кодов ошибок.


А теперь пояснение.



3, 4, 5 символы формируются по этой таблице:


Исходя из этого можем попробовать разобрать следующий ответ 0001000000111110


Код ошибки: P103E

Эпилог

На данном этапе мы разобрались в том, каким образом организовать диалог с адаптером, посылать ему команды, получать и расшифровывать его ответы. Это большая часть работы, если считать то, сколько времени уходит на изучение материала, но в то же время довольно таки интересная. За пределами этой статьи осталось множество проблем связанных с визуальным интерфейсом, а также множество дополнительных функций, таких как добавление новых пидов из файла, стандартный и расширенный способ подключения к адаптеру и построения графиков.

Матвиенко Александр, Хоссейн Фахр.
P.S. Оригинальную английскую версию статьи можно найти здесь

Читайте также: