- Система управления двигателем: основные компоненты, принцип работы
- Что в автомобиле можно проверить с помощью компьютерной диагностики
- Адаптеры, существующие на рынке
- Архитектура приложения python для взаимодействия с obd-ii через can
- Инструкция по диагностике авто с помощью ноутбука в 10 шагов
- Краткий разговор о can
- Написание программы для диагностики авто как практика программирования на java. результаты года и планы
- Необходимые материалы
- Переходники и удлинители obd-2, существующие на рынке
- Расшифровка диагностических кодов протокола obd-2
- Сканер
- Сканеры на базе чипа elm327
- Тестирование нашего примера приложения с помощью симулятора obd-ii
- Упрощение с помощью расширения torizon с кодом visual studio
- Установка torizoncore 5
Система управления двигателем: основные компоненты, принцип работы
Главный элемент системы управления силовым узлом — ЭБУ. Аббревиатура расшифровывается, как «Электронный Блок Управления».
Задача контроллера состоит в сборе информации от многочисленных датчиков с последующей обработкой полученных сведений и передачей команд исполнительным элементам.
ЭБУ является неизменным элементом бортовой сети машины. Он постоянно обменивается данными с АБС, АКПП, системами безопасности и стабилизации, круиз- и климат-контролем.
Информация передается по шине типа CAN, объединяющей электронные и цифровые устройства машины в общий интерфейс. Такой принцип работы позволяет ЭБУ контролировать процессы, которые происходят в автомобиле.
Базовые функции ЭБУ:
- Контроль и управление подачей горючего в двигателях инжекторного типа.
- Оптимизация работы зажигания.
- Регулирования фаз газораспределения.
- Анализ компонентов выхлопных газов.
- Регулирование температуры и ее поддержание на оптимальном уровне.
- Контроль работы системы рециркуляции газов и т. д.
На ЭБУ приходят сведения о позиции коленвала и частоте его вращения, скорости машины, напряжении сети и т. д. Всего в устройство поступают данные с более чем двух десятков датчиков.
Также в контроллере предусмотрена система, информирующая человека о поломках или сбоях в работе. Об ошибке свидетельствует зажигание лампочки Check Engine.
Для каждого сбоя предусмотрен индивидуальный код, а собранные данные хранятся в памяти и предоставляются по запросу автовладельца.
Подробно разобраться как это работает можно на примерах:
Что в автомобиле можно проверить с помощью компьютерной диагностики
По описанию ЭБУ можно сделать краткие выводы, чем именно полезна диагностика, и что можно проверить с помощью ноутбука, сканера и ПО.
При правильном подходе автовладелец или мастер на СТО выявляет причину поломки после сравнения текущих и заводских показателей. При значительном расхождении параметров выпадает ошибка, по которой можно судить о характере неисправности.
Диагностика автомобиля с помощью ноутбука позволяет проверить следующие элементы авто:
- Двигатель. Проверка необходима при перегреве мотора, повышении расхода топлива, сбоях в работе, проблемах с пуском или появлении посторонних шумов. Не обойтись без диагностики при появлении ошибки Check Engine на приборной панели. С помощью компьютера можно посмотреть скорость ХХ, производительность мотора, позицию заслонки дросселя и число оборотов. Своевременное выполнение работ позволяет вовремя внести изменения в машину и избежать дорогого ремонта.
- АКПП. Компьютерная диагностика помогает определить состояние коробки-автомат. Работа выполняется при трудностях с включением какой-либо скорости, появлении шумов и сбоях в работе, симптомах течи масла и т. д. Во время работ считываются коды ошибок ЭБУ, собираются и контролируются параметры температурных датчиков, анализируется позиция ручки АКПП и т. д.
- Подвеска. Во время компьютерной диагностики с помощью ноутбука можно изучить состояние ходовой автомобиля. Проверка необходима при появлении гула или стука в подвеске, чрезмерном износе шин, странном гуле при движении, ошибках в работе ABS и т. д.
- Возможна проверка и других электронных систем, все зависит от конкретной марки автомобиля.
Компьютерная диагностика полезна и при покупке машины, ведь с ее помощью можно узнать состояние ТС, работоспособность всех систем, наличие ошибок и неисправностей.
Многие продавцы «глушат» лампочку Check Engine, чтобы она не отпугивала покупателей. Своевременная проверка позволяет выявить проблему и отказаться от сделки с недобросовестным продавцом.
После изучения электроники авто можно сделать вывод о пробеге, оценить расходы на ремонт и принять решение об актуальности покупки машины.
Адаптеры, существующие на рынке
Современный рынок предлагает большой выбор адаптеров, позволяющих осуществлять диагностику автомобиля через ноутбук.
Основные типы:
- ELM OBD2 — удобные в применении сканеры, работающие на чипе ELM 327, предназначенные для самостоятельного чтения ошибок машины и их устранения без посещения СТО. Оригинальные адаптеры этой серии поставляются с микропроцессором типа Microchip PIC18F25k80, диском программного обеспечения, списком неисправностей и уроками по проведению диагностики.
- VAG COM адаптеры — устройства, предназначенные для проверки немецких автомобилей группы VAG. Такие девайсы применяются профессионалами на СТО, но могут использоваться и обычными автовладельцами в условиях гаража. Достаточно поставить на компьютер необходимую программу.
- Мультимарочные сканеры — универсальные устройства, справляющиеся с проверкой большинства современных марок автомобилей. Во время диагностики можно проверить и стереть коды поломок, сбросить сервисные интервалы, отобразить характеристики системы, кодировать ЭБУ и активировать специальный режим, изучить состояние исполнительных устройств. Кроме того, с их помощью можно имитировать команды от датчиков и контролировать изменения в системе.
- Дилерские сканеры — профессиональный вариант устройств для диагностики автомобиля, позволяющий выполнить комплексную проверку. Такие автосканеры работают только с машинами определенной марки.
Как видно, рынок автомобильных сканеров для диагностики весьма широк. При этом не все оборудование подходит для самостоятельной проверки машины в гаражных условиях.
Архитектура приложения python для взаимодействия с obd-ii через can
Чтобы создать наше простое приложение на Python, мы будем использовать библиотеку Python CAN для управления сетью CAN. Вы также можете использовать API сокетов в Python для связи CAN, поскольку Python поддерживает CAN с версии 3.3, но на данный момент это более низкоуровневый подход.
Чтобы проиллюстрировать запрос OBD-II для PID 0x0C, как определено в стандарте для частоты вращения двигателя (RPM), мы представляем код ниже. Это будет:
- Создайте интерфейс CAN-шины
- Создайте ссылку на сообщение CAN для запроса
- Запрос сообщения CAN — это кадр CAN с DLC размером 8 байтов.
- Сообщение будет построено в следующем формате для стандарта SAE:
- Байт 0 — количество дополнительных байтов: 2
- Байт 1 — 1, чтобы показать текущие данные
- Байт 2 — запрашиваемый PID-код
- Байты с 3 по 7: они не используются, но ISO 15765-2 предлагает установить для них CCh
- Отправьте запрос в главный ЭБУ с идентификатором 0x7DF
- Получите сообщение и сравните его с ожидаемым идентификатором ответа 0x7E8
- Если мы получим сообщение от ожидаемого идентификатора ответа, он напечатает результат в шестнадцатеричном формате.
Чтобы выполнить наше приложение CAN, мы должны сначала настроить и включить сеть CAN в модуле. Интерфейс CAN1, физический, уже включен в его дереве устройств и обозначен как can0 на стороне Linux. Процесс настройки и включения может быть выполнен с помощью вызовов os.system () в Python, в которых мы настраиваем сеть CAN с битрейтом 500k.
# In the extension we shall bring up the interfaces directly within our Python app
os.system(“ip link set can0 type can bitrate 500000”)
time.sleep(1)
os.system(“ip link set can0 up”)
time.sleep(1)
# set up a CAN bus
bus = can.interface.Bus(channel=”can0″, bustype=’socketcan’)
# using defaults functional address
obd2_tx_arb_id = 0x7DF
obd2_rx_arb_id = 0x7E8
# CAN Frame for a PID Request of 0x0C (RPM) with SAE Standard
obd_req_data = [2, 1, 0x0C, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC]
# Send our OBD-II query in CAN 11-bit format
msg = can.Message(arbitration_id=obd2_tx_arb_id, data=obd_req_data, is_extended_id=False)
bus.send(msg)
message = bus.recv(1.0) # Timeout in seconds.
if message is None:
print(‘Timeout occurred, no message.’)
sys.exit(1)
# Check if received the expected response message
if message.arbitration_id == obd2_rx_arb_id:
print(“Message received from OBD-II request!”)
hex_data = “”
for c in message.data:
hex_data = “X ” % c
print(“Response ID: X | Response Data: %s” % (message.arbitration_id, hex_data))
import time import os import sys import can # In the extension we shall bring up the interfaces directly within our Python app os.system(“ip link set can0 type can bitrate 500000”) time.sleep(1) os.system(“ip link set can0 up”) time.sleep(1) # set up a CAN bus bus=can.interface.Bus(channel=“can0”,bustype=‘socketcan’) # using defaults functional address obd2_tx_arb_id=0x7DF obd2_rx_arb_id=0x7E8 # CAN Frame for a PID Request of 0x0C (RPM) with SAE Standard obd_req_data=[2, 1, 0x0C, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC] # Send our OBD-II query in CAN 11-bit format msg=can.Message(arbitration_id=obd2_tx_arb_id,data=obd_req_data,is_extended_id=False) bus.send(msg) message=bus.recv(1.0)# Timeout in seconds. ifmessage isNone: print(‘Timeout occurred, no message.’) sys.exit(1) # Check if received the expected response message ifmessage.arbitration_id==obd2_rx_arb_id: print(“Message received from OBD-II request!”) hex_data=“” forcinmessage.data: hex_data =“X “%c print(“Response ID: X | Response Data: %s”%(message.arbitration_id,hex_data)) |
Вы можете загрузить этот код в свою цель, скопировав и вставив его с помощью редактора nano, который мы установили в наш образ контейнера, как показано в его Dockerfile. Другой способ — привязать этот контейнер к /home/torizon, чтобы упростить отправку кода через scp.
Имея приложение под рукой, давайте попробуем его.
Инструкция по диагностике авто с помощью ноутбука в 10 шагов
Процесс диагностики ТС с помощью Scan Tool Pro достаточно прост, чтобы сделать работу своими руками и не привлекать к помощи работников СТО.
Проделайте следующие шаги:
- Подготовьте ноутбук и установите на него необходимое программное обеспечение. Сразу после этого введите активационный ключ для получения доступа ко всем функциям.
- Скопируйте папку с названием «ru» в папку /locate для получения русскоязычного интерфейса.
- Войдите в программу и в перечне доступных языков выберите русский.
- Подключите сканер к разъему OBD-2 или используйте для этого переходник, о котором упоминалось ранее в статье.
- Включите на ноутбуке возможность соединения по Bluetooth и соединитесь с V-Link. Первоначальный пароль, если он не менялся, будет 0000 или 1234. Попробуйте оба варианта.
- Определите COM для подключения адаптера. В приведенном примере используется COM5.
- Перезагрузите программу, а после перейдите в раздел Установки, а там войдите в категорию Связь. Сделайте выбор в пользу ручных настроек.
- В раскрывшемся перечне поменяйте COM1 на COM5, а после жмите ОК.
- Кликните на кнопку «Соединить» и выждите, пока не начнется процесс синхронизации. Если работа сделана правильно, в конце отображается отчет.
- Изучите Таблицу оперативных данных на факт текущих параметров датчиков и контролируйте работоспособность систем машины. Перейдите в раздел «Коды ошибок» для изучения особенностей обозначений и их расшифровки.
Как видно из инструкции, процесс диагностики автомобиля не должен вызывать трудностей даже в случае, если работа делается самостоятельно. Главное — установить ПО на ноутбук и правильно подключить сканер к диагностическому разъему транспортного средства.
Краткий разговор о can
Прежде чем мы углубимся в технические детали приложения, вы должны знать, что оно будет использовать CAN, что означает сеть контроллеров. Это один из наиболее часто используемых протоколов связи для транспортных средств, грузовиков и даже тракторов. Если у вас есть автомобиль, произведенный после 2004 года, он наверняка имеет сеть CAN, соединяющую десятки ЭБУ.
Для тех, кто не знаком с этим термином, ЭБУ(ECU) — это аббревиатура от электронный блок управления (Electronic Control Unit). Он соответствует каждому электронному устройству в сети CAN, которое может принимать и передавать данные, отвечая за управление одной или несколькими функциями в транспортном средстве, такими как двигатель, трансмиссия и даже мультимедийная система.
Как правило, любой данный ЭБУ, действующий как узел CAN, способный взаимодействовать с шиной CAN транспортного средства, должен иметь два основных компонента: контроллер CAN, который реализует уровень канала передачи данных ISO 11898-1 для CAN, и приемопередатчик CAN, который, в свою очередь, заботится о физическом уровне в соответствии со стандартами ISO 11898-2 / 3, как показано на рисунке 1.
Первоначально шина CAN была предназначена для использования на транспортных средствах, но она оказалась настолько надежной, что ее начали использовать другие области, добавляя транспортные протоколы, чтобы она могла поддерживать больше приложений, таких как стандарт CAN J1939, созданный для грузовиков, и ISO-11783 (также известный как ISOBUS) создан для тракторов. OBD-II поверх CAN, о котором мы будем говорить, построен на ISOTP, или, другими словами, ISO-15765-2.
В том же направлении сеть CAN в большинстве транспортных средств также должна обмениваться данными по стандарту бортовой диагностики (OBD-II), в котором она должна отвечать на серию запросов, чтобы предоставить информацию о скорости, оборотах в минуту, уровне батареи, уровне топлива, среди множества других данных, связанных с информацией о двигателе.
Возможность взаимодействия с данным транспортным средством со стандартом OBD-II позволяет любому приложению запрашивать информацию из главного ЭБУ данного транспортного средства, без необходимости знать собственные сообщения CAN, используемые каждым производителем для передачи интересующего сообщения.
Этот разъем обычно используется компаниями для телематических устройств для мониторинга, помимо других доступных переменных транспортных средств, скорости транспортного средства, уровня топлива, уровня заряда батареи, сгруппированных вместе с данными геолокации, полученными через приемник GPS / GNSS.
OBD-II — это подход «запрос-ответ». Другими словами, вам не придется читать не интересные вам сообщения по мере их появления. Вы будете отправлять сообщения главному ЭБУ транспортного средства, чтобы он реагировал на данную информацию, например, на скорость транспортного средства.
Главный ЭБУ автомобиля ответит на этот запрос, и вы обработаете сообщение в соответствии со стандартом OBD-II. Главное преимущество этого подхода заключается в том, чтобы не спамить шину CAN и периодически запрашивать интересующие сообщения, например, один раз в минуту.
Torizon и Verdin
Если вы еще не слышали о Torizon, предлагаем вам взглянуть. Torizon — это простая в использовании промышленная встраиваемая Linux-платформа Toradex, которая использует приложения в контейнерах, управляемых Docker, с тем, чтобы облегчить разработку встроенных системных решений. Он также поставляется с клиентом OTA с безопасностью автомобильного уровня. Это открытый исходный код.
Вместе с Torizon Toradex уже предоставляет новое семейство компьютеров-на-модулях под названием Verdin, основанное на разъеме DDR4 SODIMM. Verdin имеет оптимизированный интерфейс, а также упрощенные требования к источнику питания и управлению питанием всей системы.
https://www.youtube.com/watch?v=_PvUMDDlzxw
Он разработан для суровых условий, и его прямой выход позволяет добавлять реальные порты ввода-вывода без необходимости пересекать трассы или слои. Первые модули Verdin основаны на процессорах приложений i.MX 8M Mini, подобных показанному на рисунке 6, который использовался в этом примере.
NXP i.MX8 M Mini SoC не поставляется с собственными контроллерами CAN. Чтобы компенсировать это, Toradex добавила в модуль контроллер MCP2518 SPI CAN, как показано на рисунке 7. Контроллер CAN MCP2518 совместим с CAN-FD и является хорошим выбором для приложений CAN высокого класса.
В настоящее время есть две несущие платы, которые вы можете использовать для оценки компьютера-на-модуле Verdin: Dahlia и плата разработки Verdin. Dahlia — это компактная несущая плата, обеспечивающая легкий доступ к наиболее распространенным функциям семейства Verdin, а плата разработчика Verdin — это несущая плата, цель которой — раскрыть все функции модуля.
В этой демонстрации мы будем использовать плата разработки Verdin, но вы можете легко использовать Dahlia. Плата разработки Verdin использует изолированный CAN-трансивер ISO1042BDWR от Texas Instruments, который предоставляет все необходимые сигналы для CAN, такие как:
Мы предоставляем подробные инструкции по правильному использованию Verdin iMX8MM и платы разработки Verdin в Кратком руководстве от Toradex.
Поскольку TorizonCore является встроенным дистрибутивом Linux, он поддерживает SocketCAN, предоставляемый ядром Linux, что позволяет приложению взаимодействовать с сетью CAN как соединение сокета с Linux Socket API.
Теперь, когда все настроено, давайте сделаем шаг за шагом, чтобы вы могли установить TorizonCore 5 в свой Verdin iMX8MM и наше приложение-контейнер для связи CAN со стандартом OBD-II.
Написание программы для диагностики авто как практика программирования на java. результаты года и планы
Здравствуйте.
Я разрабатываю приложение для поиска неисправностей автомобиля и расшифровки кодов ошибок его ЭБУ через elm327 (на данном этапе только по стандарту OBD2) на Android для развития навыков программирования на Java и здесь раскажу об итогах года и планах развития работы c elm327 в моем приложении.
После релиза я обещал выложить пост о продвижении приложения, ведь мало его создать, нужно еще и продвинуть как-то, чтобы его начали скачивать. После публикации на Пикабу в первый день было 30 скачиваний, затем некоторый провал на пару недель по два три скачивания в день и уже начали опускаться руки, от того, что никому это приложение не нужно, но потом после обработки алгоритмами GooglePlay приложение начало индексироваться и искаться в поиске по запросу “Расшифровка кодов ошибок”. Сейчас приложение стало уже выходить на первых позициях в поиске по этому и подобным запросам. Денег на рекламу и мотивированные установки я пока не тратил ни копейки.
За год удалось заработать 100 долларов, мало конечно, но для начала достаточно.
После января 2021 года было очень много работы и почти до сентября не удавалось заниматься приложением, только базу расшифровок кодов ошибок пополнял периодически.
В ноябре обновил приложение и добавил около 20000 расшифровок ошибок определенных производителями. Также добавил возможность расшифровывать сразу несколько кодов ошибок, чтобы видеть более полную картину неисправностей в случае большого количества ошибок.
Но главная цель была сделать полный цикл поиска расшифровки ошибок в моем приложении и делать это не хуже, а может даже и лучше, чем другие аналогичные приложения. Для этого я начал искать, как читать данные через elm327 на Java.
И нашел! Библиотека obd-java-api (разработчик Pires) позволяет работать с bluetooth адаптером elm327 для взаимодействия с ЭБУ автомобиля. Интегрировав эту библиотеку в мое приложение, я получил возможность читать коды ошибок OBD2(система бортовой диагностики для систем, связанных с токсичностью выхлопных газов) попутно расшифровывая считанные коды ошибок, а также сбрасывать ошибки, связанные с токсичностью выхлопов и гасить лампу CheckEngine.
В будущем хочу добавить возможные причины неисправности для некоторых ошибок и может быть даже примерное расположение датчиков.
Что же дальше?
Во-первых мне необходимо понять, как ошибки читаются через мою программу на реальных автомобилях у пользователей (пока только тестировал на симуляторе с разными наборами возможных ошибок), а для этого нужна обратная связь от пользователей: какая марка, какого года выпуска, как много ошибок считалось (и удалось ли вообще), сбрасывается ли CheckEngine. Возможно вы будете одним из этих пользователей и надеюсь мое приложение окажется вам полезным;
Во-вторых мне нужно добавить пользовательские строки инициализации Elm327, чтобы обеспечить чтение автомобилей с переходными протоколами, на смену которым пришел стандартизированный OBD2. Эти строки конечно уже есть во многих программах диагностики авто на Android, но мне интересно разобраться в этом на практике. В основном отличия в адресах ЭБУ двигателя и тестера, и обмене на уровне адресов блоков, а не функциональном адресе OBD2 по умолчанию в Elm327;
В-третьих, хочу решить (и надеюсь вы мне поможете в этом), что реализовывать в первую очередь и что вам нужнее для диагностики автомобиля:
Первый вариант – чтение кодов ошибок как можно большего количества блоков управления (доступных для чтения при стандартной распиновке модуля elm327) по протоколу UDS, а также сброс этих ошибок.
Для этого нужно каким-то образом найти адресацию запросов и ответов специфичных ЭБУ (для Renault я нашел много информации для размышления в Ddt4All, а вот на другие марки пока не получается найти (есть противоречивая информация по адресации блоков для BMW и VAG));
Второй вариант – чтение стандартных и нестандартных параметров (так называемых PID) с построением графиков. Правда добавлять кастомные csv файлы с PID как в Torque мне пока не по зубам, но запрограммировать максимальное количество наборов PID для разных моделей авто попробовать можно.
Сейчас у меня 75% пользователей, установивших мое приложение, почему-то удаляет его обратно, надеюсь этот показатель изменится в лучшую сторону после внедрения нового функционала..
В честь начала декабря и приближающегося нового года раздаю 31 промокод на ПРО-версию без рекламы и с возможностью делиться результатами расшифровки группы ошибок и поиска кодов ошибок через Elm327:
1) ZTD6GVFC7CGJQVVUW613LXV
2) SCF2180DG7FU5RTUTCKM0FV
3) 5KLL4PEJZVGJW9ZQSAEHER5
4) T4DXA32Y22NUHZQ3ET5145S
5) CTFC8JDGSZ4B6F667CC3QUA
6) 5D5S2YQ09XQK9LD7QR6HTUR
7) 2MQ9F7NZ85HBA44B4AQNPAM
8) 21LKGHQRFN7W0CP97SAQZGJ
9) 361EHRR1U7RUTMH0UDT18ZY
10) K3SD9AK4B7BE3A9NQEQ5GWY
11) 11FJ3YZQBZZW7LN4CPWT6Q7
12) H95TXKLX9RJP72W0S38G7LX
13) RHKSF35HBH4J36UTRDF0FW5
14) AF2CFTPK2ZYGF3Z61251DQP
15) HLUPZ4G7SJH2UJG452BSX29
16) 9HA0WCXXWMUKTMSVCT3RJV0
17) CSDZAZZD2WYDCS0MNNK63ZT
18) 91EASHV9WD9JPJPL8YMMAAF
19) 53L1RYKWWQV36PWEYG4BZA2
20) TGTY9HAALMXQT8SEC27R2SE
21) S57GQ9U8G8QC2WA5FSYKJYM
22) S21JT8ZEVZNPCRNTTZDEU2A
23) 2PBVJE2UYR1JM02R3LUM0YP
24) WP5V2R3TNP3TVVG24T2LALU
25) JF4Q77VXEZKUXR51W8EXUEA
26) 58XCRAJRW0Z5PYVH9J29M3A
27) BRT34K0C5G1KKKB00NPWT3V
28) 1A0KP8HVWFP7K6G95XC19NL
29) X8PBXVAG3GB2GM1UEJKNP85
30) GB5RR0RAXL64DG9KS86SBEW
31) TSTC0710SG9MMLWJU8N2CJ6
Просьба отписываться в комментариях о том, какой номер промокода вы использовали.
Если будут проблемы с активацией промокодов пишите на почту wheelsoftlab.tech@gmail.com
Для заинтересовавшихся вот ссылка на приложение: https://play.google.com/store/apps/details?id=ru.wheelsoft.f…
Необходимые материалы
Прежде всего нам нужен OBDII адаптер способный работать с вашим автомобилем. Существует множество таких адаптеров. Некоторые из них имеют COM интерфейс, некоторые — USB интерфейс, а некоторые — Bluetooth интерфейс. Теоретически любой может быть использован для нашего приложения, но на практике лучшим вариантом все-же будет Bluetooth.
Подождите — у вас действительно есть автомобиль достаточно близко к среде разработки? На самом деле мы могли бы использовать симулятор на первых порах. Один из вариантов, работающий у меня — это приложение OBDSim. Это открытый проект доступный для многих платформ.
Но поскольку Bluetooth не поддерживается в Windows, то приложение нужно будет собрать из исходных кодов в Linux. Также обратите внимание, что скорее всего вам нужно будет внести изменения в исходный код для того чтоб изменить RFCOMM канал на первый доступный вместо предлагаемого канала 1.
Второй вариант — это аппаратный симулятор, который можно использовать вместо автомобиля. Я использовал ECUsim 2000 standard с включенным протоколом ISO 15765 (CAN). А OBDII адаптер я использовал ELM327 v.1.5
Переходники и удлинители obd-2, существующие на рынке
С помощью переходников OBD-2 доступна диагностика автомобиля с применением современных устройств без OBD-разъема.
Устройства подходят для автомобилей Ауди, Хонда, Мерседес Бенц, Ауди, Опель, Ниссан, Митсубиси, ВАЗ и другие.
Основные виды переходников перечислены ниже.
- GM12 pin — OBD2. Подходит для машин Шевроле, Дэу, ЗАЗ и ВАЗ.
- ГАЗ 12 pin — OBD2. Применяется для авто УАЗ и ГАЗ, используется 12 контактов.
- Набор переходников AutoCom для легковых автомобилей. Для людей, которые профессионально занимаются диагностикой, может пригодится комплект оборудования в него входит следующий набор — VAG 2 2 pin -> OBD-2 (для Ауди, Шкода, Сеат и Фольксваген), BENZ 38 pin -> OBD-2 (для Мерседес Бенц), BMW ADS 20 pin -> OBD-2 (для БМВ), FIAT 3 pin -> OBD-2 (для Альфа Ромео, Фиал и Лянчиа), OPEL 10 pin -> OBD-2 (для Опель), PSA 2 pin -> OBD2 (для Пежо и Ситроен), PSA 30 pin -> OBD-2 (для Пежо и Ситроен).
- Набор переходников AutoCom для грузовых авто. В комплектацию входит 7 pin Knorr Wabco Trailer Cable, а также другие комплектующие — 12 pin MAN Cable, pin IVECO Cable, 16 pin SCANIA Cable, 12 pin Renault Cable, 8 pin VOLVO Cable, 37 pin MAN Cable, BENZ Cable.
- VAG 2×2 – OBD-2. Подходит для машин VAG группы, выпущенных до 1997-го. В комплектацию входит две фишки — диагностические линии K и L, а также 12 В питания с «землей». Каждая из фишек подписана, предусмотрены засечки от неправильного подключения.
- Kia 20pin – OBD-2. Используется для диагностики авто марки Киа. Имеет 20 разъемов. Сам разъем находится в подкапотном пространстве. В некоторых моделях можно использовать сканер ELM327, но с помощью упомянутого адаптера.
- Ford 7pin — OBD-2 — для диагностики автомобилей Форд, Линкольн и Меркури. В основном применяется для старых машин марки Форд, выпущенных в период с 1985 по 1995 года.
- Mercedes 38 pin – OBD-2 — предназначен для диагностики автомобилей Мерседес, сошедших с конвейера в период с 1994 до 2002 года. Имеет 38 контактов в разъеме.
- Mercedes 14 pin — OBD-2 — передник с разъемом на 14 контактов для OBD-2. Предназначен для проверки авто марок Фольксваген, Мерседес Бенц (Спринтер, Актрос и Атего).
- Nissan 14 pin – OBD-2 — устройство для диагностики машин марки Ниссан старых годов выпуска, имеющих гнездо на 14 контактов.
- Toyota 22 pin Japan – OBD-2 — переходник для диагностики авто, выпускаемых на японском рынке до появления OBD-2 стандарта.
- Toyota 17 pin – OBD-2 — применяется для машин Тойота с диагностическим OBD-разъемом на 17 контактов.
- BMW 20 pin – OBD-2 — помогает в диагностике авто БМВ, произведенных до 2020 года.
- Honda / Acura 3 pin – OBD-2 — переходник для машин от производителя Акура и Хонда, имеющих 3-pin разъем. Его покупка позволяет выполнить диагностику старых моделей.
- Honda / Acura 5 pin – OBD-2 — используется для диагностики машин Хонда более раннего модельного ряда. Подходит для подключения авто с 16 контактами к моделям, имеющих 5-разъемную колодку.
- Subaru 9 pin – OBD-2 — применяется для машин Субару и обеспечивает переход с 9-разъемной на 16-разъемную группу. Такой тип OBD устанавливался на Субару, выпускаемы в период 1993-2001 года.
- Renault 12 pin – OBD-2 — переходник, позволяющий подключить сканер между авто с 12 и 16 пинами. Подходит для проверки автомобилей Рено.
- Mazda 17 pin – OBD-2 — подходит для диагностики автомобилей Мазда, имеющих 17-разъемную колодку. С его помощью можно смело применять современные сканеры.
- Mitsubishi / Hyundai 12 pin — применяется для авто марок Хендай и Митсубиси, выпущенных в период 1989-1998 год. Имеют колодку с 12 контактами.
- Opel / Vauxhall 10 pin – OBD-2 — предназначен для диагностики Вауксхолл и Опель. Автомобили должны быть выпущены до 1996-го. Их особенность — наличие прямоугольного разъема с 10 контактами.
- Fiat, Lancia, Alfa Romeo 3 pin – OBD-2 — используется для машин марок Альфа Ромео, Ланчиа и Фиат, имеющих 3-пиновое гнездо, а также зажимы типа «крокодил» для внешнего питания.
- Peugeot, Citroen 30 pin — OBD-2 — предназначен для диагностики Ситроен и Пежо, вышедших с конвейера до 1997 года.
- Cummins 9 pin (КАМАЗ, КАВЗ, ПАЗ) – OBD-2 — используется для диагностики машин КАВЗ, КАМАЗ и ПАЗ. Обеспечивает переход с 9-ти на 16-пиновый разъем.
- Volvo 8 pin – OBD-2. Переходник для применения на грузовых машина Вольво с 8-контактной колодкой.
- Iveco 30 pin – OBD-2 — используется для подключения оборудования с 30-пиновый на 16-контактный разъем. Применяется для диагностики автомобилей Ивеко.
- SCANIA / DAF-16 pin — удобный инструмент, обеспечивающий переход между старыми колодками Скания или Даф на новые типы разъемов для проведения диагностических работ.
- OBD-2 1.5 метра — удлинитель на 1,5 м, предназначенный для подключения разъема к сканеру.
- OBD2 20 см — еще один удлинитель, предназначенный для применения в условиях ограниченного доступа к разъему. Имеется распайка всех 16 контактов.
- Переходник с OBD-2 на RS232 COM.
Список переходников и удлинителей достаточно широк, чтобы подобрать оптимальный вариант и провести диагностику автомобилей разных марок и годов выпуска своими руками.
Расшифровка диагностических кодов протокола obd-2
Сегодня коды неисправности подведены к единому стандарту для упрощения процесса диагностики и определения неисправности автомобилей разных марок. Впервые стандарт появился в Соединенных Штатах в 1996-м, а в Европе в 2001-м. В России он применяется ориентировочно с 2006 года.
Код ошибки можно распознать по специальному обозначению, состоящему из буквы и следующей за ней группой цифр. Знание расшифровки каждой из комбинаций позволяет быстро отыскать ошибку.
Для примера рассмотрим код P0257. Он состоит из двух элементов — буквы и четырех цифр.
1-й символ.
Первая буква может быть четырех видов:
- P (Powertrain). Свидетельствует о наличии проблем в коробке передач или моторе.
- C (Chassis). Этот код ошибки показывает на неисправности в шасси, а именно ABS, блокировке дифференциала, системе антизаноса.
- B (Body). Наличие такой буквы в коде свидетельствует о сбоях в работе кондиционера, климат-контроля, подушек безопасности или люков.
- U (Network). Код неисправности дает информацию о сбоях в сети блоков управления, трудностях связи между ними.
В нашем примере код начинается на букву P, что свидетельствует о проблемах в КПП или двигателе.
2-й символ.
Сразу после буквы можно увидеть цифровой ряд.
Первое число может быть двух видов:
- «0» — свидетельствует о том, что это общий код неисправности для OBD-2, характерный для всех производителей. Иными словами, наименование будет идентичным для различных марок авто, будь это БМВ, Тойота или другие.
- «1» — индивидуальный код, характерный для конкретного производителя. Появление такой цифры после числового обозначения требует внимательно подойти к интерпретации ошибки. На практике возможны совпадения, но в 8 из 10 случаев у каждой марки индивидуальные обозначения. Они указываются на специальном или английском языке.
В приведенном примере после P стоит цифра два, что свидетельствует о наличии стандартного кода.
3-й символ.
По третьему значению в коде можно понять, в каком именно узле возникла проблема.
Здесь возможны следующие варианты в привязке к цифре обозначения:
- Система подачи топлива или воздуха.
- То же самое.
- Система зажигания.
- Дополнительный контроль.
- ХХ (холостой ход).
- Электронный блок управления и его цепочки.
- Трансмиссия.
- То же самое.
В нашем примере на третьем месте 2, поэтому проблема касается системы подачи топлива или воздуха. Именно там необходимо искать проблему.
4-й и 5-й символ.
Последние две цифры — порядковый номер выпавшего кода ошибки применительно к текущей диагностике автомобиля. Начинается от 01 и далее. В нашем примере речь идет о 57-й ошибке.
Сканер
Устройство подключается к разъему и покупается под конкретную марку/модель машины.
Ряд производителей выпускает универсальные сканеры, подходящие к большей части авто отечественного и зарубежного производства.
Примером такого устройства может послужить мультимарочный диагностический сканер Rokodil ScanX.
Сканер надежен в работе и совместим с большинством бензиновых автомобилей начиная с 1993 года выпуска и дизельных с 1996.
Подключение осуществляется через блютуз версии 4.2 к любому устройству на базе iOS, Android или Windows.
С его помощью можно провести полную диагностику авто, сбросить существующие ошибки, узнать показания по всем датчикам.
При покупке б/у авто будет полезным функция отображения VIN автомобиля и его реального пробега.
Учитывая невысокую стоимость, затраты на приобретение устройства окупятся за 1-2 поездки на СТО.
Вместе с таким оборудованием может входить кабель для подключения к ноутбуку. В состав сканера входит схема, блоки разъемов, а также панели управления и сигналов.
По своей сути адаптер — переходник между ЭБУ и ноутбуком, применяемым для компьютерной диагностики. Его задача в том, чтобы получить, расшифровать и передать данные в понятном виде.
Особую популярность у автомобилистов получили автосканеры работающие на чипе ELM327.
Сканеры на базе чипа elm327
Адаптеры ELM327 пользуются спросом у автовладельцев, желающих самостоятельно проверить автомобиль обойтись без посещения СТО. Они позволяют проверить машину с помощью ПК, ноутбуков и других устройств. Функционал оборудования зависит от применяемого ПО.
Чаще всего программы позволяют проверить трансмиссию и мотор, но некоторый софт помогает изучить и другие блоки машины.
Базовые функции:
- Диагностика мотора и системы подачи топлива.
- Считывание и изучение кодов ошибок.
- Проверка электроники транспортного средства.
- Выявление поломки контролирующих датчиков.
- Сброс ошибок и т. д.
С помощью адаптера можно проверить информацию от кислородного датчика, узнать обороты мотора, температуру ОЖ и давление в коллекторе пуска.
Применение сканера позволяет изучить состояние системы подачи топлива, увидеть положение заслонки дросселя и измерить скорость машины.
В оборудовании предусмотрена опция ведения логов, отображение данных в графическом виде, споп-кадр и другое.
Поддерживаемые протоколы:
- ISO 9141-2. Применяются для автомобилей Хонда, ВАЗ, ГАЗ, Тойота, Ниссан, Мерседес, Инфинити, Порше, БМВ, Лексус и т. д.
- ISO 15765-4 (CAN) подходят для машин Рено, Ягуар, Форд, Фольксваген, Опель, Ауди, Мазда, Сааб, Вольво, Порше, Пежо, Рено, Опель и других.
- ISO 14230-4 (KWP2000) — протокол, поддерживаемый автомобилями Хендай, Дэу, Киа и т. д.
- J1850 VPW подходит для машин Шевроле, Бьюик, Додж, Исузу, Кадиллак, Крайслер и Дженерал Моторс.
- J1850 PWM — совместим с Форд, Мазда и Линкольн.
Сканер ELM327 — универсальный прибор, используемый для компьютерной диагностики ТС своими руками без обращения на СТО.
С его помощью можно проверить машины разных производителей:
- Отечественные — Шевроле Нива, ВАЗ, ЛАДА, ГАЗ, Ланос, Сенс, Славута (инжектор).
- Зарубежные с бензиновыми моторами — Ауди, Акура, Альфа Ромео, БМВ, Астра, Бьюик, Шевроле, Чери, Крайслер, Ситроен, Дача, Дэу, Додж, Кровн Виктория, Даймлер Сикс, Фиат, Форд, Джили, Хонда, Греат Вол, GMC, Хендай, Инфинити, Исузу, Киа, Джип, Ягуар, Киа, Мазда, Лексус, Линкольн, Лянчия, Мерседес, Митсубиши, Ниссан, Опель, Олдсмобил, Пежо, Рено, Порш, Понтиак, Плеймоут, Ровер, Сааб, Сатурн, Шкода, Сеат, Смарт, Ссанг Йонг, Субару, Сузуки, Тойота, Триумф, Фольскваген и Вольсов.
- Зарубежные с дизельными моторами — БМВ, Альфа Ромео, Ауди, Шевроле, Фиат, Ситроен, Форд, Джип, Исузу, ГрейтВол, Хонда, Киа, Мазда, Лэнд Ровер, Мерседес Бенц, Ниссан, Сузуки, Ссанг Йонг, Опель, Пежо, Рено, Сеат, Фольксваген, Вольво и Виннабеджо.
Упомянутый список ориентировочный, а отсутствие в нем вашей марки авто не означает, что она не поддерживается ELM327.
Тестирование нашего примера приложения с помощью симулятора obd-ii
У нас есть два способа проверить приложение CAN OBD-II:
- Подключаем наше устройство к разъему OBD-II на транспортном средстве и начинаем общаться с реальным транспортным средством.
- Использование другого устройства в качестве «ЭБУ» и ответа на запросы OBD-II по CAN.
Вариант 2 жизнеспособен, в противном случае потребовалось бы хорошее расширение мощности, чтобы мы могли попробовать его в машине автора этого обзора.
Сохраняя тему «Python», существует также проект Python виртуального ЭБУ для ответа на запросы OBD-II, называемый OBDSimulator. Мы использовали его на Colibri iMX6 с платой-носителем Viola, поэтому он будет вести себя как ЭБУ, отвечающий на наш Verdin iMX8MM по сети CAN между ними.
Использование несущей платы Viola было более сложной задачей при сборке установки с внешним трансивером CAN. Более простой способ — использовать оценочную плату Colibri для семейства Colibri или даже плату Ixora Carrier для семейства Apalis, поскольку эти несущие платы уже поставляются со встроенными трансиверами CAN, что делает их идеальными в качестве реализации эталонного дизайна. .
Схема, использованная для этого теста, показана на Рисунке 12. Для несущей платы Viola мы использовали приемопередатчик CAN SN65HVD230, так как iMX6 уже имеет контроллеры CAN. Он также использует резисторы 120 Ом на каждом конце «простой» сети CAN между ними.
С сервером OBDSimulator, работающим на Colibri iMX6 (как подробно описано в репозитории GitHub), мы выполнили следующие запросы на Verdin iMX8MM:
- Запросите текущие данные (режим 1) скорости двигателя (также известные как RPM, PID 0x0C):
Мы используем CAN в 11-битном формате, и после заданного запроса OBD-II ответ будет в следующем формате:
- Байт 0 — количество дополнительных байтов
- Байт 1 — 41h = отображение текущих данных
- Байт 2 — PID-код
- Байт 3 и выше — содержимое ответа на запрос.
В таблице OBD-II PID в Википедии информация о частоте вращения двигателя получается из содержимого запроса по следующей формуле:
Переменная A является третьим байтом в ответе, а переменная B — четвертым байтом (см. Ответ «Hex:» нашей команды выше). В OBDSimulator частота вращения двигателя составляет 514 об/мин. Давайте проверим, правда ли это?
((256 * 8) 8)/4 = 514
Это также показывает еще один ценный ресурс: обратите внимание на подробное описание каждого PID OBD-II, чтобы декодировать запрошенную информацию!
Мы можем изменить код, чтобы запросить другие PID OBD-II. Измените значение obd_req_data, чтобы теперь он запрашивал PID 0x0D (скорость автомобиля в км/ч) с текущими данными (режим 1):
Выполнение кода теперь даст нам вывод для запроса OBD-II PID 0x0D:
Если после повторного выполнения кода вы получаете сообщение «RTNETLINK отвечает: устройство или ресурс занят», это означает, что сетевой интерфейс уже настроен и работает.
В таблице OBD-II PID в Википедии информация о скорости транспортного средства получается как прямой результат третьего байта ответа, который является ответом на наш запрос. В OBDSimulator установлена скорость автомобиля 26 км / ч. Давайте проверим, правда ли это?
1A в шестнадцатеричном формате — 26 в десятичном. Так что, это!
Упрощение с помощью расширения torizon с кодом visual studio
Некоторые из вас могут быть не слишком знакомы с Docker и контейнерами. Это не проблема для работы с Torizon, знаете почему? Toradex также предоставляет вам расширение Torizon, доступное как для Visual Studio, так и для Visual Studio Code. С помощью расширения Torizon вы сможете быстро разрабатывать и загружать приложения в модуль с TorizonCore.
У использования нашего расширения Torizon для Visual Studio Code много преимуществ, не говоря уже о поддержке разработки приложений на следующих языках программирования:
Расширение Torizon позволяет развертывать и отлаживать ваше приложение в целевом объекте по сети всего за несколько щелчков мышью, имея также возможность управлять и отслеживать ваши устройства и контейнерные приложения с ними.
В этом конкретном примере мы покажем вам, как вы можете легко настроить приложение Python с помощью расширения Torizon для кода Visual Studio и запустить его на Verdin iMX8MM с установленным TorizonCore 5.
Давайте выполним следующие простые шаги для настройки:
- Загрузите и установите Visual Studio Code и Torizon Extension в соответствии с инструкциями.
- Имейте в виду, что вы должны настроить среду сборки для контейнеров Torizon, как мы объяснили выше.
- Создайте новый проект Torizon / Python в коде Visual Studio
После выполнения этой первоначальной настройки ваша среда готова для разработки приложения Python для Torizon. Следующие шаги обычно включают определение необходимых параметров, дополнительных пакетов и самого кода.
Вы можете видеть, что в коде Visual Studio в левой части экрана есть панель, содержащая значки каждого ресурса редактора. Одна из них — иконка Torizon. Щелкните по нему и настройте следующие параметры, наблюдая, что в каждом элементе появится значок типа « » или символ карандаша справа, который вы должны щелкнуть, чтобы добавить или отредактировать этот конкретный элемент:
См. Обзор этой части на рисунке 14.
По сути, это те изменения, которые мы внесли в Dockerfile вместе с командами «docker run», которые мы выполнили вручную выше. Но теперь Torizon Extension позаботится о всех формальностях за нас.
Теперь перейдите в меню «Проводник» в коде Visual Studio, затем откройте файл «main.py» вашего проекта. Скопируйте и вставьте тот же код, который мы использовали в примере командной строки выше.
Чтобы загрузить этот код на свою плату, где расширение Torizon уже запросило свои учетные данные (например, имя хоста / IP, пользователь и пароль), вы можете просто нажать F5 на клавиатуре. Затем утилита начнет создавать образ контейнера, загрузит его в устройство и начнет выполнение в режиме отладки, процесс, который вы можете наблюдать в разделе «Вывод» кода Visual Studio.
С помощью расширения Torizon и кода Visual Studio вы также можете добавлять точки останова в свое приложение для отслеживания частей процесса выполнения программы. На рис. 15 показан пример выполнения приведенной выше программы с точками останова.
Установка torizoncore 5
На момент написания этого обзора TorizonCore 5 все еще находится в стадии разработки. Мы решили использовать его в нашем обзоре, потому что это будет наша основная ориентированная версия TorizonCore. Посетите веб-страницу Torizon, чтобы увидеть дорожную карту для получения дополнительной информации.
Чтобы установить его в Verdin iMX8MM, сначала вы должны использовать нашу последнюю версию Toradex Easy Installer — 2.0b6, доступную через наши ночные сборки в Toradex Artifactory. Вы можете найти подробные инструкции о том, как его получить, в разделе «Ночной выпуск» на странице «Простой установщик Toradex».
Если в Verdin iMX8MM загружен Toradex Easy Installer 2.0b6, вам необходимо использовать наши каналы CI для загрузки TorizonCore 5, что можно сделать, щелкнув пункт меню «Feeds» в меню Toradex Easy Installer и отметив значок Вариант подачи CI, как показано на рисунке 9.
Этот процесс займет некоторое время, так как он загрузит множество ссылок на изображения из Toradex Artifactory.
После завершения загрузки выберите один образ TorizonCore 5, например «5.1.0-devel-20202119 build.98», выбранный ниже (одна из наших последних ночных сборок), и установите его. Если вы не можете найти эту, выберите самую близкую к вашей дате ночную сборку.
Обратите внимание, что ночные сборки могут быть нестабильными. Если вы обнаружите проблему, не стесняйтесь опубликовать ее в нашем сообществе Toradex, и мы проанализируем ее как можно быстрее. После установки вы сможете получить доступ к TorizonCore 5 через адаптер Verdin Development Board USB-to-Serial X66.
Инструкции о том, как получить доступ к консоли модуля через последовательный порт, представлены в нашей статье «Настройка консоли отладки последовательного порта (Linux / U-Boot)». При первом входе в систему и пользователь, и пароль — torizon. Вам будет предложено изменить пароль, как показано на рисунке 11.
Теперь у нас есть Verdin iMX8MM с TorizonCore 5, и пришло время для практического использования контейнера.