Многие читатели, после прочтения заметки #55 Диагностика своими руками, и заинтересовавшиеся этим вопросом, спрашивают, какой адаптер купить и как выбрать правильный адаптер ELM327? Попробуем разобраться в этом и расставим все точки над i.
Запись получилась опять достаточно объемная и для тех, кому читать некогда или лень, ссылки на адаптеры приведены в конце записи.
Немного теории
ELM327 — это микроконтроллер, разработанный канадской компанией ELM Electronics, предложившей в 2005 году интерфейс для преобразования команд сети бортовой диагностики автомобиля — OBD2 (On Board Diagnostics) — в протокол RS-232, использующийся в компьютерах, известный как COM-порт.
Оригинальный ELM327 построен на чипе PIC18F2580. Основные достоинства чипа:
1. Управление питанием в спящем (standby) режиме
2. Поддержка RS232
3. Поддержка АТ-команд
4. Низкое энергопотребление
5. Автоматическое определение протокола.
ELM Electronics предлагают два основных варианта реализации чипа: ELM327 и ELM327L (low-voltage). Различие заключается в том, что ELM327L способен работать в бОльшем диапазоне напряжений — от 2.0V до 5.5V в то время, как ELM327 работает в диапазоне от 4.2V до 5.5V. Под особенность чипов был соответственно адаптирован и протокол: ELM327 поддерживает версию протокола 2.2, самую последнюю и полную, а ELM327L поддерживает версию 2.1, которая как раз вызывает так много вопросов и путаницы у покупателей китайских клонов адаптера. Более того, версии 1.5 нет вовсе. Однако разработчик продолжает поддерживать два старых протокола 1.3 и 1.4b, которые используют их крупные заказчики, если у них нет необходимости в поддержке дополнительных параметров под функционал более нового чипа. Сравнительная таблица протоколов ELM327 с официального сайта приведена ниже.
Так выглядит чип на плате китайского адаптера:
При этом монтаж самой платы может отличаться: чип может располагаться как на верхней стороне платы, так и скрываться под ней. На черном адаптере с кнопкой — чип как раз наверху, а у синего — под ней.
Стоимость оригинального чипа ELM327 на сайте производителя составляет от $15 за крупную партию от 1000 штук и более. Китайские адаптеры выполнены на аналоге такого чипа — 18F25K80, который имеет те же характеристики и в некоторых параметрах даже превосходит оригинальный 18F2580, но стоит в разы дешевле. Однако, если на месте чипа окажется такая вот "клякса" (либо бескорпусная микросхема, либо залитый компаундом чип), это повод насторожиться. Под ней может быть любой чип и поддерживает ли он все необходимые нам протоколы и команды — узнать заранее нельзя. Они могут не иметь ничего общего с ELM327 и поддерживают лишь ограниченный набор протоколов и команд, который заложил китайский производитель.
Проверка адаптера
Как мы выяснили ранее, адаптер преобразует команды, получаемые от внешнего подключения (телефона или компьютера), в команды OBD автомобиля, и в обратную сторону передает ответ от OBD на наше устройство. Когда мы покупаем китайский клон адаптера, мы не можем быть уверены в том, что у него на самом деле чип ELM327 и он гарантированно поддерживает все отправляемые команды. Особенно это касается адаптеров с "кляксой" — как правило, они поддерживают только небольшой набор команд и полноценная работа с ними невозможна. Что бы проверить адаптер, нужно опросить его командами и если команда поддерживается, адаптер сообщает положительный ответ. Если команда не поддерживается, то адаптер вернет ошибку, как например в случае, описанном недавно на форуме:
Подробнее о том, что значат команды, представленные в примере, расскажу далее.
Проверка работы адаптера необходимыми командами выполняется через приложение для Андроида elm327 identifier или через скрипт из набора PyRen: chkelm_4a_launcher.py, который отправляет все команды, необходимые для работы PyRen и выдает ответ адаптера на них. На примере трех своих адаптеров я проведу тесты и дополнительно покажу время отклика при работе с такими адаптерами. Все эти адаптеры имеют честную "китайскую" версию 1.5 и подходят для "Диагностики своими руками". Если поддерживаемых команд меньше, то скорее всего такой адаптер работать полноценно не будет.
1. Wi-Fi.
Напомню, для того, что бы скрипты PyRen на Андроиде стали работать с Wi-Fi версией адаптера, необходимо изменить строку "bt" — bluetooth, в запускаемом лаунчере, на адрес и порт Wi-Fi адаптера:
sys.argv.append('-pbt')
на
sys.argv.append('-p192.168.0.10:35000')
Как правило, все китайские клоны имеют именно такой адрес и порт.
2. BT черный, с кнопкой
3. BT синий
4. А вот пример адаптера с "каплей". Что под ней — неизвестно, такой адаптер не поддерживает корректно некоторые команды и, как стало известно в процессе работы — не корректно поддерживает и flow control. Рядом с каплей — mcp2551i.
Однако скрипт PyRen все-таки смог заработать с этим адаптером: используя параметр --cfc, включается обработка flow control самим скриптом, а не адаптером. Спасибо shr-lnm за очередную подсказку. У такого режима снижается скорость обмена данными с автомобилем, но читать параметры и ошибки он сможет.
АТ-команды
Для взаимодействия с ELM327 используются АТ-команды. Что бы понимать, что это за команды такие и какое отношение они имеют к получению данных от ЭБУ автомобиля, позволю себе небольшое отступление и расскажу про это то, что знаю сам и то, что почерпнул сейчас при написании заметки. АТ-команды знакомы тем читателям, кто пользовался модемами для доступа в internet или другие более ранние сети. Эти команды были разработаны еще в 1977 году для управления модемом компании Hayes и нашли самое широкое применение в этой области и применяются до сих пор.
Применительно к теме "Диагностики своими руками", даже того не ведая, мы работаем с АТ-командами, когда нам нужно опросить тот или иной блок или параметр в автомобиле, выполнить конфигурацию, сбросить ошибки или, например, прописать строку инициализации в Torque. Все эти команды нужны для того, что бы либо правильно подготовить наш адаптер ELM327 для дальнейшей работы, либо передать данные дальше — в блок автомобиля и получить от него корректный ответ. Ранее я уже разбирал вопрос с прямой передачей команды в блок ручника для отключения функции автопостановки, сейчас вернемся на предыдущий этап и узнаем как это работает. Поможет нам в этом описание команд ELM327 1.4b, находящееся в свободном доступе у разработчика, и сами скрипты PyRen.
Обратимся к логу PyRen, в который сохраняются как команды, транслируемые через ELM327 — elm.log, так и непосредственные запросы и ответы от блока — ecu.log.
После выбора нужной модели автомобиля, PyRen сначала готовит адаптер к работе с ним:
1. Первая команда сброса — AT WS. В отличии от полного сброса параметров — AT Z, AT WS выполняет быстрый программный сброс, без полной перезагрузки адаптера.
В ответе на нее возвращается версия прошивки адаптера — ELM327 1.5, которую и подделывают продавцы адаптеров с "кляксой": как мы выяснили ранее, ответ только на эту команду ничего не значит.
2. AT E1 — включение программного "Эхо", т.е. адаптер дублирует запрошенную команду отправителю — приложению PyRen для контроля корректной отправки команды и логирования.
3. AT S0 — выключение символа-разделителя (пробела) в ответах ЭБУ. Это делается для ускорения обмена информацией, теряется только удобство чтения логов при существенном росте скорости.
4. AT H0 — выключение заголовков в ответе от ЭБУ. Как правило, заголовки могут быть использованы для разделения ответов от нескольких блоков, например в скрипте "прослушивания" CAN-шины.
5. AT L0 — выключение перевода строки после отправки каждой команды. Включение этого параметра используется также в скрипте прослушивания CAN-шины и когда скрипт работает с большим числом блоков и данных между ними.
6. AT AL — разрешение отправки длинных запросов (8 байт и более) и неограниченной длительности на прием. Ранние версии стандарта OBDII ограничивали отправку данных свыше 7 байт, но современные блоки и протоколы уже могут работать с более длинными сообщениями, как например наш протокол ISO 15765-4.
7. AT CAF0 — выключение использования функции автоформатирования данных средствами ELM327.
8. AT SP6 — важный параметр определения протокола и скорости работы CAN-шины. Как было сказано ранее, ELM327 поддерживает автоматическое определение протокола, однако в том случае, если мы точно знаем, какому ЭБУ соответствует какой протокол и скорость — это исключает ошибки определения и ускоряет работу скрипта.
Далее идет открытие нужного блока:
1. AT SH 7E0 — установка нужного заголовка для чтения данных
2. AT CRA 7E8 — установка фильтра на входящие ответы от ЭБУ автомобиля, т.к. в шине присутствует большое количество информации от других блоков и такими фильтрами разработчики ограничивают лишнюю информацию.
3. AT FC * — команды установки Flow Control для работы в нужном режиме.
После этого блок можно переводится в режим диагностики командой 10С0 и ожидается, что в ответ придет 50С0, т.е. блок готов к дальнейшим командам. Команды должны быть переданы в него в течении 5 секунд, иначе блок выйдет из режима диагностики. Поэтому не рекомендуется опрашивать в движении блок АБС, возможно задержка в его командах на доли секунды будет важна в критической ситуации и поэтому особенно интересна была доработка скрипта PyRen для "прослушивания" CAN-шины.
На запрос 10С0 вернулся положительный ответ и затем была отправлена команда 2180 — команда получения идентификаторов блока. В ответе на эту команду вернулся 6180 — успешный ответ — и еще 24 байта данных с информацией по номеру блока и версии его прошивки. Насколько я понимаю, именно по этой информации скрипт mod_ddt выбирает наиболее подходящий файл из базы DDT2000.
Что-то я увлекся и ушел немного не в ту область. Кто хочет сам поработать с АТ-командами для ELM327 адаптера, попробуйте приложение Elm327Chat для Андроид.
Выбор адаптера
Надеюсь, что я смог убедить читателей, что среди китайских адаптеров не так сложно выбрать адаптер, пригодный для "Диагностики своими руками". Важно понимать, от чего зависит успешность работы с ним и на какие моменты нужно смотреть при выборе адаптера в китайских магазинах.
Не важно. сколько стоит адаптер, как он выглядит, а важно то, что у него внутри. Смотрите описание, читайте отзывы покупателей и выбирайте тот, который поможет сделать Диагностику доступной.
Ссылки на адаптеры проверялись на момент написания статьи. Те, кто статью прочитал и сами без труда выберут хороший адаптер.
1. Wi-Fi. Мой адаптер, участвовавший в тестах покупался очень и очень давно, более 2х лет назад и цена до сих пор на него весьма высока.
В качестве альтернативы можно предложить более дешевые варианты с Wi-Fi, например такой.
2. Bluetooth адаптер с кнопкой.
Всем быстрого коннекта и что бы "ни единого разрыва".
Обновлено после рассказов читателей
Кроме чипов с "кляксой", могут встречаться еще и чипы, которые похожи на нужный нам 18F25K80 но имеют немного другое наименование — 25K80QBD327. Как оказалось, такой чип также не подходит для работы и не имеет ничего общего с правильным чипом. Фотку взял из форума 4pda.ru, так что будьте бдительны!
Комментарии 283
В целом хорошая запись, но есть ряд ошибок и неточностей:
1. "ELM327 — это микроконтроллер" — на самом деле это прошивка под микроконтроллер Microchip PIC18F2480.
"Оригинальный ELM327 построен на чипе PIC18F2580" — на самом деле PIC18F2480.
2. "ELM Electronics предлагают два основных варианта реализации чипа: ELM327 и ELM327L" — на самом деле две прошивки. Первая для PIC18F2480, вторая для PIC18F25K80.
3. "ELM327 поддерживает версию протокола 2.2, самую последнюю и полную, а ELM327L поддерживает версию 2.1, которая как раз вызывает так много вопросов и путаницы у покупателей китайских клонов адаптера." — под оба чипа PIC18F2480 и PIC18F25K80 были выпущены прошивки ELM327 v2.3 и ELM327L v2.3.
4. "Более того, версии 1.5 нет вовсе." — ELM327 v1.5 это прошивка ELM327 v.1.4 скопированная китайцами из оригинально чипа PIC18F2480 и доработанная для того, чтоб она работала в чипе PIC18F25K80.
5. "Однако разработчик продолжает поддерживать два старых протокола 1.3 и 1.4b" по состоянию на 2020 год компания прекратила продажи чипов и разработку прошивок.
6. "Китайские адаптеры выполнены на аналоге такого чипа — 18F25K80, который имеет те же характеристики и в некоторых параметрах даже превосходит оригинальный 18F2580, но стоит в разы дешевле." — честные китайские адаптеры выполнены на чипе 18F25K80 который использовался ELM Electronics для прошивок ELM327L v2.1-2.3.
7. "Однако, если на месте чипа окажется такая вот "клякса" (либо бескорпусная микросхема, либо залитый компаундом чип), это повод насторожиться." — если вместо 18F25K80 окажется любой другой чип — адаптер покупать нельзя.
8. "Когда мы покупаем китайский клон адаптера, мы не можем быть уверены в том, что у него на самом деле чип ELM327 и он гарантированно поддерживает все отправляемые команды." китайские адаптеры по определению не могут быть клонами так как компания ELM Electronics никогда не выпускала адаптеры. Корректней сказать что мы не можем быть уверены, что в чипе 18F25K80 находится корректно работающая китайская прошивка ELM327 v1.5.
9. "Проверка работы адаптера необходимыми командами выполняется через приложение для Андроида elm327 identifier" корректней проверять через ELMScan Adapter Validator.
10. Как выбрать адаптер в наши дни я рассказал и показал здесь www.drive2.ru/b/671550916993751850/
ну так когда это написано то было :)
и кстати на счет другого чипа не согласен . есть отличные примеры на своих чипах.
Никогда не поздно откорректировать. Кроме чипа PIC18F25K80, не может быть ничего путного. Есть чипы конкурентов ST11xx, ST21xx (OBDSolutions OBDLink) и MC* (VGate vLinker), но это совсем другие продукты.
Знатоки подскажите по поводу elm и pyren, подключаю elm к Лагуне 3 загораются на нем лампочки типо работает, через pyren делаю проверку elm показывает все ок, выбираю машину начинает считывать блоки и ненаходит блоков, подключаю elm к мегану 4, на нем даже лампочки незанораются, соответственно проверка elm через pyren непроходим машина его не видит.Может кто-нибудь подскажет что делать?
проверку быстро пробегает и везде ОК или сначала быстро а потом просто виснет и финального результата нет?
Пробегает быстро, везде ок кроме последних нескольких пунктов, и потом пишет что операция завершена и предлагает выйти.
менять адаптер.
Блин только сегодня его приобрел, неучто сразу плохой попался.
ну загляните внутрь, посмотрите, что на плате. но 99%, что подделка просто.
Понял, спасибо
Давно пользуюсь ELM327 рекомендованной с кнопкой включения на чипе pic18f25k80 ошибки читает, настройки в эбу меняет. Но я удивился когда пирен выдал 12 error-question, 10 error-timeout, 3 error-can. Это такой тест не совсем корректный в пирене или этот адаптер мне не все функции позволяет делать с такими ошибками?
какие-то команды нужны, какие-то не используются, какие-то используются только в определенных блоках…
можно включить лог, собрать команды из повседневной работе и посмотреть ответы машины на них
А вообще такой адаптер наверное лучше сменить? Но на какой, если даже наличие правильного чипа не дает гарантий?
если работает, то менять не надо. мое мнение, у вас просто не встречается использование неподдерживаемых команд.
Возможно есть у вас китайские драйвера, которые шли с elm 327? Версия BT с кнопкой включения? Может в них дело.
какие могут быть драйвера… блин привыкли к масдаю… никакие драйвера не определяют работу самого устройства.
Здравствуйте. Подскажите где взять параметры работы своей машины, чтобы их сравнить с тем что показывает сканер и обнаружить отклонения? А то сканер мне показывает значения разных режимов, а как понять что они в норме?
Добрый день.
Сложный вопрос.
моих знаний не хватит ответить на него полностью.
Для каких-то параметров есть т.н. "установленные значения". например уст. знач. давления.
соответственно они сравниваются с таким-же реальным показанием.
для каких-то параметров есть в техдокументации (клип или диалогис) — опорные значения, типа сопротивления или температуры или чего-то еще в пределах от и до.
Еще при ошибках например может добавляться контекст неисправности, где указано, например, что давление скакнуло или наоборот было недостаточным…
есть еще куча всего что хочу поменять, но пока не знаю как… например отключить пиканье ручника и все что с ним связано достал! но и хочу поставить климат контроль есть все кроме кроме умения подключения и настройки…
изучайте блоки в базе ддт. я не знаю про ручник