Команды elm327

Разработка софта для elm327

Ниже описывается, как использовать AT команды ELM327, чтобы получать информацию от Вашего автомобиля. Мы начинаем с обсуждения того как общаться с чипом при помощи компьютера, а затем объясним, как изменить параметры используя AT команды и, наконец, мы покажем, как использовать ELM327 для получения кодов ошибок (и сбросить их).

Использование ELM327 не такая сложная задача, как кажется на первый взгляд. Многим пользователям никогда не придется использовать ‘AT’ команды, настраивать тайм-ауты, или изменять заголовки. Для большинства, все, что требуется, это компьютер или смарт-устройство с терминальной программой (например HyperTerminal или ZTerm) и немного знаний о командах ОБД, которые мы предоставит в следующих разделах …

Взаимодействие с ELM327

ELM327 общаеться с компьютером через последовательный порт RS232. Хотя современные компьютеры как правило, не имеют последовательного порта, есть несколько способов создать виртуальный последовательный порт. Наиболее распространенными устройствами являются USB в RS232 адаптеры, но есть некоторые другие, такие как PC карты, сетевые устройства, или Bluetooth адаптеры.

Независимо от того, как вы подключитесь к ELM327, вам нужен способ отправлять и получать данные. Самый простой способ заключается в использовании одной из многих терминальных программ (HyperTerminal, ZTerm и т.д.), что позволяет вводить символы непосредственно с клавиатуры.

Для использования программы терминала, то вам нужно настроить несколько параметров. Во-первых, убедитесь, что ваше программное обеспечение использует правильный COM-порт и что Вы выбрали правильную скорость передачи данных — это будет либо 9600 бод (если контакт 6 = 0 В при запуске), или 38400 бод (если PP 0С не изменилась). Если вы выберете неправильный COM-порт, вы не сможете отправлять или получать данные. Если вы выберете неправильную скорость передачи данных, информация что вы отправляете и получаете будет искажена и нечитаема вами или ELM327. Не забудьте также установить соединение на 8 бит данных, без четности, 1 стоп-бит, и установить его на правильный режим «конец строки». Все ответы, полученные от ELM327 заканчиваются одним символом возврата каретки и, возможно, символом перевода строки (в зависимости от настроек).

Правильно подключенный и запитанный, ELM327 будет активизировать четыре светодиодных выходов в последовательности (в качестве проверки светодиодов), а затем отправит сообщение:

ELM327 v1.4b

В дополнение к определению версии чипа, эта строка является хорошим способом, чтобы подтвердить, что подключение к компьютеру и настройки программного обеспечения терминала правильны (впрочем, на данный момент нет связи с автомобилем, поэтому состояние этого соединения до сих пор неизвестно).

Символ ‘>’ на второй строке это символ запроса в ELM327. Он означает, что устройство находится в состоянии ожидания, готово к приему символов на порт RS232. Если вы не видите строки идентификации, вы можете попробовать сбросить чип командой AT Z (сброс). Просто введите буквы A T и Z (Пробелы не являются обязательными), а затем нажмите клавиши ввода:

> AT Z

Это должно привести к тому, что светодиоды снова начнут мигать, и появится строка идентификации. Если вы видите странные символы, проверьте скорость — вы скорее всего установили ее неправильно.

Символы отправленные с компьютера могут быть либо предназначенны для внутреннего использования ELM327, либо для преобразования и использования на транспортном средстве. ELM327 может быстро определить, где полученные символы должны быть направлены на мониторинг содержания сообщения. Команды, которые предназначенной для внутреннего пользования ELM327 будут начинаться с символа ‘К’, в то время как OBD команды для транспортного средства содержат только ASCII-коды для шестнадцатеричных цифр (от 0 до 9 и от A до F).

Будь то команды AT-типа для внутреннего использования или шестнадцатеричная строка для шины OBD, все сообщения для ELM327 должны заканчиваться символом возврата каретки (шестнадцатеричный ‘0D’), прежде чем они будут выполнены. Единственное исключение, когда неполная строка передается и возврат каретки не появляется. В этом случае внутренний таймер автоматически отменит неполное сообщение примерно через 20 секунд, а ELM327 будет выдаст один знак вопроса (‘?’), чтобы показать, что команда была не распознана (и не выполнена).

Сообщения, которые не понимает ELM327 (Синтаксические ошибки) всегда должны быть обозначены одним вопросительным знаком. К ним относятся неполное сообщение, неправильные AT-команды, или недействительные шестнадцатеричные цифры, но не индикация было ли сообщение понято автомобилем. Имейте в виду, что ELM327 является интерпретатором протокола, он не проверяет команды OBD — jy только гарантирует, что шестнадцатеричные цифры были получены, объединены в байты, затем посланы на OBD порт, и он не знает, если сообщение, отправленное в транспортное средство было с ошибкой.

При обработке OBD команд, ELM327 будет постоянно следить за любым активным входом RTS, или полученным символом RS232. Любой из них прервет чип, быстро возвращая управление пользователю, в то время как возможно прерывание любой инициации, и т.д., что было в процессе. После генерации сигнала для прерывания ELM327, программное обеспечение должно всегда ждать либо символа запроса (‘>’ или шестнадцатеричный 3E), или низкого уровня на выходе Busy перед началом отправки следующей команды.

Наконец, следует отметить, что ELM327 не учитывает регистр, поэтому «АТZ» «atz», и «АtZ» абсолютно одинаковые для ELM327. Все команды могут быть введены так, как вам удобнее. ELM327 также игнорирует символы пробелов и все управляющие символы (табуляция и т.д.), так что они могут быть вставлены в любом месте, если это улучшает читаемость.

Еще одна особенность ELM327 является возможность повторить любую команду (AT или OBD), когда только один символ возврата каретки получен. Если вы отправили команду (например, 01 0C для получения оборотов в минуту), Вам не нужно повторно отправлять всю команду чтобы отправить ее в машину — просто отправьте символ возврата каретки и ELM327 будет повторять команду для вас. Буфер памяти запоминает только одну команду — нет возможности в текущем чипе ELM327 обеспечить хранение большего количества.

Взаимодействие с Блоком управления автомобилем

Стандарты требуют, чтобы каждая OBD команда или запрос, отправленный на транспортное средство должны придерживаться установленного формата. Первый отправленный байт (известный как «режим») описывает тип запрашиваемых данных, а второй байт (и, возможно, третий и далее) определяет актуальную информацию, которая требуется. Байты, которые следуют после байта режима известны как байты «Идентификации параметров» или байт PID. Режимы и PIDы подробно описаны в документах, таких как SAE J1979 или ISO 15031-5, а также могут быть определены производителем автомобилей.

Стандарт SAE J1979 в настоящее время определяет десять возможных диагностических режимов, среди которых:

01 — показывать текущие данные

Mode 1 PID Status & Live PID Information. Всего стандартом поддерживается около 20 параметров. Однако, каждый конкретный блок управления поддерживает ограниченное количество из них (например, в зависимости от установленных датчиков кислорода). С другой стороны, некоторые автопроизводители поддерживают расширенные наборы параметров — например, некоторые автомобили концерна GM поддерживают более 100 параметров. Через систему OBD-II диагностики можно считать (основные параметры):

  • режим работы системы топливной коррекции (PID 03 Fuel system status). При значении «Closed Loop» система работает в режиме обратной связи (замкнутой петли), при этом данные с датчика кислорода используются для корректировки топливоподачи. При значении «Open Loop» данные с датчика кислорода не используются для корректировки топливоподачи;
  • расчетная нагрузка на двигатель (PID 04 Calculated Load);
  • температура охлаждающей жидкости (PID 05 Coolant temperature);
  • краткосрочная коррекция подачи топлива по банку 1/2 (PID 06/08 Short Term Fuel Trim Bank 1/2);
  • долгосрочная коррекция подачи топлива по банку 1/2 (PID 07/09 Long Term Fuel Trim Bank 1/2);
  • давление топлива (PID 0A Fuel pressure);
  • давление во впускном коллекторе (PID 0B Manifold pressure);
  • обороты двигателя (PID 0C Engine speed — RPM);
  • скорость автомобиля (PID 0D Vehicle speed);
  • угол опережения зажигания (PID 0E Ignition Timing Advance);
  • температура всасываемого воздуха (PID 0F Intake Ait Temperature);
  • расход воздуха (PID 10 Air Flow);
  • положение дроссельной заслонки (PID 11 Throttle position);
  • режим работы системы подачи дополнительного воздуха (PID 12 Secondary Air Status);
  • расположение датчиков кислорода (PID 12 Location of O2 sensors);
  • данные с датчика кислорода №1/2/3/4 по банку 1/2 (PID 13-1B O2 Sensor 1/2/3/4 Bank 1/2 Volts).

Как правило, для анализа работы конкретной подсистемы системы управления двигателем, достаточно одновременно контролировать 2-3 параметра. Однако, иногда требуется одновременно просматривать и большее число. Число одновременно контролируемых параметров, а также формат их вывода (текстовый и/или графический) зависят как от возможностей конкретной программы-сканера, так и от скорости обмена информацией с блоком управления двигателем автомобиля (скорость зависит от поддерживаемого протокола). К сожалению, наиболее распространенный протокол ISO-9141 (см. ниже) является и самым медленным из всех — при работе с ним невозможно просматривать с приемлемой частотой дискретизации более 2-4 параметров.

02 — данные стоп-кадра

Получение сохраненной фотографии текущих параметров работы системы управления на момент возникновение кодов неисправностей (Mode 2 Freeze Frame)

03 — показать диагностические коды неисправностей

Mode 3 Read Diagnostic Trouble Codes (DTCs)

04 — очистить коды неисправностей и сохраненные значения

Mode 4 Reset DTC’s and Freeze Frame data — стирание кодов неисправностей, фотографий текущий параметров, результатов тестов датчиков кислорода, результатов тестовых мониторов

05 — результаты испытаний кислородных датчиков

Mode 5 O2 Sensor Monitoring Test Result

06 — результаты испытаний датчиков, не контролируемых постоянно

Запрос последних результатов диагностики однократных тестовых мониторов (тестов, проводимых один раз в течение поездки) (Mode 6 Test results, non-continuosly monitored) — эти тесты контролируют работу катализатора, системы рециркуляции выхлопных газов (EGR), системы вентиляции топливного бака.

07 — показания «текущих» кодов неисправностей

Запрос результатов диагностики непрерывно действующих тестовых мониторов (тестов, выполняемых постоянно, пока выполняются условия для проведения теста) (Mode 7 Test results, continuosly monitored) — эти тесты контролируют состав топливно-воздушной смеси, пропуски зажигания (misfire), остальные компоненты, влияющие на выхлоп.

08 — специальный режим управления

Управление исполнительными механизмами

09 — запрос информации об автомобиле

Mode 9 Request vehicle information — запрос VIN-кода и калибровочных данных.

0A — запрос постоянных кодов неисправностей

Транспортные средства, не обязаны поддерживать все режимы, и в режимах, они не обязаны поддерживать все возможные PID (одни из первых OBDII-совместимые транспортные средства поддерживают только очень небольшое количество из них).

В каждом режиме ПИД-00 зарезервирован, чтобы показать, какие PID поддерживает этот режим. Режим 01, PID 00 должны поддерживать все транспортные средства, он доступен следующим образом…

Убедитесь, что ваш ELM327 интерфейс правильно связан с транспортным средством. Большинство транспортных средств не будет реагировать без ключа зажигания в позиции ON, поэтому включите зажигание, но не заводите двигатель. Если вы экспериментировали, состояние интерфейса могут быть неизвестны, поэтому сбросьте его отправив:

> АТ Z

Вы увидите, что вспыхнет лампочка интерфейса, а затем чип должен ответить «ELM327 v1.4b». Теперь вы можете выбрать протокол, по которому ELM327 должен соединиться, но это, как правило, легче сделать просто выбрав протокол ‘0 ‘, который говорит чипу найти протокол самостоятельно:

> AT SP 0

Вот и все, что вам нужно сделать, чтобы подготовить ELM327 для общения с автомобилем. Введите команду режим 01 PID 00:

> 01 00

ELM327 должен ответить «Поиск …» затем он выдаст ряд чисел похожих на это:

41 00 ВЕ 1F B8 10

41 означает ответ на запрос Режим 01 (01 + 40 = 41), а второе число (00) повторяет запрошенный номер PID. Режим 02, ответ на запрос 42, режим 03 — 43, и т.д. Следующие четыре байта (BE, 1F, B8, и 10) представляют запрашиваемые данные, в данном случае набор битов показывает PID, которые поддерживаются этим режимом (1 = поддерживается, 0 = нет). Хотя эта информация не очень полезна для обычных пользователей, она доказывает, что соединение работает.

Другой пример запрашивает температуру охлаждающей жидкости двигателя (ECT). Температура охлаждающей жидкости это ПИД-05 в режиме 01, может быть запрошена вот так:

> 01 05

Ответ будет иметь вид:

41 05 7B

41 05 показывает, что это является ответом на Режим 1 PID 05, в то время как 7B является искомым значением данных. Преобразуем шестнадцатеричное значение 7B в десятичную форму, получаем 7 х 16 + 11 = 123. Это текущая температура в градусах Цельсия, но с нулевым смещением для обеспечения отрицательных температур. Чтобы преобразовать ее в фактическую температуру охлаждающей жидкости, необходимо вычесть 40 из полученного значения. В этом случае температура охлаждающей жидкости составит 123 — 40 т.е. 83 ° C.

Последний пример показывает запрос оборотов двигателя в минуту. Это PID 0С режима 01, поэтому в командной строке введите:

> 01 0C

Если двигатель работает, ответ может быть таким:

41 0C F8 1A

Возвращаемое значение (1А F8) на самом деле двухбайтовое шестнадцатеричное число, которое должно быть преобразовано в десятичное значение. Преобразовав это, мы получим значение 6904, которое высоковато для обычного двигателя.

Это потому, что количество оборотов в минуту отправляется с шагом в 1/4 оборота!

Чтобы преобразовать его в фактическое количество оборотов двигателя, мы должны разделить 6904 на 4. Значение 1726 оборотов в минуту выглядит значительно более разумным.

Обратите внимание, что эти примеры запрашивают информацию без учета используемого типа OBD протокола. Это происходит потому, что ELM327 обрабатывает форматирование и перевод данных. Если вы не собираетесь делать более продвинутые функции, на самом деле не нужно знать, что собой представляет протокол.

Приведенные выше примеры показали только одну строку ответа для каждого запроса, но ответы часто состоят из нескольких отдельных сообщений. Чтобы быть готовым к переменному числу строк ответа, ELM327 обычно ждет, чтобы увидеть, если вдруг появляется еще одно сообщение. Если ответ не приходит в определенное время, предполагается, что соединение завершено. Этот же таймер используется также при ожидании первого ответа, и если он не приходит, отображает «No Data».

Пример взаимодействия с elm327-устройством:

Команды:

ATZ — сброс устройства;

ATH1 — включает отображение заголовков, используемых в рамках диагностических протоколов;

ATI — отображение версии прошивки;

AT@1 — отображение описания устройства;

ATRV — прочитать текущий уровень напряжения на устройстве;

ATSP0 — включить автоматический выбор диагностического протокола;

ATDP — отобразить текущий диагностический протокол;

Результатом исполнения данной команды будет ‘AUTO’, таким образом, устройство находится в режиме автоматического определения диагностического протокола, но фактический протокол еще не определен. Далее мы исполняем команду 0100, то есть хотим определить какие PID’ы поддерживаются конкретным блоком управления двигателем (ЭБУ). Устройство отвечает строкой Searching… и после некоторого ожидания определяет диагностический протокол, возвращая ответ ЭБУ на исходный запрос PID’ов. После определения конкретного диагностического протокола запрос ATDP отображает его наименование.

0105 — отображает текущую температуру охлаждающей жидкости. Для того, чтобы получить реальное значение температуры, необходимо вычесть разность ‘полученный результат — 40’.

ATH0 — отключает отображение заголовков диагностических протоколов, в этом случае результат команды 0105 отображает только полезную информацию в виде полученных значений.

Подробности и описание всех команд доступно здесь (на английском)

Автосканер ELM327 OBD-II Bluetooth CAN-BUS — мультипротокольный OBD-2 адаптер, обеспечивающий диагностику автомобиля через OBD-II разъем с помощью беспроводной связи BlueTooth. Высокую популярность сканер ЕЛМ327 Блутуз получил из-за своей универсальности и работе со всеми ОБД2 протоколами (ISO 9141, KWP2000, SAE J1850PWM и VPM), но наибольшим преимуществом является поддержка CAN-шины, которой сейчас оборудованы все современные автомобили. Интерфейс BlueTooth позволяет использовать ELM327 не только с ПК или ноутбуком, но и с КПК, мобильными телефонами или планшетами. Адаптер предназначен для диагностики двигателя, чтения ошибок, просмотров параметров Live Data, снятие индикации Сheck Engine.

ELM327 поддерживает все протоколы OBD-II:

Чем отличаются версии 1.5 и 2.1? Версия 1.5 поддерживает гораздо больше моделей автомобилей, чем 2.1. Версия 1.5 поддерживает протоколы SAE J1850 PWM (41.6 Кбод) и SAE J1850 VPW (10.4 Кбод).

Возможности ELM327:

  • Чтение ошибок и их расшифровка (память DTC)
  • Стирание ошибок (погасить индикатор MIL – Check Engine)
  • Чтение параметров в режиме реального времени:
    • Обороты двигателя
    • Нагрузка двигателя
    • Температура охлаждающей жидкости
    • Состояние топливной системы
    • Скорость движения автомобиля
    • Краткосрочный расход топлива
    • Долгосрочный расход топлива
    • Абсолютное давление воздуха
    • Опережение зажигания
    • Температура всасываемого воздуха
    • Массовый расход воздуха
    • Положение дроссельной заслонки
    • Лямбда-зонд
    • Давление топлива
    • Другие возможности зависят от конкретного автомобиля
  • Диагностика ABS и АКПП — поддерживается не на всех моделях
  • Построение графиков
  • Чтение VIN номера кузова
  • Время разгона до 100 км/ч
  • И другое — зависит от конкретной программы

Спецификации EOBD включают автоматическую коробку передач и ABS, но они не обязательные – поэтому производители автомобилей делают их поддержку на свое усмотрение.

По большому счету возможности сканера напрямую зависят от используемого программного обеспечения. В основном — это диагностика двигателя и трансмиссии автомобиля, однако есть коммерческие программы, поддерживающие дополнительные протоколы автопроизводителей и позволяющие работать с другими блоками автомобилей. Существуют разработки программ для КПК, плншетов под управлением Android. Следует выделить полезную программу по работе с ELM327 Bluetooth для Android — Torque Pro, которая доступна на Google Play. Программа способна превратить ваш КПК или смартфон в полноценный бортовой компьютер.

В комплект входят: