auto obd speed lock — Buy auto obd speed lock with free shipping on AliExpress

auto obd speed lock - Buy auto obd speed lock with free shipping on AliExpress ОБД2

Архитектура приложения python для взаимодействия с obd-ii через can

Чтобы создать наше простое приложение на Python, мы будем использовать библиотеку Python CAN для управления сетью CAN. Вы также можете использовать API сокетов в Python для связи CAN, поскольку Python поддерживает CAN с версии 3.3, но на данный момент это более низкоуровневый подход.

Чтобы проиллюстрировать запрос OBD-II для PID 0x0C, как определено в стандарте для частоты вращения двигателя (RPM), мы представляем код ниже. Это будет:

  1. Создайте интерфейс CAN-шины
  2. Создайте ссылку на сообщение CAN для запроса
    1. Запрос сообщения CAN — это кадр CAN с DLC размером 8 байтов.
    2. Сообщение будет построено в следующем формате для стандарта SAE:
      • Байт 0 — количество дополнительных байтов: 2
      • Байт 1 — 1, чтобы показать текущие данные
      • Байт 2 — запрашиваемый PID-код
      • Байты с 3 по 7: они не используются, но ISO 15765-2 предлагает установить для них CCh
  3. Отправьте запрос в главный ЭБУ с идентификатором 0x7DF
  4. Получите сообщение и сравните его с ожидаемым идентификатором ответа 0x7E8
    1. Если мы получим сообщение от ожидаемого идентификатора ответа, он напечатает результат в шестнадцатеричном формате.

Чтобы выполнить наше приложение CAN, мы должны сначала настроить и включить сеть CAN в модуле. Интерфейс CAN1, физический, уже включен в его дереве устройств и обозначен как can0 на стороне Linux. Процесс настройки и включения может быть выполнен с помощью вызовов os.system () в Python, в которых мы настраиваем сеть CAN с битрейтом 500k.

Вы можете загрузить этот код в свою цель, скопировав и вставив его с помощью редактора nano, который мы установили в наш образ контейнера, как показано в его Dockerfile. Другой способ — привязать этот контейнер к /home/torizon, чтобы упростить отправку кода через scp.

Имея приложение под рукой, давайте попробуем его.

Защита диагностического разъёма

Эта статья расскажет об одном очень важном и простом способе защиты от угона. Каждый современный автомобиль имеет диагностический разъём, который служит для проверки оборудования автомобиля при помощи диагностического стенда подключаемого к этому разъёму. На фото внизу слева к нему тянется кабель.

Этот же разъём используется для того, чтобы прописать новые ключи в случае утраты старых. Его же можно использовать для того, чтобы отключить иммобилайзер.  Этим же разъёмом могут воспользоваться угонщики, применяя компактные приспособления для электронного взлома.

Фотография такого устройства есть в статье “Технические средства угонщика”

   Оно позволяют отключить штатный иммобилайзер и завести двигатель. Необходимо лишить злоумышленника возможности  Зачем и как сделать защиту диагностического obd-разъёмаЗачем и как сделать защиту диагностического obd-разъёмаauto obd speed lock - Buy auto obd speed lock with free shipping on AliExpress

Для того, чтобы ещё больше затруднить угонщику подключение к шине программирования, целесообразно все провода подходящие к вновь припаянному разъёму закрасить в один цвет.  Более хитрый вариант оставить старый диагностический разъём на прежнем месте, как обманку, отключив от него шины программирования.

Действующий диагностический разъём расположить в потайном месте также с переходником. Следует сказать, что данные методы не являются панацеей, они лишь существенно увеличивают время необходимое для угона, так как злоумышленнику придётся искать другое место для подключения к шине программирования, так называемой CAN шине.

Кроме перепиновки диагностического разъёма необходимо сделать подобную операцию с блоком ЭБУ (электронный блок управления).

Использование шины can: как программно управлять автомобилем

Изменение температуры кондиционера Ford Fusion при помощи команд через шину CAN.

Автор: Ariel Nuñez
Изменение температуры кондиционера Ford Fusion при помощи команд через шину CAN.
auto obd speed lock - Buy auto obd speed lock with free shipping on AliExpress
Рисунок 1: Как при помощи приложения управлять ключевыми функциями автомобиля?
Недавно я вместе со своими друзьями из компании Voyage работал над реализацией программного управления системой кондиционирования в Ford Fusion. На данный момент Voyage занимается разработкой бюджетных самоуправляемых автомобилей. Конечная цель: чтобы каждый смог вызвать автомобиль к своей входной двери и безопасно путешествовать туда, куда вздумается. В компании Voyage считают крайне важной возможностью предоставление доступа к ключевым функциям автомобиля с заднего кресла, поскольку не за горами тот день, когда работа водителя будет полностью автоматизирована.
Зачем нужна шина CAN
Современные автомобили используют множество систем управления, которые во многих случаях функционируют подобно микро-службам в веб-разработке. Например, подушки безопасности, тормозные системы, регулирование скорости движения (круиз контроль), электроусилитель руля, аудиосистемы, управление окнами и дверями, подстройка стекл, системы зарядки для электрических автомобилей и т. д. Эти системы должны уметь осуществлять коммуникацию и считывать параметры друг друга. В 1983 в компании Bosch началась разработка шины CAN (Controller Area Network; Локальная сеть контролеров) для решения этой сложной задачи.
Можно сказать, что шина CAN представляет собой простую сеть, где каждая система автомобиля может считывать и отсылать команды. Эта шина интегрируется все сложные компоненты элегантным образом, что дает возможность реализовать всеми любимые функции автомобиля, которыми мы пользуемся.
auto obd speed lock - Buy auto obd speed lock with free shipping on AliExpress
Рисунок 2: Впервые шина CAN стала использоваться в 1988 году в БМВ 8 серии
Самоуправляемые автомобили и шина CAN
Поскольку интерес к разработке самоуправляемых автомобилей серьезно вырос, соответственно, словосочетание «шина CAN» также становится популярным. Почему? Большинство компаний, создающих самоуправляемых автомобилей, не занимаются производством с нуля, а пытаются научиться программно управлять машинами после выхода с конвейера фабрики. 
Понимание внутреннего устройства шины CAN, используемой в автомобиле, позволяет инженеру формировать команды при помощи программного обеспечения. Самые нужные команды, как вы можете догадаться, связаны с управлением рулем, ускорением и торможением.
auto obd speed lock - Buy auto obd speed lock with free shipping on AliExpress
Рисунок 3: Введение в LIDAR (ключевой сенсор самоуправляемого автомобиля)
При помощи сенсоров наподобие LIDAR (light detecting and ranging; оптическая локационная система) машина способна смотреть на мир как суперчеловек. Затем компьютер внутри автомобиля на базе полученной информации принимает решения и посылается команды в шину CAN для управления рулем, ускорение и торможением.
Не каждый автомобиль способен стать самоуправляемым. И по некоторым причинам компания Voyage выбрала модель Ford Fusion (подробнее о причинах можно почитать в этой статье).
Исследование шины CAN в Ford Fusion
Перед началом исследования систем кондиционирования воздуха в Ford Fusion я открыл мою любимую книгу The Car Hacker’s Handbook. Перед погружением в суть вопроса заглянем в Главу 2, где описываются три важные концепции: протоколы шины, шина CAN и CAN-фреймы.
Шина CAN
Шина CAN начала использоваться в американских легковых машинах и небольших грузовиках с 1994 года и с 2008 года в обязательном порядке (в европейских автомобилях с 2001 года). В этой шине предусмотрено два провода: CAN high (CANH) и CAN low (CANL). Шина CAN использует дифференциальный сигналинг, суть которого заключается в том, что при поступлении сигнала на одном проводе вольтаж повышается, а на другом понижается на одну и ту же величину. Дифференциальный сигналинг используется в средах, которые должны быть малочувствительны к шуму, например, в автомобильных системах или при производстве.
auto obd speed lock - Buy auto obd speed lock with free shipping on AliExpress 
Рисунок 4: Необработанный сигнал шины CAN, отображаемый на осциллографе
С другой стороны, пакеты, передаваемые по шине CAN, не стандартизированы. Каждый пакет содержит 4 ключевых элемента:

  • Арбитражный ID (ArbitrationID) представляет собой широковещательно сообщение, идентифицирующее устройство, которое пытается начать коммуникацию. Любое устройство может отсылать несколько арбитражных ID. Если в единицу времени по шине отсылаются два CAN-пакета, пропускается тот, у которого ниже арбитражный ID.
  • Расширение идентификатора (Identifierextension; IDE) – в случае с шиной CAN стандартной конфигурации этот бит всегда равен 0.
  • Код длины данных (Datalengthcode; DLC) определяет размер данных, который варьируется от 0 до 8 байт.
  • Данные. Максимальный размер данных, переносимых стандартной шиной CAN, может быть до 8 байт. В некоторых системах происходит принудительное дополнение пакета до размера 8 байт.
Код ошибки:  События

auto obd speed lock - Buy auto obd speed lock with free shipping on AliExpress
Рисунок 5: Формат стандартных CAN-пакетов
CAN фреймы
Для того чтобы включить / выключить климатическую систему мы должны найти нужную шину CAN (в автомобиле таких шин несколько). В Ford Fusion есть как минимум 4 задокументированные шины. 3 шины работают на высокой скорости 500 кбит/с (High Speed CAN; HS) и 1 шина на средней скорости 125 кбит/с (Medium Speed CAN; MS).
К порту OBD-II подключено две высокоскоростные шины HS1 и HS2, однако там стоит защита, которая не позволяет подделывать команды. Вместе с Аланом из компании Voyage мы вынули порт OBD-II и нашли места соединения со всеми шинами (HS1, HS2, HS3 и MS). На задней стенке OBD-II все шины подключались к модулю шлюза (Gateway Module).
auto obd speed lock - Buy auto obd speed lock with free shipping on AliExpress
Рисунок 6: Homer – первое самоуправляемое такси от компании Voyage
Поскольку климатическая система управляется через медиа-интерфейс (SYNC), нам придется отсылать команды через среднескоростную шину (MS).
Чтение и запись CAN-пакетов осуществляется при помощи драйвера и сетевого стека SocketCAN, созданного исследовательским отделом компании Volkswagen для ядра в Linux.
Мы будем подсоединять три провода от машины (GND, MSCANH, MSCANL) к переходнику Kvaser Leaf Light HSv2 (можно купить за 300$ на Амазоне) или к CANable (продается за 25$ на Tindie) и загружать на компьютере со свежим Linux-ядром шину CAN в качестве сетевого устройства.

modprobe can
modprobe kvaser_usb
ip link set can0 type can bitrate 1250000
ifconfig can0 up

После загрузки запускаем команду candump can0 и начинаем отслеживать трафик:

can0  33A   [8]  00 00 00 00 00 00 00 00                                                                      can0  415   [8]  00 00 C4 FB 0F FE 0F FE                                                                      can0  346   [8]  00 00 00 03 03 00 C0 00                                                                      can0  348   [8]  00 00 00 00 00 00 00 00                                                                      can0  167   [8]  72 7F FF 10 00 19 F8 00                                                                      can0  3E0   [8]  00 00 00 00 80 00 00 00                                                                      can0  167   [8]  72 7F FF 10 00 19 F7 00                                                                      can0  34E   [8]  00 00 00 00 00 00 00 00                                                                      can0  358   [8]  00 00 00 00 00 00 00 00                                                                      can0  3A4   [8]  00 00 00 00 00 00 00 00                                                                      can0  216   [8]  00 00 00 00 82 00 00 00                                                                      can0  3AC   [8]  FF FF FF FF FF FF FF FF                                                                      can0  415   [8]  00 00 C8 FA 0F FE 0F FE                                                                      can0  083   [8]  00 00 00 00 00 01 7E F4                                                                      can0  2FD   [8]  D4 00 E3 C1 08 52 00 00                                                                      can0  3BC   [8]  0C 00 08 96 01 BB 27 00                                                                      can0  167   [8]  72 7F FF 10 00 19 F7 00                                                                      can0  3BE   [8]  00 20 AE EC D2 03 54 00                                                                      can0  333   [8]  00 00 00 00 00 00 00 00                                                                      can0  42A   [8]  D6 5B 70 E0 00 00 00 00                                                                      can0  42C   [8]  05 51 54 00 90 46 A4 00                                                                      can0  33B   [8]  00 00 00 00 00 00 00 00                                                                      can0  42E   [8]  93 00 00 E1 78 03 CD 40                                                                      can0  42F   [8]  7D 04 00 2E 66 04 01 77                                                                      can0  167   [8]  72 7F FF 10 00 19 F7 00                                                                      can0  3E7   [8]  00 00 00 00 00 00 00 00                                                                      can0  216   [8]  00 00 00 00 82 00 00 00                                                                      can0  415   [8]  00 00 CC F9 0F FE 0F FE                                                                      can0  3A5   [8]  00 00 00 00 00 00 00 00                                                                      can0  3AD   [8]  FF FF FF FF FF FF FF FF                                                                      can0  50B   [8]  1E 12 00 00 00 00 00 00

Несмотря на то, что вышеуказанная информация эквивалентна амплитуде звукового сигнала, довольно трудно понять, что происходит, и обнаружить какие-либо закономерности. Нам нужно нечто похожее на частотный анализатор, и такой эквивалент есть в виде утилиты cansniffer. Cansniffer показывает список идентификаторов и позволяет отслеживать изменения в секции данных внутри CAN-фрейма. По мере того как мы будем изучать определенные идентификаторы, мы можем установить фильтр нужных ID, которые имеют отношение к нашей задаче.
На рисунке ниже показан пример информации, снятой при помощи cansniffer с шины MS. Мы отфильтровали все, что имеет отношение к идентификаторам 355, 356 и 358. После нажатия и отпускания кнопок, связанных с подстройкой температуры, в самом конце появляется значение 001C00000000.
auto obd speed lock - Buy auto obd speed lock with free shipping on AliExpress
Рисунок 7: Информация с шины MS, снятая при помощи утилиты cansniffer
Далее необходимо объединить функционал для управления климатической системой с компьютером, работающим внутри автомобиля. Компьютер работает на операционной системе ROS (Robot Operating System; Операционная система для роботов). Поскольку мы используем SocketCAN, то модуль socketcan_bridge серьезно упрощает задачу по преобразованию CAN-фрейма в блок информации, понимаемый операционной системой ROS.
Ниже показан пример алгоритма декодирования:

if frame.id == 0x356:
raw_data = unpack('BBBBBBBB', frame.data)
fan_speed = raw_data[1] / 4
driver_temp = parse_temperature(raw_data[2:4])
passenger_temp = parse_temperature(raw_data[4:6])

Полученные данные хранятся в CelsiusReport.msg:

bool auto
bool system_on
bool unit_on
bool dual
bool max_cool
bool max_defrost
bool recirculation
bool head_fan
bool feet_fan
bool front_defrost
bool rear_defrost
string driver_temp
string passenger_temp

После нажатия всех нужных кнопок в машине, у нас появляется следующий список:

CONTROL_CODES = {
'ac_toggle': 0x5C,
'ac_unit_toggle': 0x14,
'max_ac_toggle': 0x38,
'recirculation_toggle': 0x3C,
'dual_temperature_toggle': 0x18,
'passenger_temp_up': 0x24,
'passenger_temp_down': 0x28,
'driver_temp_up': 0x1C,
'driver_temp_down': 0x20,
'auto': 0x34,
'wheel_heat_toggle': 0x78,
'defrost_max_toggle': 0x64,
'defrost_toggle': 0x4C,
'rear_defrost_toggle': 0x58,
'body_fan_toggle': 0x04,
'feet_fan_toggle': 0x0C,
'fan_up': 0x2C,
'fan_down': 0x30,
}

Затем эти строки отсылаются на узел под управлением операционной системы ROS и далее происходит трансляция в коды, понимаемые автомобилем:

rostopic pub /celsius_control celsius/CelsiusControl ac_toggle

Заключение
Теперь мы можем создавать и посылать те же самые коды в шину CAN, которые формируются при нажатии физических кнопок, связанных с повышением и понижением температуры, что дает возможность удаленного изменения температуры автомобиля при помощи приложения, когда мы находимся на заднем сидении автомобиля.
auto obd speed lock - Buy auto obd speed lock with free shipping on AliExpress
Рисунок 8: Удаленное управление климатической системой автомобиля
Это лишь небольшой шаг при создании самоуправляемого такси вместе со специалистами компании Voyage. Я получил массу положительных эмоций во время работы над этим проектом. Если вы тоже интересуетесь этой темой, можете ознакомиться со списком вакансий в компании Voyage.

Код ошибки:  диагностический сканер kia на АлиЭкспресс — купить онлайн по выгодной цене

Используемые протоколы и применяемость obd-ii-диагностики на автомобилях разных марок

В рамках OBD-II используются пять протоколов обмена данными — ISO 9141, ISO 14230 (также именуется KWP2000), PWM, VPW и CAN (также каждый из протоколов имеет несколько разновидностей — например, разновидности отличаются по скорости обмена информацией).

В Интернете встречаются «таблицы применимости», где указываются перечни марок и моделей автомобилей и поддерживаемые ими OBD-II-протоколы. Однако, надо учитывать, что одна и та же модель с одним и тем же двигателем, одного года выпуска может быть выпущена для разных рынков с поддержкой разных протоколов диагностики (точно также протоколы могут различаться и по моделям двигателей, годам выпуска).

Таким образом, отсутствие автомобиля в списках не означает, что он не поддерживает OBD-II, так же как и присутствие не означает, что поддерживает и, тем более, полностью поддерживает (возможны неточности в списке, различные модификации автомобиля и пр.). Еще сложнее судить о поддержке конкретной разновидности OBD-II-стандарта.

Общей предпосылкой для того, чтобы предположить, что автомобиль поддерживает OBD-II диагностику, является наличие 16-контактного диагностического разъема (DLC — Diagnostic Link Connector) трапециевидной формы (на подавляющем большинстве OBD-II автомобилей он находится под приборной панелью со стороны водителя; разъем может быть как открыт, так и закрыт легко снимаемой крышкой с надписью «OBD-II», «Diagnose» и т.п.).

Тем не менее, это условие необходимое, но недостаточное! Получить справку о расположении разъемов (в том числе нестандартном) можно на странице «Информация и ПО». Также разъем OBD-II иногда устанавливается на автомобили, вообще не поддерживающие ни один из OBD-II-протоколов.

В таких случаях необходимо пользоваться сканером, рассчитанным на работу с заводскими протоколами конкретной марки автомобиля — например, это касается автомобилей Opel Vectra B европейского рынка 1996-1997 гг. Для оценки применимости того или иного сканера для диагностики конкретного автомобиля необходимо определить, какой конкретно из OBD-II протоколов используется на конкретном автомобиле (если OBD-II вообще поддерживается). Для этого можно:

auto obd speed lock - Buy auto obd speed lock with free shipping on AliExpress

2. Посмотреть в информационной базе данных, типа Mitchell-on-Demand и т.п. Однако, это также не абсолютный способ, так как база может содержать неточности, включать информацию по автомобилям, выпущенным для другого рынка и т.п. Естественно, использование специализированных дилерских баз по отдельной марке повышает степень достоверности информации;

3. Использовать сканер, позволяющий определить, какой из OBD-II протоколов используется на машине. Из предлагаемых нами приборов автоматически это сможет сделать Х-431 и OZEN MOByDic 2600. С помощью комплекта ScanTool Вы сможете это сделать вручную путем последовательной смены используемых адаптеров и проверки наличия связи с ЭБУ автомобиля.

4. Осмотреть диагностический разъем и определить наличие выводов в нем (как правило, присутствует только часть задействованных выводов, а каждый протокол использует свои выводы разъема).

auto obd speed lock - Buy auto obd speed lock with free shipping on AliExpress

Назначение выводов («распиновка») 16-ти контактного диагностического разъема OBD-II (стандарт J1962):

02 — J1850 Bus

04 — Chassis Ground

05 — Signal Ground

06 — CAN High (J-2284)

07 — ISO 9141-2 K-Line

10 — J1850 Bus-

14 — CAN Low (J-2284)

15 — ISO 9141-2 L-Line

16 — Battery Power (напряжение АКБ)

По наличию выводов можно ориентировочно судить об используемом протоколе при помощи следующей таблицы:

Таким образом,

— протокол ISO-9141-2 идентифицируется наличием контакта 7 в диагностическом разъеме (K-line) и отсутствием 2 и/или 10 контактов в диагностическом разъеме. Используемые выводы — 4, 5, 7, 15 (может не быть), 16.- SAE J1850 VPW (Variable Pulse Width Modulation).

Протоколы PWM, VPW идентифицируются отсутствием контакта 7 (K-Line) диагностического разъема.

5. Подавляющее большинство автомобилей используют протоколы ISO. Некоторые исключения:

— большая часть легковых автомобилей и легких грузовиков концерна GM используют протокол SAE J1850 VPW;- большая часть автомобилей Ford использует протокол J1850 PWM.- прочие.

Дополнительные сведения об OBD-II диагностике.

В рамках OBD-II стандартизированы не только назначения выводов диагностического разъема, его форма и протоколы обмена, но и частично стандартизированы и коды неисправностей (DTC — Diagnostic Trouble Code) — это предусмотрено стандартом SAE J2021).

OBD-II-коды имеют единый формат, однако по их расшифровкам подразделяются на две большие группы — основные (generic) коды и дополнительные (расширенные, extended) коды. Основные коды жестко стандартизированы и их расшифровка одинакова для всех автомобилей, поддерживающих OBD-II.

При этом надо понимать, что это не означает, что один и тот же код вызывается на разных автомобилях одной и той же «реальной» неисправностью (это зависит от особенностей конструкции как разных марок и моделей авто, так и разных автомобилей одной модели)!

Как уже говорилось, структура и основных и дополнительных OBD-II кодов одинакова — каждый код состоит из буквы латинского алфавита и четырех цифр (частично уже используются и буквы):

XXXXX
«Общая» группа (система),
к которой относится код
Признак основной/расширенный
код
Подсистема, к которой относится код
(для кодов P0XXX)
Код неисправности
P — Powertrain codes — код связан с работой двигателя и/или АКППP0XXX, P2XXX, P34XX-P39XX — SAE Codes — основной (generic) код

P1XXX, P30XX-P33XX — MFG — код, определенный производителем (extended)

1 — Fuel and Air Metering — Ошибка вызвана системой регулирования топливно-воздушной смеси
2 — Fuel and Air Metering (Injector circuit) — Ошибка вызвана системой регулирования топливно-воздушной смеси (только по подсистеме подачи топлива)
3 — Ignition Systems or Misfire — Ошибка системы зажигания (в том числе — пропуски зажигания)
4 — Auxiliary Emission Controls — Ошибка дополнительной системы контроля за выбросами
5 — Vehicle Speed Control and Idle Control System — Ошибка системы контроля скорости и управления холостым ходом
6 — Computer Output Circuit — Неисправности контроллера или его выходных цепей
7, 8 — Transmission — Ошибки в работе трансмиссии
Fault (00-99) — Непосредственно код ошибки в соответствующей системе
B — Body codes — код связан с работой «кузовных систем» (подушки безопасности, центральный замок, электростеклоподъемники)B0XXX, B3XXX — SAE Codes — основной (generic) код

B1XXX, B2XXX — MFG — код, определенный производителем (extended)

 
С — Chassis codes — код относится к системе шасси (ходовой части)C0XXX, C3XXX — SAE Codes — основной (generic) код

C1XXX, C2XXX — MFG — код, определенный производителем (extended)

 
U — Network codes — код относится к системе взаимодействия между электронными блоками (например, к шине CAN)U0XXX, U3XXX — SAE Codes — основной (generic) код

U1XXX, U2XXX — MFG — код, определенный производителем (extended)

 

Режимы диагностики

Протоколы OBD-II предоставляют диагносту ряд стандартизированных функциональных возможностей (режимов диагностики — modes):

Режим 1 — Считывание текущих параметров работы системы управления (Mode 1 PID Status & Live PID Information). Всего стандартом поддерживается около 20 параметров. Однако, каждый конкретный блок управления поддерживает ограниченное количество из них (например, в зависимости от установленных датчиков кислорода).

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

Код ошибки:  ELM3320 - Электрическая газонокосилка

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

Режим 3 — Считывание и просмотр кодов неисправностей (Mode 3 Read Diagnostic Trouble Codes (DTCs)).

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

Режим 5 — Считывание и просмотр результатов теста датчиков кислорода (Mode 5 O2 Sensor Monitoring Test Result).

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

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

Режим 8 — Управление исполнительными механизмами.

Режим 9 — Запрос информации о диагностируемом автомобиле (Mode 9 Request vehicle information) — VIN-кода и калибровочных данных.

Режим ручного ввода команды запроса диагностической информации.

Надо учитывать, что как далеко не на каждом автомобиле блок управления поддерживает все перечисленные функции, так и не каждый диагностический сканер для OBD-II может дать диагносту возможность использовать все перечисленные режимы.

Тестирование нашего примера приложения с помощью симулятора obd-ii

У нас есть два способа проверить приложение CAN OBD-II:

  1. Подключаем наше устройство к разъему OBD-II на транспортном средстве и начинаем общаться с реальным транспортным средством.
  2. Использование другого устройства в качестве «ЭБУ» и ответа на запросы 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.

Давайте выполним следующие простые шаги для настройки:

  1. Загрузите и установите Visual Studio Code и Torizon Extension в соответствии с инструкциями.
  2. Имейте в виду, что вы должны настроить среду сборки для контейнеров Torizon, как мы объяснили выше.
  3. Создайте новый проект 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 показан пример выполнения приведенной выше программы с точками останова.

auto obd speed lock - Buy auto obd speed lock with free shipping on AliExpress
Рисунок 15. Выполнение приложения Python на целевом устройстве с помощью кода Visual Studio и расширения Torizon.
Оцените статью
OBD
Добавить комментарий