Всем привет!
В процессе разработки приложения VAG Virtual Cockpit и бортового компьютера VAG Onboard Computer мне приходится собирать много данных с помощью CAN сниффера на реальных машинах, это очень кропотливый процесс, который занимает гораздо больше времени, чем написание кода. И вот я придумал способ, как мне исследовать новые машины не вставая с кресла!
Все что мне было нужно, это эмулятор блока управления двигателя для конкретного автомобиля, его я и сделал.

Моя главная задача заключается в том, чтобы узнать какие команды отправляет VCDS двигателю для получения температуру масла, наддува и др.
Для Raspberry Pi я сделал CAN шилд, который подключается к CAN шине в шнурке VCDS. Таким образом я смог перехватывать все команды, которые отправляет VCDS.
У меня был лог сниффера с реальной машины и используя эти данные я написал программу, которая отвечает на запросы подключения к ЭБУ двигателя.

Эмулятор ЭБУ ожидает определенные команды по CAN шине и отвечает командами из списка.


После того, как VCDS подключился к эмулятору, я могу зайти в Измеряемые величины и выбрать любой интересующий меня параметр, в логе эмулятора я вижу какую команду отправляет VCDS, это мне и нужно! Далее этот запрос я могу добавить в своё приложение или бортовой компьютер, тем самым расширив количество поддерживаемых параметров для любого двигателя.
Вот и видео работы эмулятора.
Но остаётся главный вопрос, где взять данные чтобы сделать эмулятор для нового двигателя?
В бета версию приложения VAG Virtual Cockpit я добавил функцию сбора лога и отправки мне на почту. Для работы приложения нужен ELM327 адаптер. Ссылка не бету testflight.apple.com/join/Yx9vcPxQ


Сбор данных о двигателе работает только если диагностика двигателя поддерживает протокол UDS, а это почти все двигатели выпущенные после 2014 года. Если вам интересно, то отправьте лог с вашей машины, я смогу улучшить приложение VAG Virtual Cockpit и добавить поддержку новых двигателей в БК.
Код эмулятора написан на python и выложен на гитхаб github.com/aivs/UDS-Engine-Emulator






Комментарии 36
вот бы таким отснифить обмен данными на старых авто, где еще нет can, а только k-line
протокол обмена нигде в открытом доступе не обнаружен.
K-line это разновидность uart, там еще проще.
возможно. я тут подумал, видел в одной из тем, был некий плагин для vcds, который позволял как будто can трафик перехватывать. а для этого самого k-line такого же нет? (чтоб не цеплять логический анализатор)
Для k-line такого нет
если есть вася или vcds все данные можно взять оттуда, достаточно лога скана ошибок в блоках
Привет! Очень круто! А как скинуть лог из машины? Если бы ты написал и выложил инструкцию + необходимый инструмент, это бы упростило процесс для желающих скинуть свой лог)
Привет, я же написал, как скинуть лог. Скачать бета версию приложения и нажать кнопку отправить лог. Ссылка в статье.
вот заморочился… что-то я тоже заскучал по таким заморочкам, надо начинать тоже, что-то сделать)))
снифер штука полезная и нужная в разработке
Круто! Удачи вам в вашей работе!
Круто, планируете это в вывести в отдельный экран подключаемый к машине или допилить до уровня дисплея устанавливаемого в в штатную панель, может целиком панель? Или все крутится только в пределах приложений для телефона?
Отдельный экран, типа такого?
www.drive2.ru/l/635815689579416255/
Да, но более интегрираванный в авто, к примеру в тот же воздуховод? Просто все подобные экраны ( интегрируемые) не отличаются эстетикой и информативностью, ваш конечно интереснее, если интегрируете думаю будет еще круче)
aivs
Отдельный экран, типа такого?
www.drive2.ru/l/635815689579416255/
Эстетика не менее важный фактор, к слову о фисе, реализованный в штатное место) или белорусском варианте для старых пассатов и Ауди, вставляемый прям в приборку, думаю если что то подобное реализуете для ген2/3 платформы, будет большой спрос, потому как многие хотят чтоб это было в панели приборов или интегрировано в воздуховод или еще куда, простым языком чтоб было красиво, а не отдельный ящик на панели) на экране визуализация и информативность, у вас уже на высоте 👍🏽
Есть наработки в этом направлении, осталось довести до идеала.
👍🏽👍🏽👍🏽👍🏽👍🏽👍🏽 отличные новости
Круто, большая работа.
Отлично! Отдельный жирный лайк за open source!
Если добавишь к себе в приложение опрос двигателя, то польза будет всем!
Да, надо бы сделать
Читаешь и понимаешь, что ничего не понятно))))
А я старался простым языком рассказать, это я еще технические подробности опустил )
Хорошо придумал)
Для андроид такая программа будет? Хотелось бы помочь
kizup делает для андроид
Совсем топ, если будет кодирование прямо из приложения
Включение/отключение каких либо функций и длинное кодирование
Ачуметь! Вот это голова! Я так не умею — красаучег! 🤝
Еще позавчера я тоже не знал, что так умею )
API не пробовал поискать на просторах? Вроде не f22 или су57. Ненулевая вероятность, что и дампы ответов можно надыбать.
Как я понял, информация о том какие команды отправлять конкретному двигателю хранится в odx файлах. VCDS делает запрос к ЭБУ и ЭБУ присылает название odx файла, которое нужно использовать и в папке VCDS я даже нашел именно этот файл, но декодировать его не смог. Скорее всего он зашифрован и на расшифровку может уйти много времени. Эмулятор я сделал за день.
А, ну получается, апи уровня конкретного блока как раз берет из своей статики (определяется последней обновой софта vcds). Odx — это open diagnostic data exchange. То есть открытый обмен. И odx файлы — это не что иное, как сериализованный xml. По нему, кстати, есть некислая спецификация страниц на 500)) но я так понимаю, тебе нужно лишь примеры диагностических сообщений от разных эбу. Будет время, копну. Самому стало интересно
Тоже отправлю как смогу. На октавии а7 2014г не корректно отображался запас хода и количество топлива в баке.
Теперь это легко поправимо
Очень круто! Очень!
Поставил бетку, адаптера нет.
Логи сниму когда смогу и отправлю
Спасибо за поддержку!
Вот это уровень 💪🏼
Сам от себя не ожидал )