Как обойти кан шину
Побеждаем шину CAN. Часть 1. Технология
Сегодня я хочу познакомить вас с интересной микроконтроллерной платформой CANNY. Это обзорная статья в которой вы узнаете о технологии, а в последующих статьях я расскажу вам о работе с сообщениями CAN, интеграции CANNY c Arduino Mega Server и о тех возможностях, которые предоставляет эта связка.
Почему CANNY? От названия шины CAN, которая широко используется на транспорте и, в частности, во всех современных автомобилях в качестве бортовой сети. Итак, что же можно сделать, имея специализированный контроллер, подключённый к CAN шине вашего автомобиля?
Шина CAN
Образно говоря, шина CAN это нервная система вашего автомобиля. По ней передаётся вся информация о состоянии блоков и систем, а также управляющие команды, которые во многом определяют поведение автомобиля. Зажигание фар, открывание и закрывание дверей, управление проигрыванием музыки в салоне машины, срабатывание сигнализации и т. д. — всё это работает и управляется по этой шине.
Физически, шина CAN представляет собой два перевитых провода и очень проста в монтаже и подключении. Несмотря на свою простоту, она, благодаря своей дифференциальной природе, хорошо защищена от различных наводок и помех. Высокая надежность и большая допустимая длина сети, до 1000 метров, помогла CAN завоевать широкую популярность у производителей различного, не только автомобильного оборудования.
Контроллеры CANNY
Это целое семейство специализированных контроллеров, имеющих встроенную «родную» поддержку работы с шиной CAN. Это касается как «железной» части, так и поддержки на уровне «софта».
Флагманом линейки является контроллер CANNY 7, наиболее мощный и имеющий максимум возможностей. Большое количество памяти, мощные выходы, позволяющие напрямую управлять реле автомобиля, интеллектуальная система защиты от коротких замыканий, защита от бросков тока и напряжения в бортовой сети автомобиля — всё это делает этот контроллер отличным решением для воплощения любых ваших идей и проектов.
Кроме CANNY 7 в линейке контроллеров присутствует ещё несколько моделей, мы будем проводить свои эксперименты с более простой встраиваемой моделью CANNY 5 Nano. Она также поддерживает работу с CAN шиной, но при этом похожа на уже знакомую нам Arduino Nano.
Визуальное программирование
Развитая поддержка шины CAN это не единственная особенность этих контроллеров, кроме этого CANNY имеют свою собственную среду программирования, CannyLab, но не «обычную», а визуальную, где весь процесс написания программ сводится к манипулированию готовыми структурными блоками, заданию их параметров и соединению входов и выходов этих блоков в определённой последовательности, в соответствии с алгоритмом решаемой задачи.
Ни одной строчки кода!
Хорошо это или плохо? На мой взгляд, это дело привычки. Мне, как человеку привыкшему к «традиционному» программированию, было непривычно манипулировать блоками, вместо написания строк кода. С другой стороны, существует множество приверженцев именно такого подхода к составлению алгоритмов и считается, что для инженеров и «не программистов» это наиболее простой и доступный метод программирования микроконтроллеров.
Мне, как минимум, было «прикольно» составлять программы таким образом и через некоторое время мне это стало даже нравиться. Возможно, что если продолжить этим заниматься, то через некоторое время уже написание кода покажется неудобным.
CannyLab является бесплатной средой разработки и вы можете свободно скачать её с сайта разработчиков, она также не требует специальной процедуры инсталляции — достаточно распаковать файл с архивом — и вы можете начинать работу.
Подключение
Подключение CANNY 5 Nano к компьютеру мало чем отличается от подключения контроллеров Arduino. При наличии в системе драйвера Silicon Labs CP210x, либо после его установки из скаченного дистрибутива CannyLab, Windows создаёт виртуальный COM порт и CANNY готов к работе. В моём случае понадобилось ещё перезагрузить компьютер, но возможно это особенность моей системы.
Практические примеры
Давайте на простых примерах разберём, как в CannyLab выполнять действия, привычные нам в Arduino IDE. Начнём с традиционного мигания светодиодом.
В контроллере CANNY 5 на выводе С4 (Channel 4) присутствует тестовый светодиод (аналог светодиода, находящегося на 13 выводе в Arduino). И его тоже можно использовать для индикации и экспериментов, чем мы и воспользуемся.
Что же нужно, чтобы помигать светодиодом в контроллере CANNY? Нужно сделать всего две вещи — сконфигурировать пин четвертого канала как выход и подать на этот выход сигнал с ШИМ генератора. Все эти действия мы уже не раз проделывали в Arduino IDE, посмотрим как это выглядит в CannyLab.
Итак, конфигурируем пин четвертого канала как выход
Настраиваем генератор ШИМ. Задаём период 500 миллисекунд, заполнение — 250 миллисекунд (то есть 50 %) и 1 (true) на входе генератора «Старт» и… всё! Больше ничего делать не нужно — программа готова, осталось только залить её в контроллер.
Режим симуляции
Тут нужно сказать пару слов о процессе симуляции на компьютере работы контроллера и заливке разработанной программы в память «железного» контроллера.
Среда разработки CannyLab позволяет запускать и отлаживать программу, не записывая её в память контроллера. В режиме симуляции вы можете видеть результат работы программы прямо в реальном времени и даже вмешиваться в её работу.
Заливка в контроллер
Для работы контроллеров CANNY, перед заливкой программы (в терминологии разработчиков «диаграммы») нужно сначала залить операционную систему «Устройство/Системное ПО/Записать». Это нужно сделать только один раз, для этого нужно выбрать соответствующий вашему контроллеру файл с расширением .ccx.
После того, как программа написана и отлажена, её можно загрузить в ваш контроллер. Это делается просто — в меню выбираете пункт «Устройство/Диаграмма/Записать» и через несколько секунд программа оказывается записанной в контроллер.
Далее нужно отключить контроллер от USB порта компьютера, снять перемычку на плате и можно включать запрограммированный контроллер, который после включения будет работать по вашей программе.
Аналоговые входы
Для того, чтобы лучше понять принцип программирования контроллеров CANNY в среде разработке CannyLab, давайте ещё разберём пример работы с аналоговым входом в этой системе.
Мы будем отслеживать уровень напряжения на 10 пине контроллера и если он находится в диапазоне 2,5 В ± 20%, будем зажигать встроенный в плату светодиод.
Как и в предыдущем примере, конфигурируем 4-й пин как выход для того, чтобы иметь возможность управлять работой светодиода.
Включаем АЦП на 10-м канале.
Далее пользуемся двумя логическими блоками, которые выдают 1 на выход, если напряжение находится в заданном диапазоне. Полный диапазон от 0 до 4095.
Блок «Логическое И» довершает работу и со своего выхода управляет работой светодиода на плате.
Вот и всё. То, что мы привычно делали на Arduino, мы легко сделали в CannyLab. Осталось только освоиться в этой среде программирования и вы сможете легко и непринуждённо создавать свои проекты на этой платформе.
Эти простые примеры составления программ даны для того, чтобы вы могли понять принцип визуального программирования микроконтроллеров CANNY. В дальнейшей работе вам поможет отличная справочная документация и поддержка разработчиков на сайте и форуме системы.
Заключение по вводной статье цикла
Если вам нравится визуальное программирование в стиле CannyLab, то контроллеры CANNY могут стать для вас интересной альтернативой Arduino или работать в связке с контроллерами Arduino. Об этом мы поговорим во второй статье цикла, в которой я расскажу вам об интеграции контроллеров CANNY с системой Arduino Mega Server.
Напомню, что AMS теперь работает не только на платах Arduino, но и на беспроводных Wi-Fi модулях ESP8266 и именно о такой связке пойдёт речь в следующий раз.
И как обычно, оставайтесь с нами, будет интересно!
Реверс-инжиниринг трафика на шине CAN
Необработанный сигнал шины CAN
Шина CAN (Controller Area Network) стала стандартом в автомобилестроении: все новые автомобили обязаны поддерживать CAN (с 2001 в Европе и с 2008 в США). Кроме автомобилей, CAN применяется и в широком ряде других устройств. Производители диагностического оборудования для CAN рекламируют его применение, кроме разнообразной автомобильной техники, в мотоциклах, автопогрузчиках, судах, шахтных поездах, батискафах, беспилотных самолетах и пр. Давайте разберемся, что из себя представляет CAN.
В автомобилях используется несколько CAN; например, в Ford Focus таких шин четыре — три высокоскоростных (500 kbps) для управления мотором, тормозами, приборной панелью и т.п., и одна низкоскоростная (125 kbps) для управления дверьми, фарами, подушками безопасности, аудиосистемой, кондиционером и всем прочим. Подключившись к CAN, можно имитировать сигналы от любых устройств в автомобиле — например, управлять кондиционером с приложения на телефоне или накручивать одометр без движения автомобиля. Подключив к шине Arduino и реле, можно управлять с приборной панели дополнительной парковочной камерой. Даже стартапы, работающие над беспилотными автомобилями, такие как Voyage, начинают создание прототипа с того, что в обычном серийном автомобиле подключаются к CAN и учатся имитировать сигналы от педалей и руля.
Для подключения к CAN в автомобиле обычно возле руля имеется разъем OBD-II (On-Board Diagnostics).
Каждый пакет, передаваемый по шине CAN, состоит из ID передающего устройства (11 либо 29 бит), и до 8 байт передаваемых данных. Трафик, проходящий по шине при включении зажигания, может выглядеть как-то так:
Для реверс-инжиниринга трафика CAN сингапурские исследователи, из доклада которых я взял этот трейс, записали на видео приборную доску подопытного автомобиля, и затем соотнесли изменения на приборной доске с одновременными изменениями в трафике. Определив таким образом CAN ID датчика скорости и формат передаваемых им данных, они научились «подделывать» его пакеты, передавая на спидометр и на тахометр показания, не соответствующие действительности.
Надо понимать, что параллельно с передачей «поддельных» пакетов по шине продолжают передаваться и настоящие сигналы от датчика скорости. Чтобы тахометр показывал сфабрикованные показания, надо отслеживать передачу по шине настоящих показаний, и каким-либо образом их подавлять — например, сразу после обнаружения передачи CAN ID датчика скорости физически «глушить» шину, закорачивая линии данных. Более простой, чисто программный метод подавления настоящих показаний — сразу же после их передачи, пока тахометр еще не успел отреагировать, передавать «поддельные» пакеты. Например, следующий простой шелл-скрипт отслеживает передачу с CAN и сразу же после нее передает сфабрикованный пакет при помощи утилиты cansend из состава все тех же can-utils:
Даже хотя все устройства в автомобиле подключены к CAN, далеко не все их функции управляются через CAN. Например, на CAN в Ford Escape передаются сигналы о степени нажатия педалей газа и тормоза — но используются эти сигналы только блоком ABS, тогда как приводы дроссельной заслонки и тормозов соединены с педалями напрямую, минуя CAN.
C точки зрения безопасности ни о какой уязвимости в докладе сингапурцев речи не идет, потому что для передачи «поддельных» CAN-пакетов нужен физический доступ к шине. Кроме того, пакеты могут быть защищены контрольной суммой — например, в автомобилях Toyota последний байт каждого пакета должен равняться сумме всех предыдущих (по модулю 256). Кроме этого, в Toyota для защиты от нежелательных пакетов используется фильтрация получателем — например, игнорируются повороты руля более чем на 5% от текущего значения.
Как я добавил функции автомобилю по шине CAN, не умея программировать
Цель этой статьи — рассказать о моём опыте модификации автомобиля и экспериментах с шиной CAN.
С чего всё началось
Сначала я решил добавить фронтальную камеру в свой 2017 Chevrolet Cruze. Поскольку у автомобиля уже есть заводская камера заднего вида, то на высоком уровне нужно было выяснить две вещи:
Запуск на экране оказался более сложным, и после некоторого расследования я пришёл к выводу, что машина должна подавать сигнал от камеры заднего вида на экран через какую-то шину данных.
Шина CAN
У Chevrolet две разные шины данных. Первая — это стандартная CAN, быстрая (500 Кбит/с) и надёжная, она используется для критических данных. Вторая — то, что GM называет LAN (GMLAN), более старая и медленная шина (33,3 Кбит/с), которая используется для данных, не связанных с безопасностью.
Мне нужен был способ прослушивать трафик по CAN, то есть снифер. Для этой цели невероятно полезно устройство PCAN.
Peak Can
Peak Can (PCAN) представляет собой USB-устройство, способное перехватывать и передавать сообщения. Благодаря программному обеспечению Pcan View можно начинать работу без особого обучения.
Поскольку камера заднего вида менее важна для безопасности, чем другие компоненты, я предположил, что искомые данные, скорее всего, будут на шине GMLAN.
Самая простая точка доступа — разъём OBD2. Я подключил Peak Can к шине GMLAN, запустил программное обеспечение — и сразу началось прослушивание трафика.
Интеграция
Цель состояла в том, чтобы перепроектировать вызов камеры заднего вида. Для этого с включённым снифером я повёл машину задним ходом, чтобы она включила дисплей, а затем несколько раз попробовал парковаться. На протяжении всего этого процесса я заметил один ID с сообщениями, которые последовательно имитировали мои действия.
Тогда я припарковался и через Pcan View попытался передать то же самое сообщение, которое я видел, когда включался и выключался дисплей. В мгновение ока я уже взаимодействовал с шиной.
Передача сообщения через PCAN
Впрочем, я не планировал постоянно ездить с ноутбуком. Нужен был способ автоматизировать эти функции — и здесь пригодилась Arduino. Возможность напрямую получать питание 12V в сочетании с большим количеством ресурсов и поддержки в интернете сделала этот выбор очевидным.
В дополнение к Arduino для завершения проекта мне понадобилось два компонента: модуль CAN и модуль реле. По сути, Arduino — это мозг, запускающий и выполняющий код. Модуль CAN предоставляет возможность взаимодействовать с шиной данных, а реле обеспечивает питание фронтальной камеры, а также действует как видеомикшер между ней и камерой заднего вида.
Модуль mcp2515 (сверху), Arduino Uno (посередине), модуль реле (снизу)
После добавления и настройки соответствующих библиотек Arduino установил связь с автомобилем.
Прослушивание трафика через Arduino
Поскольку я уже знал, что могу запустить дисплей, то начал думать о том, КАК это сделать. Первоначальная идея состояла в том, чтобы установить на панели специальную кнопку мгновенного вызова, но я начал думать: «А что ЕЩЁ в сети можно использовать в качестве триггера?»
В ходе экспериментов я обнаружил, что по шине GMLAN также передаются сообщения с ID, соответствующим кнопке «Отмена круиз-контроля». Это было идеально, потому что круиз-контроль включается на скоростях более 65 км/ч, когда я буду использовать переднюю камеру, а на скоростях ниже 15 км/ч будет включаться камера заднего вида, чтобы помочь с парковкой, так что они никогда не будут перекрываться. После написания некоторого кода я смог заставить Arduino распознать, когда нажимается кнопка отмены круиз-контроля.
Распознавание однократного нажатия кнопки
Однако я не хотел, чтобы камера активировалась каждый раз, когда я отменяю круиз-контроль, поэтому я решил, что лучший подход — превратить её (по сути) в многофункциональную кнопку. Камера активируется только в том случае, если кнопка «дважды нажата».
После долгого уикенда изучения функции millis и отладки кода я успешно запрограммировал распознавание двойного нажатия.
Распознавание двойного нажатия
И когда я привязал его к своим командам для управления дисплеем, у меня собралась довольно крутая небольшая утилита.
Двойное нажатие + команды
Функциональность
Теперь у меня была возможность включать и выключать дисплей, но оставалась одна проблема — что насчёт камеры заднего вида? Мне нужно было, чтобы они с фронтальной камерой работали вместе, словно их так настроили на заводе.
На блок-схеме я изобразил, как я это представляю.
Я быстро понял, что для такой системы нужно в любой момент времени знать состояние трёх переменных:
В конце концов, я добился успеха!
Теперь я смог реализовать операционную логику, которая контролирует реле.
Управление через реле
На протяжении всего процесса я всё больше узнавал об Arduino и заметил, что версия Nano способна делать всё, что нужно, при этом у неё меньший размер и более низкая цена. Она идеально подходит для постоянной установки в автомобиль. Я разработал модель и распечатал на 3D-принтере корпус для размещения компонентов в качестве компактного блока для установки.
3D корпус
Всё вместе
Наконец настал день, когда я увидел результаты. Хотя нужно ещё повозиться с таймингом, но было приятно видеть, что модуль корректно работает.
Включение/выключение режима парковки, включение/выключение фронтальной камеры, автоматическое переключение на камеру заднего вида и автоматическое переключение обратно
В целом, этот опыт меня многому научил и открыл глаза на возможности интеграции непосредственно с шиной CAN. Довольно удивительно, чего можно достичь соединением по двум проводам.
Принцип работы и диагностика CAN-шины в автомобиле
Появление цифровых шин в автомобилях произошло позднее, чем в них начали широко внедряться электронные блоки. В то время цифровой «выход» им был нужен только для «общения» с диагностическим оборудованием – для этого хватало низкоскоростных последовательных интерфейсов наподобие ISO 9141-2 (K-Line). Однако кажущееся усложнение бортовой электроники с переходом на CAN-архитектуру стало ее упрощением.
Действительно, зачем иметь отдельный датчик скорости, если блок АБС уже имеет информацию о скорости вращения каждого колеса? Достаточно передавать эту информацию на приборную панель и в блок управления двигателем. Для систем безопасности это ещё важнее: так, контроллер подушек безопасности уже становится способен самостоятельно заглушить мотор при столкновении, послав соответствующую команду на ЭБУ двигателя, и обесточить максимум бортовых цепей, передав команду на блок управления питанием. Раньше же приходилось для безопасности применять не надежные меры вроде инерционных выключателей и пиропатронов на клемме аккумулятора (владельцы BMW с его «глюками» уже хорошо знакомы).
Однако на старых принципах реализовать полноценное «общение» блоков управления было невозможно. На порядок выросли объем данных и их важность, то есть потребовалась шина, которая не только способна работать с высокой скоростью и защищена от помех, но и обеспечивает минимальные задержки при передаче. Для движущейся на высокой скорости машины даже миллисекунды уже могут играть критичную роль. Решение, удовлетворяющее таким запросам, уже существовало в промышленности – речь идет о CAN BUS (Controller Area Network).
Суть CAN-шины
Цифровая CAN-шина – это не конкретный физический протокол. Принцип работы CAN-шины, разработанный Bosch еще в восьмидесятых годах, позволяет реализовать ее с любым типом передачи – хоть по проводам, хоть по оптоволокну, хоть по радиоканалу. КАН-шина работает с аппаратной поддержкой приоритетов блоков и возможностью «более важному» перебивать передачу «менее важного».
Для этого введено понятие доминантного и рецессивного битов: упрощенно говоря, протокол CAN позволит любому блоку в нужный момент выйти на связь, остановив передачу данных от менее важных систем простой передачей доминантного бита во время наличия на шине рецессивного. Это происходит чисто физически – например, если «плюс» на проводе означает «единицу» (доминантный бит), а отсутствие сигнала – «ноль» (рецессивный бит), то передача «единицы» однозначно подавит «ноль».
Представьте себе класс в начале урока. Ученики (контроллеры низкого приоритета) спокойно переговариваются между собой. Но, стоит учителю (контроллеру высокого приоритета) громко дать команду «Тишина в классе!», перекрывая шум в классе (доминантный бит подавил рецессивный), как передача данных между контроллерами-учениками прекращается. В отличие от школьного класса, в CAN-шине это правило работает на постоянной основе.
Для чего это нужно? Чтобы важные данные были переданы с минимумом задержек даже ценой того, что маловажные данные не будут переданы на шину (это отличает CAN шину от знакомого всем по компьютерам Ethernet). В случае аварии возможность ЭБУ впрыска получить информацию об этом от контроллера SRS несоизмеримо важнее, чем приборной панели получить очередной пакет данных о скорости движения.
В современных автомобилях уже стало нормой физическое разграничение низкого и высокого приоритетов. В них используются две и даже более физические шины низкой и высокой скорости – обычно это «моторная» CAN-шина и «кузовная», потоки данных между ними не пересекаются. К всем сразу подключен только контроллер CAN-шины, который дает возможность диагностическому сканеру «общаться» со всеми блоками через один разъем.
Например, техническая документация Volkswagen определяет три типа применяемых CAN-шин:
Интересный факт: на Renault Logan второго поколения и его «соплатформенниках» также физически две шины, но вторая соединяет исключительно мультимедийную систему с CAN-контроллером, на второй одновременно присутствуют и ЭБУ двигателя, и контроллер ABS, и подушки безопасности, и ЦЭКБС.
Физически же автомобили с CAN-шиной используют ее в виде витой дифференциальной пары: в ней оба провода служат для передачи единственного сигнала, который определяется как разница напряжений на обоих проводах. Это нужно для простой и надежной помехозащиты. Неэкранированный провод работает, как антенна, то есть источник радиопомех способен навести в нем электродвижущую силу, достаточную для того, чтобы помеха воспринялась контроллерами как реально переданный бит информации.
Но в витой паре на обоих проводах значение ЭДС помехи будет одинаковым, так что разница напряжений останется неизменной. Поэтому, чтобы найти CAN-шину в автомобиле, ищите витую пару проводов – главное не перепутать ее с проводкой датчиков ABS, которые так же для защиты от помех прокладываются внутри машины витой парой.
Диагностический разъем CAN-шины не стали придумывать заново: провода вывели на свободные пины уже стандартизированной в OBD-II колодки, в ней CAN-шина находится на контактах 6 (CAN-H) и 14 (CAN-L).
Поскольку CAN-шин на автомобиле может быть несколько, часто практикуется использование на каждой разных физических уровней сигналов. Вновь для примера обратимся к документации Volkswagen. Так выглядит передача данных в моторной шине:
Когда на шине не передаются данные или передается рецессивный бит, на обоих проводах витой пары вольтметр покажет по 2,5 В относительно «массы» (разница сигналов равна нулю). В момент передачи доминантного бита на проводе CAN-High напряжение поднимается до 3,5 В, в то время как на CAN-Low опускается до полутора. Разница в 2 вольта и означает «единицу».
На шине «Комфорт» все выглядит иначе:
Здесь «ноль» — это, наоборот, 5 вольт разницы, причем напряжение на проводе Low выше, чем на проводе High. «Единица» же – это изменение разности напряжений до 2,2 В.
Проверка CAN-шины на физическом уровне ведется с помощью осциллографа, позволяющего увидеть реальное прохождение сигналов по витой паре: обычным тестером, естественно, «разглядеть» чередование импульсов такой длины невозможно.
«Расшифровка» CAN-шины автомобиля также ведется специализированным прибором – анализатором. Он позволяет выводить пакеты данных с шины в том виде, как они передаются.
Сами понимаете, что диагностика шины CAN на «любительском» уровне без соответствующего оборудования и знаний не имеет смысла, да и банально невозможна. Максимум, что можно сделать «подручными» средствами, чтобы проверить кан-шину – это измерить напряжения и сопротивление на проводах, сравнив их с эталонными для конкретного автомобиля и конкретной шины. Это важно – выше мы специально привели пример того, что даже на одном автомобиле между шинами может быть серьезная разница.
Неисправности
Хотя интерфейс CAN и хорошо защищен от помех, электрические неисправности стали для него серьезной проблемой. Объединение блоков в единую сеть сделало ее уязвимой. КАН-интерфейс на автомобилях стал настоящим кошмаром малоквалифицированных автоэлектриков уже по одной своей особенности: сильные скачки напряжения (например, зимний запуск на сильно разряженном аккумуляторе) способны не только «повесить» ошибку CAN-шины, обнаруживаемую при диагностике, но и заполнить память контроллеров спорадическими ошибками, случайного характера.
В результате на приборной панели загорается целая «гирлянда» индикаторов. И, пока новичок в шоке будет чесать голову: «да что же это такое?», грамотный диагност первым делом поставит нормальный аккумулятор.
Чисто электрические проблемы – это обрывы проводов шины, их замыкания на «массу» или «плюс». Принцип дифференциальной передачи при обрыве любого из проводов или «неправильном» сигнале на нем становится нереализуем. Страшнее всего замыкание провода, поскольку оно «парализует» всю шину.
Представьте себе простую моторную шину в виде провода, на котором «сидят в ряд» несколько блоков – контроллер двигателя, контроллер АБС, приборная панель и диагностический разъем. Обрыв у разъема автомобилю не страшен – все блоки продолжат передавать информацию друг другу в штатном режиме, невозможной станет только диагностика. Если оборвать провод между контроллером АБС и панелью, мы сможем увидеть сканером на шине только ее, ни скорость, ни обороты двигателя она показывать не будет.
А вот при обрыве между ЭБУ двигателя и АБС машина, скорее всего, уже не заведется: блок, не «видя» нужный ему контроллер (информация о скорости учитывается при расчете времени впрыска и угла опережения зажигания), уйдет в аварийный режим.
Если не резать провода, а просто постоянно подать на один из них «плюс» или «массу», автомобиль «уйдет в нокаут», поскольку ни один из блоков не сможет передавать данные другому. Поэтому золотое правило автоэлектрика в переводе на русский цензурный звучит как «не лезь кривыми руками в шину», а ряд автопроизводителей запрещает подключать к CAN-шине несертифицированные дополнительные устройства стороннего производства (например, сигнализации).
Благо подключение CAN-шины сигнализации не разъем в разъем, а врезаясь непосредственно в шину автомобиля, дают «криворукому» установщику возможность перепутать провода местами. Автомобиль после этого не то что откажется заводиться – при наличии контроллера управления бортовыми цепями, распределяющего питание, даже зажигание не факт что включится.