Альтернативная прошивка для китайских CANBUS адаптеров
В данной заметке предоставлена информация о таком типе устройств как CANBUS адаптер для андроид магнитол, на али такие устройства продаются под названиями "canbus box", "canbus decoder" и тому подобные вариации названий, я же далее в заметке буду называть такие устройства CAN адаптером или просто адаптером.
По большей части материалы из заметки это пересказ из моего блога на drive2.ru, но надеюсь эта информация может быть полезна всем тем кто хотел бы внедрить себе в автомобиль CAN адаптер или изменить логику его работы.
Внешне CAN адаптер выглядит, как маленькая коробочка размером со спичечный коробок с одним разъемом на 16 или 20 выводов. Большинство CAN адаптеров на ali продается уже с разъемами под штатную проводку конкретной модели автомобиля, а для этого уже нужны минимальные знания в электрике и схемы электропроводки автомобиля.
Если совсем кратко, то CAN адаптер предназначен для облегчения интеграции андроид магнитолы в автомобиль, он выделяет из шины MS CAN автомобиля цифровые сигналы и передает их в андроид-магнитолу. При отсутсвии CAN адаптера необходимо искать самостоятельно в штатной проводке нужные аналоговые сигналы.
Основные функции CAN адаптера это формирование четырех выходных сигналов:
— "Зажигание"(IGN) или "Аккумулятор"(ACC), уровнем 12 Вольт, для включения андроид-магнитолы
— "Подсветка"(ILLUM), уровнем 12 Вольт, для изменения подсветки в андроид-магнитоле
— "Парковочный тормоз"(PARK), уровнем GND, для информирования андроид-магнитолы о нахождении автомобиля в состоянии поездки/парковки.
— "Задняя передача"(REAR), уровнем 12 Вольт, для переключения андроид-магнитолы на камеру заднего вида и включения питания для камеры заднего вида.
Дополнительные функции CAN адаптера это отображение в андроид магнитоле состояний внутренних узлов автомобиля и управление некоторыми из них через информационную линию RX/TX(uart):
— отображение состояния парковочных датчиков
— отображение положения руля в виде динамической разметки при заднем ходе
— отображение состояния открытых дверей
— отображение состояния не пристегнутых пассажиров и водителя
— установка времени в автомобиле
— отображение режима климат контроля и управление им;
— трансляция нажатий кнопок на руле в андроид-магнитолу
— отображение уровня топлива
— доступ к трип-компьютеру
— управление штатным усилителем
Теперь подробнее о выходных сигналах формируемых CAN адаптером. Для любой андроид-магнитолы кроме питания, нужен как минимум еще один дополнительный сигнал — это сигнал "Зажигание"(IGN). Сигнал зажигания(IGN) необходим для андроид-магнитолы, чтобы магнитола включалась или выходила из спящего режима при запуске автомобиля и выключалась или засыпала при глушении автомобиля.
Сейчас наверное в большинстве андроид-магнитол есть спящий режим, с ним андроид-магнитола готова к работе уже через пару секунд после запуска автомобиля, иначе при каждом запуске автомобиля андроид в магнитоле будет загружаться несколько минут. Но у спящего режима магнитолы есть один минус — это потребление тока порядка 10-20мА в спящем режиме, и зимой или при малых пробегах это может быть критично.
Так например в моей андроид-магнитоле, купленной в 2019 году не было спящего режима, через несколько месяцев после покупки, производитель с обновлением прошивки в андроид-магнитоле добавил функцию спящего режима. Помня о потреблении магнитолы в спящем режиме, я на зиму отключаю спящий режим в магнитоле, а по приходу тепла снова включаю спящий режим, отключение/включение спящего режима в моей магнитоле занимает пару минут.
Необязательный сигнал "Подсветка"(ILLUM) используется для подсветки кнопок андроид-магнитолы или для уменьшения яркости экран магнитолы ночью и увеличения яркости экрана днем.
Необязательный сигнал "Задняя передача"(REAR) используется для переключения экрана магнитолы на камеру и подключения питания к камере заднего вида, в противном случае придется тянуть от задних фонарей, это во первых неудобно, а во вторых на некоторых машинах, с импульсным контролем сгоревшей лампочки, такое питание для камеры будет создавать помехи в картинке с камеры.
Необязательный сигнал "Парковочный тормоз"(PARK) используется для разграничения некоторой функциональности в движении и на парковке, например для запрета просмотра видео в движении.
Часть андроид магнитол для конкретных моделей автомобилей продается уже с CAN адаптером и со всей необходимой проводкой и разъемами, что конечно же очень удобно. Моя же андроид-магнитола продавалась без CAN адаптера, но этот недостаток компенсировался стоимостью магнитолы в 50$. Впрочем для своего автомобиля Freelander2, я не смог найти CAN адаптер ни пару лет назад ни сейчас. Но с помощью самодельного CAN адаптера я смог сделать отображение датчиков штатного парктроника на андроид магнитоле, об этом подробне в заметке о подключении штатных парктроников к андроид магнитоле. Благодаря этой заметке несколько человек смогли сделать отображение парктроников в своих автомобилях Freelander2, в том числе и в рестайловом Freelander2.
Собственно после этой заметки началась и эта история, когда в прошлом году коллега приобрел на али андроид-магнитолу для своего xc90, в комплекте с магнитолой был CAN адаптер, но в его работе было обнаружено несколько проблем:
— не работало переключение треков в проигрывателе по нажатию кнопок на руле
— не было отображения парктроников
— не было отображения положения руля
Открыв этот CAN адаптер и увидев в на плате процессор GD32F103 я легкомысленно сказал коллеге, что можно исправить все недочеты данного адаптера, написав под него свою программу, т.к. на этот процессор есть в свободном доступе документация и к тому же он является клоном STM32F103 и поэтому для него можно использовать все средства разработки доступные для микропроцессоров STM32. Но на тот момент времени заниматься этим не было совсем.
Прошла осень, зима, и затем весна, коллега периодически спрашивал, когда уже будем обновлять прошивку в адаптере, но времени все так же не было этим заниматься. Но по наступлению лета, за счет доставки обедов на работу, появилось свободное время, которое раньше тратилось на обеденные поездки, благодаря этому за несколько дней с помощью мультиметра плата адаптера была исследована и в результате нарисована схема адаптера OD-VOLVO-02.
В целом на схеме нет ничего лишнего, функционал схемы совпадает с общим описанием CAN адаптера, это 4 выходных сигнала(IGN, ILLUM, BRAKE, REAR) и последовательный порт(RX/TX) для информационной связи с андроид-магнитолой. Обозначения и номиналы элементов на схеме совпадают с надписями печатной плате. Для программирования микроконтроллера через интерфейс SWDIO/SWCLK на плате есть специальный внутренний разъем CON2. Для обновления прошивки можно использовать любой SWDIO/SWCLK программатор, я перепрошивал микроконтроллер на плате с помощью китайского ST-LinkV2 с али, и программы openocd.
Распиновка сигналов на внешнем разъеме CAN адаптера OD-VOLVO-02 точно совпала, с найденной в сети распиновкой других китайских CAN адаптеров на 16 выводов, поэтому можно предположить что различные китайские производители CAN адаптеров делаю физически совместимые адаптеры, что в дальнейшем потвердилось.
По готовой схеме устройства написать прошивку уже было только вопросом времени. Процесс написания прошивки был итеративным и чередовался с тестами на автомобиле во время обеденных перерывов. На урале это лето выдалось теплым и было приятно провести немного времени на улице с автомобилем — немного переключиться на другое занятие от основной работы.
Помимо устранения недостатков в оригинальной прошивке, коллега попросил добавить дополнительный функционал:
— задержку снятия питания с камеры, при переключении из R в D
— управление уровнем подсветки экрана андроид-магнитолы.
В последствии этот функционал был реализован и сделан настраиваемым.
Для удобства прошивки и отладки CAN адаптера на автомобиле была сделана проводка для подключения адаптера в разъем OBD2 автомобиля. Через OBD2 разъем CAN адаптер получает питание и доступ к шине MS CAN, линия RX/TX адаптера выведена на переходник usb2com. К переходнику usb2com уже можно подключить ноутбук или телефон с андроидом для контроля работы адаптера. Если необходимо было проверить функционал CAN адаптера, то адаптер подключался к магнитоле, если надо было прошить, наладить или настроить адаптер, то адаптер подключался к разъему OBD2 автомобиля.
Для отладки и возможности настройки в CAN адаптере был реализован отладочный интерфейс через информационную линию RX/TX. Нормально через линию RX/TX передаются данные о состоянии автомобиля в андроид-магнитолу, но подключившись к линии RX/TX ноутбуком или андроид телефоном можно переключить адаптер в режим наладки и тогда через линию RX/TX будет доступен простой текстовый отладочный интерфейс. С помощью отладочного интерфейса можно контролировать правильность функционирования адаптера или вносить изменения в его конфигурацию. Изменение конфигурации работы адаптера и переключение в отладочный режим происходит, при нажатии соответствующих клавиш на клавиатуре:
— OOOOOOOOOOOOO переключение в режим наладки(необходимо отправить минимум 10 символов за 1 секунду)
— o переключение в штатный режим работы
— b выбор эмулируемого протокола из списка Raise VW(PQ), Raise VW(MQB), Oudi BMW(Nbt Evo, HiWorld VW(MQB)
— c выбор автомобиля из списка FL2 2007MY, FL2 2013MY, XC90 2007MY
— I увеличение порога уровня подсветки
— i уменьшение порога уровня подсветки
— D увеличение задержки выключения камеры
— d уменьшение задержки выключения камеры
— m выбор активного CAN сообщения
— s сохранение конфигурации
На следующем скриншоте показан отладочный интерфейс CAN адаптера
Т.к. данные постоянно меняются и чтобы избежать эффекта текста бегущего по экрану, для работы с отладочным интерфейсом нужна программа эмулятор терминала, для windows подойдет putty или hyperterminal.
В разделе Configuration отображаются настройки CAN адаптера:
— Car модель автомобиля
— Vin VIN автомобиля(отображается только в FL2)
— CanBox эмулируемый canbus протокол
— Illum уровень подсветки(в процентах) в салоне при котором формируется выход Illum
— Rear Delay задержка(в милисекундах) на отлючение сигнала REAR
В разделе State отображается текущее состояние CAN адаптера и автомобиля:
— Acc, Ign, Selector, Wheel — состояние положения ключа, зажигания, селектора АКПП у положения руля(не отображается в FL2)
— R — состояние выхода REAR
— Illum, ParkLights, NearLights — уровень подсветки в салоне и состояние габаритных огней и ближнего света
— Can, Msgs, Irqs — отладочные счетчики CAN сообщений
— CanX/Y — текущее состояние сообщения CanY определенным ID из списка Y со всеми ID
Адаптер извлекает из шины MS CAN данные в режиме прослушки, не посылая никаких запросов в электронные блоки автомобиля, поэтому информацию которою он может извлечь из шины CAN зависит от автомобиля, так в Freelander2 в шине MS CAN не передается информация о положении руля и нажатия кнопок, а в шине MS CAN автомобиля XC90 не передается VIN код автомобиля.
При поиске и расшифровке CAN данных в автомобиле использовалась техника, когда в автомобиле записываются все CAN сообщения, при одновременном создании определенного шаблона в данных, а затем в записанных CAN сообщениях, с помощью программы отображающей данные в виде графиков, происходит поиск нужного шаблона и идентификация данных. Под шаблоном в данных подразумевается изменение состояния узлов автомобиля во времени, например, пять раз открыли и закрыли дверь водителя, затем 4 раза открыли и закрыли дверь пассажира и т.д. Запись конкретного шаблона с данными в отдельные файлы облегчает последующий анализ и поиск.
Такой анализ я производил с помощью программы plot, о которой уже ранее упоминал в заметке о расшифровке данных в CAN шине. С времени опубликования этой заметки в программу plot была добавлена поддержка формата файлов log(can-uitils) и trc(canhacker), а также группового отображения(все 8 байт CAN сообщения) сообщения на графиках. С помощью группового отображения можно бысто проанализировать данные в сообщениях с конкретным CAN ID, а уже затем без группового отображения можно более точно попытаться интерпретировать данные из каждого байта CAN сообщения применяя различные маски и коэффициенты.
Ниже, для понимания сложности процесса поиска данных, приведены пара скриншотов приложения plot с данными из MS CAN шины автомобиля XC90. Имея терпение и фантазию несложно обнаружить нужные данные во всем потоке CAN сообщений.
На первом скриншоте виден шаблон(серый цвет) заданный при записи: 3 коротких нажатия на кнопку PREV, пауза, 3 коротких нажатия на кнопку PREV, пауза, 3 длинных нажатия на кнопку PREV.
На втором скриншоте виден шаблон(зеленый и бирюзовый цвета) заданный при записи: 3 быстрых изменения уровня подсветки, пауза, 3 быстрых изменения уровня подсветки, пауза, 3 медленных изменения уровня подсветки.
В процессе расшифровки CAN данных для XC90 я попытался найти в сети готовые результаты по расшифровке CAN сообщений в XC90 и нашел интересную информацию в заметке о самодельном CAN адaптере для XC90 пользователя Olegelm о том, что в автомобилях Volvo каждый электронный блок имеет уникальный идентификатор и он разный для всех машин одной модели. Это было задумано чтобы модули из одного автомобиля нельзя было поставить в другой автомобиль, и тем самым уменьшить воровство автомобилей и автодеталей.
Поэтому получается информация по расшифрованным данным из автомобиля XC90 коллеги скорее всего не подойдет для другого экземпляра XC90. Для другого экземпляра XC90 можно будет использовать только информацию по расположению данных внутри 8 байт CAN сообщения, а сам идентификатор нужно будет подобрать самостоятельно.
Может быть из-за уникальности адресов штатная прошивка CAN адаптера XC90 и имела проблемы, т.к. китайцы не смогли сделать универсальную прошивку подходящую для всех XC90. Я не смог найти информацию по какому алгоритму происходит присвоение идентификаторов электронных блоков в автомобилях марки Volvo, можно предположить что по VINу или дате производства. Может быть есть специалисты по Volvo которые смогут это прокомментировать.
В прошивке эмулируются 4 различных протокола для взаимодействия с андроид-магнитолой:
— Raise VW(PQ)
— Raise VW(MQB)
— Oudi BMW(Nbt Evo
— HiWorld VW(MQB)
При выборе типа подключенного адаптера в андроид магнитоле предлагается список из десятка различных производителей адаптеров, на али чаще всего встречающиеся адаптеры от Raise и HiWorld. Наибольший функционал по отображению узлов автомобиля в андроид магнитоле у марки Volkswagen и адаптеров Raise и HiWorld, поэтому эти протоколы были выбраны для эмуляции.
Но китайцы это новые индусы, поддержка адаптеров в магнитоле у них местами кривая, да и не хочется ограничиваться тем функционалом что есть в магнитоле, поэтому в своем автомобиле я постепенно отключаю эмуляцию CAN адаптера в плате usb2most и делаю отрисовку нужных мне вещей через свое приложение.
Помимо вышесказанного коллега ездил на автомобиле, тестировал работу CAN адаптера и выявлял замечания по его работе, для решения этих замечаний мне нужно было время и сам адаптер, но также и коллеге нужен был адаптер, получалось так, что адаптер в одно и тоже время нужен был и мне и ему. Покупать такой же второй CAN адаптер VOLVO-OD-O2 смысла не было, но у меня был адаптер для марки VW, который я приобрел чуть позднее покупки своей магнитолы, ради удовлетворения любопытства, что у него внутри. Внутри у него оказался процессор с надписью PocketLink, тогда в 2019, я не смог перепрошить этот адаптер, т.к. до конца не понимал, что это за процессор, да сейчас надпись на чипе PocketLink не даст информации о том что находится внутри этого чипа.
Видимо потратив чуть больше времени чем ранее мне удалось понять, что что внутри находится процессор NUC131, и для него свободно доступен BSP на гитхабе. Далее опять же с помощью мультиметра была проанализирована плата и нарисована схема в KiCAD этого адаптера. Китайцы сэкономили на шелкографии поэтому обозначения на схеме сделаны произвольными, но номиналы совпадают. По схеме с помощью примеров из BSP была добавлена поддержка этой платы в прошивке. Прошивка стала поддерживать уже две платы и можно было спокойно меняться адаптером с коллегой при очередном обновлении тестовой прошивки.
Схема адаптера VW_NC03 немного попроще OD-VOLVO-02, но основной функционал тот же: 4-е выходных сигнала и последовательный порт.
В дальнейшем во время экспериментов плату из CAN адаптера VW_NC03 я окирпичил — больше не смог перепрошить, поэтому на али был заказан еще один адаптер VW_NC03, но внутри него уже оказалась плата VW_NCD01 датируемая 2021 годом, а плата VW_NC03 была с датой 2017 года. Анализ с помощью мультиметра показал, что эта плата по схемотехнике почти полностью совместима с VW_NC03, но процессор в ней уже другой. Отладка через openocd показала, что процессор внутри был явно Nuvoton, имел схожие с NUC131 идентификаторы, и как оказалось для него подходит прошивка для платы VW_NC03, поэтому отдельной схемы или прошивки я не стал для него создавать. Но формально можно сказать, что прошивка поддерживает 3 различных адаптера.
В целом китайские процессоры в китайских адаптерах оказались не хуже и не лучше тех же STM32, внутри у них такое же армовское ядро cortex-m как и в STM32, поэтому могу рекомендовать такие адаптеры для каких-либо автомобильных поделок. Самостоятельная сборка подобного устройства на рассыпных элементах или из нескольких платок получится не дешевле, а тут готовое устройство c 4 программируемыми выходами и в корпусе.
Кто захочет приобрести на али такие адаптеры, то адаптер VW_NC03 можно найти по словам canbus box volkswagen, и далее выбирать адаптер с надписью HW:VW-NC-003. О обычно у продавца можно приобрести либо только адаптер или комплект из адаптера с проводкой, стоимость адаптера начинается от 7$.
По словам "volvo xc90 canbus" или "OD VOLVO 02" на али можно найти CAN адаптер для Volvo также с проводкой или без.
А комплект проводки от XC90 подходит по разъемам для Freelander2, поэтому владельцы Freelander2 в комплектации с шиной MOST смогут использовать такую проводку при установке андроид-магнитол в своих автомобилях. С разъемами из этой проводки можно акуратно подключиться в штатную проводку Freelander2 "разъем в разъем", не разрушая штатную проводку. На сером разъеме есть AUX и сигнал для усилителя FM радио, который многие используют вместо сигнала IGN. На зеленом разъеме есть шина MS CAN для подключения CAN адаптера и сигнал с резистивного делителя кнопок руля.
Исходный текст прошивки и готовые файлы для перепрошивки адаптеров доступны на гитхабе: github.com/smartgauges/canbox. Для перепрошивки адаптера нужен ST-Link V2 и программа openocd, я использовал версию с гитхаба: github.com/OpenNuvoton/OpenOCD-Nuvoton.
Для сборки прошивки использовался arm-none-eabi-gcc из состава ubuntu, перепрошивка адаптера осуществляется командами make flash_volvo_od2 и make flash_vw_nc03 для адаптеров OD-VOLVO-02 и VW_NC03 соответственно.
Если кто-то дойдет до стадии прошивки, я подготовил виртуальную машину с линуксом со всем необходимым инструментарием для сборки и прошивки, машина доступна по ссылке: drive.google.com/file/d/1…kctj8inW/view?usp=sharing
Данные пользователя в виртуальной машине
Login:user
Password:user
Краткая подсказка по командам в линуксе:
mc — файловый менеджер
cd canbox — переход в каталог с исходниками canbox
git pull — получить обновления исходников canbox с гитхаба
make clean — очистить текущую сборку прошивки
make — собрать новую сборку прошивки
make flash_vw_nc03 — прошить прошивку в плату WV-NC-003
На скриншоте пример как выглядит процесс прошивки
По итогу достаточного длинного изложения:
1) Коллега работой адаптера доволен, но уже закидывает вопросики про чип двигателя )
2) Прошивка поддерживает 2(3) CAN адаптера.
3) Потребление адаптера OD-VOLVO-02 в спящем режиме 4мА(с штатной прошивкой 20мА)
4) Потребление адаптера VW_NC03 в спящем режиме 1мА(с штатной прошивкой 1мА)
5) Прошивка поддерживает 2(3) автомобиля(рестайловый Frelander2 — с точки зрения шины CAN это другой автомобиль)
6) Прошивка поддерживает 4 протокола для связи с андроид-магнитолой
Новости компании «VAG-Coder»
Обновление прошивки АКПП8 и активация Ассистента Движения по полосе (Audi active lane assist) на Audi Q7-2016м/г в VAG-Coder.ru в Перми
- Audi Q7-3,0TDI-4х4-АКПП8-2016м/г — обновление устаревшей прошивки блока управления автоматической коробки передач АКПП8 устраняющее дерганья, пинки, рывки, задержки и подвисания переключения передач до самой последней и актуальной заводской версий, и активация Ассистента Движения по полосе (Audi active lane assist, подруливания автомобиля по дорожной разметке) на Ауди Ку7 в VAG- C oder.ru в Перми
По кодированию и активации скрытых функций в компании "VAG- C oder" в Перми.По кодированию и активации скрытых функций в компании "VAG- C oder" в Перми.
Владелец автомобиля Ауди Ку7-2016м/г,обратился с жалобой на неадекватную работу автоматической коробки передач АКПП8 с подвисаниями и задержкой, ударами, рывками и толчками при переключении передач, пожелал раскрыть заложенный производителем потенциал и захотел улучшить комфорт и безопасность своего автомобиля — сделать обновление устаревшей прошивки автоматической коробки передач АКПП8 устраняющее дерганья, пинки, рывки, задержки и подвисания переключения передач до самой последней и актуальной заводской версий, и активировать Ассистент Движения по полосе (Audi active lane assist, подруливания автомобиля по дорожной разметке) в VAG- C oder.ru в Перми.
- Audi Q7-2016м/г — устаревшая версия прошивки блока управления автоматической коробкой передач АКПП8 имеющее сбойное программное обеспечение — дерганья, пинки, рывки, задержки и подвисания переключения передач, с идентификаторами блока Part No SW:4M0 927 158 J, HW: 0D5 927 156 H, Компонент: 0D5 30TDIRdW H03 1007, обновление устаревшей прошивки автоматической коробки передач АКПП8 до самой последней и актуальной заводской версии на Ауди Ку7 в VAG- C oder.ru в Перми
- Audi Q7-2016м/г — в процессе выполнения работ по обновлению устаревшей заводской прошивки автоматической коробки передач АКПП8 имеющей сбойное программное обеспечение — дерганья, пинки, рывки, задержки и подвисания переключения передач, обновление устаревшей прошивки автоматической коробки передач АКПП8 до самой последней и актуальной заводской версии на Ауди Ку7 в VAG- C oder.ru в Перми
По итогам тест-драйва, владелец автомобиля Audi Q7 отметил, что после выполнения работ по обновлению устаревшей заводской прошивки автоматической коробки передач АКПП8 — теперь переключения передач стали более мягкие и плавные, устранены все дерганья, пинки, рывки, задержки и подвисания переключения передач при разгоне и торможении. Появилась легкость и плавность в наборе скорости, как в спокойном, так и динамичном режиме вождения автомобиля, передачи стали "длиннее".
Теперь работа автоматической коробки передач АКПП8 стала полностью адекватной и оптимально комфортной.
- Audi Q7-2016м/г — визуальное отображение работы ассистента движения по полосе в панели приборов, активация Ассистента Движения по полосе (Audi active lane assist, подруливания автомобиля по дорожной разметке) на Ауди Ку7 в VAG- C oder.ru в Перми
- Audi Q7-2016м/г — меню настроек в магнитоле MMI — Автомобиль — Ассистенты водителя — Audi active lane assist, активация Ассистента Движения по полосе (Audi active lane assist, подруливания автомобиля по дорожной разметке) на Ауди Ку7 в VAG- C oder.ru в Перми
- Audi Q7-2016м/г — расширенным меню настроек работы "Ассистент движения по полосе" — Момент управления и Предупредительная вибрация в магнитоле MMI, активация Ассистента Движения по полосе (Audi active lane assist, подруливания автомобиля по дорожной разметке) на Ауди Ку7 в VAG- C oder.ru в Перми
- Audi Q7-3,0TDI-4х4-АКПП8-2016м/г — обновление устаревшей прошивки блока управления автоматической коробки передач АКПП8 устраняющее дерганья, пинки, рывки, задержки и подвисания переключения передач до самой последней и актуальной заводской версий, и активация Ассистента Движения по полосе (Audi active lane assist, подруливания автомобиля по дорожной разметке) на Ауди Ку7 в VAG- C oder.ru в Перми
- Компания VAG- C oder.ru
- Компания VAG- C oder.ru
Подпишитесь, чтобы быть в курсе всех новостей и новинок на:
Принцип работы и диагностика CAN-шины в автомобиле
Появление цифровых шин в автомобилях произошло позднее, чем в них начали широко внедряться электронные блоки. В то время цифровой «выход» им был нужен только для «общения» с диагностическим оборудованием – для этого хватало низкоскоростных последовательных интерфейсов наподобие ISO 9141-2 (K-Line). Однако кажущееся усложнение бортовой электроники с переходом на CAN-архитектуру стало ее упрощением.
Действительно, зачем иметь отдельный датчик скорости, если блок АБС уже имеет информацию о скорости вращения каждого колеса? Достаточно передавать эту информацию на приборную панель и в блок управления двигателем. Для систем безопасности это ещё важнее: так, контроллер подушек безопасности уже становится способен самостоятельно заглушить мотор при столкновении, послав соответствующую команду на ЭБУ двигателя, и обесточить максимум бортовых цепей, передав команду на блок управления питанием. Раньше же приходилось для безопасности применять не надежные меры вроде инерционных выключателей и пиропатронов на клемме аккумулятора (владельцы BMW с его «глюками» уже хорошо знакомы).
Однако на старых принципах реализовать полноценное «общение» блоков управления было невозможно. На порядок выросли объем данных и их важность, то есть потребовалась шина, которая не только способна работать с высокой скоростью и защищена от помех, но и обеспечивает минимальные задержки при передаче. Для движущейся на высокой скорости машины даже миллисекунды уже могут играть критичную роль. Решение, удовлетворяющее таким запросам, уже существовало в промышленности – речь идет о CAN BUS (Controller Area Network).
Суть CAN-шины
Цифровая CAN-шина – это не конкретный физический протокол. Принцип работы CAN-шины, разработанный Bosch еще в восьмидесятых годах, позволяет реализовать ее с любым типом передачи – хоть по проводам, хоть по оптоволокну, хоть по радиоканалу. КАН-шина работает с аппаратной поддержкой приоритетов блоков и возможностью «более важному» перебивать передачу «менее важного».
Для этого введено понятие доминантного и рецессивного битов: упрощенно говоря, протокол CAN позволит любому блоку в нужный момент выйти на связь, остановив передачу данных от менее важных систем простой передачей доминантного бита во время наличия на шине рецессивного. Это происходит чисто физически – например, если «плюс» на проводе означает «единицу» (доминантный бит), а отсутствие сигнала – «ноль» (рецессивный бит), то передача «единицы» однозначно подавит «ноль».
Представьте себе класс в начале урока. Ученики (контроллеры низкого приоритета) спокойно переговариваются между собой. Но, стоит учителю (контроллеру высокого приоритета) громко дать команду «Тишина в классе!», перекрывая шум в классе (доминантный бит подавил рецессивный), как передача данных между контроллерами-учениками прекращается. В отличие от школьного класса, в CAN-шине это правило работает на постоянной основе.
Для чего это нужно? Чтобы важные данные были переданы с минимумом задержек даже ценой того, что маловажные данные не будут переданы на шину (это отличает CAN шину от знакомого всем по компьютерам Ethernet). В случае аварии возможность ЭБУ впрыска получить информацию об этом от контроллера SRS несоизмеримо важнее, чем приборной панели получить очередной пакет данных о скорости движения.
В современных автомобилях уже стало нормой физическое разграничение низкого и высокого приоритетов. В них используются две и даже более физические шины низкой и высокой скорости – обычно это «моторная» CAN-шина и «кузовная», потоки данных между ними не пересекаются. К всем сразу подключен только контроллер CAN-шины, который дает возможность диагностическому сканеру «общаться» со всеми блоками через один разъем.
Например, техническая документация Volkswagen определяет три типа применяемых CAN-шин:
- «Быстрая» шина, работающая на скорости 500 килобит в секунду, объединяет блоки управления двигателем, ABS, SRS и трансмиссией.
- «Медленная» функционирует на скорости 100 кбит/с и объединяет блоки системы «Комфорт» (центральный замок, стеклоподъемники и так далее).
- Третья работает на той же скорости, но передает информацию только между навигацией, встроенным телефоном и так далее. На старых машинах (например, Golf IV) информационная шина и шина «комфорт» были объединены физически.
Интересный факт: на Renault Logan второго поколения и его «соплатформенниках» также физически две шины, но вторая соединяет исключительно мультимедийную систему с CAN-контроллером, на второй одновременно присутствуют и ЭБУ двигателя, и контроллер ABS, и подушки безопасности, и ЦЭКБС.
Физически же автомобили с CAN-шиной используют ее в виде витой дифференциальной пары: в ней оба провода служат для передачи единственного сигнала, который определяется как разница напряжений на обоих проводах. Это нужно для простой и надежной помехозащиты. Неэкранированный провод работает, как антенна, то есть источник радиопомех способен навести в нем электродвижущую силу, достаточную для того, чтобы помеха воспринялась контроллерами как реально переданный бит информации.
Но в витой паре на обоих проводах значение ЭДС помехи будет одинаковым, так что разница напряжений останется неизменной. Поэтому, чтобы найти CAN-шину в автомобиле, ищите витую пару проводов – главное не перепутать ее с проводкой датчиков ABS, которые так же для защиты от помех прокладываются внутри машины витой парой.
Диагностический разъем CAN-шины не стали придумывать заново: провода вывели на свободные пины уже стандартизированной в OBD-II колодки, в ней CAN-шина находится на контактах 6 (CAN-H) и 14 (CAN-L).
Поскольку CAN-шин на автомобиле может быть несколько, часто практикуется использование на каждой разных физических уровней сигналов. Вновь для примера обратимся к документации Volkswagen. Так выглядит передача данных в моторной шине:
Когда на шине не передаются данные или передается рецессивный бит, на обоих проводах витой пары вольтметр покажет по 2,5 В относительно «массы» (разница сигналов равна нулю). В момент передачи доминантного бита на проводе CAN-High напряжение поднимается до 3,5 В, в то время как на CAN-Low опускается до полутора. Разница в 2 вольта и означает «единицу».
На шине «Комфорт» все выглядит иначе:
Здесь «ноль» — это, наоборот, 5 вольт разницы, причем напряжение на проводе Low выше, чем на проводе High. «Единица» же – это изменение разности напряжений до 2,2 В.
Проверка CAN-шины на физическом уровне ведется с помощью осциллографа, позволяющего увидеть реальное прохождение сигналов по витой паре: обычным тестером, естественно, «разглядеть» чередование импульсов такой длины невозможно.
«Расшифровка» CAN-шины автомобиля также ведется специализированным прибором – анализатором. Он позволяет выводить пакеты данных с шины в том виде, как они передаются.
Сами понимаете, что диагностика шины CAN на «любительском» уровне без соответствующего оборудования и знаний не имеет смысла, да и банально невозможна. Максимум, что можно сделать «подручными» средствами, чтобы проверить кан-шину – это измерить напряжения и сопротивление на проводах, сравнив их с эталонными для конкретного автомобиля и конкретной шины. Это важно – выше мы специально привели пример того, что даже на одном автомобиле между шинами может быть серьезная разница.
Неисправности
Хотя интерфейс CAN и хорошо защищен от помех, электрические неисправности стали для него серьезной проблемой. Объединение блоков в единую сеть сделало ее уязвимой. КАН-интерфейс на автомобилях стал настоящим кошмаром малоквалифицированных автоэлектриков уже по одной своей особенности: сильные скачки напряжения (например, зимний запуск на сильно разряженном аккумуляторе) способны не только «повесить» ошибку CAN-шины, обнаруживаемую при диагностике, но и заполнить память контроллеров спорадическими ошибками, случайного характера.
В результате на приборной панели загорается целая «гирлянда» индикаторов. И, пока новичок в шоке будет чесать голову: «да что же это такое?», грамотный диагност первым делом поставит нормальный аккумулятор.
Чисто электрические проблемы – это обрывы проводов шины, их замыкания на «массу» или «плюс». Принцип дифференциальной передачи при обрыве любого из проводов или «неправильном» сигнале на нем становится нереализуем. Страшнее всего замыкание провода, поскольку оно «парализует» всю шину.
Представьте себе простую моторную шину в виде провода, на котором «сидят в ряд» несколько блоков – контроллер двигателя, контроллер АБС, приборная панель и диагностический разъем. Обрыв у разъема автомобилю не страшен – все блоки продолжат передавать информацию друг другу в штатном режиме, невозможной станет только диагностика. Если оборвать провод между контроллером АБС и панелью, мы сможем увидеть сканером на шине только ее, ни скорость, ни обороты двигателя она показывать не будет.
А вот при обрыве между ЭБУ двигателя и АБС машина, скорее всего, уже не заведется: блок, не «видя» нужный ему контроллер (информация о скорости учитывается при расчете времени впрыска и угла опережения зажигания), уйдет в аварийный режим.
Если не резать провода, а просто постоянно подать на один из них «плюс» или «массу», автомобиль «уйдет в нокаут», поскольку ни один из блоков не сможет передавать данные другому. Поэтому золотое правило автоэлектрика в переводе на русский цензурный звучит как «не лезь кривыми руками в шину», а ряд автопроизводителей запрещает подключать к CAN-шине несертифицированные дополнительные устройства стороннего производства (например, сигнализации).
Благо подключение CAN-шины сигнализации не разъем в разъем, а врезаясь непосредственно в шину автомобиля, дают «криворукому» установщику возможность перепутать провода местами. Автомобиль после этого не то что откажется заводиться – при наличии контроллера управления бортовыми цепями, распределяющего питание, даже зажигание не факт что включится.
—>Автозапчасти и СТО —>
Бортовые системы электроники в современных легковых и грузовых автомобилях обладают огромным количеством дополнительных устройств и исполнительных механизмов. Для того, чтобы обмен информацией между всеми устройствами был максимально эффективен, в автомобиле должна быть надежная коммуникационная сеть. В начале 80-ых годов 20 века компания Bosch и разработчик Intel предложили новый сетевой интерфейс – Controller Area Network, который в народе называется Can-шина.
О принципе работы сетевого интерфейса CAN-шина
Кан-шина в автомобиле предназначена для обеспечения подключения любых электронных устройств, которые способны передавать и получать определенную информацию. Таким образом, данные о техническом состоянии систем и управляющие сигналы проходят по витой паре в цифровом формате. Такая схема позволила снизить негативное влияние внешних электромагнитных полей и существенно увеличить скорость передачи данных по протоколу (правила, по которым блоки управления различными системами способны обмениваться информацией).
Кроме того, диагностика ЭБУ различных систем автомобиля своими руками стала проще. За счет применения подобной системы в составе бортовой сети автомобиля высвободилось определенное количество проводников, которые способны обеспечивать связь по различным протоколам, например, между блоком управления двигателем и диагностическим оборудованием, системой сигнализации. Именно наличие Кан-шины в автомобиле позволяет владельцу своими руками выявлять неисправности контроллеров и ошибки с помощью специального диагностического оборудования.
CAN-шина – это специальная сеть, с помощью которой осуществляется передача и обмен данными между различными узлами управления. Каждый из узлов состоит из микропроцессора (CPU) и CAN-контроллера, с помощью которого реализуется исполняемый протокол и обеспечивается взаимодействие с сетью автомобиля. Шина Кан имеет минимум две пары проводов – CAN_L и CAN_H, по которым и передаются сигналы посредством трансиверов – приемо-передатчиков, способных усиливать сигнал от управляющих устройств сети. Кроме того, трансиверы выполняют и такие функции как:
- регулировка скорости передачи данных посредством усиления или уменьшения подачи тока;
- ограничение тока для предотвращения повреждения датчика или замыкания линий передачи;
- тепловая защита.
На сегодняшний день признаны два вида трансиверов – High Speed и Fault Tolerant. Первый тип наиболее распространен и соответствует стандарту (ISO 11898-2), он позволяет передавать данные со скоростью до 1МБ в секунду. Второй тип приемопередатчиков позволяет создать энергосберегающую сеть, со скоростью передачи до 120 Кб/сек, при этом подобные передатчики не имеют чувствительности к каким-либо повреждениям на самой шине.
Особенности работы сети
Следует понимать, что данные по CAN-сети передаются в виде кадров. Наиболее важные из них – это поле идентификатора (Identifire) и система данных (Data). Наиболее часто используемый тип сообщения по Кан-шине – Data Frame. Данный тип передачи данных состоит из так называемого арбитражного поля и определяет приоритетную передачу данных в том случае, если сразу несколько узлов системы передают данные на CAN-шину.
Каждое из подключенных к шине устройств управления имеет свое входное сопротивление, а общая нагрузка рассчитывается из суммы всех подключенных к шине исполняемых блоков. В среднем, входное сопротивление систем управления двигателем, которые подключаются на CAN-шину, составляет 68-70 Ом, а сопротивление информационно-командной системы может составлять до 3-4 ОМ.
CAN — интерфейс и диагностика системы
Системы управления CAN имеют не только различное нагрузочное сопротивление, но и разную скорость передачи сообщений. Этот факт усложняет обработку однотипных сообщений внутри бортовой сети. Для упрощения диагностики на современных автомобилях используется межсетевой интерфейс (преобразователь сопротивления), который либо выполнен в качестве отдельного управляющего блока, либо встроен в ЭБУ двигателя автомобиля.
Подобный преобразователь также предназначен для ввода или вывода определенной диагностической информации по проводу "К"-линия, который подключается во время диагностики или изменения параметров работы сети либо в диагностический разъем либо непосредственно к преобразователю.
Важно отметить, что определенных стандартов для разъемов сети Can на сегодняшний день не существует. Поэтому каждый из протоколов определяет свой тип разъемов на CAN-шине, в зависимости от нагрузки и других параметров.
Таким образом, при проведении диагностических работ своими руками используется унифицированный разъем типа OBD1 или OBD2, который можно встретить на большинстве современных иномарок и отечественных автомобилей. Однако, некоторые модели автомобилей, например Volkswagen Golf 5V, Audi S4, не имеют межсетевого интерфейса. Кроме того, схема блоков управления и CAN-шины индивидуальна для каждой марки и модели авто. Для того, чтобы провести диагностику CAN-системы своими руками, используется специальная аппаратура, которая состоит из осциллографа, анализатора CAN и цифрового мультиметра.
Работы по выявлению неисправностей начинаются со снятия напряжения сети (снятие минусовой клеммы АКБ). Далее определяется изменение сопротивления между проводами шины. Самыми распространенными видами неисправности Кан-шины в автомобиле является замыкание или обрыв линии, выход из строя резисторов нагрузки и снижение уровня передачи сообщений между элементами сети. В некоторых случаях без применения анализатора Can выявить неисправность не получается.
Основные режимы работы CAN-шины: активный (зажигание включено); спящий (при выключенном зажигании); пробуждение и засыпание (при включении и выключении зажигания). Во время спящего режима ток потребления шины минимальный. Однако при этом по шине (с меньшей частотой) передаются сигналы о состоянии открытия дверей и окон, других систем, связанных с охранными функциями автомобиля.
В большинстве современных диагностических устройств предусмотрен режим диагностирования ошибок по CAN-шине. Технически это организовано непосредственным подключением проводников к диагностическому разъему.
Преимущества и недостатки применения КАН-шины в автомобиле Начать следует с того, что, если бы в 80-х годах прошлого века не был предложен стандарт CAN, его место обязательно занял другой вид взаимодействия систем автомобиля. Можно, конечно, разместить все блоки управления системами автомобиля в едином суперблоке, в котором программно обеспечить взаимодействие разных систем. Такие попытки были у французских производителей. Однако, с увеличением функциональности и производительности значительно увеличивается вероятность отказов. Сбои, например, дворников, могут привести к отказу запуска двигателя. Основные преимущества применения CAN-шины: возможность проведения оперативного контроля и диагностики всех систем автомобиля; объединение потоков информации в едином помехозащищенном канале; универсальность, способствующая унификации процессов диагностирования; возможность подключения охранных систем по CAN-шине (нет необходимости тянуть проводку к каждому элементу контроля). Недостатки CAN-шины: невысокая надежность; повреждение одного из блоков управления может привести к полной неработоспособности CAN-соединения. Устранение неисправностей На приборной панели автомобиля отсутствует индикаторная лампа неисправности CAN. Судить о том, что работоспособность CAN-шины нарушается, можно по косвенным показателям: на приборной панели одновременно загорелись несколько индикаторных ламп неисправностей; пропали показатели температуры охлаждающей жидкости, уровни топлива; загорелся «CHECK ENGINE». Прежде всего, следует выполнить диагностику. Если она покажет на неисправность CAN-шины, следует приступить к устранению проблемы. Последовательность работ: Найти проводники витой пары шины. Часто они имеют черный (высокий уровень) и оранжево-коричневый (низкий) цвета. Проверить при включенном зажигании с помощью мультиметра напряжения на проводниках. Уровни не должны быть равны 0 или более 11 Вольт (обычно около 4,5 Вольта). Выключить зажигание, снять клемму аккумуляторной батареи. Измерить сопротивление между проводниками. Если оно будет стремиться к нулю, значит, в шине присутствует короткое замыкание, если к бесконечности – обрыв. Приступить к поиску обрыва или короткого замыкания. Если есть подозрение на то, что замыкание шины происходит по причине отказа какого-либо блока управления, можно последовательно отключать блоки управления и контролировать сопротивление и работоспособность шины. Неисправность CAN-шины относится к сложным неисправностям электрооборудования автомобиля. Если у автовладельца нет необходимых навыков ремонта электрики, то лучше воспользоваться услугами специалиста.
CAN-шина – это электронное устройство, встроенное в электронную систему автомобиля для контроля технических характеристики и ездовых показателей. Она является обязательным элементом для оснащения автомобиля противоугонной системой, но это лишь малая часть её возможностей.