Работа с CAN шиной автомобиля, или решение нестандартных задач (Lexus LX570).
Всем привет!
Уже несколько месяцев назад сменил место работы, на радость всем тем, кому не нравилась тема Smart-ов.
Сейчас я, по большей части, занимаюсь мультимедиа авто. Но, в последнее время, часто стали появляться нестандартные задачи, которые требуют разработки электроники. Одна из таких задач - Lexus LX570.
На этот автомобиль уже был установлен управляемый выхлоп. Управляемый выхлоп поставили ему в одной из организаций Москвы. Выхлоп сделан на высшем уровне в плане механических работ. Выхлоп классно выглядит и звучит. Из-под порога торчит двустволка, в штатном режиме она не громче стока, а в открытом режиме выдает сочный рев настоящего V8.
Но то, что не нравится владельцу – это управление этим выхлопом. В работе использовалось стандартное решение, которое подходит под все автомобили. Это брелок с двумя кнопками, одна открывает, другая закрывает выхлоп.
Владельца это не устраивает. Зачем нужны какие-то дополнительные брелоки, если в машине уже есть штатный спорт режим. Вот он и просил подключить управляемый выхлоп к спорт-режиму на автомобиле.
Задача предельно ясна. Осталось решить как реализовать. Я решил делать это через CAN шину автомобиля. Для реализации была выбрана платформа Canny 7. На сайте производителя написано, что это «программируемый логический контроллер». Его преимуществом является то, что по сути он является законченным устройством. На борту есть CAN контроллер и 11 программируемых выводов. Питается он от борт сети автомобиля без каких-либо преобразователей. Более подробно о контроллере можно почитать на официальном сайте https://canny.ru/c7/ или на вики, посвящённому этому контроллеру http://wiki.canny.ru/index.php?title=CANNY_7
Вот так выглядит Canny 7 с корпусом и без него.
Для начала нужно проанализировать CAN шину автомобиля, что б узнать, по каким адресам идет информация о режиме работы автомобиля. Анализировать Can шину можно тем же Canny 7, для этого нужно его перевести в режим монитора. Не буду на этом останавливаться, так как на том же вики есть подробная инструкция http://wiki.canny.ru/index.php?title=CANNY_CAN%28LIN%29_monitor . Так же анализировать Can шину можно и другими устройствами.
После перехода в режим монитора находим данные, которые отвечают за Sport режим. В моем случае за это отвечают данные с ID 0x03BC.
По этому 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 выглядит следующим образом:
Данная диаграмма и ее тестирование отняло почти 2 дня времени. В конце тестов появляется полностью работоспособное устройство, готовое к установке в авто.
Ну а работу устройства можно посмотреть в видео.
А всем, кто дочитал до конца большое спасибо. Вообще около недели думал, стоит ли выкладывать такую подробную инструкцию с кучей технических моментов и большим объемом технической информации, так как пикабу, все-таки, больше развлекательный сайт.
Скорее всего дальнейшие статьи будут с меньшим объемом технической информации.