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



В 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 интерпретаторов.

Комментарии (29)


  1. mark_ablov
    20.10.2015 15:02
    +1

    Как показывает практика, через ELM327 можно сделать только generic-вещи.
    Более специфичные всё же делаются через дилерский софт / специализированные железки. Тот же VAGcom для вагов. Или StarDiagnost для MB (правда стоит он от $500 за китай не очень высокого качества). Есть еще, к примеру, CarSoft для мерсов + bmw.
    От ELM327 и сканеров CAN-шины чудес ждать не стоит совсем. Да, какие-то общие значения получить можно, ну там или пробег на приборке скрутить (а еще в паре мест, типа блока безопасности или коробки, — нет ;) ). Но если хотите глубоко разбираться в автомобильной системе, то это вообще лучше с логическим анализатором снимать сигналы и писать декодер + дизассемблировать прошивку, хотя бы в ECU или CAN-контроллера, благо IDA понимает используемые семейства процессоров (те, что мне попадались, по крайней мере).


    1. aivus
      20.10.2015 16:29

      Скорее тут дело в софте.
      Отписался ниже, что через соответствующий софт могу делать достаточно специфические вещи с машинкой.


      1. Urvin
        20.10.2015 16:51

        Дело и в софте, и в машине, и в начинке донгла.
        Небольшие правки и донгл уже не тот, что был до.


  1. ZloAlien
    20.10.2015 15:09
    +1

    Интересно то, что даже купив адаптер невозможно корректно снять информацию с автомобиля, поскольку в стандарте не оговорено, скажем так, по каким адресам сидят какие устройства. А табличка с этими данными стоит немалых денег.
    Это печально и что с этим делать — не понятно. Уже бы RS-232 внедрили бы при продаже прилогали распечатку с протоколами обмена с устройствами. Как вариант, предлагаю проголосовать за инициативу: Устранить монополию производителей на обслуживание производимых ими товаров (https://www.roi.ru/22439).
    Насколько я понимаю, такая ситуация родила желание отдельных товарищей заменять бортовой компьютер на нечто самодельное. Это конечно открывает огромные возможности в тонкой настройке автомобиля, однако на любой автомобиль такую поделку не поставишь. Ну что-же, будем ждать Arduino-авто.


    1. IronHead
      20.10.2015 15:43
      +2

      Был на хабре пост про создание своего ECU, в начале у человека не было даже понимания процессов работы двигателя, но в дальнейшем я следил за развитием проекта и он добился не плохих результатов (по сути у него получился свой контроллер на уровне таких моделей как Январь 5.1, только с полностью открытым софтом и железом). Дальше к сожалению я потерял интерес к данной разработке, и сейчас не могу привести ссылку на статью.


      1. Urvin
        20.10.2015 16:12
        +2


    1. Arkhunt
      20.10.2015 16:04

      Проблема еще кроется в том, что некоторые машины сваливают в CAN шину столько данных, что так с наскока и не поймешь, по какому адресу находится датчик открытой/закрытой двери, вставленного ключа или включенных фар. При должном навыке и модифицированном снифере, который пишет лог, можно за пару часов накидать примерную таблицу соответствия адресов и устройств. Какие-то более сложные вещи потребуют гораздо больших усилий и времени. Конечно не в последнюю очередь все зависит от самого авто.


  1. Zzzuhell
    20.10.2015 15:57
    +3

    Владею «китайским ELM за пару долларов».
    Ездит в бардачке, на всякий случай. Использовался для определения ошибки при загорании check engine. Поверьте, это си-и-и-льно экономнее, чем пользоваться услугами диагноста даже в «колхозном» сервисе.
    Зная код ошибки, можно аргументированно общаться при последующем визите к ремонтникам. Чтобы не было «замены коленвала чтобы заднее окно не запотевало» :).
    В «инженерное меню» доступа нет, да и слава богу.


    1. avdept
      20.10.2015 18:11

      У меня просто стоит в гнезде, даже не вынимаю. Иногда при активном вождении выскакивает check engine — последствия чип тюннинга(слишком сильно открытая заслонка и из за этого мозги думают что что то не так). Можно прямо на ходу и сбросить ее


      1. Zzzuhell
        20.10.2015 18:37

        Вы поосторожнее. На ходу (во время движения) производить операции с «мозгами», а паче — сбрасывать ошибки небезопасно. Даже программная алярма об этом предупреждает, когда чекаешь ошибки…


        1. avdept
          20.10.2015 18:38

          А чем чреваты такие действия?


        1. link0ln
          20.10.2015 19:09

          У меня на ходу в простом режиме снятия данных с выводом через torque случилось нечто. Это нечто резко потушило все бортовые системы и включило их. И слава богу не включилась случайно задняя передача(у меня автомат) (:. Загорелись чек, режим «скользкой дороги», что-то еще. При попытке остановиться автомат не захотел переключаться ниже 3ей передачи. В иной раз пытался завести машину с подключенным девайсом — оно просто не давало ей заводиться, двигатель не мог удержать обороты и не было реакции на педаль газа.
          Сейчас девайс подключаю только при необходимости посмотреть температуру двигателя, тк отдельного датчика нет, либо глянуть возможные ошибки. В общем нет доверия к китайской реализации данных девайсов на elm327.


          1. nitro80
            21.10.2015 02:07

            В иной раз пытался завести машину с подключенным девайсом — оно просто не давало ей заводиться, двигатель не мог удержать обороты и не было реакции на педаль газа.
            Было подобное на MMC Mirage 2000 года, купил китайца, воткнул в разъём, поигрался, ничего не смог получить с него и благополучно забыл под панелью.
            В итоге, однажды завожу машину, всё нормально, а на включение скорости D не реагирует. Что я только не делал — не едет и всё. А время позднее. Вспомнил про китайца, вытащил и машина поехала как будто ничего и не было.


  1. aivus
    20.10.2015 16:25

    Аналогично владею китайским ELM327.
    Через соответствующую программу multiecuscan могу делать, например, диагностику соленоида турбины на своей машинке или сбросить обучение педали акселератора и огромное количество других вещей.
    Поэтому китайская игрушка вполне подходит и для диагностики, и для некоторых настроек. Главное — чтобы был соответствующий софт.


  1. radiolok
    20.10.2015 16:44

    Ещё есть STN1110 obd2 адаптер. Стоит дешевле. 16-разрядный контроллер и есть фишка в обновлений прошивки. А ещё он есть в qfn корпусе и работает от3.3в в том числе.


  1. pewpew
    20.10.2015 19:06
    +1

    Вот тут товарищ к Arduino прикрутил.
    Да и на хабре было.
    А так, сам пользую ELM327 для проверки кодов ошибок. Как начинающему автомобилисту весьма помогло понять суть вещей. Например, стало понятно что оказывается в автомобиле есть второй лямбда-зонд и почему топливно-воздушная смесь слишком насыщена.


    1. Zzzuhell
      20.10.2015 21:39

      И я с зондами благодаря этому адаптеру разобрался. Изначально была полная неизвестность и 10К+ требуемых денег на ремонт. А потом (когда разобрался, что дело во второй лямбде) заказал ее на али за 24 доллара и сам поставил…


  1. sav13
    20.10.2015 19:24

    А есть ли экономичный адаптаер + софт для диагностики Subaru?
    Интересует опрос датчиков ABS, которые никакие дешевые железки не видят (((


    1. BoxaShu
      20.10.2015 21:33

      Поддержу вопрос, есть ли что то специфичное для субарика?


      1. Zzzuhell
        20.10.2015 21:37

        У меня была субара (японская, на пруле) — к тамошнему разъему что только не подключали. Без толку. Но это, видимо, потому что машина редкая, в РФ мало ее кто знал и умел чинить тогда…


        1. p1ayer
          21.10.2015 15:43

          суба 2000 года, адаптеры не очень хотят с ней работать, если у кого-то найдется рецепт буду тоже признателен


  1. turbopower
    20.10.2015 21:17

    у меня всю машину вырубило неудачное вынимание штекера обд из порта
    только дворники начали работать зачем-то, а машина в кирпич превратилась
    пришлось скинуть аккум, чтоб дворники унять — поехал на эвакуаторе в фирменный сервис спасать машину
    выяснилось, что кромку разъема задели одним из штырьков, выбило пачку предохранителей
    дело в кривых руках сервисмена «нефирменного сервиса»


  1. de1m
    20.10.2015 22:34

    я темой на свой приус(2) интересовался, как я понял, с разъёма можно только считать данные и то не все. Зависит от производителя, что он туда вывести хочет.
    В приусе через CAN в принципе всё управляется — газ, тормоз, руль, итд. Но для этого надо напрямую к проводам подключаться. Пока ещё раздумаваю, но тема интересная.
    Вот видео нашел на эту тему нашел — https://youtu.be/oqe6S6m73Zw


    1. pewpew
      21.10.2015 00:20

      Можно послать команду — сбросить буфер ошибок Check Engine.


  1. evr1ka
    21.10.2015 06:41

    Жесть. Так вышло, что хоть сам не диагност, но помогаю на одном СТО с настройкой компов, в том числе и под диагностику.
    Из диагностических аппаратов одним из начинающих иногда берут Лаунч. Это вообще что-то с чем-то. Да, он распечатает вам ошибку, которая может прояснить ситуацию, а может быть вообще ниочем, и автоэлектрику все равно придется диагностировать и лезть самому.
    Из дилерских приборов, те кто пользуются, чаще всего просто тупо скидывают ошибки, что да, помогает на время, но если есть реальная тому причина — не устраняет ее.
    А дело ведь в чем? Все в автомобиле имеет свой ресурс. И либо он начинает превышать критический размер, что и приводит к выходу из строя, или что-то другое выводит.
    Те же свечки — кто вкурсе, что их нельзя больше одного раза закручивать? А инструкция по установке их написана на упаковке. То есть сначала рукой до упора, а потом динаметрическим ключом на тот угол что задан (обычно 90%), и нельзя перекручивать (прижимная шайба истончается).
    Или фильтра. Я и не думал какая в них важность заложена, и всякий китай, который просто по параметрам не тот.
    А из диагностического — от Bosh есть достаточно хорошие приборы, но опять же, чтобы им пользоваться и понимать, нужно умение, которое нужно получать.
    Например по той же Алмате всего 5 диагностов (официальные СТО не считаю), которые реально могут диагностировать и устранить проблему. И все еще и по своим маркам распределены.
    То есть тут как в том анекдоте — а ваш начальник знает, что вы рекомендуете заправлять картриджи для вашего принтера?
    — Да, ведь потом ремонт в двое дороже.
    Соглашусь только в одном — иметь хоть примерное представление, что у Вас может быть за ошибка — надо. Но не более.
    P.S. По фишке в OBD с ELM — есть тоже такой, даже не знал, что у кого-то так дурковать аппарат может, если даже просто в разъеме стоит…


    1. mark_ablov
      21.10.2015 07:57

      > одним из начинающих иногда берут Лаунч
      Добавлю что стоит он ~$1k, а пользы обычно не особо много.


      1. evr1ka
        21.10.2015 08:04

        И я о том же. Конечно надо не забывать, что это все — лишь инструмент. И тут важен человек его использующий.
        Пример с Лаунчем дал потому, что это почти аналог OBD с софтом на телефоне, только круче. Но и от него пользы не много


  1. itblogger
    21.10.2015 09:52

    Кстати, здесь столько профи собралось — вопрос по теме. Только час назад поставил новый Joying на свою Импрезу.
    Внимание, вопрос: очень хочу купить ELM с Bluetooth, так как этот Joying поддерживает показ разных параметров от OBD. Так вот, что скажут профи на это?

    Ну и, чтобы два раза не вставать: также этот проигрыватель поддерживает USB-свисток 3G WCDMA, вопросик: а кто-нибудь пробовал обычный GSM-свисток? У меня AT&T, вроде только GSM…

    Простите, если не в тему, и проигнорируйте. Хотя, где ж, если не на гиктаймс, задавать такие вопросы? Спасибо.