Интерфейс can что это

Digitrode

цифровая электроника вычислительная техника встраиваемые системы

Что такое шина CAN и как она работает

Что такое интерфейс CAN и зачем он нужен

Controller Area Network (CAN) – это последовательная коммуникационная шина, разработанная для надежной и гибкой работы в жестких условиях, особенно для промышленных и автомобильных приложений.

Интерфейс can что это. Смотреть фото Интерфейс can что это. Смотреть картинку Интерфейс can что это. Картинка про Интерфейс can что это. Фото Интерфейс can что это

Первоначально изобретенный Bosch, а затем кодифицированный в стандарт ISO11898-1, интерфейс CAN определяет канал передачи данных и физический уровень модели взаимодействия открытых систем (OSI), обеспечивая низкоуровневое сетевое решение для высокоскоростной связи в автомобилях и промышленном оборудовании. В частности, CAN был разработан для уменьшения кабельной проводки в автомобилях, чтобы отдельные электронные блоки управления (ЭБУ) внутри транспортного средства могли обмениваться данными только по одной паре проводов. На следующем рисунке показаны ЭБУ автомобиля, подключенного к шине CAN.

Интерфейс can что это. Смотреть фото Интерфейс can что это. Смотреть картинку Интерфейс can что это. Картинка про Интерфейс can что это. Фото Интерфейс can что это

Бортовая диагностика (OBD) – это система диагностики и отчетности автомобиля, которая позволяет устранять неполадки с помощью диагностических кодов неисправности (DTC). Когда загорается индикатор «проверьте двигатель» (check engine), техник часто использует портативное устройство для считывания кодов двигателя с автомобиля. На самом низком уровне эти данные передаются по протоколу, который в большинстве случаев является CAN.

DeviceNet – это сетевой протокол высокого уровня, используемый в промышленных приложениях. Это значительно уменьшает проводку, необходимую между системой управления и устройствами ввода/вывода. Вместо того, чтобы подключать каждое устройство к отдельному входу/выходу на модулях ввода/вывода ПЛК, устройства могут быть связаны друг с другом через четырехпроводный разъем и подключены к сетевому сканеру на ПЛК. На самом низком уровне мы находим, что CAN работает в рамках протокола DeviceNet. На следующем рисунке показан ПЛК, сканирующий сеть промышленных устройств, обменивающихся данными через DeviceNet.

Интерфейс can что это. Смотреть фото Интерфейс can что это. Смотреть картинку Интерфейс can что это. Картинка про Интерфейс can что это. Фото Интерфейс can что это

Кадры сообщений CAN

Так как же на самом деле выглядит сообщение CAN? В первоначальном стандарте ISO изложено то, что называется стандартом CAN. Стандарт CAN использует 11-битный идентификатор для разных сообщений, что в сумме составляет 211, т. е. 2048, разных идентификаторов сообщений. CAN был позже изменен; идентификатор был расширен до 29 бит, что дало 229 идентификаторов. Это называется расширенной шиной CAN. CAN использует мультимастерную шину, где все сообщения транслируются по всей сети. Идентификаторы обеспечивают приоритет сообщения для арбитража.

CAN использует дифференциальный сигнал с двумя логическими состояниями, называемыми рецессивным и доминантным. Рецессивный указывает, что дифференциальное напряжение меньше минимального порогового напряжения. Доминантный указывает, что дифференциальное напряжение больше, чем этот минимальный порог. Интересно, что доминантное состояние достигается путем передачи логического уровня «0» на шину, в то время как рецессивное состояние достигается с помощью логического уровня «1». Это инверсия от традиционных высоких и низких логических значений, используемых в большинстве систем. Эти два состояния будут подробно описаны далее. Важно то, что доминантное состояние приоритетнее рецессивного в арбитраже.

Стандартный кадр CAN

Стандартный кадр сообщения CAN состоит из нескольких битовых полей. Они показаны на следующем рисунке.

Интерфейс can что это. Смотреть фото Интерфейс can что это. Смотреть картинку Интерфейс can что это. Картинка про Интерфейс can что это. Фото Интерфейс can что это

Первый бит – это начало кадра (SOF). Этот доминирующий бит представляет начало сообщения CAN. Далее идет 11-битный идентификатор, который устанавливает приоритет сообщения CAN. Чем меньше идентификатор, тем выше приоритет сообщения.

Бит запроса удаленной передачи (RTR) обычно является доминантным, но он становится рецессивным, когда один узел запрашивает данные у другого. Бит расширения идентификатора (IDE) является доминантным, когда отправляется стандартный кадр CAN, а не расширенный. Бит r0 зарезервирован и в настоящее время не используется. Кусок кода длины данных (DLC) показывает, сколько байтов данных содержится в этом сообщении.

Далее идут сами данные, представляющие собой столько байтов, сколько представлено в битах DLC. Циклическая проверка избыточности (CRC) – это 16-битная контрольная сумма для обнаружения ошибок в передаваемых данных. Если сообщение принято правильно, принимающий узел перезаписывает рецессивный бит подтверждения (ACK) доминантным битом. ACK также содержит бит-разделитель для синхронизации. Конец кадра (EOF) означает конец сообщения CAN и имеет ширину 7 бит для обнаружения ошибок вставки битов. Последняя часть сообщения CAN – это межкадровое пространство (IFS), используемое в качестве временной задержки. Эта временная задержка точно соответствует времени, необходимому контроллеру CAN для перемещения полученного сообщения в буфер для дальнейшей обработки.

Расширенный кадр CAN

Расширенный кадр сообщения CAN использует 29-битный идентификатор вместе с несколькими дополнительными битами.

Интерфейс can что это. Смотреть фото Интерфейс can что это. Смотреть картинку Интерфейс can что это. Картинка про Интерфейс can что это. Фото Интерфейс can что это

Расширенное сообщение имеет заменяющий бит удаленного запроса (SRR) после 11-битного идентификатора, который действует как заполнитель для сохранения той же структуры, что и стандартный CAN. На этот раз расширение идентификатора (IDE) должно быть рецессивным, что указывает на то, что за ним следует расширенный идентификатор. Бит RTR находится после 18-битного идентификатора, за ним следует второй резервный бит r1. Остальная часть сообщения остается прежней.

Типы сообщений CAN

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

Стандартный кадр данных CAN использует идентификатор, данные и код длины данных, проверку циклическим избыточным кодом и биты подтверждения. Оба бита RTR и IDE являются доминирующими в кадрах данных. Если рецессивный бит подтверждения на принимающей стороне перезаписан доминантным битом, и передатчик, и приемник распознают это как успешную передачу.

Удаленный кадр CAN выглядит аналогично кадру данных, за исключением того факта, что он не содержит никаких данных. Он отправляется с битом RTR в рецессивном состоянии; это указывает на то, что это удаленный кадр. Удаленные кадры используются для запроса данных от узла.

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

Арбитраж и сигналы на шине CAN

CAN – это протокол CSMA/CD, означающий, что каждый узел на шине может обнаруживать коллизии и откатываться на определенное время перед попыткой повторной передачи. Это обнаружение коллизий достигается посредством арбитража приоритетов на основе идентификаторов сообщений. Прежде чем обсудить арбитраж, давайте подробнее рассмотрим доминантные и рецессивные биты, используемые на шине CAN.

Интересным аспектом шины CAN является то, что она использует инвертированную форму логики с двумя состояниями: доминантным и рецессивным. На рисунке ниже показана упрощенная версия вывода и ввода CAN-трансивера. Поток битов ‘101’ поступает с / идет на CAN-контроллер и / или микроконтроллер. Обратите внимание, что когда контроллер отправляет поток битов, они дополняются и помещаются в линию CANH. Линия CANL всегда является дополнением CANH. Чтобы арбитраж работал, устройство CAN должно отслеживать как то, что оно отправляет, так и то, что в данный момент находится на шине, то есть то, что оно получает.

Интерфейс can что это. Смотреть фото Интерфейс can что это. Смотреть картинку Интерфейс can что это. Картинка про Интерфейс can что это. Фото Интерфейс can что это

Интерфейс can что это. Смотреть фото Интерфейс can что это. Смотреть картинку Интерфейс can что это. Картинка про Интерфейс can что это. Фото Интерфейс can что это

Как упоминалось ранее, чем меньше 11-битный идентификатор, тем выше приоритет сообщения. Каждый бит, который передает узел, он контролирует. Таким образом, узел обнаруживает, что сообщение с более высоким приоритетом размещается на шине. В тот момент, когда узел отправляет рецессивный бит, но обнаруживает доминантный бит на шине, он «отступает». Это называется неразрушающим арбитражем, потому что «победившее» сообщение продолжает передаваться без каких-либо проблем. Обратите внимание, что рецессивная логика «1» проигрывает доминантной логике «0». Это имеет смысл, поскольку более низкое значение идентификатора представляет более высокий приоритет. Чтобы лучше понять, что это значит, взгляните на следующий рисунок, на котором показаны три узла на шине CAN, пытающиеся получить контроль. Важно помнить, что каждый раз, когда отображается рецессивный бит, контроллер отправляет «1», в то время как доминантные биты соответствуют отправке «0».

Узлы 1–3 все посылают поток битов. Этот поток битов представляет идентификаторы сообщений и их приоритет. Для начала все три узла отправляют «1», который представлен на шине CAN как рецессивный бит. Затем каждый узел отправляет «0» или доминанатный бит. Третий бит, помещенный в шину – это еще один бит «1» или рецессивный бит. На этом этапе ни один из узлов не обнаружил никакого конфликта с другим узлом на шине, поэтому они продолжают передавать.

Интерфейс can что это. Смотреть фото Интерфейс can что это. Смотреть картинку Интерфейс can что это. Картинка про Интерфейс can что это. Фото Интерфейс can что это

Для четвертого бита узел 1 отправляет «0» или доминантный бит. Узел 2 передает рецессивный бит, но обнаруживает доминантный бит на шине. Он немедленно «отступает», зная, что в данный момент отправляется сообщение с более высоким приоритетом. Узел 3 продолжает передачу, поскольку он считывает тот же доминантный бит, который он передал. Когда пятый бит помещается в шину, узел 3 затем распознает, что он имеет более низкий приоритет, и прекращает передачу. И узел 2, и узел 3 ждут определенное количество времени, прежде чем пытаться снова. Это показано в правой части рисунка, где выиграл арбитраж узел 3. Как видите, логический бит «0», соответствующий младшему идентификатору сообщения, позволяет проводить арбитраж.

Заключение

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

Источник

Протокол CAN. Описание, формат кадра, контроль ошибок.

Интерфейс can что это. Смотреть фото Интерфейс can что это. Смотреть картинку Интерфейс can что это. Картинка про Интерфейс can что это. Фото Интерфейс can что это

Интерфейс can что это. Смотреть фото Интерфейс can что это. Смотреть картинку Интерфейс can что это. Картинка про Интерфейс can что это. Фото Интерфейс can что это

Приветствую всех на нашем сайте! Сегодняшняя статья будет целиком и полностью посвящена обзору протокола CAN. А в одной из следующих статей мы реализуем обмен данными по CAN на практике. Но не буду забегать вперед…

CAN (Controller Area Network) — это промышленный стандарт, позволяющий осуществить объединение в единую сеть различных узлов, механизмов, датчиков и т. п. Протокол является широковещательным, это значит, что все устройства в CAN-сети принимают все передаваемые по шине сигналы. Режим передачи данных — последовательный, при этом байты сообщений формируют кадры определенного вида. Структуру этих кадров данных мы также обязательно разберем в этой статье.

Основные характеристики протокола CAN:

Первоначально стандарт был разработан для автомобильной промышленности. И занималась этим компания Bosch в 1980-х годах. Основная идея заключалась в том, чтобы уйти от использования огромного количества проводов, соединяющих многочисленные узлы автомобиля. И протокол CAN позволил этого достичь! С тех пор CAN является основным механизмом соединения устройств, узлов и датчиков автомобиля между собой. Помимо этого, интерфейс CAN активно используется в промышленной автоматизации, а также в системах «умного дома».

Давайте перейдем к физическому уровню протокола. В интернете можно найти много противоречивой информации на этот счет, но истина тут одна 🙂 Стандарт CAN компании Bosch не регламентирует физический уровень передачи данных, поэтому могут использоваться абсолютно разные варианты, например, оптоволокно. На практике же чаще всего используется соединение посредством двухпроводной дифференциальной линии (витой пары). Ориентировочная максимальная длина линии для разных скоростей передачи данных составляет:

СкоростьДлина линии
1 Мбит/с50 м
500 кбит/с100 м
125 кбит/с500 м
10 кбит/с5 км

Важным условием работоспособности шины является наличие на концах витой пары согласующих резисторов, которые также называют терминаторами, с сопротивлением 120 Ом:

Интерфейс can что это. Смотреть фото Интерфейс can что это. Смотреть картинку Интерфейс can что это. Картинка про Интерфейс can что это. Фото Интерфейс can что это

В отличие от многих других протоколов в CAN не рекомендуется описание битов данных как «логического нуля» и «логической единицы». Здесь используются понятия доминантный и рецессивный бит.

Важнейшим свойством является то, что если один из узлов сети хочет выставить на линии рецессивный бит, а другой доминантный, то в итоге на линии окажется доминантный бит. В общем-то отсюда и следует его название, от слова «доминировать» 🙂 Очень хорошо этот процесс иллюстрирует пример с оптоволоконной линией. Как вы помните, в оптоволокне для передачи данных используется «свет», либо он есть (единица), либо его нет (ноль). При использовании в CAN-сети «свет» — доминантный бит, соответственно, отсутствие света или «темнота» — рецессивный. Вспоминаем про важнейшее свойство передачи данных в сети…

Пусть один узел выставляет на линии рецессивный бит, то есть «темноту». Второй узел, напротив, выставляет доминантный бит — «свет». В итоге на линии будет «свет», то есть доминантный бит, что в точности соответствует требованиям сети!

Интерфейс can что это. Смотреть фото Интерфейс can что это. Смотреть картинку Интерфейс can что это. Картинка про Интерфейс can что это. Фото Интерфейс can что это

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

Это свойство используется для арбитража в сети CAN. Пусть несколько устройств хотят передать данные. Каждый из этих передатчиков сравнивает значение, которое он передает, со значением, фактически присутствующим на линии. В том случае, если передаваемое значение совпадает со считанным, устройство продолжает высылать свои данные. Если значения совпали у нескольких устройств, то все они продолжают передачу как ни в чем не бывало.

Продолжается это до того момента, когда значения станут различными. Если несколько устройств хотят передать рецессивный бит, а одно — доминантный, то в соответствии с правилом, которое мы обсудили выше, на линии окажется доминантный бит. В таком случае отправленные и считанные значения для устройств, пытающихся выдать на линию рецессивное состояние, не совпадут. В этом случае они должны прекратить передачу. А тот узел, который в этот момент передавал доминантный бит, продолжит свою работу. Доминирование в чистом виде 🙂

Сигналы, которые передаются по витой паре, получили название CAN_H и CAN_L (High и Low). Доминантное состояние соответствует случаю, когда потенциал сигнала CAN_H выше потенциала CAN_L. Рецессивное — когда потенциалы равны (разница потенциалов не превышает допустимого отклонения, 0.5 В).

С этим вроде бы разобрались, давайте двигаться дальше!

Пришло время определить, как биты объединяются в кадры. Протокол CAN определяет 4 вида кадров:

Для кадра данных возможны два варианта — базовый формат и расширенный. Вот так выглядит структура базового формата:

ПолеДлинаОписание
Начало кадра (SOF)1 битНачало передачи кадра
Идентификатор (ID)11 битИдентификатор сообщения
Запрос на передачу (RTR)1 битДоминантный бит
Бит расширения идентификатора (IDE)1 битБит определяет длину идентификатора, для базового формата — доминантный бит
Зарезервированный бит1 битЗарезервировано
Длина данных (DLC)4 битаКоличество байт данных
Данные0 — 8 байтДанные
Контрольная сумма (CRC)15 битКонтрольная сумма
Разграничитель контрольной суммы1 битРецессивный бит
Промежуток подтверждения (ACK)1 битДля приемника — доминантный бит, для передатчика — рецессивный
Разграничитель подтверждения1 битРецессивный бит
Конец кадра (EOF)7 битВсе биты рецессивные

А это структура расширенного:

ПолеДлинаОписание
Начало кадра (SOF)1 битНачало передачи кадра
Идентификатор A (ID A)11 битПервая часть идентификатора
Подмена запроса на передачу (SRR)1 битРецессивный бит
Бит расширения идентификатора (IDE)1 битБит определяет длину идентификатора, для расширенного формата — рецессивный бит
Идентификатор B (ID B)18 битВторая часть идентификатора
Запрос на передачу (RTR)1 битДоминантный бит
Зарезервированные биты2 битаЗарезервировано
Длина данных (DLC)4 битаКоличество байт данных
Данные0 — 8 байтДанные
Контрольная сумма (CRC)15 битКонтрольная сумма
Разграничитель контрольной суммы1 битРецессивный бит
Промежуток подтверждения (ACK)1 битДля приемника — доминантный бит, для передатчика — рецессивный
Разграничитель подтверждения1 битРецессивный бит
Конец кадра (EOF)7 битВсе биты рецессивные

Результирующий идентификатор получается в результате объединения полей «Идентификатор A» и «Идентификатор B«.

Кадр удаленного запроса (remote frame) представляет из себя кадр данных, описанный выше, но без поля данных и с рецессивным битом RTR. Он используется в случае, когда один узел хочет запросить данные у другого узла.

Кадр ошибки (error frame) передает устройство, обнаружившее ошибку в сети. Фрейм ошибки имеет наивысший приоритет и принимается всеми устройствами сети в обязательном порядке.

Кадр перегрузки (overload frame) используется очень редко… Его идея и назначение заключается в том, что с его помощью устройство, которое в данный момент не может принять данные, запрашивает повторную передачу этих же данных.

А давайте вернемся чуть назад, к арбитражу данных, и рассмотрим, что это может означать на практике! Итак, несколько устройств начинают передачу сообщения, а точнее кадра данных. Передается бит начала кадра и затем начинается передача идентификатора сообщения. Как вы помните, приоритет будет у того устройства, которое будет передавать доминантный бит, в тот момент, когда все остальные будут передавать рецессивный. То есть чем «позже» среди битов идентификатора появится «рецессивный бит», тем выше будет его приоритет! Другими словами: более высокий приоритет при использовании интерфейса CAN имеют сообщения с меньшим значением идентификатора.

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

Итак, что у нас на очереди теперь? Конечно же контроль ошибок — важнейший аспект работы протокола CAN! Стандарт предусматривает несколько механизмов контроля ошибок.

Благодаря всем этим механизмам, вероятность необнаружения ошибки является очень низкой, что, конечно же, не может не радовать 🙂

Кроме того, если один из узлов обнаружил ошибку в сообщении, он сообщает об этом в сеть CAN при помощи фрейма ошибки. А поскольку сеть у нас широковещательная, то о возникновении ошибки становится известно всем участникам коммуникации. И если в сообщении была обнаружена ошибка, его передача будет осуществлена еще раз.

И на этом еще не все! Каждый узел может находиться в одном из трех состояний:

Протокол CAN предусматривает, что изначально, после старта, узел находится в первом из этих состояний — Error Active. Каждое устройство имеет два счетчика ошибок:

Существуют определенные правила обслуживания этих счетчиков, которые сводятся к следующему. Передатчик, обнаруживший ошибку, увеличивает свой счетчик ошибок передачи быстрее, чем приемники увеличивают свои счетчики ошибок приема. Это связано с предположением, что при ошибке, вероятность того, что сбой произошел именно в передатчике, а не в приемнике, достаточно велика. На практике ошибка передачи увеличивает соответствующий счетчик на 8, а ошибка приема лишь на 1. При приеме или передаче корректного сообщения как счетчик ошибок передачи, так и счетчики ошибок приема уменьшаются на 1.

Если значение любого из этих двух счетчиков узла превысит значение 127, то узел переходит в состояние Error Passive. А если величина одного из счетчиков превысит 255, то узел перейдет в состояние Bus Off.

Разница между этими состояниями заключается в действиях узла при диагностировании ошибки:

Как видите, протокол CAN крайне интересен для изучения, надежен, безопасен, и удобен в использовании 🙂

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

Источник

Управление автомобилем по CAN

Введение

Беспилотный автомобиль StarLine на платформе Lexus RX 450h — научно-исследовательский проект, стартовавший в 2018 году. Проект открыт для амбициозных специалистов из Open Source Community. Мы предлагаем всем желающим поучаствовать в процессе разработки на уровне кода, опробовать свои алгоритмы на реальном автомобиле, оснащенном дорогостоящим оборудованием. Для управления автомобилем было решено использовать Apollo, открытый фреймворк. Для работы Apollo нам необходимо было подключить набор модулей. Эти модули помогают программе получать информацию об автомобиле и управлять им по заданным алгоритмам.

К таким модулям относятся:

Теоретическая часть

Что такое CAN-шина

В современных автомобилях управление всеми системами взяли на себя электронные блоки (Рис. 1.). Электронные блоки — это специализированные компьютеры, каждый из которых имеет все необходимые интерфейсы для интеграции с автомобилем. С помощью цифровых интерфейсов связи, блоки объединяются в сеть для обмена информацией друг с другом. Самые распространенные цифровые интерфейсы в автомобилях — CAN, LIN, FLEXRay. Из них наибольшее распространение получил именно CAN.

CAN (Controller Area Network) шина — это промышленный стандарт сети. В 1986 году этот стандарт разработали в компании Bosch. А первым автомобилем с CAN-шиной стал Mercedes-Benz W140, выпущенный в 1991 году. Стандарт разрабатывался для возможности устройствам общаться друг с другом без хоста. Обмен информацией осуществляется с помощью специальных сообщений, которые состоят из полей ID, длины сообщения и данных. Каждый блок имеет свой набор ID. При этом приоритет на шине имеет сообщение с меньшим ID. Поле данных может нести информацию, например, о состоянии систем и датчиков, команды управления механизмами и т.д.

Интерфейс can что это. Смотреть фото Интерфейс can что это. Смотреть картинку Интерфейс can что это. Картинка про Интерфейс can что это. Фото Интерфейс can что это
Рис. 1. Шина CAN автомобиля.

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

Интерфейс can что это. Смотреть фото Интерфейс can что это. Смотреть картинку Интерфейс can что это. Картинка про Интерфейс can что это. Фото Интерфейс can что это
Рис. 2. Физическое представление сигнала в CAN шине

Посредством CAN шины можно получать информацию о состоянии различных датчиков и системах автомобиля. Также по CAN можно управлять узлами автомобиля. Именно эти возможности мы и используем для своего проекта.

Мы выбрали Lexus RX, потому что знали, что сможем управлять всеми необходимыми узлами по CAN. Так как самое сложное при исследовании автомобиля — это закрытые протоколы. Поэтому одной из причин выбора именно этой модели авто стало наличие описания части протокола CAN-шины в opensource-проекте Openpilot.

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

Электроусилитель руля

Электроусилитель руля EPS (Electric Power Steering) — система, предназначенная снизить усилие на руль при повороте (Рис. 3). Приставка «электро» говорит о типе системы — электрическая. Управление рулем с этой системой становится комфортным, водитель поворачивает руль в нужном направлении, а электродвигатель помогает довернуть его до необходимого угла.

Электроусилитель устанавливается на рулевой вал автомобиля, части которого соединены между собой торсионным валом. На торсионный вал устанавливается датчик величины крутящего момента (Torque Sensor). При вращении руля происходит скручивание торсионного вала, которое регистрируется датчиком момента. Данные, полученные от датчика момента, датчиков скорости и оборотов коленвала, поступают в электронный блок управления ECU. А ECU, в свою очередь, уже вычисляет необходимое компенсационное усилие и подает команду на электродвигатель усилителя.

Интерфейс can что это. Смотреть фото Интерфейс can что это. Смотреть картинку Интерфейс can что это. Картинка про Интерфейс can что это. Фото Интерфейс can что это
Рис. 3. Схематичное изображение системы электроусилителя руля

Видео: cистема LKA рулит автомобилем с помощью системы EPS.

Электронная педаль газа

Дроссельная заслонка — это механизм регулировки количества топливной смеси, которая попадет в двигатель. Чем больше смеси попадет, тем быстрее едет автомобиль.
Электронная педаль газа — это система, которая задействует работу нескольких электронных узлов. Сигнал о положении педали, при ее нажатии, поступает в блок управления двигателем ECM (Engine Control Module). ECM, на основе этого сигнала, рассчитывает необходимое количество топлива, которое нужно подать в двигатель. В зависимости от необходимого количества топлива, ECM регулирует угол открытия дроссельной заслонки.

Интерфейс can что это. Смотреть фото Интерфейс can что это. Смотреть картинку Интерфейс can что это. Картинка про Интерфейс can что это. Фото Интерфейс can что это
Рис. 4. Система электронной педали газа.

Видео: Для работы круиз-контроля используется управление электронной педалью газа.

Электронные системы помощи водителю

Мы купили автомобиль, который оборудован множеством цифровых блоков и систем помощи водителю (ADAS). В нашем проекте мы используем LKA, ACC и PCS.

LKA (Lane Keep Assist) — это система удержания в полосе, которая состоит из фронтальной камеры и вычислительного блока. LKA удерживает автомобиль в полосе движения, когда водитель, например, отвлекся. Алгоритмы в вычислительном блоке получают данные от камеры и на их основе принимают решение о состоянии автомобиля на дороге. Система способна понимать, что автомобиль неконтролируемо движется к правой или левой полосе. В таких случаях подается звуковой сигнал для привлечения внимания водителя. При пересечении полосы система сама скорректирует угол поворота колес так, чтобы автомобиль остался в полосе движения. Система должна вмешиваться только в том случае, если осознает, что маневр между полосами движения не был вызван действием водителя.

ACC (Adaptive Cruise Control) — система адаптивного круиз-контроля, который позволяет выставить заданную скорость следования. Автомобиль сам ускоряется и притормаживает для поддержания нужной скорости, при этом водитель может убрать ногу с педалей газа и тормоза. Этот режим удобно использовать при езде по скоростным магистралям и автострадам. Адаптивный круиз контроль способен видеть препятствия впереди автомобиля и притормаживать для избежания столкновения с ними. Если впереди автомобиля едет другое транспортное средство с меньшей скоростью, ACC сбавит скорость и будет следовать за ним. При обнаружении статичного объекта, ACC сбавит скорость до полной остановки. Для обнаружения объектов перед автомобилем такая система использует радар с миллиметровым диапазоном длин волн. Обычно такие радары работают на частоте 24-72 ГГц и способны уверенно видеть объекты на расстоянии до 300 метров. Радар обычно установлен за передним значком на решетке радиатора.

PCS (Pre-Collision System) — система предотвращения столкновения. Система призвана предотвратить столкновение с автомобилем, который движется впереди. При неизбежности столкновения, система минимизирует урон от столкновения. Здесь так же используются радар для оценки расстояния до объекта и фронтальная камера для его распознавания. Фронт PCS прогнозирует вероятность столкновения на основе скорости автомобиля, расстояния до объекта и его скорости. Обычно у системы есть два этапа срабатывания. Первый этап — система звуком и индикацией на приборной панели оповещает об опасности водителя. Второй этап — активируется экстренное торможение с помощью системы ABS, и включаются преднатяжители ремней безопасности.

Практическая часть

Управление рулем

Первое, что захотелось сделать нашей команде, — это научиться рулить. Рулем в автомобиле могут управлять две системы: парковочный ассистент IPAS (Intelligent Park Assist) и LKA.

IPAS позволяет задавать напрямую угол поворота рулевого колеса в градусах. Так как в нашем автомобиле нет данной системы, проверить и освоить рулевое управление таким способом нельзя.

Поэтому мы изучили электрические схемы автомобиля и поняли, какие CAN-шины могут быть полезны. Мы подключили анализатор CAN-шины. Лог содержит файл записей сообщений в шине в хронологической последовательности. Наша задача была найти команды управления электроусилителем руля EPS (Electric Power Steering). Мы сняли лог поворота рулевого колеса из стороны в сторону, в логе смогли найти показания угла поворота и скорость вращения рулевого колеса. Ниже пример изменения данных в шине CAN. Интересующие нас данные выделены маркером.

Интерфейс can что это. Смотреть фото Интерфейс can что это. Смотреть картинку Интерфейс can что это. Картинка про Интерфейс can что это. Фото Интерфейс can что это
Поворот руля влево на 360 градусов

Интерфейс can что это. Смотреть фото Интерфейс can что это. Смотреть картинку Интерфейс can что это. Картинка про Интерфейс can что это. Фото Интерфейс can что это
Поворот руля вправо на 270 градусов

Следующим этапом мы исследовали систему удержания в полосе. Для этого мы выехали на тихую улицу и записали логи обмена между блоком удержания в полосе и DSU (Driving Support ECU). С помощью анализатора шины CAN нам удалось вычислить сообщения от системы LKA. На рисунке 6 изображена команда управления EPS.

Интерфейс can что это. Смотреть фото Интерфейс can что это. Смотреть картинку Интерфейс can что это. Картинка про Интерфейс can что это. Фото Интерфейс can что это
Рис. 5. Команда управления рулем с помощью системы LKA

LKA управляет рулем путем задания значения момента на валу (STEER_TORQUE_CMD) рулевого колеса. Команду принимает модуль EPS. Каждое сообщение содержит в заголовке значение счетчика (COUNTER), которое инкрементируется при каждой отправке. Поле LKA_STATE содержит информацию о состоянии LKA. Для захвата управления необходимо выставлять бит STEER_REQUEST.

Сообщения, которые отвечают за работу важных систем авто, защищаются контрольной суммой (CHECKSUM) для минимизации рисков ложного срабатывания. Автомобиль проигнорирует такую команду, если сообщение содержит некорректную контрольную сумму или значение счетчика. Это встроенная производителем защита от вмешательств сторонних систем и помех в линии связи.

На графике (Рис. 6.) представлена диаграмма работы LKA. Torque Sensor — значение с датчика момента на торсионном валу. Torque Cmd — команда от LKA для управления рулем. Из картинки видно, как происходит подруливание LKA для удержания автомобиля в полосе. При переходе через ноль меняется направление поворота руля. Т.е. отрицательное значение сигнала говорит о повороте вправо, положительное — влево. Удержание команды в нуле говорит об отсутствии управления со стороны LKA. При вмешательстве водителя, система перестает выдавать управление. О вмешательстве водителя LKA узнает с помощью второго датчика момента на валу со стороны рулевого колеса.

Интерфейс can что это. Смотреть фото Интерфейс can что это. Смотреть картинку Интерфейс can что это. Картинка про Интерфейс can что это. Фото Интерфейс can что это
Рис. 6. График работы системы LKA

Нам предстояло проверить работу команды управления рулем. С помощью модуля StarLine Сигма 10 мы подготовили прошивку для проверки управления. StarLine Сигма 10 должен выдавать в CAN-шину команды на поворот руля влево или вправо. На тот момент у нас не было графического интерфейса для управления модулем, поэтому пришлось использовать штатные средства автомобиля. Мы нашли в CAN-шине статус положения рычага круиз-контроля и запрограммировали модуль таким образом, что верхнее положение рычага приводило к повороту руля вправо, нижнее положение — к повороту влево (Рис. 7).

Интерфейс can что это. Смотреть фото Интерфейс can что это. Смотреть картинку Интерфейс can что это. Картинка про Интерфейс can что это. Фото Интерфейс can что это
Рис. 7. Первые попытки рулить

На видео видно, что управление осуществляется короткими секциями. Это возникает по нескольким причинам.

Первая из причин — это отсутствие обратной связи. Если расхождение между сигналом Torque Cmd и Torque Sensor превышает определенное значение Δ, система автоматически перестает воспринимать команды (Рис. 8). Мы настроили алгоритм на корректировку выдаваемой команды (Torque CMD) в зависимости от значения момента на валу (Torque Sensor).

Интерфейс can что это. Смотреть фото Интерфейс can что это. Смотреть картинку Интерфейс can что это. Картинка про Интерфейс can что это. Фото Интерфейс can что это
Рис. 8. Расхождение сигнала приводит к ошибке работы системы

Следующее ограничение связано с системой защиты встроенной в EPS. Система EPS не позволяет командами от LKA рулить в широком диапазоне. Что вполне логично, т.к. при езде по дороге резкое маневрирование не безопасно. Таким образом, при превышении порогового значения момента на валу, система LKA выдает ошибку и отключается (Рис. 9).

Интерфейс can что это. Смотреть фото Интерфейс can что это. Смотреть картинку Интерфейс can что это. Картинка про Интерфейс can что это. Фото Интерфейс can что это
Рис. 9. Превышение порогового значения регулировки момента на валу

Независимо от того, активирована система LKA или нет, сообщения с командами от нее присутствуют в шине постоянно. Мы посылаем модулю EPS команду повернуть колеса с конкретным усилием влево или вправо. А в это время LKA перебивает наши посылки «пустыми» сообщениями. После нашей команды со значением момента, приходит штатная с нулевым (Рис. 10).

Интерфейс can что это. Смотреть фото Интерфейс can что это. Смотреть картинку Интерфейс can что это. Картинка про Интерфейс can что это. Фото Интерфейс can что это
Рис. 10. Штатные сообщения приходят с нулевыми значениями момента и перебивают наше управление

Тогда мы, с помощью модуля StarLine Сигма 10, смогли фильтровать весь трафик от LKA и блокировать сообщения с ID 2E4, когда нам это было нужно. Это решило проблему, а нам удалось получить плавное управления рулем (Рис. 11).

Интерфейс can что это. Смотреть фото Интерфейс can что это. Смотреть картинку Интерфейс can что это. Картинка про Интерфейс can что это. Фото Интерфейс can что это
Рис. 11. Плавная регулировка поворота руля без ошибок

Управление газом

Система адаптивного круиз-контроля ACC управляет ускорением и торможением программно по CAN-шине. Блок управления двигателем ECU принимает команды DSU, если необходимо ускориться — активирует электронную педаль газа. Для торможения автомобиля используется рекуперативное торможение. При этом на торможение и ускорение используется одна команда, отличаются только значения.

Команда управления ускорением или замедлением представлена на рисунке 12. Она состоит из величины ускорения ACCEL_CMD, пары служебных бит и контрольной сумма Checksum. Для ускорения автомобилем значение ACCEL_CMD положительное, для замедления — отрицательное. Ускорение задается в диапазоне от 0 до 3 м/с^2, замедление аналогично, но со знаком минус. Для отправки данных в шину необходимо пересчитать желаемое ускорение или замедление с коэффициентом 0,001. Например, для ускорения 1 м/с^2, ACCEL_CMD = 1000 (0x03E8).

Интерфейс can что это. Смотреть фото Интерфейс can что это. Смотреть картинку Интерфейс can что это. Картинка про Интерфейс can что это. Фото Интерфейс can что это
Рис. 12. Команда управления ускорения/замедления автомобиля

Мы сняли логи со штатной системы ACC и проанализировали команды. Сравнили с имеющимся у нас описанием команд и приступили к тестированию.

Интерфейс can что это. Смотреть фото Интерфейс can что это. Смотреть картинку Интерфейс can что это. Картинка про Интерфейс can что это. Фото Интерфейс can что это
Рис. 13. Лог управления ускорением/замедлением системы адаптивного круиз-контроля ACC (выделено маркером)

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

Интерфейс can что это. Смотреть фото Интерфейс can что это. Смотреть картинку Интерфейс can что это. Картинка про Интерфейс can что это. Фото Интерфейс can что это
Рис. 14. Активация круиз контроля происходит при наличии впереди другого траснпортного средства

С помощью модуля StarLine Сигма 10 посылаем команду ускорения, и автомобиль начинает набирать скорость. К этому моменту мы подключили графический интерфейс для управления модулем StarLine Сигма 10. Теперь мы управляем рулем, ускорением и торможением с помощью кнопок в приложении.

Команды работали до тех пор, пока не потеряли автомобиль впереди. Система круиз-контроля отключилась, а следовательно, и команды ускорения перестали работать.
Мы приступили к исследованию возможности использовать команды без активного круиз-контроля. Пришлось много времени потратить на анализ данных в шине CAN, чтобы понять как создать условия для работы команд. Нас интересовало, в первую очередь, какой блок блокирует выполнение команд ACC на ускорение или замедление. Пришлось изучить какие ID идут от DSU, LKA, радара и камеры, подсовывая липовые данные различных датчиков.

Решение пришло спустя 3 недели. К тому времени мы представляли как происходит взаимодействие блоков автомобиля, провели исследование трафика сообщений и выделили группы сообщений, посылаемых каждым блоком. За работу адаптивного круиз-контроля ACC отвечает блок Driving Support ECU (DSU). DSU выдает команды на ускорение и замедление автомобиля, и именно этот блок получает данные от радара миллиметрового диапазона. Радар сообщает DSU на каком расстоянии от машины движется объект, с какой относительной скоростью и определяет его положение по горизонтали (левее, правее или по центру).

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

a) Интерфейс can что это. Смотреть фото Интерфейс can что это. Смотреть картинку Интерфейс can что это. Картинка про Интерфейс can что это. Фото Интерфейс can что этоб)Интерфейс can что это. Смотреть фото Интерфейс can что это. Смотреть картинку Интерфейс can что это. Картинка про Интерфейс can что это. Фото Интерфейс can что это
Рис. 15. Активация круиза: a) попытка активировать без подмены данных радара; б) активация при подмене данных от радара.

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

Как мы уже узнали, команда на ускорение и замедление одна. Поэтому тут же проверили и замедление. Поехали на на скорости с активным круиз-контролем, запустили команду на торможение, и авто сразу же замедлилось.

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

Что еще мы используем

Для создания беспилотника необходимо управление вспомогательными системами: поворотниками, стоп-сигналами, аварийной сигнализацией, клаксоном и пр. Всем этим так же можно управлять по CAN шине.

Оборудование и ПО

Для работ с автомобилем сегодня мы используем набор различного оборудования:

Беспилотный автомобиль StarLine — это открытая площадка для объединения лучших инженерных умов России и мира с целью создания прогрессивных технологий беспилотного вождения, которые сделают наше будущее безопасным и комфортным.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *