Работа с CAN шиной автомобиля, или решение нестандартных задач (Lexus LX570).

Всем привет!


Уже несколько месяцев назад сменил место работы, на радость всем тем, кому не нравилась тема Smart-ов.

Сейчас я, по большей части, занимаюсь мультимедиа авто. Но, в последнее время, часто стали появляться нестандартные задачи, которые требуют разработки электроники. Одна из таких задач - Lexus LX570.

Работа с CAN шиной автомобиля, или решение нестандартных задач (Lexus LX570). Lexus, Lexus lx570, Управляемый выхлоп, Длиннопост, Видео, Автосервис

На этот автомобиль уже был установлен управляемый выхлоп. Управляемый выхлоп поставили ему в одной из организаций Москвы. Выхлоп сделан на высшем уровне в плане механических работ. Выхлоп классно выглядит и звучит. Из-под порога торчит двустволка, в штатном режиме она не громче стока, а в открытом режиме выдает сочный рев настоящего V8.

Работа с CAN шиной автомобиля, или решение нестандартных задач (Lexus LX570). Lexus, Lexus lx570, Управляемый выхлоп, Длиннопост, Видео, Автосервис

Но то, что не нравится владельцу – это управление этим выхлопом. В работе использовалось стандартное решение, которое подходит под все автомобили. Это брелок с двумя кнопками, одна открывает, другая закрывает выхлоп. 

Работа с CAN шиной автомобиля, или решение нестандартных задач (Lexus LX570). Lexus, Lexus lx570, Управляемый выхлоп, Длиннопост, Видео, Автосервис

Владельца это не устраивает. Зачем нужны какие-то дополнительные брелоки, если в машине уже есть штатный спорт режим. Вот он и просил подключить управляемый выхлоп к спорт-режиму на автомобиле.


Задача предельно ясна. Осталось решить как реализовать. Я решил делать это через CAN шину автомобиля. Для реализации была выбрана платформа Canny 7. На сайте производителя написано, что это «программируемый логический контроллер». Его преимуществом является то, что по сути он является законченным устройством. На борту есть CAN контроллер и 11 программируемых выводов. Питается он от борт сети автомобиля без каких-либо преобразователей. Более подробно о контроллере можно почитать на официальном сайте https://canny.ru/c7/ или на вики, посвящённому этому контроллеру http://wiki.canny.ru/index.php?title=CANNY_7

Вот так выглядит Canny 7 с корпусом и без него.

Работа с CAN шиной автомобиля, или решение нестандартных задач (Lexus LX570). Lexus, Lexus lx570, Управляемый выхлоп, Длиннопост, Видео, Автосервис
Работа с CAN шиной автомобиля, или решение нестандартных задач (Lexus LX570). Lexus, Lexus lx570, Управляемый выхлоп, Длиннопост, Видео, Автосервис

Для начала нужно проанализировать CAN шину автомобиля, что б узнать, по каким адресам идет информация о режиме работы автомобиля. Анализировать Can шину можно тем же Canny 7, для этого нужно его перевести в режим монитора. Не буду на этом останавливаться, так как на том же вики есть подробная инструкция http://wiki.canny.ru/index.php?title=CANNY_CAN%28LIN%29_monitor . Так же анализировать Can шину можно и другими устройствами.


После перехода в режим монитора находим данные, которые отвечают за Sport режим. В моем случае за это отвечают данные с ID 0x03BC.

Работа с CAN шиной автомобиля, или решение нестандартных задач (Lexus LX570). Lexus, Lexus lx570, Управляемый выхлоп, Длиннопост, Видео, Автосервис

По этому 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 выглядит следующим образом:

Работа с CAN шиной автомобиля, или решение нестандартных задач (Lexus LX570). Lexus, Lexus lx570, Управляемый выхлоп, Длиннопост, Видео, Автосервис

Данная диаграмма и ее тестирование отняло почти 2 дня времени. В конце тестов появляется полностью работоспособное устройство, готовое к установке в авто.

Ну а работу устройства можно посмотреть в видео.

А всем, кто дочитал до конца большое спасибо. Вообще около недели думал, стоит ли выкладывать такую подробную инструкцию с кучей технических моментов и большим объемом технической информации, так как пикабу, все-таки, больше развлекательный сайт.

Скорее всего дальнейшие статьи будут с меньшим объемом технической информации.

183
Автор поста оценил этот комментарий

Выкладывать пост однозначно стоило. Я ни хера не понял, но было интересно. (с)

раскрыть ветку
14
Автор поста оценил этот комментарий
После перехода в режим монитора находим данные, которые отвечают за Sport режим. В моем случае за это отвечают данные с ID 0x03BC

А как их найти то? что именно с данного адреса данные по спорт режиму?

раскрыть ветку
184
Автор поста оценил этот комментарий

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

раскрыть ветку
12
Автор поста оценил этот комментарий

Механическое управление звуком выхлопа только звук меняет или есть от него технический толк?

раскрыть ветку
52
Автор поста оценил этот комментарий

Пффф, так все могут, а попробуй на копендосе глушителем мурку сыграть!)

раскрыть ветку