Как определить протокол эбу
Используемые протоколы и применяемость OBD-II-диагностики на автомобилях разных марок
В рамках OBD-II используются пять протоколов обмена данными - ISO 9141, ISO 14230 (также именуется KWP2000), PWM, VPW и CAN (также каждый из протоколов имеет несколько разновидностей - например, разновидности отличаются по скорости обмена информацией). В Интернете встречаются "таблицы применимости", где указываются перечни марок и моделей автомобилей и поддерживаемые ими OBD-II-протоколы. Однако, надо учитывать, что одна и та же модель с одним и тем же двигателем, одного года выпуска может быть выпущена для разных рынков с поддержкой разных протоколов диагностики (точно также протоколы могут различаться и по моделям двигателей, годам выпуска). Таким образом, отсутствие автомобиля в списках не означает, что он не поддерживает OBD-II, так же как и присутствие не означает, что поддерживает и, тем более, полностью поддерживает (возможны неточности в списке, различные модификации автомобиля и пр.). Еще сложнее судить о поддержке конкретной разновидности OBD-II-стандарта.
Общей предпосылкой для того, чтобы предположить, что автомобиль поддерживает OBD-II диагностику, является наличие 16-контактного диагностического разъема (DLC - Diagnostic Link Connector) трапециевидной формы (на подавляющем большинстве OBD-II автомобилей он находится под приборной панелью со стороны водителя; разъем может быть как открыт, так и закрыт легко снимаемой крышкой с надписью "OBD-II", "Diagnose" и т.п.). Тем не менее, это условие необходимое, но недостаточное! Получить справку о расположении разъемов (в том числе нестандартном) можно на странице "Информация и ПО". Также разъем OBD-II иногда устанавливается на автомобили, вообще не поддерживающие ни один из OBD-II-протоколов. В таких случаях необходимо пользоваться сканером, рассчитанным на работу с заводскими протоколами конкретной марки автомобиля - например, это касается автомобилей Opel Vectra B европейского рынка 1996-1997 гг. Для оценки применимости того или иного сканера для диагностики конкретного автомобиля необходимо определить, какой конкретно из OBD-II протоколов используется на конкретном автомобиле (если OBD-II вообще поддерживается).
Для этого можно:
1. Посмотреть в технической документации непосредственно к данному автомобилю (но не в общем руководстве по данной марке/модели!). Также полезно осмотреть все идентификационные таблички на автомобиле - возможно наличие таблички "OBD-II compliant" (поддерживает OBD-II) или "OBD-II certified" (сертифицировано на поддержку OBD-II);
2. Посмотреть в информационной базе данных, типа Mitchell-on-Demand и т.п. Однако, это также не абсолютный способ, так как база может содержать неточности, включать информацию по автомобилям, выпущенным для другого рынка и т.п. Естественно, использование специализированных дилерских баз по отдельной марке повышает степень достоверности информации;
3. Использовать сканер, позволяющий определить, какой из OBD-II протоколов используется на машине. Из предлагаемых нами приборов автоматически это сможет сделать Х-431 и OZEN MOByDic 2600. С помощью комплекта ScanTool Вы сможете это сделать вручную путем последовательной смены используемых адаптеров и проверки наличия связи с ЭБУ автомобиля. Если никаких предположений по используемому протоколу нет, то начинать перебор стоит с протокола ISO как наиболее распространенного (либо с протокола, указанного для диагностируемой машины в таблице);
4. Осмотреть диагностический разъем и определить наличие выводов в нем (как правило, присутствует только часть задействованных выводов, а каждый протокол использует свои выводы разъема).
Назначение выводов ("распиновка") 16-ти контактного диагностического разъема OBD-II (стандарт J1962):
02 - J1850 Bus+
04 - Chassis Ground
05 - Signal Ground
06 - CAN High (J-2284)
07 - ISO 9141-2 K-Line
10 - J1850 Bus-
14 - CAN Low (J-2284)
15 - ISO 9141-2 L-Line
16 - Battery Power (напряжение АКБ)
По наличию выводов можно ориентировочно судить об используемом протоколе при помощи следующей таблицы:
Изначально необходимо пояснить что для подключения к авто будет использоваться 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)
Отправка инициализационных команд (инициализационной строки)
Если с организацией подключения все понятно. Принцип работы такой же как и у любого 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 не удалось, тогда адаптер начинает автоматический подбор протокола.
Исходя из описанных выше команд, формируем инициализационную строку.
initializeCommands
= Arrays.asList("ATZ", "ATL0", "ATE1", "ATH1", "ATAT1", "ATSTFF", "ATDP", "ATSP0");
Так же желательно обратить внимание на команду 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:
Исходя из получившихся данных можем определить, что наш автомобиль поддерживает следующие пиды:
01, 03, 04, 05, 07, 08, 0C, 0D, 0E, 0F, 13, 14, 17, 1C, 20
Теперь вместо отправки всех 32 команд и ожидания ответа на них, несмотря на то, что некоторые могут отсутствовать, мы будем использовать всего 15 команд. Но и это не предел так называемой оптимизации. Для того чтобы данные обновлялись еще быстрее советую запрашивать только данные о тех датчиках, которые отображаются на экране. Хотя это ограничивает некоторый функционал приложения. Например, запись истории.
Считывание и расшифровка ошибок автомобиля
Ошибки автомобиля тоже могут быть различными и для них тоже существуют отдельные команды. Например:
03 – Для отображения сохраненных кодов ошибок
0A – Для отображения постоянных кодов ошибок.
Так как и с остальными командами ошибки автомобиля приходят в закодированном виде, соответственно, как и в остальных командах их нужно раскодировать чтоб получить необходимую информацию. Приведу пример работы декодирования ошибки. Код:
private final static char[] dtcLetters = ;
private final static char[] hexArray = "0123456789ABCDEF".toCharArray();
private void performCalculations(String fault) final String result = fault;
String workingData = "";
int startIndex = 0;
troubleCodesArray.clear();
if (dtc.equals("P0000")) continue;
>
troubleCodesArray.add(dtc);
>
> catch (Exception e) Log.e(TAG, "Error: " + e.getMessage());
>
>
А теперь пояснение.
3, 4, 5 символы формируются по этой таблице:
Исходя из этого можем попробовать разобрать следующий ответ 0001000000111110
Код ошибки: P103E
На данном этапе мы разобрались в том, каким образом организовать диалог с адаптером, посылать ему команды, получать и расшифровывать его ответы. Это большая часть работы, если считать то, сколько времени уходит на изучение материала, но в то же время довольно таки интересная. За пределами этой статьи осталось множество проблем связанных с визуальным интерфейсом, а также множество дополнительных функций, таких как добавление новых пидов из файла, стандартный и расширенный способ подключения к адаптеру и построения графиков.
Всем привет!
Вообщем решил приобрести себе OBD II кабель для диагностики.
Долго выбирал…прикидывал… правда не дочитал немного и ошибся.
Да бы не совершать Вам таких ошибок при выборе и покупке обращайте внимание на:
Основное правило — убедитесь, что в Вашем автомобиле есть разъём OBDII
Он установлен почти на всех автомобилях из Европы и США с годом выпуска от 1996 г., и большинством автомобилей из Японии с годом выпуска от 2003 г. Также адаптер совместим с автомобилями из Китая, оснащёнными разъёмом OBDI, но бывают и редкие исключения. Если Вы не знаете как выглядит разъём OBDII, проверить его наличие достаточно просто: найдите под капотом автомобиля или в дверном проёме идентификационную наклейку или металлическую пластину. На ней должно быть обозначение "OBD II" или "OBD2".
Если же колодка и распиновка не подходит то возможно вам подойдет K-line адаптер
Сегодня на рынке очень много моделей, марок и фирм разных адаптеров, поэтому выбор только за вами.
Поэтому важна сама распиновка (с чем я и ошибся вообщем при покупке)
По основным принципам разными являются Распиновки ЭБУ следующих моделей:
Январь 4 и GM
Bosch MP7.0 / M1.5.4
Январь 5.1 / VS5.1
Январь 7.2/M7.9.7
Bosch M17.9.7 (ВАЗ)
M74
НА ПРИМЕРЕ OBD II
Стандарт OBD-II: Диагностический коннектор
Внешний вид коннектора и колодки диагностики.
Вообще прошивок много очень и список их перечислять будет скучным.
(читайте в интернете)
2) Мы выбрали адаптер, купили, чешим руки диагностировать во всю.
Но прежде нам понадобятся программы для удобной и бесперебойной работы с этими адаптерами и "мозгами" нашего авто.
Их так же большое количество и различаются они по своему.
НЕБОЛЬШОЙ СПИСОК ЭТИХ ПРОГРАММ:
Краткий итог.
Остальное оборудование носит в основном вспомогательный характер, хотя его наличие более чем желательно. Это:
Дальше только дело рук и главное не торопитесь. читайте больше информации по вашему ЭБУ и руководства к нему и адаптеру.
Диагностика бортового оборудования OBD-II
- ISO 9141-2
- ISO 14230-4
- SAE PWM J1850 (Pulse-Width Modulation)
- SAE VPW J1850 (Variable Pulse Width)
- ISO 15765-4 Controlled Area Network (CAN)
Назначение выводов разьема приведено в таблице. Использование контактов 1, 3, 8, 9, 11-13 стандартом SAE не определо и производили могут использовать их по своему усмотрению.
Контакт | Назначение |
---|---|
1 | Не определен |
2 | Положительня линия SAE J1850 |
3 | Не определен |
4 | Корпус |
5 | Общий |
6 | CAN(H)ISO 15765 |
7 | K линия ISO 9141/14230 |
8 | Не определен |
9 | Не определен |
10 | Отрицательная линия SAE J1850 |
11 | Не определен |
12 | Не определен |
13 | Не определен |
14 | CAN(L) ISO 15765 |
15 | L линия ISO9141/142300 |
16 | +12 вольт батареи |
Что может дать OBD-II? Достаточно много, он позволяет определять и стирать коды неисправности, контролировать параметры работы двигателя в реальном времени, считывать информацию о серийном номере автомобиля и пр. Однако для чип-тюнинга производители используют собственные нестандартные проколы достула к ЭБУ, совместимые по электрических параметрам с ISO 9141/14230, например KW1281 (Audi, Volkswagen, Seat, Skoda), KW71 (BMW), KW82 (Opel). В новых автомобилях используется CAN протокол как для OBD-II так и для чип-тюнинга.
Pin | Signal | Description |
---|---|---|
2 | J1850 Bus+ | |
4 | CGND | Chassis ground |
5 | SGND | Signal ground |
6 | CAN High | J-2284 |
7 | K-LINE | (ISO 9141-2 and ISO/DIS 14230-4) |
10 | J1850 Bus- | |
13 | TC | Timing check - ignition advance angle adjustment or ABS slow codes out |
14 | CAN Low | J-2284 |
15 | ISO 9141-2 L-LINE | (ISO 9141-2 and ISO/DIS 14230-4) |
16 | +12V | Battery power |
Использование протколов:
1999-2003: ISO 9141
2004-2006: ISO 9141 or CAN
с 2007: TBD
Поддерживает ли мой автомобиль OBD-II?
Как определить какой протокол поддерживает электронным блоком управления автомобиля? Первое – можно поискать информацию в Инернете, хотя там много неточной и непроверенной информации. К тому же, многие автомобили выпускаются для разных рынков с различными протоколами диагностики. Второе – найти разьем и посмотреть какие контакты в нем присуствуют. Разьем обычно находистя под приборной панелью со стороны водителя. Протокол ISO 914-2 или ISO 14230-4 определяется наличием контакта 7 и отсуствием контактов 2 и 10, как показано в таблице. Замечу, что контакта 15 скорее всего не будет, так как L линия сегодня почти не используется.
Протокол | Pin 2 | Pin 6 | Pin 7 | Pin 10 | Pin 14 |
---|---|---|---|---|---|
ISO 9141/14230 | + | ||||
J1850 PWM | + | + | |||
J1850 VPW | + | ||||
ISO 15765 CAN | + | + |
EOBD стал стандартом в Европе начиная с 2001 года, а для дизельных двигателей начиная с 2004. Если ваш автомобиль выпущен до 2001 года то он может вообще не поддерживать OBD даже при наличии соответсвуещего разьема! Евросоюз даже оштрафовал Peugeot за не соответвие EOBD стандарту и после 2001 года. Например, Renault Kangoo 99 года не поддерживает EOBD, а Renault Twingo поддерживает! Те же самые автомобили сделанные для других рынков, например Турции, могут тоже не быть совместимыми с OBD протоколом. Вот далеко не полный список ЭБУ до 2001 года которые могут не поддерживать OBD:
- Alfa Romeo
- Citroen
- Fiat
- Peugeot
- Renault
OBD II Руководство пользователя
Начнем с режима $01 – Real-time powertrain data.
$02 (Freeze Frame)
$03 (Read Stored DTC)
$04 (Clear/information)
$05 (O 2 monitoring test results)
$06 (Monitoring test results for noncontinuously monitored systems)
$07 (Monitoring test results for continuously monitored systems)
$08 (Bidirectional controls)
Управление исполнительными компонентами. При активации данного режима сканер получает возможность прямого управления некоторыми исполнительными компонентами. Аналогичные функции поддерживаются практически всеми заводскими протоколами. Разница состоит в том, что в протоколе OBD II эта функция ориентирована прежде всего на исполнительные компоненты систем уменьшения токсичности, такие, как клапаны систем рециркуляции ОГ, продувки адсорбера и т.п. Сделано это для того, чтобы можно было оперативно проверить функционирование той или иной системы, не затрачивая время на тестовые поездки и мониторинг. Но такие проверки во многих случаях требуют наличия дополнительного оборудования и специальной информации. Поэтому пока режим $08 широкого распространения не получил. Возможно, ситуация изменится в лучшую сторону в ближайшие два-три года.
$09 (Vehicle information)
Описание интерфейса универсального сканера ELM327.
Схема подключения сканера ELM327.
PID'ы Toyota/Lexus.
Наш препод по физ. процессам в электронных цепях, дтн, так и говорил - "как работает транзистор, я не знаю"
У нас было веселее. Преподаватель по электротехнике валил всю группу вопросом "Как работает транзистор?"
По существу, если подавать питание +5, то нужно объединить нули питания от +5, массы авто и адаптера RS232. Т.е. 5 вольт должны быть двумя проводками. Но должно работать и от 12В бортовой сети если всё правильно собрано и исправно. Протоколы ЭБУ в программе перебирали? А транзисторы в адаптере вообще рабочие?
Протокол выбираю только - , пробовал и другие. Транзисторы рабочие, так как тест эхом проходит, но транзисторную схему уже отложил щас на микрухе из апс4 схему мучаю - результат точно такой же
Сегодня где-то вычитал что задержку , вроде, надо вместо 100, 200 ставить. В настройках порта
Должно быть то. А нет возможности подключиться заведомо рабочим адаптером - у знакомых или в сервисе?
год назад друг сканматиком диагностику делал, а шнурков заводских или заведомо рабочих нету. Завтра напарник на своей Ксюхе приедет, попробую на ней.
Подключался сейчас к ланосу Sohc 1,5 - результат тот же ((( получается проблема в драйверах. Когда уже уехал, сообразил, что не померял напряжение на К линии. У ланосов 12 или 5 ? Если там 12 , а у меня 12 откинуты - повлияет?
смотрел по поводу драйверов, пока не нашел, но вроде где то читал что ресерч дэу под 98 стабильнее работает, или это с железным ком портом?
с ПЛ2303 работать не должна!
Залез в RS232, а там и вправду - логика инверсная.
Единице соответствует высокое напряжение, а нулю - наоборот.
Стало быть классическая 2х транзисторная схема рассчитана на "железный" ком-порт (RS232).
Читайте также: