Приветствую всех!

Хочу поделиться своим опытом решения проблемы с включением электроусилителем руля (ЭУР) на Volkswagen Tiguan 2008 года «на столе».

Предыстория. Периодически на панели приборов появлялись индикаторы желтого и красного руля, что указывало на неполадки с ЭУР.

CanHacker на базе Adruino (без глюков) Arduino, Can, Машина, Радиоэлектроника, Программа, Длиннопост
Красный руль на щитке приборов

Диагностика показала, что на 30-й клемме (постоянный плюс от аккумулятора) пропадает питание.

CanHacker на базе Adruino (без глюков) Arduino, Can, Машина, Радиоэлектроника, Программа, Длиннопост
Ошибка в блоке ЭУР

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

В итоге я пришел к выводу, что проблема кроется в блоке управления ЭУР, который расположен на самой рулевой рейке. Добраться до него без подъемника крайне сложно, поэтому я решил заменить рейку на контрактную б/у.

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

Так возникла задача: подключить рулевую рейку Tiguan «на столе» без подключения к машине. Для этого нужно было имитировать активность в CAN‑шине.

Для решения задачи потребовался адаптер, совместимый с программой CanHacker, и трейс CAN‑пакетов с автомобиля.

В этой статье я расскажу о первом этапе — создании адаптера, совместимого с CanHacker.

CanHacker работает с адаптерами по протоколу Lawicel. Для создания адаптера мне понадобились микроконтроллер Arduino, CAN‑трансивер и модуль MCP2515 с трансивером TJA1050.

CanHacker на базе Adruino (без глюков) Arduino, Can, Машина, Радиоэлектроника, Программа, Длиннопост
Модуль MCP2515

Схема подключения проста: необходимо соединить питание и SPI‑интерфейс. На модуле MCP2515 есть джампер J1, который подключает резистор 120 Ом на шине. Для работы с автомобилем этот резистор обычно не нужен, но для тестирования на столе его лучше установить.

CanHacker на базе Adruino (без глюков) Arduino, Can, Машина, Радиоэлектроника, Программа, Длиннопост
Схема подключения CAN модуля к Arduino

Джампер J1 на модуле MCP2515 подключает резистор 120 Ом на шине. Для подключения к шине автомобиля он обычно не нужен, а вот для подключения устройства к модулю на столе его лучше установить.

После сборки модуля оставалось найти подходящую прошивку.

CanHacker на базе Adruino (без глюков) Arduino, Can, Машина, Радиоэлектроника, Программа, Длиннопост
Собранное "устройство" в корпусе, печатал когда-то на 3D принтере - завалялось...

Изначально я использовал проект arduino‑canhacker, но он оказался нестабильным — зависал даже на скорости 125 Кб/с. В итоге я нашел более надежное решение — библиотеку Seeed_Arduino_CAN. В ней есть пример canbus‑monitor, который после прошивки работает стабильно на скорости 500 Кб/с и совместим с CanHacker.

Теперь, когда адаптер готов, можно проверить его работу. Подключаемся к CAN‑шине автомобиля (в моем случае — к блоку парковочного ассистента, так как на Volkswagen используется Gateway, разделяющий сети). Запускаем CanHacker, выбираем COM‑порт, скорость 115 200 для адаптера и 500 Кб/с для CAN‑шины.

CanHacker на базе Adruino (без глюков) Arduino, Can, Машина, Радиоэлектроника, Программа, Длиннопост
Настройки подключения

После подключения видим, что связь установлена, и версия прошивки отображается.

CanHacker на базе Adruino (без глюков) Arduino, Can, Машина, Радиоэлектроника, Программа, Длиннопост
CanHacker подключился к адаптеру

Следующий шаг — запись трейса CAN‑пакетов. Включаем зажигание, запускаем двигатель, глушим его и останавливаем запись. Теперь у нас есть трейс, который можно использовать для имитации работы автомобиля и включения рулевой рейки. Конечно, не все пакеты из трейса понадобятся, но они помогут определить, какие CAN ID и сообщения отвечают за активацию ЭУР.

CanHacker на базе Adruino (без глюков) Arduino, Can, Машина, Радиоэлектроника, Программа, Длиннопост
трейс, полученный с рабочего автомобиля

Это моя первая статья на Хабре, и если она окажется полезной, я с удовольствием поделюсь другими техническими решениями и опытом!

Комментарии (21)


  1. tuxi
    16.02.2025 08:03

    По-моему, это надо дальше копать. Например, в качестве идеи, сделать референсные логи блоков заведомо исправной машины и сравнивать с логами на исследуемой машине и показывать итоговые отличия.

    Вторая идея, собрать все адреса откуда можно считать пробег и выводить саммари с помощью компактного устройства. Не все готовы ставить приложения, причем доступные бесплатные не все узлы могут прочитать.


  1. aivs
    16.02.2025 08:03

    Многие жалуются на проект arduino‑canhacker. Спасибо! Буду рекомендовать вашу статью начинающим исследователям.


  1. Muzzy0
    16.02.2025 08:03

    Автор, пиши еще :)


  1. victor_1212
    16.02.2025 08:03

    полностью оригинально, вполне приличного уровня, приятно читать, не то что компиляция wiki которых так много на habr, конечно пишите еще


  1. Dark_Purple
    16.02.2025 08:03

    Повествование оборвалось, рейка осталась непочиненой :(


    1. MaFrance351
      16.02.2025 08:03

      Почему-то до последнего ждал, что после замены машина не заработает и дело окажется в чём-то совсем другом.

      Теперь ждём продолжения с оживлением снятой железки...


    1. ktrofimov
      16.02.2025 08:03

      Как вариант решения: перепрошивка руля до актуальной версии, устраняющая программный сбой и ошибку о механической неисправности электродвигателя. Потом прошивка параметрии и адаптация датчиков ЭУР (если потребуется).

      https://wagner-ac.ru/vw-blog/vw-tiguan-krasnyj-rul-ne-rabotaet-jelektrousilitel-rulja.html

      Были у друга похожая проблема с ЭУР на Rapid, код ошибки другой был (C110D00), но суть та же: желтый руль при попытке запуска в мороз и подсевшем аккумуляторе. Но там просто перепрошивкой в свежую версию не вылечить.


  1. VasVovec
    16.02.2025 08:03

    Очень интересно. С удовольствием прочту продолжение.

    А какой именно CAN-трансивер вы использовали? Какие требования к нему для совместимости с используемой вами платой?


    1. rsgrinko Автор
      16.02.2025 08:03

      MCP2515 с трансивером TJA1050, подключение по SPI


      1. VasVovec
        16.02.2025 08:03

        Про ту часть, которая подключается к ПК (описана у вас в статье), мне понятно. Я спросил, про адаптер, который подключается к машине.


        1. rsgrinko Автор
          16.02.2025 08:03

          Возможно я не совсем понял ваш вопрос, но к автомобилю подключается CAN_H и CAN_L, что выходят из TJA1050. В моём случае к авто подключение выполнялось на шину кан, которая шла к блоку парковочного ассистента.

          Если речь про второй скрин, где ошибка 30 клеммы, то там китайский шнурок HEX v2 (Вася диагност).


          1. VasVovec
            16.02.2025 08:03

            Спасибо. Понял ) Я то подумал, что к машине подключается какой-нибудь BT адаптер. Про него и спрашивал.


  1. VasVovec
    16.02.2025 08:03

    _


  1. latonita
    16.02.2025 08:03

    А я и не заметил, как мой давний проект внедрили в seed studio)

    Рад, что он пригодился.

    тут посвежее и с багфиксами https://github.com/latonita/arduino-canbus-monitor


  1. kiberpcix
    16.02.2025 08:03

    Тоже буду ждать продолжения)


  1. dbanzay
    16.02.2025 08:03

    11 и 12 абзацы зачем-то повторили.

    Результатов не видно, но начало интересное. Можно было б приложить картинку по структуре CAN на этом авто.


  1. bazuchan
    16.02.2025 08:03

    1. Вместо того чтобы купить на алике адаптер меньше чем за тыщу, автор его зачем-то собрал. Все-таки собирать имеет смысл что-то нестандартное.

    2. Вместо того чтобы для начала погрузиться в UDS, зачем-то начал реплеить события на шине. В данном случае начать трясти рейку приведет к ошибке куда быстрей.

    3. Пропадание питания - это другое dtc. Не видал никогда чтобы в описании dtc была прям клемма разъема. Скорее всего речь о другом контакте, на котором висит какой-то датчик или шина.


    1. StepanDH
      16.02.2025 08:03

      Готовый адаптер "меньше чем за тыщу" имеет маленький буффер памяти внутри себя и маленькую скорость обмена с телефоном/компом (во всяком случае по Bluetooth) из-за чего при сканировании всего потока данных в CAN-шине его буфер переполняется примерно за секунду и сканирование отваливается.

      Готовый адаптер подключается к OBD разъёму в котором, как написал автор, нет доступа к нужной CAN-шине из-за наличия шлюза, разделяющего разные CAN-шины в автомобиле.


  1. Bagurma
    16.02.2025 08:03

    Не знаю поможет или нет, но команда АП ( Ильдар авто подбор) чинили рейку на тигуане, там Толи блок был негерметичный и туда вода попала, Толи что то ещё


  1. esaulenka
    16.02.2025 08:03

    Извините, что с критикой, но...
    Закопайте уже ардуину. Этот несчастный 8-битник с костылями в виде CAN-шилда не для таких задач.
    Да и оригинальный немецкий CAN Hacker - не самое последнее слово анализаторостроения, мягко говоря.

    Куда проще и надёжней использовать процессор со встроенным CAN. Хоть в виде готового адаптера с али (хотя там тоже косяк на косяке, и самодельные китайские софтины для анализа - тот ещё подарок), хоть вот этот проект https://www.drive2.ru/c/669607255313766078/