Взлом кан-шины для чайников.
Всем привет!
Я очень часто получаю вопросы через ЛС о том, как подключиться к кан-шине автомобиля и как вытащить нужную информацию из нее. Сегодня я подробно расскажу о процессе взлома кан-шины. Будет много текста и картинок.
Сегодня я не буду отвелекаться на подробное изложение того — что из себя представляет кан-шина автомобиля. Кому интересно — читайте википедию, там все расписано. В двух словах — это высокоскоростная "сеть", по которой различные электронные устройства автомобиля обмениваются данными.
Для тех, кто не знает, зачем это нужно, пример — мой Genesis. В комплектации автомобиля была система с черно-белым экраном. Заменить ее на 2DIN-магнитолу нельзя, так как на экран выводятся параметры климат-контроля. Поэтому я сделал программу под Android, поставил в машину планшет вместо черно-белого экрана, и на него вывожу всю информацию со штатного экрана, но плюсом к этому имею камеру заднего вида и навигацию. То же самое я сделал для Genesis Coupe .
Вернемся к Кан-шине. Нас интересуют конкретные данные. Кому-то нужны обороты двигателя, кому-то сведения о парктрониках или информация о параметрах климат-контроля, кто-то ищет команды, отправляемые с кнопок руля. Причем не обязательно, что все данные будут находиться в одной кан-шине. В автомобиле шин может быть 2, 3 и более. Есть высокоскоростная шина, с которой работают основные силовые узлы автомобиля (двигатель, коробка и т.д.). Но есть и другие шины. По ним передаются данные о состоянии замков дверей, парктроников, климата и прочего.
Для начала нужно определиться, к какой шине нам нужно подключиться. Если нас интересует информация о климат-контроле, то нужно подключаться к кан-шине, идущей к блоку управления климатом. Первым делом нужно найти схему разъема нужного блока (распиновку). В ней обязательно должны быть следующие контакты — Can H (он же Can+ или Can High) и Can L (он же Can- или Can Low). Именно к ним мы будем подключаться для извлечения данных.
Итак, определились с местом подключения. Теперь давайте разберемся с тем, чем именно будем взламывать шину. Для этого уже есть готовые и недорогие решения. Начнем с железной составляющей. Нам понадобится обычный компьютер (ноутбук) под управлением Windows. Думаю с этим ни у кого проблем не возникнет.
Для считывания данных кан-шины и передачи их на компьютер нам понадобится микроконтроллер Arduino UNO (рекомендую приобрести китайский клон на всем известном сайте) и так называемый шилд для него — Can Bus Shield для Arduino Uno. Вот ссылки на комплектующие:
Can Bus Shield (есть более дешевые варианты, но нужно паять ножки самостоятельно. В последний раз шилд обошелся мне в 350р).
Arduino Uno R3 (китайский клон)
Шилд нужно вставить в плату ардуино вот так.
Шилд установлен на Ардуино Уно.
На самом шилде есть вот такая дорожка. Ее нужно перерезать, например канцелярским ножом, иначе никаких данных он не передаст.
Резать тут
На некоторых шилдах дорожки нет (точнее есть, но она не видна). Есть просто два контакта в том же месте. Нужно перерезать ножом место между ними (так как под слоем краски идет дорожка).
На самом шилде есть колодка для подключения проводов к кан-шине (на фото выше — зеленая). Две клеммы с обозначениями Can L и Can H. Теперь нам нужно взять кусок двухжильного кабеля (я предпочитаю витую пару), одну сторону подключить к колодкам шилда, а вторую — к проводам Can H и Can L соответствующих пинов разъема климат-контроля. Можно посадить на скрутки.
Таким образом можем считать, что со стороны железа подключение и настройку мы закончили. Теперь перейдем к программной части.
Для начала нам понадобится Ардуино IDE – программа для компиляции скетчей (программ микроконтроллера Ардуино) и заливки их в Arduino. Скачиваем программу и устанавливаем. Также, для работы с кан-шиной нам потребуется вот эта библиотека Can Bus для Ардуино.
После установки софта и драйверов, подключаем библиотеку кан бас в ардуино IDE. Для этого заходим в меню Эскиз->Include Library -> Add .ZIP Library… и выбираем скачанную библиотеку.
У нас почти все готово для того, чтобы приступить с сканированию Can Bus. Осталось установить вот эту программку — Can Tool. И скачать несколько модифицированный мною скетч . (программу Ардуино) для работы с Ардуино Uno и Can Bus Shield.
Работа с CAN шиной автомобиля, или решение нестандартных задач (Lexus LX570).
Уже несколько месяцев назад сменил место работы, на радость всем тем, кому не нравилась тема Smart-ов.
Сейчас я, по большей части, занимаюсь мультимедиа авто. Но, в последнее время, часто стали появляться нестандартные задачи, которые требуют разработки электроники. Одна из таких задач — Lexus LX570.
На этот автомобиль уже был установлен управляемый выхлоп. Управляемый выхлоп поставили ему в одной из организаций Москвы. Выхлоп сделан на высшем уровне в плане механических работ. Выхлоп классно выглядит и звучит. Из-под порога торчит двустволка, в штатном режиме она не громче стока, а в открытом режиме выдает сочный рев настоящего V8.
Но то, что не нравится владельцу – это управление этим выхлопом. В работе использовалось стандартное решение, которое подходит под все автомобили. Это брелок с двумя кнопками, одна открывает, другая закрывает выхлоп.
Владельца это не устраивает. Зачем нужны какие-то дополнительные брелоки, если в машине уже есть штатный спорт режим. Вот он и просил подключить управляемый выхлоп к спорт-режиму на автомобиле.
Задача предельно ясна. Осталось решить как реализовать. Я решил делать это через CAN шину автомобиля. Для реализации была выбрана платформа Canny 7. На сайте производителя написано, что это «программируемый логический контроллер». Его преимуществом является то, что по сути он является законченным устройством. На борту есть CAN контроллер и 11 программируемых выводов. Питается он от борт сети автомобиля без каких-либо преобразователей. Более подробно о контроллере можно почитать на официальном сайте https://canny.ru/c7/ или на вики, посвящённому этому контроллеру http://wiki.canny.ru/index.php?title=CANNY_7
Вот так выглядит Canny 7 с корпусом и без него.
Для начала нужно проанализировать CAN шину автомобиля, что б узнать, по каким адресам идет информация о режиме работы автомобиля. Анализировать Can шину можно тем же Canny 7, для этого нужно его перевести в режим монитора. Не буду на этом останавливаться, так как на том же вики есть подробная инструкция http://wiki.canny.ru/index.php?title=CANNY_CAN%28LIN%29_monitor . Так же анализировать Can шину можно и другими устройствами.
После перехода в режим монитора находим данные, которые отвечают за Sport режим. В моем случае за это отвечают данные с ID 0x03BC.
По этому ID идет следующая информация
80 20 00 00 00 00 87 18 – Sport
80 20 00 00 00 00 85 20 – Sport +
80 20 00 00 00 00 04 00 — Normal
80 20 00 00 00 00 04 38 – Customize
80 20 00 00 00 00 06 28 – Comfort
80 20 00 00 00 01 04 30 – Eco
Из этих данных видно, что информация о режиме лежит в байтах D6, D7, то есть в последних двух.
Данные передаются в двоичной форме, переведем последние 2 байта в двоичную систему счисления, получится следующее:
10000111 00011000 Sport
10000101 00100000 Sport+
00000100 00000000 normal
00000100 00111000 Custom
00000110 00101000 Comfort
00000100 00110000 Eco
Отсюда видно, что в спорт режимах старший и младший биты байта D6 стоят в 1, тогда как в остальных режимах там 0. На них и будем ориентироваться при написании алгоритма.
Тут начинается самое сложное, надо будет объяснить Canny 7 что нужно делать. Для программирования Canny 7 используется своя среда разработки Canny lab. Программирование ведется с помощью специальных диаграмм. Надо расставить логические блоки и выставить между ними связи.
Такой вид программирования хорош тем, что ниже порог входа в разработку, отрицательной стороной является то, что сложные диаграммы будет проблематично читать, так же в них можно запутаться и они занимают много места на экране ПК.
Этот способ программирования мне не привычен и не удобен. В дальнейшем я планирую использовать для подобных прототипов Ардуино совместимые платы с CAN модулем. Но данное решение привлекает тем, что тут все на одной плате. Не нужно ставить дополнительные модули с CANом, не нужно думать с питанием (у Arduino входное напряжение ограничено 12 вольтами, а на современных авто напряжение может повышаться до 15) и не нужно думать о корпусе.
Готовая диаграмма для Canny 7 выглядит следующим образом:
Данная диаграмма и ее тестирование отняло почти 2 дня времени. В конце тестов появляется полностью работоспособное устройство, готовое к установке в авто.
Ну а работу устройства можно посмотреть в видео.
А всем, кто дочитал до конца большое спасибо. Вообще около недели думал, стоит ли выкладывать такую подробную инструкцию с кучей технических моментов и большим объемом технической информации, так как пикабу, все-таки, больше развлекательный сайт.
Скорее всего дальнейшие статьи будут с меньшим объемом технической информации.
Выкладывать пост однозначно стоило. Я ни хера не понял, но было интересно. (с)
А как их найти то? что именно с данного адреса данные по спорт режиму?
Нужно законодательно обязать производителей всех громких глушителей (парадоксально да?) встраивать систему глушения шума и чтобы ею мог управлять любой человек у которого в свою очередь будет универсальный пульт, чтобы всякие уебки на своих ведрах по ночам и утрам не мешали спать..
Механическое управление звуком выхлопа только звук меняет или есть от него технический толк?
Пффф, так все могут, а попробуй на копендосе глушителем мурку сыграть!)
Легко
Карьера 2.0. Автоэлектрик — диагнотст — моторист — чиптюнер
Всем привет, начальные посты тут
Карьера часть 1
Карьера часть 2
Прежде чем начать хочу отметить товарищей которые дали стимул писать посты о работе, а не ту дребедень из последних постов:
@Compiller,
@Morze701,
@TimofeyKupavna,
@Ericsson567,
@Az2018.
Пожалуй теперь можно и начать. По скольку я теперь освобожден от комерческих тайн, могу раскрывать некоторые секреты, и первое что я хочу сказать: Дилеры ох#ели. В край, бессовестно и мерзко. Как же я заблуждался, защищая политику дилерских центров, я лбом бился объясняя что истории с допами частные и преувеличенные случаи, я занимался самообманом и мой дилерский центр тоже скатился, хоть и не сразу, но пал на дно.
Бум продаж на фоне нехваток автомобилей захлестнул нас с сентября 2021, сказался отложенный спрос. Зарплата уходила далеко за 100к. За любым подъемом идёт спад, в декабре стало ясно, что машины кончаются, новых не везут. В январе 2022 приехало 8 машин, в феврале 4, а потом все, по всем известным причинам, поставок не стало не то что машин, с запчастями ахтунг, все что было раскидано по складам в РФ, это все запчасти. Из Европы не привезти, с Японии тоже самое, у клиента на гарантийном LS500( закуп
12млн) надо поменять блок цилиндров, программа выдала срок поставки 2100 год.
Ранее в постах я упоминал, что со мной работают ещё 2 человека, одного за год долбануло 2 инсульта, по лёгкому, но не без последствий, про второго лично я не высокого мнения, но тут возможно просто предвзятое отношение.
Так к чему я? Работы стало не хватать, зарплата упала в 3 раза, т.е. получал я 100к стал получать 30-40к, а у меня кредитных обязательств только на 32к, благо смог оформить кредитные каникулы, которые дали передышку, но я оптимист и думал что осенью или к зиме все начнет возвращаться на круги своя. Но когда сотрудникам надо платить, а доход падает, руководство сокращает штат. Но наши решили хитрее, под лозунгом "кадры нам важны", начали отправлять в неоплачиваемые отпуска на 180 дней, так случилось со мной. То ли я хуже человека перенесшего 2 инсульта и фактически моего ученика, то ли факт того, что я устроен на полставки(бежал от приставов). От руководства, что меня позвали работать, не осталось никого, так что условия что я описывал ранее уже отсутствовали в плане коллектива и позиции руководителей. Место работы АЕМ-Премиум г.Барнаул с 01.07.2018 по 01.07.2022 (И — ирония), АЕМ-Премиум существует с апреля 2018, я был самым "старым" сотрудником.
Сказать, что было обидно, ничего не сказать, а ведь ещё полмесяца доработать надо до выхода в "отпуск". С моим профилем работы с энтузиазмом равным нулю, проще вообще не приходить, о каком поиске неисправности может быть речь, если насрать на результат?
В тот день я написал бывшему коллеге, который 2 года назад тоже стал не нужным холдингу АЕМ при перестройке. Через пару часов мне перезвонили и предложили работу, с момента объявления "новостей" прошло 4 часа. В отрасли в которой гораздо, охренеть как гораздо больше денег, которой санкции до фонаря, фактически эта отрасль один из двигателей экономики РФ. И нет это не нефтянка или газпром, это всего лишь спецтехника, которая используется везде, даже в нефтянке и газпроме, дорожном хозяйстве, карьеры, шахты и все остальное.
О компании, вернее группе компании я хочу написать отдельным постом, сейчас скажу кратко. После месяца работы в меня вложено больше денег чем я заработал для компании. Мне куплен ноутбук, тот на который я ткнул на картинке, куплено оборудование для чиптюнинга, то что я написал. Когда исполнительный директор узнал что я звоню с личного телефона, обязал всем купить по телефону(тем кому надо делать фотоотчеты) и симкарте для связи, т.к. в его понимании личное это личное, рабочее что бы работать. Теперь я как дурачок с 2мя смартфонами. Ну и на закуску, планируется покупка служебного автомобиля под меня, хотя уже есть несколько, т.к. иногда у меня выездная работа. Я снова весь в развитии, выгорание остановлено, постигаю совершенно новое, планирую месяца через 3 выйти на зарплату 150+, пожелайте мне удачи, надеюсь мне снова повезло и я не промахнулся.
P. S. Есть интересное понятие "проектная работа", т. е. если что то придумал новое и развиваешь это, тебе за это доплачивают.
Всем пока, до встречи!
Автоэлектрик-Диагност. Случаи. Часть 10. Я не придумал название
Всем привет. Думал что брошу рубрику, но время от времени случается интересное, стоящее что бы о нем написали.
Я писал ранее, что меня убивает рутина, ставлю сиги и прочее ради денег, но диагностике реально сложного случая радуюсь, хотя от этого иногда теряю спокойный сон. Будет длинно и возможно не понятно, спрашивайте, попробую ответить на вопросы.
Lexus ES250 и его хозяин.
Если вы профи в своем деле, вас раздражают люди которые почему-то решают, что опытнее и умнее вас? Я к этому отношусь с иронией, мои клиенты хорошо обеспеченные люди, а поскольку глупые так много зарабатывают достаточно редко, они не глупы, они излишне самоуверены и любят держать все под контролем, в следствии чего иногда делают глупые вещи.
Причина обращения: "не работает кондиционер, заправили, все равно не работает"
Я сам за годы приобрел излишнию самоуверенность (самокритика), и делаю простейший тест на наличие хладогента в системе — тыкаю в клапан отверткой, если пальцы обдаст холодом, значит система герметична и фрион есть, лень мне аппарат подключать. Тыкаю, давление есть, а фриона нет. Теперь ставлю станцию по заправке и запускаю полный цикл, это откачка, востановление, заправка. Задаешь программу, и идешь пить кофе. Итог откачано 100гр хладогента при норме 550гр. Кондиционер не заработал, стало интересно. Особенность системы на этом авто, это наличие датчика оборотов компрессора, датчика массового расхода хладогента, электромуфты и все это на самом копрессоре. Хоть что то выйдет из строя, будет блокировка включения муфты, что и наблюдалось. Из анамнеза машину били в морду, осматриваю жгут проводки на компресмор, есть повреждения, но устранены. Я бы не писал о случае если бы не хотел похвастать. Есть в этой машине ахилесова пята, комбинированный блок реле, на транзисторах, предохранитель общий 140А, транзисторы держат 25А, а при замыкании ток гораздо больше. При повреждении в дтп проводки блок реле и сгорел частично. Стоит эта штука 17к новой.
Клиент уехал и вернулся через 2 дня с заявлением: "вы ошиблись, вы такими методами всю машину можете поменять, и т.д. Он оказывается брал такой же блок с тойота камри v50 и ставил в свою, а свой в камри, как итог на камри климат продолжал работать, на его лексусе нет. На просьбу сказать номер детали с камри, получили отказ :" она такая же! Номер не скажу" попросили вин камри:" а вам зачем, не скажу!". Все бы ничего вот только если камри не с 2.5 мотором, что для v50 редкость, то похожий внешне блок реле не учавствует в работе компрессора кондиционера, и клиент мог угробить рабочую деталь с камри.
Итог уехал не довольный, я не смог найти "другую неисправность".
Lexus GX470.
История долгая, машиной изначально занимался напарник, нас в команде трое, в итоге подключились все.
Клиент обратился с горящим чеком, ошибка бедная смесь в Б2. Так как там мотор V8 он разделен на Банк1(со стороны водителя) и Банк2(сторона пассажира). По параметрам нормальная смесь, неисправность не проявляется, переставляем местами датчики кислорода и отправляем на пару дней кататься. Приехал, бедная смесь в Б1, значит датчик мертв, меняем на новый и в путь.
Через месяц опять, бедная смесь в Б2, клиент сам предлагает заменить еще один датчик, меняем.
Приехал через 2 дня. Бедная смесь в Б2.
Началось исключение очевидного, это подсосы воздуха, дмрв, грм и далее по списку. Нашли уставшие резинки под форсунками, уже обрадовались, но замена не помогла.
В процессе выясняется, что скончался от отравления датчик кислорода в Б2. А почему? А потому что по сканеру смесь бедная и комп обогащает, корекция +20%, а иногда +40, и это только короткая коррекция(быстрая), по факту смесь идет богатой, сильно богатой.
Встала задачка, почему комп видит бедную смесь при богатой. Достали комп и. вылили из его разъемов масло. Я не то что бы удивился, я ох%ел. Позже узнал что на хендаях подобное частая проблема, но у нас лексус. Нашли виновника появления масла в компе, это акпп, забились сапуны и масло пошло через разъем коробки внутрь проводов под изоляцию, из под днища в салон, вверх.
Устраняем, заменой жгута проводки в самой акпп, меняем кислородник и. и ничего не поменялось. Б2 постоянно в "бедной" , Б1 иногда. Пошли по новой проверять все. Ничего, вот все хорошо, кроме смеси.
Выходили в выходные, оставались после рабочего дня, нужно было отгадать загадку.
поставили 3 версии, каждый свою:
— в проводке масло, пока не убавится не пройдет или сами кислородники.
— система vvt-i
— комп, подсос воздуха, там где мы не могли проверить, например в приемной трубе выпуска.(это моя версия).
Проверяя свою гипотизу, я решил показать машине, что такое настоящая бедная смесь, механически обеднив ее. Когда все вернул как было, произошло чудо, коррекция упала в нули и оставалась стабильной. все бы хорошо, но хреново, теперь надо сломать и понять почему в норму все вернулось, иначе рецидив будет 100%, что и показала тестовая поездка в 20 минут. Поиграв смесью сканером через активные тесты, коррекция приходит в норму, подозреваю что комп накрылся, доказательств у меня нет, только логические изыскания. Компа в РФ нет, хоть мотор и 2UZ, тачка с Америки, да и просить покупать "попробовать" клиента не комильфо.
Пока я думал, напарник нашел на клапане vvt-i в Б1 кусок герметика.
Я не верю что это ОНО!
Дело в том что при незакрытом клапане двс не будет, да и не должен быть стабильным, меж тем если активировать клапан Б1 на 12-20% то состав смеси в Б2 меняется. Но это не может объяснить стабильную работу двс при ушедшей коррекции, не может объяснить сваливания смеси и Б1 и Б2 одновременно, не может объяснить рекцию на кратковременную принудительную регулировку смеси. Мое личное мнение, это сильно притянуто за уши.
Как на зло, неиправность перестала проявляться через 20 минут езды, т.е. мы не можем вызвать неисправность.
Приняли Соломоново решение, отправили поездить 2-3 дня, без оплаты, посмотрим что произойдет.
Управление автомобилем по CAN
Беспилотный автомобиль StarLine на платформе Lexus RX 450h — научно-исследовательский проект, стартовавший в 2018 году. Проект открыт для амбициозных специалистов из Open Source Community. Мы предлагаем всем желающим поучаствовать в процессе разработки на уровне кода, опробовать свои алгоритмы на реальном автомобиле, оснащенном дорогостоящим оборудованием. Для управления автомобилем было решено использовать Apollo, открытый фреймворк. Для работы Apollo нам необходимо было подключить набор модулей. Эти модули помогают программе получать информацию об автомобиле и управлять им по заданным алгоритмам.
К таким модулям относятся:
- модуль позиционирования автомобиля в пространстве с помощью GPS-координат;
- модуль управления рулем, ускорением и торможением авто;
- модуль состояния систем автомобиля: скорость, ускорение, положение руля, нажатие на педали и т.д.;
- модуль получения информации об окружении автомобиля. С этим справятся ультразвуковые датчики, камеры, радары и лидары.
Теоретическая часть
Что такое CAN-шина
В современных автомобилях управление всеми системами взяли на себя электронные блоки (Рис. 1.). Электронные блоки — это специализированные компьютеры, каждый из которых имеет все необходимые интерфейсы для интеграции с автомобилем. С помощью цифровых интерфейсов связи, блоки объединяются в сеть для обмена информацией друг с другом. Самые распространенные цифровые интерфейсы в автомобилях — CAN, LIN, FLEXRay. Из них наибольшее распространение получил именно CAN.
CAN (Controller Area Network) шина — это промышленный стандарт сети. В 1986 году этот стандарт разработали в компании Bosch. А первым автомобилем с CAN-шиной стал Mercedes-Benz W140, выпущенный в 1991 году. Стандарт разрабатывался для возможности устройствам общаться друг с другом без хоста. Обмен информацией осуществляется с помощью специальных сообщений, которые состоят из полей ID, длины сообщения и данных. Каждый блок имеет свой набор ID. При этом приоритет на шине имеет сообщение с меньшим ID. Поле данных может нести информацию, например, о состоянии систем и датчиков, команды управления механизмами и т.д.
Рис. 1. Шина CAN автомобиля.
На физическом уровне шина представляет собой витую пару из медных проводников. Сигнал передается дифференциально, за счет чего достигается высокая помехоустойчивость.
Рис. 2. Физическое представление сигнала в CAN шине
Посредством CAN шины можно получать информацию о состоянии различных датчиков и системах автомобиля. Также по CAN можно управлять узлами автомобиля. Именно эти возможности мы и используем для своего проекта.
Мы выбрали Lexus RX, потому что знали, что сможем управлять всеми необходимыми узлами по CAN. Так как самое сложное при исследовании автомобиля — это закрытые протоколы. Поэтому одной из причин выбора именно этой модели авто стало наличие описания части протокола CAN-шины в opensource-проекте Openpilot.
Правильно управлять автомобилем — означает понимать, как работают механические части систем автомобиля. Нам было необходимо хорошо понимать, как правильно работать с электроусилителем или управлять замедлением автомобиля. Ведь, например, при повороте колеса создают сопротивление на рулевое управление, что вносит свои ограничения на управление при повороте. Некоторые системы невозможно использовать без ввода авто в специальные рабочие режимы. Эти и другие детали нам пришлось изучать в процессе работы.
Электроусилитель руля
Электроусилитель руля EPS (Electric Power Steering) — система, предназначенная снизить усилие на руль при повороте (Рис. 3). Приставка «электро» говорит о типе системы — электрическая. Управление рулем с этой системой становится комфортным, водитель поворачивает руль в нужном направлении, а электродвигатель помогает довернуть его до необходимого угла.
Электроусилитель устанавливается на рулевой вал автомобиля, части которого соединены между собой торсионным валом. На торсионный вал устанавливается датчик величины крутящего момента (Torque Sensor). При вращении руля происходит скручивание торсионного вала, которое регистрируется датчиком момента. Данные, полученные от датчика момента, датчиков скорости и оборотов коленвала, поступают в электронный блок управления ECU. А ECU, в свою очередь, уже вычисляет необходимое компенсационное усилие и подает команду на электродвигатель усилителя.
Рис. 3. Схематичное изображение системы электроусилителя руля
Видео: cистема LKA рулит автомобилем с помощью системы EPS.
Электронная педаль газа
Дроссельная заслонка — это механизм регулировки количества топливной смеси, которая попадет в двигатель. Чем больше смеси попадет, тем быстрее едет автомобиль.
Электронная педаль газа — это система, которая задействует работу нескольких электронных узлов. Сигнал о положении педали, при ее нажатии, поступает в блок управления двигателем ECM (Engine Control Module). ECM, на основе этого сигнала, рассчитывает необходимое количество топлива, которое нужно подать в двигатель. В зависимости от необходимого количества топлива, ECM регулирует угол открытия дроссельной заслонки.
Рис. 4. Система электронной педали газа.
Видео: Для работы круиз-контроля используется управление электронной педалью газа.
Электронные системы помощи водителю
Мы купили автомобиль, который оборудован множеством цифровых блоков и систем помощи водителю (ADAS). В нашем проекте мы используем LKA, ACC и PCS.
LKA (Lane Keep Assist) — это система удержания в полосе, которая состоит из фронтальной камеры и вычислительного блока. LKA удерживает автомобиль в полосе движения, когда водитель, например, отвлекся. Алгоритмы в вычислительном блоке получают данные от камеры и на их основе принимают решение о состоянии автомобиля на дороге. Система способна понимать, что автомобиль неконтролируемо движется к правой или левой полосе. В таких случаях подается звуковой сигнал для привлечения внимания водителя. При пересечении полосы система сама скорректирует угол поворота колес так, чтобы автомобиль остался в полосе движения. Система должна вмешиваться только в том случае, если осознает, что маневр между полосами движения не был вызван действием водителя.
ACC (Adaptive Cruise Control) — система адаптивного круиз-контроля, который позволяет выставить заданную скорость следования. Автомобиль сам ускоряется и притормаживает для поддержания нужной скорости, при этом водитель может убрать ногу с педалей газа и тормоза. Этот режим удобно использовать при езде по скоростным магистралям и автострадам. Адаптивный круиз контроль способен видеть препятствия впереди автомобиля и притормаживать для избежания столкновения с ними. Если впереди автомобиля едет другое транспортное средство с меньшей скоростью, ACC сбавит скорость и будет следовать за ним. При обнаружении статичного объекта, ACC сбавит скорость до полной остановки. Для обнаружения объектов перед автомобилем такая система использует радар с миллиметровым диапазоном длин волн. Обычно такие радары работают на частоте 24-72 ГГц и способны уверенно видеть объекты на расстоянии до 300 метров. Радар обычно установлен за передним значком на решетке радиатора.
PCS (Pre-Collision System) — система предотвращения столкновения. Система призвана предотвратить столкновение с автомобилем, который движется впереди. При неизбежности столкновения, система минимизирует урон от столкновения. Здесь так же используются радар для оценки расстояния до объекта и фронтальная камера для его распознавания. Фронт PCS прогнозирует вероятность столкновения на основе скорости автомобиля, расстояния до объекта и его скорости. Обычно у системы есть два этапа срабатывания. Первый этап — система звуком и индикацией на приборной панели оповещает об опасности водителя. Второй этап — активируется экстренное торможение с помощью системы ABS, и включаются преднатяжители ремней безопасности.
Практическая часть
Управление рулем
Первое, что захотелось сделать нашей команде, — это научиться рулить. Рулем в автомобиле могут управлять две системы: парковочный ассистент IPAS (Intelligent Park Assist) и LKA.
IPAS позволяет задавать напрямую угол поворота рулевого колеса в градусах. Так как в нашем автомобиле нет данной системы, проверить и освоить рулевое управление таким способом нельзя.
Поэтому мы изучили электрические схемы автомобиля и поняли, какие CAN-шины могут быть полезны. Мы подключили анализатор CAN-шины. Лог содержит файл записей сообщений в шине в хронологической последовательности. Наша задача была найти команды управления электроусилителем руля EPS (Electric Power Steering). Мы сняли лог поворота рулевого колеса из стороны в сторону, в логе смогли найти показания угла поворота и скорость вращения рулевого колеса. Ниже пример изменения данных в шине CAN. Интересующие нас данные выделены маркером.
Поворот руля влево на 360 градусов
Поворот руля вправо на 270 градусов
Следующим этапом мы исследовали систему удержания в полосе. Для этого мы выехали на тихую улицу и записали логи обмена между блоком удержания в полосе и DSU (Driving Support ECU). С помощью анализатора шины CAN нам удалось вычислить сообщения от системы LKA. На рисунке 6 изображена команда управления EPS.
Рис. 5. Команда управления рулем с помощью системы LKA
LKA управляет рулем путем задания значения момента на валу (STEER_TORQUE_CMD) рулевого колеса. Команду принимает модуль EPS. Каждое сообщение содержит в заголовке значение счетчика (COUNTER), которое инкрементируется при каждой отправке. Поле LKA_STATE содержит информацию о состоянии LKA. Для захвата управления необходимо выставлять бит STEER_REQUEST.
Сообщения, которые отвечают за работу важных систем авто, защищаются контрольной суммой (CHECKSUM) для минимизации рисков ложного срабатывания. Автомобиль проигнорирует такую команду, если сообщение содержит некорректную контрольную сумму или значение счетчика. Это встроенная производителем защита от вмешательств сторонних систем и помех в линии связи.
На графике (Рис. 6.) представлена диаграмма работы LKA. Torque Sensor — значение с датчика момента на торсионном валу. Torque Cmd — команда от LKA для управления рулем. Из картинки видно, как происходит подруливание LKA для удержания автомобиля в полосе. При переходе через ноль меняется направление поворота руля. Т.е. отрицательное значение сигнала говорит о повороте вправо, положительное — влево. Удержание команды в нуле говорит об отсутствии управления со стороны LKA. При вмешательстве водителя, система перестает выдавать управление. О вмешательстве водителя LKA узнает с помощью второго датчика момента на валу со стороны рулевого колеса.
Рис. 6. График работы системы LKA
Нам предстояло проверить работу команды управления рулем. С помощью модуля StarLine Сигма 10 мы подготовили прошивку для проверки управления. StarLine Сигма 10 должен выдавать в CAN-шину команды на поворот руля влево или вправо. На тот момент у нас не было графического интерфейса для управления модулем, поэтому пришлось использовать штатные средства автомобиля. Мы нашли в CAN-шине статус положения рычага круиз-контроля и запрограммировали модуль таким образом, что верхнее положение рычага приводило к повороту руля вправо, нижнее положение — к повороту влево (Рис. 7).
Рис. 7. Первые попытки рулить
На видео видно, что управление осуществляется короткими секциями. Это возникает по нескольким причинам.
Первая из причин — это отсутствие обратной связи. Если расхождение между сигналом Torque Cmd и Torque Sensor превышает определенное значение Δ, система автоматически перестает воспринимать команды (Рис. 8). Мы настроили алгоритм на корректировку выдаваемой команды (Torque CMD) в зависимости от значения момента на валу (Torque Sensor).
Рис. 8. Расхождение сигнала приводит к ошибке работы системы
Следующее ограничение связано с системой защиты встроенной в EPS. Система EPS не позволяет командами от LKA рулить в широком диапазоне. Что вполне логично, т.к. при езде по дороге резкое маневрирование не безопасно. Таким образом, при превышении порогового значения момента на валу, система LKA выдает ошибку и отключается (Рис. 9).
Рис. 9. Превышение порогового значения регулировки момента на валу
Независимо от того, активирована система LKA или нет, сообщения с командами от нее присутствуют в шине постоянно. Мы посылаем модулю EPS команду повернуть колеса с конкретным усилием влево или вправо. А в это время LKA перебивает наши посылки «пустыми» сообщениями. После нашей команды со значением момента, приходит штатная с нулевым (Рис. 10).
Рис. 10. Штатные сообщения приходят с нулевыми значениями момента и перебивают наше управление
Тогда мы, с помощью модуля StarLine Сигма 10, смогли фильтровать весь трафик от LKA и блокировать сообщения с ID 2E4, когда нам это было нужно. Это решило проблему, а нам удалось получить плавное управления рулем (Рис. 11).
Рис. 11. Плавная регулировка поворота руля без ошибок
Управление газом
Система адаптивного круиз-контроля ACC управляет ускорением и торможением программно по CAN-шине. Блок управления двигателем ECU принимает команды DSU, если необходимо ускориться — активирует электронную педаль газа. Для торможения автомобиля используется рекуперативное торможение. При этом на торможение и ускорение используется одна команда, отличаются только значения.
Команда управления ускорением или замедлением представлена на рисунке 12. Она состоит из величины ускорения ACCEL_CMD, пары служебных бит и контрольной сумма Checksum. Для ускорения автомобилем значение ACCEL_CMD положительное, для замедления — отрицательное. Ускорение задается в диапазоне от 0 до 3 м/с^2, замедление аналогично, но со знаком минус. Для отправки данных в шину необходимо пересчитать желаемое ускорение или замедление с коэффициентом 0,001. Например, для ускорения 1 м/с^2, ACCEL_CMD = 1000 (0x03E8).
Рис. 12. Команда управления ускорения/замедления автомобиля
Мы сняли логи со штатной системы ACC и проанализировали команды. Сравнили с имеющимся у нас описанием команд и приступили к тестированию.
Рис. 13. Лог управления ускорением/замедлением системы адаптивного круиз-контроля ACC (выделено маркером)
Здесь не обошлось без трудностей. Мы выехали на дорогу с оживленным трафиком для тестирования команды ускорения. Команды управления ускорением или замедлением автомобиля работают только при активированном круиз контроле, не достаточно активировать его кнопкой. Необходимо найти движущийся впереди автомобиль и включить режим следования за ним.
Рис. 14. Активация круиз контроля происходит при наличии впереди другого траснпортного средства
С помощью модуля StarLine Сигма 10 посылаем команду ускорения, и автомобиль начинает набирать скорость. К этому моменту мы подключили графический интерфейс для управления модулем StarLine Сигма 10. Теперь мы управляем рулем, ускорением и торможением с помощью кнопок в приложении.
Команды работали до тех пор, пока не потеряли автомобиль впереди. Система круиз-контроля отключилась, а следовательно, и команды ускорения перестали работать.
Мы приступили к исследованию возможности использовать команды без активного круиз-контроля. Пришлось много времени потратить на анализ данных в шине CAN, чтобы понять как создать условия для работы команд. Нас интересовало, в первую очередь, какой блок блокирует выполнение команд ACC на ускорение или замедление. Пришлось изучить какие ID идут от DSU, LKA, радара и камеры, подсовывая липовые данные различных датчиков.
Решение пришло спустя 3 недели. К тому времени мы представляли как происходит взаимодействие блоков автомобиля, провели исследование трафика сообщений и выделили группы сообщений, посылаемых каждым блоком. За работу адаптивного круиз-контроля ACC отвечает блок Driving Support ECU (DSU). DSU выдает команды на ускорение и замедление автомобиля, и именно этот блок получает данные от радара миллиметрового диапазона. Радар сообщает DSU на каком расстоянии от машины движется объект, с какой относительной скоростью и определяет его положение по горизонтали (левее, правее или по центру).
Наша идея заключалась в подмене данных радара. Мы сняли лог следования за автомобилем, вытащили из него данные радара в момент следования. Теперь, после включения круиз-контроля, мы посылаем фейковые данные о наличии впереди идущего авто. Получается обманывать наш автомобиль, говоря что впереди движется другое авто на конкретном расстоянии.
a) б)
Рис. 15. Активация круиза: a) попытка активировать без подмены данных радара; б) активация при подмене данных от радара.
Когда запускаем нашу обманку, на приборной панели загорается значок наличия впереди идущего автомобиля. Теперь мы можем тестировать наше управление. Запускаем команду на ускорение, и автомобиль начинает быстро ускоряться.
Как мы уже узнали, команда на ускорение и замедление одна. Поэтому тут же проверили и замедление. Поехали на на скорости с активным круиз-контролем, запустили команду на торможение, и авто сразу же замедлилось.
В итоге сейчас получается разгонять и замедлять автомобиль именно так, как нам было нужно.
Что еще мы используем
Для создания беспилотника необходимо управление вспомогательными системами: поворотниками, стоп-сигналами, аварийной сигнализацией, клаксоном и пр. Всем этим так же можно управлять по CAN шине.
Оборудование и ПО
Для работ с автомобилем сегодня мы используем набор различного оборудования:
- Анализатор шины Marathon позволяет подключать и читать данные с двух шин одновременно. На сайте производителя анализатора есть бесплатное ПО для анализа логов. Но мы используем ПО, написанное в нашей компании для внутреннего пользования.
- Модуль StarLine Сигма 10 мы используем как платформу для работы с цифровыми интерфейсами. Модуль поддерживает CAN и LIN интерфейсы. При исследовании автомобиля пишем программы на C, зашиваем их в модуль и проверяем работу. Из модуля можем сделать сниффер трафика CAN-шины. Сниффер нам помогает понять, какие ID идут от блока или блокировать сообщения от штатных систем.
- Диагностическое оборудование Toyota/Lexus. С помощью этого оборудования можно найти команды управления системами автомобиля: поворотниками, стоп-сигналами, клаксоном, индикацией приборки.
Беспилотный автомобиль StarLine — это открытая площадка для объединения лучших инженерных умов России и мира с целью создания прогрессивных технологий беспилотного вождения, которые сделают наше будущее безопасным и комфортным.
Что такое CAN-шина в автомобиле (устройство и схема подключения)
Автомобили давно уже стали не просто компьютерами на колёсах, а скорее компьютерными сетями. Передача механических, гидравлических или пневматических усилий между узлами и механизмами со временем превратилась в обмен электрическими сигналами, а сейчас и в информационное взаимодействие.
Наряду с массовым внедрением дешёвых электронных комплектующих, потребовалось разработать достаточно сложное и надёжное сетевое физическое и программное обеспечение.
Зачем нужна в машине CAN-шина
По мере усложнения автомобильной электроники, производители столкнулись с некоторыми проблемами, которые всё больше проявлялись с ростом рыночной конкурентоспособности новых моделей.
Далее наращивать объём оборудования простым добавлением управляющих и исполнительных устройств стало невозможно:
- количество проводов в жгутах, их масса, объёмы и расход дорогостоящей меди стали превышать разумные пределы;
- многие узлы, особенно датчики и первичные преобразователи, многократно дублировались, что необоснованно увеличивало затраты;
- сложнейшие автомобили, особенно премиального класса, стали совершенно неподъёмными в обслуживании и диагностике даже для профильных сервисов из-за отсутствия стандартизации технических решений;
- надёжность машин падала по мере роста количества заключённого в них оборудования, как по чисто объективным законам связи сложности и безотказности, так и из-за отсутствия времени на отработку многочисленных уникальных систем.
Решение должно было быть радикальным, и этот качественный скачок в развитии автомобильной электроники произошёл.
Электросхемы машин стали делать по принципам, заложенным в основах вычислительной техники и к тому времени уже достаточно устоявшимся и понятным.
Автомобиль стал представлять собой сеть из микрокомпьютеров, каждый из которых обслуживал свою систему или отдельный узел.
Например, двигатель, коробку передач, узлы трансмиссии, блок климата и даже отдельные фонари наружного освещения или стеклоподъёмники. Уже не надо было тянуть к каждому устройству медные провода в огромном количестве через весь автомобиль.
Причём до появления единой информационной шины некоторые узлы были обвешаны сразу несколькими однотипными датчиками, электронными блоками и жгутами проводки.
CAN-шина обходится единственной витой парой, то есть скрученными между собой двумя тонкими проводками, которые обходят все устройства, имея ответвления на каждое из них.
По схеме получается, что все блоки соединены параллельно через данную шину. Последовательный способ передачи информации делает это возможным, отдельных проводов данных, адресов, синхронизации и назначения приоритета не требуется.
Более того, системе не нужен единый обрабатывающий и управляющий сервер, все ресурсы распределены по микроконтроллерам.
Схема и место расположения КАН-интерфейса
Сеть имеет выход наружу через диагностический OBD разъём, где на этот счёт стандартом чётко определена пара контактов.
Точнее, две пары, из дальнейшего рассмотрения станет понятно, что через диагностику можно подключаться к двум CAN-шинам различного вида и назначения.
Обеспечивающий совместную работу шлюз в разных автомобилях может быть выполнен в виде отдельного блока, входить в состав контроллера управления двигателем, но чаще – приборной панели.
Принцип работы
Работа CAN-шины определяется физическим и логическим протоколами, которые достаточно чётко стандартизованы, хотя и имеют целый ряд исполнений.
Физически это витая пара, каждый из проводов которой является сигнальным. Работают они в противофазе, один поэтому называется CAN-High, второй – CAN-Low.
Сделано так с целью обеспечить максимальную помехоустойчивость при большой скорости передачи данных. Сигнал с пары снимается по дифференциальному принципу, то есть парой встречно включённых компараторов.
На концах витой пары имеется волновое согласование двумя терминальными резисторами по 120 Ом. Хотя встречаются и другие номиналы, но редко.
Активным уровнем считается низкий, он же логический ноль. Это общий принцип в работе устройств с открытым коллектором, разве что тут не применяется инвертирование уровней. Отсюда и логический принцип работы – инициируется линия любым устройством, открывшим свой выходной транзистор и сформировавшим первый нулевой бит.
Далее идёт идентификация приоритетного устройства, которое должно передать свою информацию первым в случае конфликта во времени. Протокол стандартный, каждый бит посылки расписан в даташитах ISO.
Все устройства одновременно передают и считывают информацию чётко соблюдая протокол, зашитый в памяти их контроллеров. Ненужные или ошибочные данные определяются и игнорируются.
Виды CAN-шин
Обычно используют две шины – высокоскоростную и низкоскоростную (не желая использовать этот компрометирующий термин, некоторые производители говорят о среднескоростных устройствах).
Первая применена для связи наиболее важных устройств, агрегатов двигателя, трансмиссии, тормозов, подвесок, систем безопасности. Вторая обслуживает второстепенные функции комфорта и сервиса.
Это не значит, что системы автономны. Они связаны между собой через шлюз, обычно находящийся в приборной панели. Низкоскоростная линия также имеет свои контакты в диагностическом разъёме, записанные в стандарт.
Сделано так, чтобы системы низшего уровня важности не мешали максимально быстрому обмену приоритетных устройств. А большое быстродействие, например, регулировке сидений ни к чему.
На низшем уровне могут работать ещё более простые шины, однопроводные и низкоскоростные. Они подключаются к общей CAN через свой контроллер.
Например, в двери могут стоять стеклоподъёмники, блок кнопок управления, различные датчики, всё это нет необходимости выводить на общую шину. Но и плодить множество проводов тоже. Используются простейшие контроллеры и однопроводная сеть.
Как подключиться и сделать диагностику автомобиля
Сканеры могут внедряться в протокол шины и анализировать её состояние, а также проходящую информацию. Можно использовать виртуальные устройства, эмулирующие отдельные блоки, а также создавать и передавать тестовые команды отдельным участникам сети.
Для связи используются специальные адаптеры USB-CAN, более сложные устройства и программное обеспечение.
До появления профессиональных CAN-анализаторов и тестеров пользовались скоростным запоминающим осциллографом и логическим анализатором.
Эти приборы тоже способны сохранять и предоставлять для изучения отдельные фреймы CAN, но в работе неудобны, требуют больших затрат времени.
Неисправности
Отказы шины обычно сводятся к нескольким типовым случаям:
- пропадание питания отдельных устройств;
- повреждения проводки и разъёмов;
- отказ контроллеров.
Базой всей сетевой периферии является современная микроэлектроника и большие интегральные контроллеры серийного производства, поэтому надёжность оборудования в целом достаточно высока. Но поиски проблемного блока иногда бывают долгими из-за параллельного их подключения и размещения по всему автомобилю.
Плюсы и минусы встроенных шин
Сейчас уже трудно представить себе автомобиль с достойным набором современных опций без информационной шины, а конкурентоспособность требует ещё и высокого быстродействия.
CAN-шина всё это обеспечивает:
- имеется автоматический контроль проходящей информации на ошибки;
- дифференциальная передача сигналов и использование витой пары даёт хорошую скорость и защиту от помех;
- стандартизация протоколов упрощает диагностику и поиск неисправностей;
- построение системы приоритетов упрощает проектирование;
- все устройства функционально закончены и универсальны.
Но со временем усугубляются и недостатки. Так, усложнение автомобилей привело к тому, что быстродействия даже самых последних версий уже не хватает.
Поэтому в настоящее время эту самую распространённую автомобильную шину уже можно считать устаревшей, новые проекты обладают значительно более высоким быстродействием.