Can шина ford galaxy

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

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

Can шина ford galaxy

Автор: Ariel Nuñez
Изменение температуры кондиционера Ford Fusion при помощи команд через шину CAN.

Can шина ford galaxy

Рисунок 1: Как при помощи приложения управлять ключевыми функциями автомобиля?
Недавно я вместе со своими друзьями из компании Voyage работал над реализацией программного управления системой кондиционирования в Ford Fusion. На данный момент Voyage занимается разработкой бюджетных самоуправляемых автомобилей. Конечная цель: чтобы каждый смог вызвать автомобиль к своей входной двери и безопасно путешествовать туда, куда вздумается. В компании Voyage считают крайне важной возможностью предоставление доступа к ключевым функциям автомобиля с заднего кресла, поскольку не за горами тот день, когда работа водителя будет полностью автоматизирована.
Зачем нужна шина CAN
Современные автомобили используют множество систем управления, которые во многих случаях функционируют подобно микро-службам в веб-разработке. Например, подушки безопасности, тормозные системы, регулирование скорости движения (круиз контроль), электроусилитель руля, аудиосистемы, управление окнами и дверями, подстройка стекл, системы зарядки для электрических автомобилей и т. д. Эти системы должны уметь осуществлять коммуникацию и считывать параметры друг друга. В 1983 в компании Bosch началась разработка шины CAN (Controller Area Network; Локальная сеть контролеров) для решения этой сложной задачи.
Можно сказать, что шина CAN представляет собой простую сеть, где каждая система автомобиля может считывать и отсылать команды. Эта шина интегрируется все сложные компоненты элегантным образом, что дает возможность реализовать всеми любимые функции автомобиля, которыми мы пользуемся.

Can шина ford galaxy

Рисунок 2: Впервые шина CAN стала использоваться в 1988 году в БМВ 8 серии
Самоуправляемые автомобили и шина CAN
Поскольку интерес к разработке самоуправляемых автомобилей серьезно вырос, соответственно, словосочетание «шина CAN» также становится популярным. Почему? Большинство компаний, создающих самоуправляемых автомобилей, не занимаются производством с нуля, а пытаются научиться программно управлять машинами после выхода с конвейера фабрики.
Понимание внутреннего устройства шины CAN, используемой в автомобиле, позволяет инженеру формировать команды при помощи программного обеспечения. Самые нужные команды, как вы можете догадаться, связаны с управлением рулем, ускорением и торможением.

Can шина ford galaxy

Рисунок 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 использует дифференциальный сигналинг, суть которого заключается в том, что при поступлении сигнала на одном проводе вольтаж повышается, а на другом понижается на одну и ту же величину. Дифференциальный сигналинг используется в средах, которые должны быть малочувствительны к шуму, например, в автомобильных системах или при производстве.

Can шина ford galaxy

Рисунок 4: Необработанный сигнал шины CAN, отображаемый на осциллографе
С другой стороны, пакеты, передаваемые по шине CAN, не стандартизированы. Каждый пакет содержит 4 ключевых элемента:

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

Can шина ford galaxy

Рисунок 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).

Can шина ford galaxy

Рисунок 6: Homer – первое самоуправляемое такси от компании Voyage
Поскольку климатическая система управляется через медиа-интерфейс (SYNC), нам придется отсылать команды через среднескоростную шину (MS).
Чтение и запись CAN-пакетов осуществляется при помощи драйвера и сетевого стека SocketCAN, созданного исследовательским отделом компании Volkswagen для ядра в Linux.
Мы будем подсоединять три провода от машины (GND, MSCANH, MSCANL) к переходнику Kvaser Leaf Light HSv2 (можно купить за 300$ на Амазоне) или к CANable (продается за 25$ на Tindie) и загружать на компьютере со свежим Linux-ядром шину CAN в качестве сетевого устройства.

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

Несмотря на то, что вышеуказанная информация эквивалентна амплитуде звукового сигнала, довольно трудно понять, что происходит, и обнаружить какие-либо закономерности. Нам нужно нечто похожее на частотный анализатор, и такой эквивалент есть в виде утилиты cansniffer. Cansniffer показывает список идентификаторов и позволяет отслеживать изменения в секции данных внутри CAN-фрейма. По мере того как мы будем изучать определенные идентификаторы, мы можем установить фильтр нужных ID, которые имеют отношение к нашей задаче.
На рисунке ниже показан пример информации, снятой при помощи cansniffer с шины MS. Мы отфильтровали все, что имеет отношение к идентификаторам 355, 356 и 358. После нажатия и отпускания кнопок, связанных с подстройкой температуры, в самом конце появляется значение 001C00000000.

Can шина ford galaxy

Рисунок 7: Информация с шины MS, снятая при помощи утилиты cansniffer
Далее необходимо объединить функционал для управления климатической системой с компьютером, работающим внутри автомобиля. Компьютер работает на операционной системе ROS (Robot Operating System; Операционная система для роботов). Поскольку мы используем SocketCAN, то модуль socketcan_bridge серьезно упрощает задачу по преобразованию CAN-фрейма в блок информации, понимаемый операционной системой ROS.
Ниже показан пример алгоритма декодирования:

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

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

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

Заключение
Теперь мы можем создавать и посылать те же самые коды в шину CAN, которые формируются при нажатии физических кнопок, связанных с повышением и понижением температуры, что дает возможность удаленного изменения температуры автомобиля при помощи приложения, когда мы находимся на заднем сидении автомобиля.

Can шина ford galaxy

Рисунок 8: Удаленное управление климатической системой автомобиля
Это лишь небольшой шаг при создании самоуправляемого такси вместе со специалистами компании Voyage. Я получил массу положительных эмоций во время работы над этим проектом. Если вы тоже интересуетесь этой темой, можете ознакомиться со списком вакансий в компании Voyage.

Can шина ford galaxy

CAN шина

Вопрос технического плана.

У меня заканчивается отладка самодельной GSM/GPS сигнализации. Но Форд — это не жигули. В фокусе все действия происходят по цифровой шине CAN.
Я её реализовываю, но где найти описание кодов идентификаторов на шине?

Я сел в машину, захлопнул все двери, подключился к шине — тишина.

После того как я открыл водительску дверь, то за 1,3 сек по шине пробежали 192 команды, закрыл дверь — ещё 244 команды. Я их все вижу, всё записал в файлы.

Короче понаснимал кучу логов — ответов на разные события (двери, замки, педали, поворотники и т.д.). Я, конечно, могу тщательно поковыряться в них с целью разобраться, но это очень рутинно.

Может быть где-то можно найти описание?

Can шина ford galaxy

Can шина ford galaxy

Can шина ford galaxy

Can шина ford galaxy

Can шина ford galaxy

Can шина ford galaxy

Can шина ford galaxy

Can шина ford galaxy

Can шина ford galaxy

VasAlex

цитата:
ТЕК самый глюкавый и нефункциональный КАН модуль

Ну, назови-ка более надежный и функциональный

Can шина ford galaxy

А чем снимаешь коды команд с шины? Как вариант для «зацепки» можно попробовать взять модуль CAN и посмотреть что он выдает на выходе/входе CAN шины, заведомо зная какие команды мы ему даем, поняв принцип и вычислив основные реализованные в CAN модуле команды можно и новые команды вычислить. Как Вам идейка?

Can шина ford galaxy

vectra
Сейчас коды снимаю вот такой штукой .
Если бы был у меня CAN модуль, то давно попробовал бы прослушать что он шлёт. Но купить, чтобы сутки поиграться выбросить совсем не хочется.

Can шина ford galaxy

Can шина ford galaxy

Смотрю логи, стало понятно, что команда с идентификатором 80 передаёт текущую дату и время, например:

Это 08 — 2008 год, 04 (апрель), 08 — число, 0E 06 0F — 14 часов 6 минут 15 секунд.

Диагностический разъём куда я втыкаюсь находится снизу слева от руля над нишой для визиток (см. фото)

Can шина ford galaxy

Can шина ford galaxy

Can шина ford galaxy

Can шина ford galaxy

Can шина ford galaxy

хм. думаю все таки есть, какие то ответы на полученные команды. иначе сложновато будет определять в каком модуле неисправность. да и удобнее это уж точно))

Can шина ford galaxy

vectra
Система дорогой не получится.

«IXXAT» не мой, я его беру на работе вместе со служебным ноутбуком временно попользоваться в автомобиль, затем возвращаю на место.
В моей сигнализации контроллер CAN шины будет реализован в переферии 7-го ARM-процессора sam7x256 .

Can шина ford galaxy

YAN а с чего ты взял что для доступа к can шине достаточно 2х контактов?
Вот опсиание h t t p ://www.5ballov.ru/referats/preview/71902/1

А вот парочка цитат:

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

Поэтому ничего удевительного что на 1 событие приходится по 244 сообщения.

цитата:
Линия передачи данных, в большинстве случаев, витая пара. Но связь по CAN протоколу так же может осуществляться по одному проводу. В различных случаях возможно применение наиболее подходящих каналов связи, оптического или радио канала.

На фотке какраз 8 контактов, очень похоже

Can шина ford galaxy

цитата:
CAN протокол разработан Robert Bosch GmbH и защищен патентами.

Can шина ford galaxy

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

Поэтому ничего удевительного что на 1 событие приходится по 244 сообщения.

PhotOn
Шина последовательная и приёмники реагируют на сообщения по коду. Вот что имелось в виду.

цитата:
На фотке какраз 8 контактов, очень похоже

Это диагностический разъём, там не только CAN.

В FF2 CAN-шина реализована на 2 проводах, причём тут насколько я понимаю просто две независимые шины (CAN-L и CAN-H). По одной из которых идёт управление дверными замками, стеклоподъёмниками и всякой другой требухой, а по второй по идее дожны работать более важные устройства.

Can шина ford galaxy

m01ska
кроме CAN-L и CAN-H там питание 8).

Быстрый и медленный CAN действительно делятся по принципу «для комфорта»- двери, музыка(медленная, 125К) и «безопасность» — ABS, airbag, PCM(быстрая, 500К).
Шлюз между сетями, на сколько я помню, приборная панель.

Источник