Программы для диагностики автомобилей linux
С ELM 327 не знаком только ленивый автолюбитель. Так как это самый доступный способ самостоятельно произвести чтение ошибок в своём автомобиле и при удачном стечении обстоятельств самостоятельно решить возникшую с автомобилем проблему.
ELM 327 это универсальный микроконтроллер, который позволяет читать данные из блоков управления автомобилем. Для используются специальные протоколы, “правильная” ELM 327 поддерживает 12 протоколов и это достаточно много.
Долгое время ELM 327 позволял только прочитать ошибки и стереть их. Проблема заключалась не в самом адаптере, а в программном обеспечении для него – не было хороших программ, которые бы раскрывали потенциал адаптера. Что и логично, разработка ПО занятие не из дешевых, особенно в данном случае. Но время идет, популярность особо не падает, как итог появляется достойный софт. В данном заметке хочу поговорить о программах для смартфонов с операционной системой Android , некоторые из перечисленных программ доступны в том числе и для пользователей iOS .
Начнём с программы CarScanner , субъективно, но на мой взгляд, это лучшее, что есть сегодня на рынке доступного ПО. Программа условно бесплатная, работает без оплаты с небольшим рекламным блоком внизу и некоторыми ограничениями. В любом случае доступ к Про версии стоит всего 260 рублей. Начать стоит с того, что программа очень простая в использовании и с русским языком, не нужно настраивать какие-то PID , что где-то искать и скачивать, всё доступно сразу, просто выбираешь профиль подключения со своим авто и получаешь данные.
Программа видит блоки, из которых она может вычитать ошибки, программа сама находит все датчики, данные с которых может получить, а также все тесты, результаты которых можно посмотреть. Самое приятное, она позволяет производить кодирование и адаптации, проще говоря включать скрытые функции автомобиля, об этом я более детально писал в заметке про то, что получилось активировать в моём автомобиле Skoda Rapid . При этом активации и сервисные функции доступны не только для VAG , уже точно есть Лада Vesta , есть Toyota (проверял на своём Rav 4) и много других автомобилей.
Вторая программа более узконаправленная и патриотичная (хотя для французского ВАЗ это уже не так актуально). Программа называется OpenDiag , читать информацию из блока управления двигателем можно бесплатно. Но если захотеть немного больше, то придется доплатить небольшие деньги за открытие дополнительных блоков – программа может читать блок безопасности, блок ЭУР и блок АКПП (вариатор Весты, АКПП Гранты). Так, например, на Весте пробег пишется в блок ЭУР, а в блок безопасности пишется количество циклов зажигания и время работы.
Программы и драйверы для диагностических сканеров OBD II. Windows и Android.
Если понадобится
Распиновка типового диагностического разъема (Протокол OBD 2)
(Нажмите на изображение чтобы увеличить)
Программы и драйвера под различные ОС на ПК и смартфоны (планшеты)
ScanMaster ELM 2.1
Самая универсальная и функциональная elm327 программа. Отлично работает как с иномарками, так и с автомобилями Российского производства. Рекомендуем начинать диагностику именно с этой программы.
Работает с адаптерами: USB, Bluetooth, Wi-Fi
OpenDiag
Программа для диагностики всех моделей русского автопрома (ВАЗ, ГАЗ, УАЗ и др.). Поддерживает несколько видов адаптеров, в том числе и elm327. Это самая удобная программа для диагностики русских авто. Если у Вас русский автомобиль, то рекомендуем использовать именно эту программу.
Работает с адаптерами: USB, Bluetooth
FORScan
Эта elm 327 программа создана специально для автомобилей марок: FORD, Mazda, Lincoln и Mercury. Она имеет огромные возможности, сканирует все блоки авто, включая подушки безопасности, ABS и прочее. Есть возможность конфигурации и программирования параметров.
Работает с адаптерами: USB, Bluetooth, Wi-Fi
ELMConfig
Эта программа так же для автомобилей FORD. Умеет работать со всеми модулями авто, а так же, помимо диагностики, даёт возможность калибровки и конфигурирования.
Работает с адаптерами: USB
ScanXL
Программа отлично работает со множеством марок автомобилей и имеет отличный набор функций.
Работает с адаптерами: USB
PROScan
Это универсальная elm327 программа. Имеет все необходимые функции: замеряет параметры, строит графики, считывает и стирает ошибки и многое другое. К сожалению русского языка нет.
Работает с адаптерами: USB
TiggoDiag 1.2.0.3
Программа для диагностики автомобилей Cherry Tiggo, GreatWall и некоторых моделей Mitsubishi с помощью адаптера ELM327.
Работает с адаптерами: USB
ELM327 программы для Android устройств (смартфон или планшет)
С помощью этих программ Вы сможете провести полноценную диагностику Вашего автомобиля используя elm327 адаптер и Ваш смартфон или планшет на базе android. Эти elm327 программы для android поддерживают как bluetooth, так и wi-fi адаптеры. Вместе с описанием программы есть ссылка на скачивание программы с официального сайта Google Play, поэтому Вы можете быть уверены в безопасности Вашего устройства. Так же Вы можете установить её просто набрав название программы в поиске Google Play Вашего устройства.
Torque
Самая популярная elm327 программа для android. Универсальная и очень функциональная, отлично работает со всеми марками автомобилей. Есть бесплатная и платная версия программы, отличающиеся по функционалу.
Работает с адаптерами: Bluetooth, Wi-Fi
OpenDiag Mobile
Очень удобная программа для диагностики автомобилей Российского производства с отличными возможностями. OpenDiag Mobile - бесплатная и имеет понятных русский интерфейс.
Работает с адаптерами: Bluetooth, Wi-Fi, USB
ScanMaster Lite
Отличная универсальная программа подходящая для огромного количества марок. Есть русский интерфейс и необходимый набор функций. Программа ScanMaster Lite - определённо из разряда рекомендованных.
Работает с адаптерами: Bluetooth, Wi-Fi
DashCommand
Так же достаточно неплохая и популярная программа с хорошим набором функций и поддержкой множества авто. Из минусов стоит отметить отсутствие русского интерфейса.
Работает с адаптерами: Bluetooth, Wi-Fi
OBD Авто Доктор
Универсальная elm327 программа с русским интерфейсом и неплохим набором для проведения диагностики. Есть две версии: бесплатная и платная, как обычно, в бесплатной слегка урезан функционал.
Работает с адаптерами: Bluetooth, Wi-Fi
ELMScan Toyota
Эта программа для владельцев автомобилей Toyota и Lexus всех рынков. Приложение достаточно мощное, на русском языке. В бесплатной версии набор продвинутых функций урезан достаточно сильно.
Работает с адаптерами: Bluetooth, Wi-Fi
EconTool for Nissan ELM327
Предназначена для автомобилей Nissan подключающихся по старому протоколу Nissan Consult, это примерно до 2008 года выпуска. Она представлена тут потому, что с этими автомобилями более популярные elm программы могут не работать.
Работает с адаптерами: Bluetooth, Wi-Fi
ELM327 программы для iPhone и iPad (iOS)
Ниже представлены elm327 программы для использования на iPhone и iPad, т.е. на смартфонах и планшетах с операционной системой iOS. Программ для этих устройств достаточно немного и, как правило, все они на английском языке. Но мы всё таки постарались подобрать для Вас хорошие программы с лёгким освоением и широким набором функций. Обратите внимание, что устройства от Apple поддерживают только Wi-Fi адаптеры, потому программы, соответственно тоже.
DashCommand
Достаточно хорошая, со всеми необходимыми возможностями, elm327 программа для iPhone и iPad. Она универсальна и подходит для диагностики огромного количества авто. Проста в освоении и интуитивно понятна несмотря на отсутствие русского языка.
Работает с адаптерами: Wi-Fi
OBD Car Doctor
Простая и удобная программа на русском языке. Позволяет считывать параметры работы двигателя, а так же есть возможность считывать и стирать ошибки engine check.
Работает с адаптерами: Wi-Fi
Engine Link
Один из лидеров по популярности среди программ для iPhone и iPad. Есть всё, что нужно для полноценной диагностики, а так же есть возможность анализа работы коробки передач и подушек безопасности, но эта функция возможна не на всех моделях.
Работает с адаптерами: Wi-Fi
ELM327 программы для Windows Phone
Ниже представлены elm327 программы для смартфонов на базе Windows Phone.
Car Scanner
Отличная elm327 программа для смартфонов на базе Windows Phone 8, 8.1 или 10. Пожалуй это лучшее приложение для этой системы - очень удобное и интуитивно понятное. Есть платная и бесплатная версия. В бесплатной присутствует небольшая реклама, а так же незначительно урезан функционал.
Подключенный мир позволяет в режиме реального времени через ваш смартфон отслеживать онлайн-заказы, отправленные вам, и получать информацию о вашем транспортном средстве, такую как давление в шинах, внешняя температура, и даже такие подробности, как разбитая лампа. Но за магией знания, где находится грузовик, в котором находится ваша посылка, и других деталей транспортного средства, кроется очень сложный мир, состоящий из встроенных устройств, «говорящих» друг с другом, это способствует тому, что информация передается от устройства к вам.
В этом обзоре вы узнаете, как создать приложение для связи с автомобилем через CAN с помощью стандарта OBD-II. Мы используем современную программную контейнеризацию с Docker и Torizon, современной промышленной платформой для встраиваемых Linux-систем от Toradex. Мы реализуем приложение на компьютере-на-модуле Verdin, который разработан для использования в суровых условиях, например, в коммерческих автомобилях. Хотя в этом примере описывается гипотетическое автомобильное приложение, вы можете использовать CAN даже в промышленных приложениях.
Краткий разговор о CAN
Прежде чем мы углубимся в технические детали приложения, вы должны знать, что оно будет использовать CAN, что означает сеть контроллеров. Это один из наиболее часто используемых протоколов связи для транспортных средств, грузовиков и даже тракторов. Если у вас есть автомобиль, произведенный после 2004 года, он наверняка имеет сеть CAN, соединяющую десятки ЭБУ.
Первоначально шина CAN была предназначена для использования на транспортных средствах, но она оказалась настолько надежной, что ее начали использовать другие области, добавляя транспортные протоколы, чтобы она могла поддерживать больше приложений, таких как стандарт CAN J1939, созданный для грузовиков, и ISO-11783 (также известный как ISOBUS) создан для тракторов. OBD-II поверх CAN, о котором мы будем говорить, построен на ISOTP, или, другими словами, ISO-15765-2.
автомобиля, выполняемого через компьютер
с адаптером OBD-2.
В том же направлении сеть CAN в большинстве транспортных средств также должна обмениваться данными по стандарту бортовой диагностики (OBD-II), в котором она должна отвечать на серию запросов, чтобы предоставить информацию о скорости, оборотах в минуту, уровне батареи, уровне топлива, среди множества других данных, связанных с информацией о двигателе. Как видно из названия, OBD-II может использоваться (и используется) для диагностики транспортных средств, как показано на Рисунке 2.
Этот разъем обычно используется компаниями для телематических устройств для мониторинга, помимо других доступных переменных транспортных средств, скорости транспортного средства, уровня топлива, уровня заряда батареи, сгруппированных вместе с данными геолокации, полученными через приемник GPS / GNSS. Также может быть получена другая информация, такая как температура двигателя и частота вращения, которая может указывать на условия высокой интенсивности, которым может подвергаться данный двигатель.
Torizon и Verdin
Вместе с Torizon Toradex уже предоставляет новое семейство компьютеров-на-модулях под названием Verdin, основанное на разъеме DDR4 SODIMM. Verdin имеет оптимизированный интерфейс, а также упрощенные требования к источнику питания и управлению питанием всей системы. Он разработан для суровых условий, и его прямой выход позволяет добавлять реальные порты ввода-вывода без необходимости пересекать трассы или слои. Первые модули Verdin основаны на процессорах приложений i.MX 8M Mini, подобных показанному на рисунке 6, который использовался в этом примере.
NXP i.MX8 M Mini SoC не поставляется с собственными контроллерами CAN. Чтобы компенсировать это, Toradex добавила в модуль контроллер MCP2518 SPI CAN, как показано на рисунке 7. Контроллер CAN MCP2518 совместим с CAN-FD и является хорошим выбором для приложений CAN высокого класса. Вы можете найти более подробную информацию о Verdin iMX8M Mini на его странице в Toradex. CAN также доступен на других компьютерах Toradex в модулях, таких как семейства Apalis и Colibri.
Мы предоставляем подробные инструкции по правильному использованию Verdin iMX8MM и платы разработки Verdin в Кратком руководстве от Toradex.
Поскольку TorizonCore является встроенным дистрибутивом Linux, он поддерживает SocketCAN, предоставляемый ядром Linux, что позволяет приложению взаимодействовать с сетью CAN как соединение сокета с Linux Socket API.
Теперь, когда все настроено, давайте сделаем шаг за шагом, чтобы вы могли установить TorizonCore 5 в свой Verdin iMX8MM и наше приложение-контейнер для связи CAN со стандартом OBD-II.
Установка TorizonCore 5
На момент написания этого обзора TorizonCore 5 все еще находится в стадии разработки. Мы решили использовать его в нашем обзоре, потому что это будет наша основная ориентированная версия TorizonCore. Посетите веб-страницу Torizon, чтобы увидеть дорожную карту для получения дополнительной информации.
Если в Verdin iMX8MM загружен Toradex Easy Installer 2.0b6, вам необходимо использовать наши каналы CI для загрузки TorizonCore 5, что можно сделать, щелкнув пункт меню «Feeds» в меню Toradex Easy Installer и отметив значок Вариант подачи CI, как показано на рисунке 9.
Этот процесс займет некоторое время, так как он загрузит множество ссылок на изображения из Toradex Artifactory.
После завершения загрузки выберите один образ TorizonCore 5, например «5.1.0-devel-20201019 + build.98», выбранный ниже (одна из наших последних ночных сборок), и установите его. Если вы не можете найти эту, выберите самую близкую к вашей дате ночную сборку.
Теперь у нас есть Verdin iMX8MM с TorizonCore 5, и пришло время для практического использования контейнера.
Загрузка контейнера, готового к обмену данными по CAN на TorizonCore 5
Мы приглашаем вас ознакомиться с обзором TorizonCore с документацией, а также вы можете прочитать статью для быстрого начала работы с контейнерами на Torizon.
Пожалуйста, всегда создавайте образы докеров для TorizonCore на главном компьютере разработки. Хотя это можно сделать на целевом устройстве (например, Verdin iMX8MM), это займет гораздо больше времени. В рамках этого руководства мы можем создать образ докера со следующим файлом Dockerfile:
Я продолжаю изучать CAN шину авто. В предыдущих статьях я голосом открывал окна в машине и собирал виртуальную панель приборов на RPi. Теперь я разрабатываю мобильное приложение VAG Virtual Cockpit, которое должно полностью заменить приборную панель любой модели VW/Audi/Skoda/Seat. Работает оно так: телефон подключается к ELM327 адаптеру по Wi-Fi или Bluetooth и отправляет диагностические запросы в CAN шину, в ответ получает информацию о датчиках.
По ходу разработки мобильного приложения пришлось узнать, что разные электронные блоки управления (двигателя, трансмиссии, приборной панели и др.) подключенные к CAN шине могут использовать разные протоколы для диагностики, а именно UDS и KWP2000 в обертке из VW Transport Protocol 2.0.
Программный сниффер VCDS
Чтобы узнать по какому протоколу общаются электронные блоки я использовал специальную версию VCDS с программным сниффером в комплекте. В этот раз никаких железных снифферов на Arduino или RPi не пришлось изобретать. С помощью CAN-Sniffer можно подсмотреть общение между VCDS и автомобилем, чтобы затем телефон мог прикинуться диагностической утилитой и отправлять те же самые запросы.
Я собрал некоторую статистику по использованию диагностических протоколов на разных моделях автомобилей:
VW/Skoda/Seat (2006-2012) - приборная панель UDS. Двигатель и трансмиссия VW TP 2.0
Audi (2006-2012) - приборная панель VW TP 2.0. Двигатель UDS. Трансмиссия VW TP 2.0
VW/Skoda/Seat/Audi (2012-2021) - везде UDS
Протокол UDS
Unified Diagnostic Services (UDS) - это диагностический протокол, используемый в электронных блоках управления (ЭБУ) автомобильной электроники. Протокол описан в стандарте ISO 14229-1 и является производным от стандарта ISO 14230-3 (KWP2000) и ныне устаревшего стандарта ISO 15765-3 (Diagnostic Communication over Controller Area Network (DoCAN)). Более подробно в википедии.
Диагностические данные от двигателя по протоколу UDS (Skoda Octavia A7)
Разбор UDS пакета в формате Single Frame
Пример запроса и ответа температуры моторного масла:
Запрос температуры моторного масла:
7E0 - Адрес назначения (ЭБУ двигателя)
Байт 0 (0x03) - Размер данных (3 байта)
Байт 1 (0x22) - SID идентификатор сервиса (запрос текущих параметров)
Байт 2, 3 (0x11 0xBD) - PID идентификатор параметра (температура моторного масла)
Байт 4, 5, 6, 7 (0x55) - Заполнитель до 8 байт
Ответ температуры моторного масла:
7E8 - Адрес источника (Диагностический прибор)
Байт 0 (0x05) - Размер данных (5 байт)
Байт 1 (0x62) - Положительный ответ, такой SID существует. 0x22 + 0x40 = 0x62. (0x7F) - отрицательный ответ
Байт 2, 3 (0x11 0xBD) - PID идентификатор параметра (температура моторного масла)
Байт 4, 5 (0x0B 0x74) - значение температуры моторного масла (20.1 °C формулу пока что не смог подобрать)
Байт 6, 7 (0x55) - Заполнитель до 8 байт
Первая версия мобильного приложения VAG Virtual Cockpit умела подключаться только к приборной панели по UDS.
VAG Virtual Cockpit - экран с данными от приборной панели по протоколу UDS
VW Transport Protocol 2.0
Volkswagen Transport Protocol 2.0 используется в качестве транспортного уровня, а данные передаются в формате KWP2000. Keyword Protocol 2000 - это протокол для бортовой диагностики автомобиля стандартизированный как ISO 14230. Прикладной уровень описан в стандарте ISO 14230-3. Более подробно в википедии.
Диагностические данные от двигателя по протоколу KWP2000 (Skoda Octavia A5)
Разбор протокола VW TP 2.0 на примере подключения к первой группе двигателя:
200 01 C0 00 10 00 03 01
Настраиваем канал с двигателем. Байт 0: 0x01 - двигатель, 0x02 - трансмиссия. Байт 5,4: 0x300 - адрес источника
201 00 D0 00 03 40 07 01
Получили положительный ответ. Байт 5,4: 0x740 - к двигателю обращаемся по этому адресу
740 A0 0F 8A FF 32 FF
Настраиваем ЭБУ на отправку сразу 16 пакетов и выставляем временные параметры
300 A1 0F 8A FF 4A FF
Получили положительный ответ
740 10 00 02 10 89
Отправляем команду KWP2000 startDiagnosticSession. Байт 0: 0x10 = 0b0001 - последняя строка данных + 0x0 счетчик отправляемых пакетов 0 (0x0 - 0xF)
Получили первый ACK
300 10 00 02 50 89
Получили положительный ответ. Байт 0: 0x10 - cчетчик принимаемых пакетов 0
Мы отправили первый ACK, что получили ответ
740 11 00 02 21 01
Делаем запрос. Байт 0: 0x11 - счетчик отправляемых пакетов 1. Байт 3: 0x21 - запрос параметров. Байт 4: 0x01 - из группы 1
Получили второй ACK
300 22 00 1A 61 01 01 C8 13
Байт 0: 0x22 - 0b0010 (не последняя строка данных) + 0x02 (cчетчик принимаемых пакетов 2). Байт 1,2: 0x00 0x1A длина 26 байт. Байт 3,4: 0x61 0x01 - положительный ответ на команду запроса параметров 0x21+0x40=0x61 из 0x1 группы. Байт 5: 0х01 - Запрос RPM (соответсвует протоколу KW1281). Байт 6,7: (0xC8 * 0x13)/5 = 760 RPM (формула соответствует протоколу KW1281)
300 23 05 0A 99 14 32 86 10
Байт 1: 0x05 - запрос ОЖ. Байт 2,3: (0x0A * 0x99)/26 = 57.0 C. Байт 4: 0x14 = запрос лямбда контроль %. Байт 5,6: 0x32*0x86; Байт 7: 0х10 - двоичная настройка
300 24 FF BE 25 00 00 25 00
0x25 0x00 x00 - Заполнитель, до 8 параметров
300 15 00 25 00 00 25 00 00
Байт 0: 0x15 - 0b0001 (последняя строка данных) + 0x5 (счетчик принимаемых пакетов 5)
Отправляем ACK. Прибывляем к нашему предыдущему ACK количество полученных пакетов 0xB1 + 0x4 = 0xB5
Запрос KeepAlive, что мы еще на связи
740 A1 0F 8A FF 4A FF
Мы разрываем связь
ЭБУ в ответ тоже разрывает связь
Во второй версии мобильного приложения VAG Virtual Cockpit появилась возможность диагностировать двигатель и трансмиссию по протоколу VW TP 2.0.
VAG Virtual Cockpit - экран с данными от двигателя по протоколу VW TP 2.0
Диагностический адаптер ELM327
Для меня некоторое время было вопросом, как получить данные из CAN шины и передать на телефон. Можно было бы разработать собственный шлюз с Wi-Fi или Bluetooth, как это делают производители сигнализаций, например Starline. Но изучив документацию на популярный автомобильный сканер ELM327 понял, что его можно настроить с помощью AT команд на доступ к CAN шине.
Копия диагностического сканера ELM327 Не все ELM327 одинаково полезны
Оригинальный ELM327 от компании elmelectronics стоит порядка 50$, в России я таких не встречал в продаже. У нас продаются только китайские копии/подделки, разного качества и цены 10-30$. Бывают полноценные копии, которые поддерживают все протоколы, а бывают и те которые умеют отвечать только на несколько команд, остальные игнорируют, такие адаптеры не имеют доступ к CAN шине. Я например пользуюсь копией Viecar BLE 4.0, который поддерживает 100% всех функций оригинала.
Последовательность ELM327 AT команд для работы с UDS по CAN шине:
Для работы с протоколом KWP2000 через ELM327 нужно только указать адреса назначения и источника.
Последовательность ELM327 AT команд для работы с VW TP 2.0 по CAN шине:
Мобильное приложение VAG Virtual Cockpit
Для разработки мобильного приложения подключаемого к автомобилю требовалось:
Сниффером собрать трафик от диагностической утилиты VCDS
Изучить работу протоколов UDS, VW TP 2.0, KWP2000
Настроить диагностический сканер ELM327 на работу с UDS и VW TP 2.0
Изучить новый для меня язык программирования Swift
В итоге получилось приложение, которое сочетает в себе функции отображения точных данных панели приборов и диагностика основных параметров двигателя и трансмиссии.
Пару слов про точность данных. Штатная панель приборов не точно показывает скорость - завышает показания на 5-10 км/ч, стрелка охлаждающей жидкости всегда на 90 °C, хотя реальная температура может быть 80 - 110 °C, стрелка уровня топлива до середины идет медленно, хотя топлива уже меньше половины и при нуле на самом деле топливо еще есть в баке. Производитель это делает для удобства и безопасности водителя.
На данный момент приложение показывает следующие параметры:
Приборная панель
Двигатель
Трансмиссия (температура)
1) Какая дверь открыта
2) Скорость
3) Обороты
4) Температура масла
5) Температура ОЖ
6) Топливо в баке в л.
7) Запас хода в км.
8) Средний расход
9) Время в машине
10) Пробег
11) Температура за бортом
1) Обороты
2) Массовый расход воздуха
3) Температура забора воздуха
4) Температура выхлопа (рассчитанная)
5) Критический уровень масла
6) Уровень масла
7) Наддув турбины (реальный)
8) Наддув турбины (ожидаемый)
9) Пропуски зажигания в цилиндрах
10) Углы откатов зажигания в цилиндрах
1) ATF AISIN (G93)
2) DSG6 (G93)
3) Блок управления DSG6 (G510)
4) Масло диска сцепления DSG6 (G509)
5) Мехатроник DSG7 (G510)
6) Процессор DSG7
7) Диск сцепления DSG7
Я стремлюсь чтобы приложение поддерживало как можно больше моделей автомобилей. Пока что поддерживаются производители: Volkswagen, Skoda, Seat, Audi. На разных комплектациях могут отображаться не все параметры, но это поправимо.
Сейчас я провожу тестирование версии 3.0. Приложение доступно только на iOS, после релиза 3.0 перейду к разработке версии для Android.
Читайте также: