Изменение температуры кондиционера Ford Fusion при помощи команд через шину CAN.
Автор: Ariel Nuñez
Изменение температуры кондиционера Ford Fusion при помощи команд через шину CAN.
Рисунок 1: Как при помощи приложения управлять ключевыми функциями автомобиля?
Недавно я вместе со своими друзьями из компании Voyage работал над реализацией программного управления системой кондиционирования в Ford Fusion. На данный момент Voyage занимается разработкой бюджетных самоуправляемых автомобилей. Конечная цель: чтобы каждый смог вызвать автомобиль к своей входной двери и безопасно путешествовать туда, куда вздумается. В компании Voyage считают крайне важной возможностью предоставление доступа к ключевым функциям автомобиля с заднего кресла, поскольку не за горами тот день, когда работа водителя будет полностью автоматизирована.
Зачем нужна шина CAN
Современные автомобили используют множество систем управления, которые во многих случаях функционируют подобно микро-службам в веб-разработке. Например, подушки безопасности, тормозные системы, регулирование скорости движения (круиз контроль), электроусилитель руля, аудиосистемы, управление окнами и дверями, подстройка стекл, системы зарядки для электрических автомобилей и т. д. Эти системы должны уметь осуществлять коммуникацию и считывать параметры друг друга. В 1983 в компании Bosch началась разработка шины CAN (Controller Area Network; Локальная сеть контролеров) для решения этой сложной задачи.
Можно сказать, что шина CAN представляет собой простую сеть, где каждая система автомобиля может считывать и отсылать команды. Эта шина интегрируется все сложные компоненты элегантным образом, что дает возможность реализовать всеми любимые функции автомобиля, которыми мы пользуемся.
Рисунок 2: Впервые шина CAN стала использоваться в 1988 году в БМВ 8 серии
Самоуправляемые автомобили и шина CAN
Поскольку интерес к разработке самоуправляемых автомобилей серьезно вырос, соответственно, словосочетание «шина CAN» также становится популярным. Почему? Большинство компаний, создающих самоуправляемых автомобилей, не занимаются производством с нуля, а пытаются научиться программно управлять машинами после выхода с конвейера фабрики.
Понимание внутреннего устройства шины CAN, используемой в автомобиле, позволяет инженеру формировать команды при помощи программного обеспечения. Самые нужные команды, как вы можете догадаться, связаны с управлением рулем, ускорением и торможением.
Рисунок 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 использует дифференциальный сигналинг, суть которого заключается в том, что при поступлении сигнала на одном проводе вольтаж повышается, а на другом понижается на одну и ту же величину. Дифференциальный сигналинг используется в средах, которые должны быть малочувствительны к шуму, например, в автомобильных системах или при производстве.
Рисунок 4: Необработанный сигнал шины CAN, отображаемый на осциллографе
С другой стороны, пакеты, передаваемые по шине CAN, не стандартизированы. Каждый пакет содержит 4 ключевых элемента:
- АрбитражныйID (ArbitrationID) представляет собой широковещательно сообщение, идентифицирующее устройство, которое пытается начать коммуникацию. Любое устройство может отсылать несколько арбитражных ID. Если в единицу времени по шине отсылаются два CAN-пакета, пропускается тот, у которого ниже арбитражный ID.
- Расширение идентификатора (Identifierextension;IDE) – в случае с шиной CAN стандартной конфигурации этот бит всегда равен 0.
- Код длины данных (Datalengthcode;DLC) определяет размер данных, который варьируется от 0 до 8 байт.
- Данные. Максимальный размер данных, переносимых стандартной шиной CAN, может быть до 8 байт. В некоторых системах происходит принудительное дополнение пакета до размера 8 байт.
Рисунок 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).
Рисунок 6: Homer – первое самоуправляемое такси от компании Voyage
Поскольку климатическая система управляется через медиа-интерфейс (SYNC), нам придется отсылать команды через среднескоростную шину (MS).
Чтение и запись CAN-пакетов осуществляется при помощи драйвера и сетевого стека SocketCAN, созданного исследовательским отделом компании Volkswagen для ядра в Linux.
Мы будем подсоединять три провода от машины (GND, MSCANH, MSCANL) к переходнику Kvaser Leaf Light HSv2 (можно купить за 300$ на Амазоне) или к CANable (продается за 25$ на Tindie) и загружать на компьютере со свежим Linux-ядром шину CAN в качестве сетевого устройства.
Читайте также: Isa eisa шины данных
После загрузки запускаем команду candump can0 и начинаем отслеживать трафик:
Несмотря на то, что вышеуказанная информация эквивалентна амплитуде звукового сигнала, довольно трудно понять, что происходит, и обнаружить какие-либо закономерности. Нам нужно нечто похожее на частотный анализатор, и такой эквивалент есть в виде утилиты cansniffer. Cansniffer показывает список идентификаторов и позволяет отслеживать изменения в секции данных внутри CAN-фрейма. По мере того как мы будем изучать определенные идентификаторы, мы можем установить фильтр нужных ID, которые имеют отношение к нашей задаче.
На рисунке ниже показан пример информации, снятой при помощи cansniffer с шины MS. Мы отфильтровали все, что имеет отношение к идентификаторам 355, 356 и 358. После нажатия и отпускания кнопок, связанных с подстройкой температуры, в самом конце появляется значение 001C00000000.
Рисунок 7: Информация с шины MS, снятая при помощи утилиты cansniffer
Далее необходимо объединить функционал для управления климатической системой с компьютером, работающим внутри автомобиля. Компьютер работает на операционной системе ROS (Robot Operating System; Операционная система для роботов). Поскольку мы используем SocketCAN, то модуль socketcan_bridge серьезно упрощает задачу по преобразованию CAN-фрейма в блок информации, понимаемый операционной системой ROS.
Ниже показан пример алгоритма декодирования:
Полученные данные хранятся в CelsiusReport.msg:
После нажатия всех нужных кнопок в машине, у нас появляется следующий список:
Затем эти строки отсылаются на узел под управлением операционной системы ROS и далее происходит трансляция в коды, понимаемые автомобилем:
Заключение
Теперь мы можем создавать и посылать те же самые коды в шину CAN, которые формируются при нажатии физических кнопок, связанных с повышением и понижением температуры, что дает возможность удаленного изменения температуры автомобиля при помощи приложения, когда мы находимся на заднем сидении автомобиля.
Рисунок 8: Удаленное управление климатической системой автомобиля
Это лишь небольшой шаг при создании самоуправляемого такси вместе со специалистами компании Voyage. Я получил массу положительных эмоций во время работы над этим проектом. Если вы тоже интересуетесь этой темой, можете ознакомиться со списком вакансий в компании Voyage.
- делимся данными CAN (Страница 1 из 2)
- Сообщений с 1 по 25 из 50
- 1 Тема от gordon 10-03-2015 12:55:08
- Тема: делимся данными CAN
- 2 Ответ от gordon 10-03-2015 14:20:08
- Re: делимся данными CAN
- 3 Ответ от gordon 21-03-2015 14:49:05
- Re: делимся данными CAN
- 4 Ответ от gordon 21-03-2015 15:51:38
- Re: делимся данными CAN
- 5 Ответ от gordon 23-03-2015 10:05:15
- Re: делимся данными CAN
- 6 Ответ от gordon 24-03-2015 11:38:08
- Re: делимся данными CAN
- 7 Ответ от Arhimed 25-03-2015 00:57:42
- Re: делимся данными CAN
- 8 Ответ от gordon 25-03-2015 09:14:23
- Re: делимся данными CAN
- 9 Ответ от Arhimed 11-04-2015 01:25:12 (12-04-2015 22:57:55 отредактировано Arhimed)
- Re: делимся данными CAN
- 10 Ответ от Константин, CANNY 02-05-2015 21:05:36
- Re: делимся данными CAN
- 11 Ответ от gordon 07-08-2015 10:15:34
- Re: делимся данными CAN
- 🔍 Видео
Видео:MCP2515, контроллер CAN шины с интерфейсом SPIСкачать
делимся данными CAN (Страница 1 из 2)
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Видео:CAN шина👏 Как это работаетСкачать
Сообщений с 1 по 25 из 50
1 Тема от gordon 10-03-2015 12:55:08
Тема: делимся данными CAN
предлагаю в данной теме выкладывать данные из реальных авто
марка /год / шина CAN/Lin .
2 Ответ от gordon 10-03-2015 14:20:08
Re: делимся данными CAN
203/463 (463248)
салоная шина
кнопки на руле
1A8 01 стрелка вверх
1A8 02 стрелка вниз
1A8 04 меню вниз
1A8 08 меню вверх
1A8 10 звук вверх
1A8 20 звук вниз
1A8 40 трубка вверх
1A8 80 трубка вниз
. next
3 Ответ от gordon 21-03-2015 14:49:05
Re: делимся данными CAN
«шатл » управления мультимедиа MB 204 (c-clk-glk. )
CAN A , 125kb
id
0xfb
0xfd
0x428
0x747
кнопка возврат
0xfd 0x02
кнопка С
0xfd 0x20
шатл наклон влево
0xfd xx xx 0x40
шатл наклон вправо
0xfd xx xx 0x04
шатл наклон вниз
0xfd xx xx 0x10
шатл наклон в верх
0xfd xx xx 0x01
Читайте также: Для чего нужна шина isa
4 Ответ от gordon 21-03-2015 15:51:38
Re: делимся данными CAN
кнопка шатла
0xfd xx 80
шатл поворот влево
значение -1( от значения в блоке )
0xfb xx xx xx xx xx xx 0x7F
шаг -1
0xfb xx xx xx xx xx xx 0x7e
шатл поворот вправо
значение +1( от значения в блоке )
0xfb xx xx xx xx xx xx 0x7F
шаг +1
0xfb xx xx xx xx xx xx 0x80
5 Ответ от gordon 23-03-2015 10:05:15
Re: делимся данными CAN
на повестки дня :221 шатл , KI , TSG(все ) SAM( все ) , OBF,MRM.
З.Ы может кто еще подключится ‘)
6 Ответ от gordon 24-03-2015 11:38:08
Re: делимся данными CAN
OBF 639(VIANO) САЛОННАЯ ШИНА 83.3kb
ID 0X2C
ID 405
0X2C XX 0X20( аварийка тригерная 0x00 выкл )
0x2c XX XX XX 0x04 левая сдвижная дверь открыть
0x2c XX XX XX 0x02 левая сдвижная дверь закрыть
0x2c XX 0x80 XX ХХ стеклоочиститель задней двери (тригер 0x00 )
0x2c XX 0x40 XX ХХ стеклоочиститель+стеклоомыватель задней двери
0x2c XX XX 0x80 XX PTS ON/OFF
0x2c 0X01 XX XX XX ASR ON/OFF
0x2c XX 0X01 XX XX HZ ON/OFF
0x2c 0X10 XX XX XX ЗАКРЫТИЕ ПЕРЕДНИХ ДВЕРЕЙ
0x2c 0X20 XX XX XX ЗАКРЫТИЕ ЗАДНИХ ДВЕРЕЙ
0x2c XX XX XX 0X40 ВКЛЮЧИТЬ СВЕТ В САЛОНЕ
0x2c XX XX XX 0X80 ВЫКЛЮЧИТЬ СВЕТ В САЛОНЕ
0x2c XX XX XX 0x10 правая сдвижная дверь открыть
0x2c XX XX XX 0x20 правая сдвижная дверь закрыть
.
7 Ответ от Arhimed 25-03-2015 00:57:42
Re: делимся данными CAN
Mercedes-Benz S W221 2005-2013гг
Управление задними сиденьями
CAN 125kb
Левое:
кн. спинка вперёд 1f3 80 10
спинка назад 1f3 80 20
подушка сиденья вперёд 1f3 81
подушка сиденья назад 1f3 82
подушка сиденья вниз 1f3 80 02
подушка сиденья вверх 1f3 80 01
вентиляция 1f3 80 00 01
подогрев 1f3 80 00 02
Состояние вентиляции:
3-я скорость 3bd 03
2-я скорость 3bd 02
1-я скорость 3bd 01
Cостояние подогрева:
3-я max 3bd 0d
2-я ср 3bd 09
1-я min 3bd 05
всё выкл 3bd 00
Правое:
команды регулировок все те же, только с идентификатором 1f4
Состояние вентиляции:
3-я скорость 3bd xx 03
2-я скорость 3bd xx 02
1-я скорость 3bd xx 01
Cостояние подогрева:
3-я max 3bd xx 0c
2-я ср 3bd xx 08
1-я min 3bd xx 04
всё выкл 3bd xx 0d
При одновременном включении вентиляции и подогрева соответственно сумма в шестнадцатиричной системе
8 Ответ от gordon 25-03-2015 09:14:23
Re: делимся данными CAN
Для полноты данных прошу выкладывать группу ID блока после подачи питания
id .
id.
id.
для полноты картины
9 Ответ от Arhimed 11-04-2015 01:25:12 (12-04-2015 22:57:55 отредактировано Arhimed)
Re: делимся данными CAN
Mercedes-Benz S W221
Группа кнопок на центральной консоли (телефон)
Lin 9600
ID 01
Отклонение вызова — 01| XX 40
CLEAR — 01| XX 04
Принятие вызова — 01| XX 10
1 — 01| 01 XX
2 — 01| 02 XX
3 — 01| 04 XX
4 — 01| 08 XX
5 — 01| 10 XX
6 — 01| 20 XX
7 — 01| 40 XX
8 — 01| 80 XX
9 — 01| XX 01
* — 01| XX 20
0 — 01| XX 02
# — 01| XX 08
10 Ответ от Константин, CANNY 02-05-2015 21:05:36
Re: делимся данными CAN
11 Ответ от gordon 07-08-2015 10:15:34
Re: делимся данными CAN
bmw 8x( на мини тоже )CAN 100kbit
0x0A8 54 D7 2B D0 2B F0 0F 02 Torque, Clutch and Brake status
0x0AA 5F 59 FF 00 34 0D 80 99 Engine RPM and throttle position
0x0C0 F4 FF ABS / Brake counter
0x0C4 83 FD FC 00 00 FF F1 Steering Wheel position (See 0C8)
0x0C8 DD 07 FC 00 00 FF Steering Wheel position (Sent 2x often 0C4)
0x0CE DA 02 DC 02 DC 02 D9 02 Individual Wheel Speeds (4x Pairs)
0x0D7 C3 FF Counter (Airbag / Seatbelt Related)
0x0E2 81 FF E7 FC FF FF FF FF Passenger door status Unlocked, Open
0x0E6 81 FF E7 FC FF FF FF FF Rear Passenger door status Unlocked, Open
0x0EA 81 FF E7 FC FF FF FF FF Driver door status Unlocked, Open
0x0EE 81 FF E7 FC FF FF FF FF Rear Driver door status Unlocked, Open
0x0F2 F1 FF 87 C0 FF FF FF FF Boot status Unlocked, release button, Open
0x0FA C0 00 FF Electric Window controls (Driver controls)
0x0FB C7 FF FF Electric Window controls (Front Passenger)
0x130 45 40 21 8F FE Ignition and Key status (Term 15 / R ON?)
0x193 27 FE F1 00 F8 50 00 00 Timer & Cruise control status
0x19E 00 E0 B3 FC F0 43 00 65 ABS / Braking force
0x1A6 13 4D 46 4D 33 4D D0 FF Speed, as used by the instrument cluster
0x1B4 00 D0 E0 F8 00 32 FE 91 Speed [MPH] Handbrake status
0x1C2 8D 72 5B 5A FF FF FF FF PDC (Reverse) / (Front) Sensor data
0x1D0 4C FF 63 CD 5D 37 CD A8 Engine temp, Pressure sensor & Handbrake
0x1D6 C0 0C MFL (Steering Wheel) Buttons
0x1E1 D4 F1 00 FF FF FF Counter and Door Status (200mS intervals)
0x1E3 F1 FF Interior Light Switch
0x1EE 00 FF Indicator Stalk position
0x1F6 80 F0 Indicator Status
0x202 54 FF Lights (Dimmer Status)
0x21A 05 12 F7 Lighting Status
0x23A 00 30 00 60 Remote Control Keyfob Actions
0x246 3F F3 00 FC FF Air Con, Demister Status
0x24A 06 FF Reverse Status
0x24B 00 F8 Door status, similar to 2FC
0x252 CE FF Windscreen Wiper Status
0x264 E1 FD 21 A2 7F 1E iDrive Controller (Rotary Control)
0x267 E1 FD CC 01 DE 01 iDrive Controller (Direction / Buttons)
0x26E 00 40 7F 50 FF FF FF FF Ignition Status
0x273 1D E1 00 F0 FF 7F DE 04 CCC / CIC Status
0x277 E1 9D 04 FF iDrive controller reply to 0x273
0x286 00 FF Rear View Mirror, Light sensor
0x2A6 00 F9 Windscreen Wiper Controls
0x2B4 00 F2 Door locking (Via Remote Control)
0x2B8 31 00 F0 00 00 E3 Reset Av Fuel / Speed
0x2BA 00 00 00 00 10 Counter (Toggle / Heartbeat)
0x2CA 61 FF Outside temperature
0x2D6 FF FC FF Air Conditioning Status
0x2E6 64 00 00 FF 00 01 3F 34 Climate control status (Fan and Temp speed)
0x2EA FF FF FF FF FF FF FF 34 Climate control status (Passenger)
0x2F8 13 2E 1E 01 4F DC 07 FD Report Time and Date
0x2FC 81 01 00 FF FF FF FF Door Status
0x328 16 83 A2 04 DE 11 1 Second count from battery removal / reset
0x32E 00 FF 8F 63 6A 00 2E 0F Internal Temp, Light and solar sensors
0x330 7A 5A 00 2D 29 2F 9C 34 Odometer, Av Fuel, and Range
0x349 76 0F BE 1A 00 Fuel Level sensors
0x34F FE FF Handbrake status
0x362 AE F3 1E FF FF FF EA Average MPH & Average MPG
0x366 78 50 14 FC Ext Temp & Range
0x380 56 xx 35 32 38 37 xx VIN Number
0x394 48 0F 10 6B 00 88 58 01 Hours / Distance since last service.
0x39E 0B 10 00 0D 1F DF 07 F2 Set Time and Date
0x3B0 FD FF Reverse Status
0x3B4 A6 F3 00 FC FF FF FF FF Battery Voltage & Charge status
0x3B6 00 FC F0 Passenger Front Window status
0x3B7 41 F5 F8 Driver Rear Window status
0x3B8 00 FC F0 Driver Front Window status
0x3B9 41 F5 F8 Passenger Rear Window status
0x581 40 4D 00 28 FF FF FF FF Seatbelt Status
0x7C3 xx xx xx xx xx xx xx xx Keyfob (security, comfort and CBS data)
🔍 Видео
#10. Как отправлять сообщения и команды в CAN-шину для управления автомобилем?Скачать
STM32 CAN шина. Часть 1. Настройка и странности HALСкачать
Экспресс диагностика CAN шины на автомобиле. №21Скачать
поиск нерабочей can шины, часть дваСкачать
лекция 403 CAN шина- введениеСкачать
Подробно про CAN шинуСкачать
Как управлять автомобилем через CAN-шину?Скачать
Кан шина, что это? Поймет школьник! принцип работыСкачать
Как проверить CAN шину Используем симулятор ElectudeСкачать
Шина CAN. Часть 1. Разбираемся как работает CAN bus, разберем кадр данных до "костей".Скачать
Простая проверка CAN шины. Сканер не видит автомобиль через OBD2. Как правильно выбрать изоленту.Скачать
Как работает LIN шина автомобиля. K-Line L-Line шины данных. Лин шина автомобиля. Lin-bus networkСкачать
Вебинар: Как найти любые данные из CAN-шины любого автомобиля?Скачать
Поиск неисправности в шине CAN мультиметром. Suzuki Grand Vitara. U1073, P1674, B1553.Скачать
Универсальная плата CAN шиныСкачать
LIN шина - пример работы. LIN bus exampleСкачать
CAN шина на осциллографе FINIRSI ADS1013DСкачать
Урок №18. Цифровые интерфейсы современного автомобиля: шины данных CAN и LINСкачать