Записки диагноста-теоретика. Пишу ПО для автодиагностики на Android. Часть 2. Читаем данные с датчиков ЭБУ

Здравствуйте

В прошлой версии я сделал подключение к ЭБУ двигателя с автоматически подбором протокола обмена с ЭБУ двигателя для чтения и сброса ошибок по протоколам стандарта OBD2 (iso15031-5).

Записки диагноста-теоретика. Пишу ПО для автодиагностики на Android. Часть 2. Читаем данные с датчиков ЭБУ Автодиагностика, Android разработка, ELM327, Приложение на Android, Авто, Разработка, Длиннопост

Сейчас я жалею, что не подключил аналитику FireBase к приложению, поэтому приходится судить о результативности по показам рекламных объявлений AdMob.

Записки диагноста-теоретика. Пишу ПО для автодиагностики на Android. Часть 2. Читаем данные с датчиков ЭБУ Автодиагностика, Android разработка, ELM327, Приложение на Android, Авто, Разработка, Длиннопост

Так вот, при успешном сбросе ошибок ЭБУ, показывается межстраничное объявление. Судя по соотношению запросов показов объявления в чтении кодов ошибок и запросов показа объявлений при успешном сбросе ошибок, около 75% пользователей, читающих ошибки,  успешно сбрасывают CheckEngine. Значит можно с определенной уверенностью считать, что протокол подбирается приемлемо, но ещё есть куда стремиться (напишите мне, пожалуйста, если у вас не получилось считать или сбросить коды ошибок, с указанием марки и года выпуска авто, я постараюсь узнать, какой протокол обмена должен быть, чтобы успешно выполнить операцию).

Теперь я добрался до чтения параметров с датчиков ЭБУ двигателя.

Давайте сначала немного окунемся в теорию для понимания процессов диагностики по OBD2.

Если рассматривать компьютерную диагностику, как набор так называемых «сервисов диагностики», можно выделить нужные нам для чтения ошибок, их сброса и получения расчетных значений параметров. Эти «сервисы» можно в свою очередь упрощенно разделить на связанные с выбросами в атмосферу (OBD2) и не связанные с ними (UDS).

Сервисы OBD2 для чтения ошибок:

0x03 — запрос кодов ошибок, состояние которых подтвержденно в течение определенного времени при определенных условиях;

0x07 — запрос кодов ошибок, состояние которых еще не подтверждено (нужно для проверки устранения неисправности после сброса ошибок, здесь код появляется почти сразу и обычно не отдаёт команду на включение сигнализатора CheckEngine, пока не перейдет в разряд подтвержденных);

0x0A (поддерживается не во всех реализациях протокола OBD2) — запрос кодов ошибок, которые сохранены в постоянной памяти. Их невозможно стереть из памяти с помощью сервиса сброса ошибок. Только алгоритмы блока управления могут определить, что неисправность устранена и автоматически удалить ошибки из постоянной памяти.


Сервис OBD2 для стирания ошибок — 0x04.


Сервисы UDS для чтения ошибок:

0x19 – сервис для чтения информации об ошибках любого вида, уточнение характеристик читаемых ошибок происходит во втором и третьем байте посылки. Например 1902FF считает все ошибки, даже те, которые просто еще не прошли проверку и не подтвердятся после всех внутренних тестов ЭБУ.

0x17 и 0x18 сервисы тоже читают ошибки (не буду вдаваться в подробности, но там есть отличия между способами чтения). Например,  в реализации протокола KWP2000 в ЭБУ Январь 5 на ВАЗах ошибки читаются сервисом 0x18.


Сервис UDS для стирания ошибок – 0x14.

Также в некоторых случаях для этой цели используется сервис выполнения функций 0x31.


Аналогично есть сервисы для чтения параметров.


В OBD2:

Сервис 0x01 - предназначен для чтения данных, связанных с токсичностью отработавших газов. Во втором байте запроса передаётся идентификатор параметра (PID), который указывает системе бортовой диагностики в ЭБУ об информации, которую нужно передать диагностическому оборудованию. Идентификаторы запросов для этого сервиса в большинстве случаев стандартны и только некоторые отданы производителям для нестандартных параметров.


В UDS:

Сервисы 21 и 22 позволяют считать данные по однобайтовому или двухбайтовому идентификатору. Идентификаторы в большинстве определяются производителями и только некоторые вроде чтения VIN или параметров версий прошивок стандартизированы.

Итак, сервисы UDS конечно хороши, но для их использования нужно знать адреса блоков и идентификаторы. А эту информацию я пока не нашёл. В OBD2 же адресация блоков управления стандартизирована.


Но и по протоколу OBD2 можно прочитать много параметров через сервис 01, правда поддерживаются они на каждом автомобиле в разном составе, и пока я реализовал чтение основных датчиков, которые были в реализации библиотеки obd-java-api. Это такие параметры, как скорость автомобиля, обороты двигателя, температура охлаждающей жидкости, положение педали акселератора, температура на впуске и т.п. Проверка доступных на проверяемых авто датчиков пока не реализована, но в следующих версиях планирую добавить. Это позволит не выводить датчики, которых нет в реализации протокола ЭБУ.

Записки диагноста-теоретика. Пишу ПО для автодиагностики на Android. Часть 2. Читаем данные с датчиков ЭБУ Автодиагностика, Android разработка, ELM327, Приложение на Android, Авто, Разработка, Длиннопост

Мне очень важно, чтобы на этом этапе было гарантированное считывание хотя бы скорости, оборотов и температуры охлаждающей жидкости, так как, если они будут на большинстве автомобилей, то можно на их основе сделать виртуальную панель приборов на OpengGL. Наработки в этой части уже есть на Linux, теперь нужно перенести на Android и вперед. Картинки не мои, но хочу примерно так же)

Записки диагноста-теоретика. Пишу ПО для автодиагностики на Android. Часть 2. Читаем данные с датчиков ЭБУ Автодиагностика, Android разработка, ELM327, Приложение на Android, Авто, Разработка, Длиннопост
Записки диагноста-теоретика. Пишу ПО для автодиагностики на Android. Часть 2. Читаем данные с датчиков ЭБУ Автодиагностика, Android разработка, ELM327, Приложение на Android, Авто, Разработка, Длиннопост

Можно конечно идти по пути Torque, CarScanner или ObdMary и делать кастомизируемые наборы стрелочных или цифровых приборов, но мне пока проще сделать не настраиваемую приборную панель, потому что её я уже делал раньше.


Пишите в комментариях, пользуетесь ли вы наборами цифровых или стрелочных приборов в программах диагностики или чаще просто графики смотрите или просто читаете и стираете ошибки?


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


Чтобы вам не мешала реклама и ограничения бесплатной версии, отдаю 50 промокодов для тех, кто хочет поэкспериментировать:


1) XEMJF1CRC58X2JUU5SPF6K8

2) THPTPYPUPVAAAMWVUG6T013

3) G70DNH65YT53P2EYAPRL9GD

4) ERYEVGV8DK8LXS5WBGZ0ZDJ

5) YZX5X6A091X5GLK4QN31TEV

6) XSM32WUHVVD8CTQHLKBYMJV

7) HC4Q2Y31DCVM3WXA15K8C6S

8) TMLX0V9M7VXVG9YA6PZ2ZUD

9) KCLACCJSKS5GDAJZHF3BMZS

10) P53MMB19EKXAD92C54RZ759

11) KQ2CMV53NN3QQGRV2D1PNXZ

12) RXZGKPQF1C27W4SJ8TY0UXX

13) UL0DW74F0LJ195A86TNHYZW

14) LSJV04R64V5ZNR87YKX0126

15) VT7SHKKS1A4HG89H1QY5ERN

16) 7GTV74B6CUR2V3AR9L3V14P

17) XH3TVY3T3W4KDRA220K53JS

18) BGJQNUC9H1CLD74S7SXW5MD

19) AYB3GWX5039U8R9HLZY8E01

20) RAYUGZY9W7UT85M8HZVRBA1

21) ZJ7GV49UCD98GLY3LF5H891

22) 67PM2ALY8JS8GY0KZU4WP74

23) TN3MNQFWVELHCV4HNRVTJCL

24) Z79XSNZRV3R6NFSCT9FMT7U

25) YHZE3XTX5RYQ7L209L89LRZ

26) VNG0CHB0PPQZL1MR8ZUUPJY

27) 0BBAHX4H1SXF127PAZU5CDF

28) DVUDJR9MKMDLABYTPUEL8XB

29) E3GYWZ7SCD2E77A33V6V7ST

30) PMUL8SMBNV5X7ETRCNYCTK2

31) UGY0TER6DY9YYKABNJ9FC2N

32) WZVRLMYXPV9WP1FH7CTDSFF

33) ARAF8NS4GCKPRQ7A2D0PH64

34) KCF2RYSWRX7N6L8A3FNNT9A

35) F7MT0VBL1D7ELE9EK0NQWYX

36) M905DK2RFDAY2WR0HDZK302

37) UGSLS7APDZZ5RT7MVKFGZSM

38) C44FS650P9FLYBGC1FPL3MA

39) XQX1C9SV9916Z5CBGW9L85J

40) PKW5E7GMGNVD869WZXXS543

41) 2RMY7ZM9UNRV81C0164XKQE

42) JXW55HJTCBMMK33W023D6N3

43) 61NX60PJBS9827XY0Y1MMTP

44) BDTJMETFKC64GBPD7QFU990

45) F79QHFR91RCXV0Q5EDX4Y4G

46) SRHDK6WGXYTHBY241QML54X

47) 7FCBPJX1L8ZU5F4C53S0968

48) TSKMK2C1HBTG0HACRH5VPSH

49) 6NSPP6CG55FRC1H9UAM2UXQ

50) JYG0YGHULQC34TMX98XGWU1


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


Ссылка на приложение: https://play.google.com/store/apps/details?id=ru.wheelsoft.f...


Мой телеграм: https://t.me/Maxon205