Приветствую всех!
Хочу поделиться своим опытом решения проблемы с включением электроусилителем руля (ЭУР) на Volkswagen Tiguan 2008 года «на столе».
Предыстория. Периодически на панели приборов появлялись индикаторы желтого и красного руля, что указывало на неполадки с ЭУР.
Диагностика показала, что на 30-й клемме (постоянный плюс от аккумулятора) пропадает питание.
Казалось бы, что может быть проще — проверить жгут проводов и найти причину. Однако жгут оказался целым, окислений на контактах не было, и питание присутствовало даже при возникновении ошибки.
В итоге я пришел к выводу, что проблема кроется в блоке управления ЭУР, который расположен на самой рулевой рейке. Добраться до него без подъемника крайне сложно, поэтому я решил заменить рейку на контрактную б/у.
После замены проблема исчезла, но осталась старая рейка, которую нельзя было продать в таком состоянии, так как причина ошибки оставалась неясной. Кроме того, без подключения к автомобилю проверить или починить ее было невозможно.
Так возникла задача: подключить рулевую рейку Tiguan «на столе» без подключения к машине. Для этого нужно было имитировать активность в CAN‑шине.
Для решения задачи потребовался адаптер, совместимый с программой CanHacker, и трейс CAN‑пакетов с автомобиля.
В этой статье я расскажу о первом этапе — создании адаптера, совместимого с CanHacker.
CanHacker работает с адаптерами по протоколу Lawicel. Для создания адаптера мне понадобились микроконтроллер Arduino, CAN‑трансивер и модуль MCP2515 с трансивером TJA1050.
Схема подключения проста: необходимо соединить питание и SPI‑интерфейс. На модуле MCP2515 есть джампер J1, который подключает резистор 120 Ом на шине. Для работы с автомобилем этот резистор обычно не нужен, но для тестирования на столе его лучше установить.
Джампер J1 на модуле MCP2515 подключает резистор 120 Ом на шине. Для подключения к шине автомобиля он обычно не нужен, а вот для подключения устройства к модулю на столе его лучше установить.
После сборки модуля оставалось найти подходящую прошивку.
Изначально я использовал проект arduino‑canhacker, но он оказался нестабильным — зависал даже на скорости 125 Кб/с. В итоге я нашел более надежное решение — библиотеку Seeed_Arduino_CAN. В ней есть пример canbus‑monitor, который после прошивки работает стабильно на скорости 500 Кб/с и совместим с CanHacker.
Теперь, когда адаптер готов, можно проверить его работу. Подключаемся к CAN‑шине автомобиля (в моем случае — к блоку парковочного ассистента, так как на Volkswagen используется Gateway, разделяющий сети). Запускаем CanHacker, выбираем COM‑порт, скорость 115 200 для адаптера и 500 Кб/с для CAN‑шины.
После подключения видим, что связь установлена, и версия прошивки отображается.
Следующий шаг — запись трейса CAN‑пакетов. Включаем зажигание, запускаем двигатель, глушим его и останавливаем запись. Теперь у нас есть трейс, который можно использовать для имитации работы автомобиля и включения рулевой рейки. Конечно, не все пакеты из трейса понадобятся, но они помогут определить, какие CAN ID и сообщения отвечают за активацию ЭУР.
Это моя первая статья на Хабре, и если она окажется полезной, я с удовольствием поделюсь другими техническими решениями и опытом!
Комментарии (21)
aivs
16.02.2025 08:03Многие жалуются на проект arduino‑canhacker. Спасибо! Буду рекомендовать вашу статью начинающим исследователям.
victor_1212
16.02.2025 08:03полностью оригинально, вполне приличного уровня, приятно читать, не то что компиляция wiki которых так много на habr, конечно пишите еще
Dark_Purple
16.02.2025 08:03Повествование оборвалось, рейка осталась непочиненой :(
MaFrance351
16.02.2025 08:03Почему-то до последнего ждал, что после замены машина не заработает и дело окажется в чём-то совсем другом.
Теперь ждём продолжения с оживлением снятой железки...
ktrofimov
16.02.2025 08:03Как вариант решения: перепрошивка руля до актуальной версии, устраняющая программный сбой и ошибку о механической неисправности электродвигателя. Потом прошивка параметрии и адаптация датчиков ЭУР (если потребуется).
https://wagner-ac.ru/vw-blog/vw-tiguan-krasnyj-rul-ne-rabotaet-jelektrousilitel-rulja.html
Были у друга похожая проблема с ЭУР на Rapid, код ошибки другой был (C110D00), но суть та же: желтый руль при попытке запуска в мороз и подсевшем аккумуляторе. Но там просто перепрошивкой в свежую версию не вылечить.
VasVovec
16.02.2025 08:03Очень интересно. С удовольствием прочту продолжение.
А какой именно CAN-трансивер вы использовали? Какие требования к нему для совместимости с используемой вами платой?
rsgrinko Автор
16.02.2025 08:03MCP2515 с трансивером TJA1050, подключение по SPI
VasVovec
16.02.2025 08:03Про ту часть, которая подключается к ПК (описана у вас в статье), мне понятно. Я спросил, про адаптер, который подключается к машине.
rsgrinko Автор
16.02.2025 08:03Возможно я не совсем понял ваш вопрос, но к автомобилю подключается CAN_H и CAN_L, что выходят из TJA1050. В моём случае к авто подключение выполнялось на шину кан, которая шла к блоку парковочного ассистента.
Если речь про второй скрин, где ошибка 30 клеммы, то там китайский шнурок HEX v2 (Вася диагност).
VasVovec
16.02.2025 08:03Спасибо. Понял ) Я то подумал, что к машине подключается какой-нибудь BT адаптер. Про него и спрашивал.
latonita
16.02.2025 08:03А я и не заметил, как мой давний проект внедрили в seed studio)
Рад, что он пригодился.
тут посвежее и с багфиксами https://github.com/latonita/arduino-canbus-monitor
dbanzay
16.02.2025 08:0311 и 12 абзацы зачем-то повторили.
Результатов не видно, но начало интересное. Можно было б приложить картинку по структуре CAN на этом авто.
bazuchan
16.02.2025 08:03Вместо того чтобы купить на алике адаптер меньше чем за тыщу, автор его зачем-то собрал. Все-таки собирать имеет смысл что-то нестандартное.
Вместо того чтобы для начала погрузиться в UDS, зачем-то начал реплеить события на шине. В данном случае начать трясти рейку приведет к ошибке куда быстрей.
Пропадание питания - это другое dtc. Не видал никогда чтобы в описании dtc была прям клемма разъема. Скорее всего речь о другом контакте, на котором висит какой-то датчик или шина.
StepanDH
16.02.2025 08:03Готовый адаптер "меньше чем за тыщу" имеет маленький буффер памяти внутри себя и маленькую скорость обмена с телефоном/компом (во всяком случае по Bluetooth) из-за чего при сканировании всего потока данных в CAN-шине его буфер переполняется примерно за секунду и сканирование отваливается.
Готовый адаптер подключается к OBD разъёму в котором, как написал автор, нет доступа к нужной CAN-шине из-за наличия шлюза, разделяющего разные CAN-шины в автомобиле.
Bagurma
16.02.2025 08:03Не знаю поможет или нет, но команда АП ( Ильдар авто подбор) чинили рейку на тигуане, там Толи блок был негерметичный и туда вода попала, Толи что то ещё
esaulenka
16.02.2025 08:03Извините, что с критикой, но...
Закопайте уже ардуину. Этот несчастный 8-битник с костылями в виде CAN-шилда не для таких задач.
Да и оригинальный немецкий CAN Hacker - не самое последнее слово анализаторостроения, мягко говоря.
Куда проще и надёжней использовать процессор со встроенным CAN. Хоть в виде готового адаптера с али (хотя там тоже косяк на косяке, и самодельные китайские софтины для анализа - тот ещё подарок), хоть вот этот проект https://www.drive2.ru/c/669607255313766078/
tuxi
По-моему, это надо дальше копать. Например, в качестве идеи, сделать референсные логи блоков заведомо исправной машины и сравнивать с логами на исследуемой машине и показывать итоговые отличия.
Вторая идея, собрать все адреса откуда можно считать пробег и выводить саммари с помощью компактного устройства. Не все готовы ставить приложения, причем доступные бесплатные не все узлы могут прочитать.