Аномальная скорость обновления шины can

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

Аномальная скорость обновления шины can

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

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

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

  • очень высокая надежность и защищенность
  • каждое сообщение имеет свой собственный приоритет
  • реализован механизм обнаружения ошибок
  • автоматическая повторная отправка сообщений, которые были доставлены с ошибкой
  • уже упомянутый широковещательный характер передачи данных
  • возможность присутствия нескольких ведущих (master) устройств в одной сети
  • широкий диапазон скоростей работы
  • высокая устойчивость интерфейса к помехам
  • кроме того, есть механизм обнаружения «сбойных» узлов с последующим удалением таких узлов из сети.

Видео: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_H и CAN_L (High и Low). Доминантное состояние соответствует случаю, когда потенциал сигнала CAN_H выше потенциала CAN_L. Рецессивное — когда потенциалы равны (разница потенциалов не превышает допустимого отклонения, 0.5 В).

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

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

Видео:Экспресс диагностика CAN шины на автомобиле. №21Скачать

Экспресс диагностика CAN шины на автомобиле. №21
  • Кадр данных (data frame)
  • Кадр удаленного запроса (remote frame)
  • Кадр перегрузки (overload frame)
  • Кадр ошибки (error frame)

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

ПолеДлинаОписание
Начало кадра (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! Стандарт предусматривает несколько механизмов контроля ошибок.

  • Во-первых, это контроль передачи битов — уровень сигнала в сети сравнивается с передаваемым для каждого бита.
  • Второй механизм заключается в использовании дополнительных битов (stuffing bit). После передачи любых пяти одинаковых битов автоматически добавляется передача бита противоположного значения. Таким образом, при передаче шести одинаковых битов диагностируется ошибка stuffing’а. Этот механизм используется для кодирования всех полей фреймов данных и запроса. Исключением являются только поля промежутка подтверждения, разграничителя контрольной суммы и EOF.
  • Стандартная процедура проверки контрольной суммы. Передатчик вычисляет контрольную сумму для текущего кадра и передает ее в линию. В свою очередь, приемник также вычисляет контрольную сумму для принимаемых данных и сравнивает ее с тем значением, которое было отправлено передатчиком. В случае не совпадения значений диагностируется ошибка CRC.
  • Также выполняется контроль битов фрейма, которые должны иметь заранее определенное значение. В случае, если реальное значение не совпадает с тем, которое ожидается, возникает ошибка.

Читайте также: Цветные шипы для шин

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

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

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

Видео:Индекс скорости и Индекс нагрузки - что это такое?Скачать

Индекс скорости и Индекс нагрузки - что это такое?
  • Error Active
  • Error Passive
  • Bus Off

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

  • Счетчик ошибок передачи
  • Счетчик ошибок приема

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

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

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

  • Узел в состоянии Error Active при обнаружении ошибки передает в шину Active Error Flags — 6 доминантных бит. Поскольку биты доминантные, то это сообщение нарушает обычную работу шины и поэтому все устройства сети также фиксируют возникновение ошибки.
  • Узел в состоянии Error Passive при обнаружении ошибки передает в шину Passive Error Flags — 6 рецессивных бит, которые игнорируются всеми другими участниками обмена. Поэтому увеличивается только величина счетчика ошибок одного конкретного узла.
  • И, наконец, узел в состоянии Bus Off ничего не передает в сеть — ни фреймы ошибок, ни фреймы данных, никакие другие.

Видео:CANbus Gateway mode. Режим CAN шлюза на CAN-HackerСкачать

CANbus Gateway mode. Режим CAN шлюза на CAN-Hacker

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

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

  • Свежие записи
    • Нужно ли менять пружины при замене амортизаторов
    • Скрипят амортизаторы на машине что делать
    • Из чего состоит стойка амортизатора передняя
    • Чем стянуть пружину амортизатора без стяжек
    • Для чего нужны амортизаторы в автомобиле


    🔍 Видео

    Шина CAN. Часть 1. Разбираемся как работает CAN bus, разберем кадр данных до "костей".Скачать

    Шина CAN. Часть 1. Разбираемся как работает CAN bus, разберем кадр данных до "костей".

    Обновления CarBusAnalyzer. CANDB\OpenDBC, CAN-FD...Скачать

    Обновления CarBusAnalyzer. CANDB\\OpenDBC, CAN-FD...

    #8. Как найти параметр пробега в CAN-шине?Скачать

    #8. Как найти параметр пробега в CAN-шине?

    STM32 CAN шина. Часть 1. Настройка и странности HALСкачать

    STM32 CAN шина. Часть 1. Настройка и странности HAL

    Анализатор шины LIN. Обзор обновленной версии. LIN bus analyzer reviewСкачать

    Анализатор шины LIN. Обзор обновленной версии. LIN bus analyzer review

    Как понять, когда протектор износился и шины пора менятьСкачать

    Как понять, когда протектор износился и шины пора менять

    Простая проверка CAN шины. Сканер не видит автомобиль через OBD2. Как правильно выбрать изоленту.Скачать

    Простая проверка CAN шины. Сканер не видит автомобиль через OBD2. Как правильно выбрать изоленту.

    Вебинар: Как найти любые данные из CAN-шины любого автомобиля?Скачать

    Вебинар: Как найти любые данные из CAN-шины любого автомобиля?

    Компьютерная диагностика авто. K-линия и CAN шинаСкачать

    Компьютерная диагностика авто. K-линия и CAN шина

    Как проверить CAN шину Используем симулятор ElectudeСкачать

    Как проверить CAN шину  Используем симулятор Electude

    Новый интерфейс CAN-FDСкачать

    Новый интерфейс CAN-FD

    Что означает маркировка на шинах! Значение цифр и букв на резине.Скачать

    Что означает маркировка на шинах! Значение цифр и букв на резине.

    Вот вам и китайская резинаСкачать

    Вот вам и китайская резина

    Контролька на Arduino, с функциями осциллографа, поиска CAN шины, частотомера, вольтметра, прозвонкиСкачать

    Контролька на Arduino, с функциями осциллографа, поиска CAN шины, частотомера, вольтметра, прозвонки
Поделиться или сохранить к себе:
Технарь знаток