Диагностический разъёма OBDII: можно ли его ”приручить”

Идея не новая, но вопросов много. С одной стороны, можно снять практически любые данные, а с другой стороны, OBDII похож на лоскутное одеяло, т.к. общее количество физических интерфейсов и протоколов напугает любого. А объясняется всё тем, что к моменту появления первых версий спецификаций OBD большинство автопроизводителей уже успели разработать что-то своё. Появление стандарта хоть и навело некоторый порядок, но потребовало включения в спецификацию всех интерфейсов и протоколов, которые на тот момент существовали, ну, или почти всех.

3e75cdee22b04aba8ba180a24448df2a.PNG

В OBDII разъёме по стандарту J1962M присутствуют три стандартных интерфейса: MS_CAN, K/L-Line, 1850, там же плюс аккумулятора и две земли (сигнальная и просто масса). Это по стандарту, остальные 7 из 16 выводов – ОЕМ, то есть каждый производитель эти выводы использует как ему заблагорассудится. Но и стандартизованные выводы зачастую имеют расширенные, продвинутые функции. Например, MS_CAN может быть HS_CAN, HS_CAN может быть на других пинах (неоговоренных стандартом) наряду со стандартным MS_CAN., Пин №1 может быть: у форда – SW_CAN, у WAGов – IGN_ON, у КИА – check_engene. И т.д. Все интерфейсы также не были стационарны в своём развитии: тот же интерфейс K –Line изначально был однонаправленным, сейчас он двунаправленный., Бодрейт CAN интерфейса также растёт. Вообще, подавляющее большинство европейских автомобилей 90-х и начала нулевых вполне себе можно было продиагностировать имея только K –Line, а большинство американских – только SAE1850. В настоящее время общий вектор развития – это всё более широкое применение CAN, повышение скорости обмена., всё чаще видим и однопроводный SW_CAN.

Существует мнение, что англоязычный программист сидя на профильных(англоязычных же) форумах, закопавшись в тексты стандартов, может за “максимум 4-5 месяцев” построить универсальный движок, который со всем этим разнообразием справится. На практике это не так. Всё равно возникает потребность сниферить каждую новую машину., иногда даже одну и ту же машину, но в разных комплектациях. И получается, что заявляют о 800-900 типах поддерживаемых автомобилей, а на практике 10-20 реально оттестированных. И это система, –в РФ автору известны, по-крайней мере, 3 команды разработчиков, пошедших по этому тернистому пути и все с одинаково плачевным результатом: нужно сниферить/кастомизировать каждую модель автомобиля, а ресурсов/средств на это нет. И причина этого вот в чем: стандарт-стандартом, а каждый производитель когда вынужденно, а когда и преднамеренно вносит в свою реализацию что-то своё, стандартом не описанное. Кроме того, не все данные по-умолчанию присутствуют на разъёме. Есть данные, появление которых нужно инициировать (дать тому или иному блоку автомобиля команду передать нужные данные).

И вот тут на сцену выходят интерпретаторы шины OBDII. Это микроконтроллер, с набором интерфейсов, соответствующих стандарту J1962M, переводящий всё многообразие данных на разных интерфейсах диагностических разъёмов в язык, более удобный для приложений, например для приложений диагностики. Иными словами, всё многообразие протоколов расшифровывается теперь приложением, не важно, на чём работающим – на компьютере с Windows или на планшете/смартфоне. Первым массовым интерпретатором OBDII с открытым протоколом стал ELM327. Это 8-ми битный микроконтроллер MicroChip PIC18F2580. Пусть читателя не удивляет тот факт, что этот микроконтроллер является массовым прибором общего применения. Прошивка как раз проприентарная и реальная стоимость “PIC18F2580+FirmWare” составляет внушительные 19-24$. То есть сканер, выполненный на “честном” чипе ELM327 не может стоить меньше, чем 50 вечнозелёных президентов. Откуда же на рынке такое разнообразие сканеров/адаптеров с ценами “от 1000рублей”, спросите Вы? А это наши китайские друзья постарались! Уж как они клонировали этот чип, травили кристалл послойно или сниферили денно и ночно – оставим за кадром. Но факт остаётся: на рынке появились клоны (для справки: 8-ми битный контроллер MicroChip в оптовых закупках ныне стоит меньше доллара). Другое дело, насколько правильно эти клоны работают. Есть мнение, что “пока народ покупает дешёвые адаптеры, автоэлектрики без работы не останутся”. То есть покупает человек адаптер с мыслью “чего-нибудь там перезалить или настроить”., а результат получает иной, ну, то есть, не тот, на который рассчитывал. Ну например, вдруг начинает всеми своими огоньками мультимедиа-система моргать, или выскакивает ошибка, или вообще коробка в аварийный режим переходит. И хорошо, если без серьезных последствий – в большинстве случаев специалист с профессиональным оборудованием вылечит железного коня. Но случается и иначе. Здесь могут смешаться сразу несколько факторов: неправильный адаптер(клон), неправильный софт, неправильная связка адаптер+софт, ну и “кривые” руки тоже свою роль сыграть могут. Замечу, что адаптер на честном чипе от производителя с правильным софтом к плачевным результатам не приведёт, по крайней мере, автору о таких случаях не известно.
А что можно сделать с помощью такого адаптера? Ну наверное, самый частый случай, положить в бардачок “на всякий случай”. Посмотреть и сбросить ошибку, коль скоро та появится. Одометр сбросить перед продажей авто, или наоборот, “накрутить” если ты наёмный водитель. Включить какую-либо опцию в автомобиле, которая по-умолчанию выключена, а у официального дилера эта услуга платная. Обновление прошивок и переконфигурирование электронных блоков, всё-таки оставим специалистам, но большинство адаптеров позволяют и это. Кому-то понравится просто иметь больше информации о параметрах работы двигателя и других систем в виде красивой графики на планшете или смартфоне. Часто встречаются на дороге, почему-то таксисты, у которых андроид-планшет установлен перед приборной панелью и полностью её перекрывает, так вот: планшет этот скорее всего подключен к такому адаптеру по блютузу или по Wi-Fi. Есть и ещё целый ряд применений, это использование такого адаптера совместно с телематическим прибором (трекером) или сигнализацией. Подключение к диагностическому разъёму посредством такого адаптера позволяет малой кровью снимать данные, необходимые для мониторинга. В большинстве случаев такой метод обходится разработчику дешевле, да и сама установка проще, ведь исчезает необходимость в установке различных датчиков, всё (ну или почти всё) можно снять с OBDII.
Другое дело, что возможности чипа в настоящее время уже недостаточны и для использования в современных автомобилях. Где-то в середине нулевых годов пошли вверх скорости обмена по шине CAN, появился SW_CAN. Но самое главное: возросла длина (количество символов) в кодовых словах. И если аппаратно можно, через реле или банальный тумблер, приляпать к ELM327 костыли, которые позволят работать и с MS и с HS да и с SW релизами CAN, то на длинные кодовые слова вычислительной мощности PIC18F2580 с его 4 MIPS явно недостаточно. К слову, последняя версия ELM327 (V1.4) датируется 2009 годом. И использовать этот чип без “костылей” можно только для автомобилей выпуска до середины нулевых. Так что же делать. Выход, как ни странно есть, причём не один.
CAN-LOG, тоже интерпретатор, но не полного набора интерфейсов OBDII, а двух CAN шин. Оказывается, этого достаточно, чтобы в большинстве случаев снять всю необходимую информацию. Правда, далеко не у всех автомобилей обе CAN шины выведены на диагностический разъём. Значит, придётся подключаться под панелью приборов. А это не всегда приемлемо из соображений сохранения гарантии, правда есть вариант беспроводного съёма информации с шины, но это ещё дороже, да и достоверность снятых данных не 100%. Можно использовать как готовый прибор, подключив его посредством УАРТа или RS232, так и просто чип, интегрировав его на плату устройства с небольшим количеством дискретных компонентов. Стоимость прибора – конечно выше, чем стоимость аутентичного ELM327, но это компенсируется огромным списком поддерживаемых автомобилей и функций. Причём в список поддерживаемых автомобилей включены не только легковые автомобили, но и также грузовики, строительная, дорожная и сельскохозяйственная техника. CAN-LOG работает несколько иначе, чем ELM327 и его клоны. При подключении к шинам автомобиля необходимо выбрать и установить номер программы, соответствующей автомобилю. И это удобно, т.к. разработчику не нужно вникать во всё многообразие протоколов. (В ELM327 выбор автомобиля и тонкая настройка чипа отданы на откуп приложению).
Существуют и иные решения, позволяющие легко и изящно снимать данные с диагностического разъёма. Ну а вопрос о том, можно ли приручить штатный диагностический разъём, и как, каждый разработчик решит сам. Для парка автомобилей одной марки, можно попытаться написать свой софт, если конечно производитель не закрывает протоколы. А если телематическое устройство будет устанавливаться на разные модели, то разумнее использовать какой-либо из OBDII интерпретаторов.

© Geektimes