Вместо NBT: Часть 6 – пробую OBD2

Как я уже писал, все машины старше какого-то там года оснащены OBD2 разъемом и поддерживают один из стандартов передачи данных. В основном он используется для диагностики и работает по принципу запрос – ответ.

Наткнувшись в интернете на статью о том как работать с OBD2 под Windows, я решил посмотреть могу ли я без написания собственного приложения прочитать хоть какие-нибудь данные, а заодно посмотреть, можно ли определить момент включения задней передачи.

С помощью Bluetooth terminal, приложение из Android Market-а, я подключился к своему ELM327, воткнутому в OBD2 разъем. Затем прочитал версию устрйоства, выставил автоматическое определения настроек, проверил это и прочитал скорость и обороты двигателя в разных положениях АКПП.

comb Происходило следующее

  • ATI – печатает весрию устройства вставленного в OBD2
  • at sp 0 – вытсавить автоопределение протокола передачи данных
  • at dp – проверка, что выставлено автоматическое определение протокола

Дальше шли команды для получения скорости и оборотов двигателя:

Зажигание выключено, АКПП в Parking

  • 010C – обороты: 410С0000, нас интересуют последние два байта 0000, что соответсвует 0, поскольку машина незаведена
  • 010D – скорость: 410D00. Посдений байт 00 и показвывает, что я стою

Завел двигатель, АКПП в Parking

  • 010C – обороты: 410С0С12. Последние 2 байта переводим в десятичное число (например используя стандартный Windows Calculator в версии Programmer) и делем на 4 = 772
  • 010D – Скорость 410D00 – без изменений.

Двигатель заведён, АКПП в Drive, стою на месте

  • 010C – Обороты: 410С0С56 – используя тот же метод, получаем 789
  • 010D – скорость 410D00 – без изменений

Двигатель заведён, АКПП в Reverse, стою на месте

  • 010С – Обороты: 410С0С36 – тот же метод даёт нам 781
  • 010D – скорость 410D00 – без изменений

Screenshot_2015-08-27-20-10-45Тест на скорость вперёд и назад провалился так как в обоих случаях 010D (2 последних запроса) показывает 410D03, что при движении задним ходом (предпоследний запрос), что при движении вперед.

То есть, зная передаточные числа, посчитать передачу можно, но только при движении вперёд. Для получения же данных о включении задней передачи OBD2 недостаточно. Возможно удастся прочитать данные с CAN-Шины, к которой ELM327 также имеет доступ. Однако похоже мой ELM327 девайс, мягко говоря, говно, так как выдает мне BUFFER ERROR при попытке просто показывать все сообщения, которые ходят по CAN-шине (команда ATMA):

Почитав доку я решил попробывать с фильтрами (команда AT CRA hhh). Самый простой тест, те сообщения, которые я и так вижу, имеют CAN ID 130, так что поставив фильтр atcra 130 и запустив мониторинг всех сообщений с помошью команды ATMA я попрежнему вижу эти сообщения и получаю BUFFER ERROR. То есть команда работает.

Вооруживщись командами описаными здесь, я попробывал настроить фильтры на статус водительской двери (CAN ID 0EA), скорости (CAN ID 1A1), обороты (CAN ID 0A5), и парочка других, результат один и тот же – тишина.

Есть идеи?

 

 

Leave a Reply