Интерфейс шины данных can ошибка

Привет, народ. Ничего не происходит, машина ездит, собираюсь в отпуск. все тихо да спокойно. Но дурная голова рукам то покоя не дает, поэтому прикупил я у дядюшки Ляо ELM327, да поставил на телефон Carista 3.6.5. Проверил машину на ошибки и вот… вылазят какие то. Может знает кто, что это. Чет не гуглится. Torque Pro ошибок не видит. Привожу фрагмент кода:

Интерфейс шины данных CAN
Номер детали: 6C0909901
Кодировка: 01000038200A640000000000000000000001050000000000000000000000 (hex)
Компонент: GW MQB A0
Коды ошибок:
67072 Специальный код производителя

Блок центральной электроники (ВСМ)
Номер детали: 6C0937089C
Кодировка: 0C00084040140050408040004001070000004800110A3500000000000000 (hex)
Компонент: BCM PQ26 Hi4R
Коды ошибок:
919560 Специальный код производителя

Ну и раз уж я вас тут собрал, кто знает, к такому БЦМ можно приявязать радио ключи? Тут автор очень вроде норм расписал, кому цветы, а кому мороженое, а все равно не вкурю. Мой БЦМ никуда не тулится. Или я ошибаюсь?

Пробег: 72 365 км

Еще раз о диагностике CAN-шины

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

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

Конструктивно шина представляет собой неэкранированную витую пару. Провода шины называются CAN High и CAN Low.

Шина может находиться в двух состояниях:

  1. Рецессивное состояние, или логическая единица. Оба провода в этой ситуации имеют практически одинаковый потенциал: и на проводе CAN High, и на проводе CAN Low присутствует около 2 , 5 В. В рецессивном состоянии шина может находиться сколь угодно долго, хотя в реальности этого не происходит, ведь рецессивное состояние – это всего лишь пауза между сеансами передачи информации.
  2. Доминантное состояние, или логический ноль. В него шина переходит тогда, когда один из входящих в сеть блоков управления начинает передачу данных. Потенциалы на проводах шины меняются следующим образом: на проводе CAN High потенциал повышается на один вольт, на проводе CAN Low наоборот, становится на один вольт ниже.

Рассмотрим форму сигнала шины, чтобы обосновать ее помехоустойчивость:

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

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

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

Сигнал шины поступает в блок управления на дифференциальный усилитель и обрабатывается. Иллюстрация поясняет процесс обработки:

Большинство автопроизводителей придерживаются скорости передачи 500 кБд, соответственно, продолжительность одного бита при этом составит 2 мкс.

Поговорим о топологии CAN-шины. Физически у шины нет начала и нет конца, шина – это просто единая сеть. Чаще всего встречаются два типа топологии: линейная топология и топология «пассивная звезда», а также их сочетания.

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

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

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

Ну что ж, мы немного освежили в памяти теорию шины, теперь самое время перейти к практике.

Перед нами автомобиль Infinitit Q 50 , оснащенный весьма редким турбированным мотором VR 30 DDT объемом 3 . 0 л и мощностью 400 лошадиных сил. Но проблема заключается не в этом замечательном агрегате, а как раз в CAN-шине: подключив диагностический сканер, не удается установить связь с доброй половиной блоков управления.

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

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

Итак, первое, что нужно увидеть, это то, что вся сеть разделена на три большие ветви, обведенные пунктиром:

  • CAN communication circuit 1 (Коммуникационная цепь CAN 1 );
  • CAN communication circuit 2 (Коммуникационная цепь CAN 2 );
  • Chassis communication circuit (Коммуникационная цепь шасси).

Первые две цепи связаны между собой посредством CAN gateway (найдите его на иллюстрации). Цепь шасси связана с цепью CAN 2 через блок управления шасси, который также играет роль своеобразного Gateway.

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

А это – блоки цепи CAN 2 . Как видно, связи с ними попросту нет:

Также нет связи с блоками цепи шасси, но это и понятно: эта цепь, согласно блок-схеме, подключена к цепи CAN 2 .

Ну что ж, задача почти решена, осталось лишь локализовать неисправность. А для этого воспользуемся мотортестером и снимем осциллограмму на проводах шины сначала в CAN 1 , а затем в CAN 2 и сравним их.

Сделать это очень несложно, ведь обе шины выведены прямо на диагностический разъем. Согласно более подробной схеме, о которой упоминалось выше, на контакты диагностической колодки 6 и 14 выведены провода CAN 1 , а на контакты 12 и 13 – провода CAN 2 .

Снимаем осциллограмму в цепи CAN 1 . Она имеет прямо-таки академический вид:

Давайте обмерим ее с помощью линеек.

  • На проводе CAN High в рецессивном состоянии потенциал составил 2 , 26 В, на проводе CAN Low – 2 , 25 В.
  • На проводе CAN High в доминантном состоянии потенциал составил 3 , 58 В, на проводе CAN Low – 1 , 41 В.
  • Ширина импульса, соответствующего одной единице передаваемой информации, составляет 2 мкс (обведено красным прямоугольником).

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

А теперь делаем ту же операцию на контактах диагностической колодки 12 и 13 , чтобы получить осциллограмму сигнала CAN 2 . Вот она:

Для наглядности масштаб осциллограмм на обеих иллюстрациях один и тот же.

То, что вы видите на этой осциллограмме, называется «мусор». Часто диагносты так и говорят: блок мусорит в шину. Вот только как найти блок, который это делает? Методика здесь очень проста и сводится она к поочередному отключению блоков и повторному наблюдению за сигналом шины.

Где именно находится тот или иной блок на автомобиле, в документации, как правило, показано. Например, на этом «финике» блоки расположены так:

Но в нашем случае все проще. Кстати, маленький лайфхак, возьмите на заметку. В автомобилях Nissan и Infiniti чаще всего причиной наличия мусора в CAN-шине является блок ABS. Сняв разъем с блока, сразу получаем нормальный обмен и связь сканера со всеми блоками ветви CAN 2 :

Обратите внимание на то, что связь в цепи CAN 2 есть со всеми блоками, кроме блока ABS, ведь он отключен.

Завершая разговор, хотелось бы обратить ваше внимание еще на один важный нюанс. Частота следования импульсов по CAN-шине составляет 500 кГц. Поэтому при получении осциллограммы необходимо задействовать максимально возможную частоту дискретизации мотортестера, на какую только он способен.

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

Красным прямоугольником обведено время, в которое укладывается одно деление сетки. Оно составляет 0 , 2 мс. А на осциллограмме, которую мы рассматривали ранее, это время было равно 5 мкс, поэтому отображение импульсов было более правильным. Имейте это ввиду и не допускайте ошибок!

Источник

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Во-первых, это контроль передачи битов — уровень сигнала в сети сравнивается с передаваемым для каждого бита.
  • Второй механизм заключается в использовании дополнительных битов (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 ничего не передает в сеть — ни фреймы ошибок, ни фреймы данных, никакие другие.

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

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

Источник

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

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

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

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

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

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

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

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

Структура сети протокола CAN.

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

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

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

Доминантные и рецессивные биты.

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

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

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

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

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

  • Кадр данных (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. Стандарт предусматривает несколько механизмов:

  • Во-первых, это контроль передачи битов — уровень сигнала в сети сравнивается с передаваемым для каждого бита.
  • Второй механизм заключается в использовании дополнительных битов (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 ничего не передает в сеть — ни фреймы ошибок, ни фреймы данных, ни какие-либо другие.

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

На чтение 21 мин Просмотров 24.4к. Опубликовано 20.10.2022
Обновлено 20.10.2022

Из этой статьи вы узнаете, что такое CAN-шина, почему она появилась. Разберемся с блоками управления в автомобиле и с тем, как они общаются между собой. Расскажем, какие контроллеры соединяются быстрой CAN-шиной, а какие — медленной.

Узнаете, как устроена CAN-шина на физическом и цифровом уровне, из каких данных состоит сообщение, как происходит арбитраж трафика. Какая максимальная длина кабеля и скорость передачи информации, как реализована защита от помех.

CAN-шина. Просто и понятно

Если интересует какой-то конкретный вопрос, пользуйтесь оглавлением.

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

Автомобиль подобен человеческому организму. Сеть контроллеров (шина CAN) это как нервная система у человека.

В свою очередь, «узлы» или «электронные блоки управления» (ЭБУ) подобны частям тела. Они соединены между собой через CAN-шину.

CAN-шина. Просто и понятно

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

Причины появления CAN-шины

Когда вы нажимаете выключатель в своем доме, чтобы включить свет, электричество проходит через выключатель к лампам.

Автомобили раньше использовали такое же подключение. С тех пор как в 1915 году Генри Форду пришла идея добавить в свои автомобили фары и электрический сигнал, электричество поступало от аккумулятора через выключатели к фарам и другим устройствам.

К 1960-м годам в каждом автомобиле были тысячи тяжелых проводов.

CAN-шина. Просто и понятно

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

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

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

Такие компании, как Bosch, искали тип шинной коммуникационной системы, которая могла бы использоваться в качестве системы связи между несколькими ЭБУ и системами автомобиля.

Они искали на рынке, но не могли найти именно то, что было нужно, поэтому они начали разработку «Controller Area Network» в партнерстве с Mercedes-Benz, Intel, а также несколькими университетами Германии.

Краткая история шины CAN

В 1986 году компания Bosch представила стандарт CAN на конгрессе SAE в Детройте. Год спустя корпорация Intel начала поставки первых микросхем контроллеров CAN, и автомобильный мир изменился навсегда.

  • До CAN: автомобильные ЭБУ использовали сложную проводку «точка-точка».
  • 1986: Компания Bosch разработала протокол CAN.
  • 1991: Bosch опубликовала CAN 2.0 (CAN 2.0A: 11 бит, 2.0B: 29 бит).
  • 1993: CAN принят в качестве международного стандарта (ISO 11898).
  • 2003: ISO 11898 становится серией стандартов.
  • 2012: Bosch выпустила CAN FD 1.0 (передачи данных на двух скоростях).
  • 2015: Протокол CAN FD стандартизирован (ISO 11898-1).
  • 2016: Физический уровень CAN для скоростей передачи данных до 5 Мбит/с стандартизирован в ISO 11898-2.

Теперь, например, достаточно одного датчика температуры, который подключен к блоку управления двигателем. ЭБУ опрашивает датчик температуры для себя и отправляет эту информацию в виде сообщения в информационную шину данных для других блоков.

CAN-шина. Просто и понятно

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

Сегодня CAN является стандартом в автомобилях (легковых, грузовых, автобусах, тракторах, …), кораблях, самолетах, электромобилях и многом другом.

Что такое ЭБУ?

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

В современном автомобиле может быть до 70 ЭБУ — и каждый из них может иметь информацию, которой необходимо поделиться с другими участниками сети.

CAN-шина. Просто и понятно

Именно здесь на помощь приходит CAN-шина. Она позволяет каждому блоку управления общаться со всеми другими ЭБУ без сложной специальной проводки.

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

Физический уровень шины CAN

Физический уровень CAN описан в стандарте ISO 11898 и регламентирует способ передачи данных. В случае с CAN-шиной это два провода витой пары. При этом CAN-шина вполне может работать и по одному проводу, а витая пара прежде всего используется для защиты от помех.

Однопроводная схема

Для того чтобы лучше понять как данные передаются по двухпроводной CAN-шине, давайте сначала рассмотрим как данные передаются по однопроводной схеме, которой, например, является K-линия.

Итак, есть один провод, с его помощью соединены блоки управления. Этот провод внутри блока соединен с 12 вольтами через резистор 5 килоом. Таким образом напряжение на проводе становится по умолчанию 12 В.

CAN-шина. Просто и понятно

Каждый из подключенных блоков может стягивать это напряжение на массу, меняя его с 12 на 0 вольт. Таким образом, получаются прямоугольные импульсы на шине данных. Они могут принимать всего два уровня напряжения — 0 и 12 вольт.

Присвоим низкому уровню в ноль вольт логический ноль, а уровню 12 вольт — логическую единицу. Зададим тактовый сигнал шины, то есть обозначим сколько раз секунду блоки будут опрашивать шину и соответственно сколько времени будет длиться один бит.

CAN-шина. Просто и понятно

То есть наименьшая часть цифровой информации вид может принимать только два значения 0 или 1. Таким образом, мы получили физическую возможность отправлять и принимать двоичные данные между блоками управления.

Витая пара. Как работает CAN high-speed

В CAN-шине тот же принцип, только сигнал считывается как разница между напряжениями проводов CAN-high и CAN-low, которые образуют витую пару.

CAN-шина. Просто и понятно
CAN-шина. Просто и понятно

Чтобы понять, как именно это происходит, давайте рассмотрим как могут меняться уровни напряжения на этих проводах.

По умолчанию на проводе CAN-high, как и на проводе CAN-low, напряжение соответствует величине в 2,5 В. При этом разница напряжений между проводами составляет 0 В. Такое состояние can-шины называется рецессивным (recessive) и интерпретируется как логическая единица.

Существует и второе состояние шины, при котором напряжение на проводе CAN-high будет 3,5 вольт, а на проводе CAN-low — 1,5 В. Разница напряжений между проводами составит 2 вольта. Это состояние называется доминантным (dominant) и соответствует логическому нулю.

CAN-шина. Просто и понятно

Логическая 1 (рецессивное состояние):

  • 2,5 вольта на проводе CAN_H;
  • 2,5 вольта на проводе CAN_L;
  • дифференциальное напряжение 0 вольт.

Логический 0 (доминантное состояние):

  • 3,5 вольта на проводе CAN_H;
  • 1,5 вольта на проводе CAN_L;
  • дифференциальное напряжение 2 вольта.

Так работает высокоскоростная шина CAN high speed. Она описана в стандарте ISO 11898-2.

Работа CAN low speed

Устройство низкоскоростной шины CAN low speed описано в стандарте ISO 11898-3. Для нее уровни напряжения такие.

CAN-шина. Просто и понятно

Логическая 1 (рецессивное состояние):

  • 0 вольт на проводе CAN_H;
  • 5 вольт на проводе CAN_L;
  • дифференциальное напряжение 5 вольт.

Логический 0 (доминантное состояние):

  • 3,6 вольта на проводе CAN_H;
  • 1,4 вольта на проводе CAN_L;
  • дифференциальное напряжение 2,2 вольта.

Защита от помех

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

CAN-шиной объединены самые ответственные блоки управления автомобиля. От качества этой связи напрямую зависит безопасность движения. В связи с этим CAN-шине предъявляются высокие требования к надежности и безотказности.

Дело в том, что многие компоненты автомобиля являются источниками электромагнитных помех. Особенно система зажигания.

Использование витой пары позволяет в значительной степени решить эту проблему. Давайте посмотрим, как это происходит.

CAN-шина. Просто и понятно

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

CAN-шина. Просто и понятно

Предположим, что на проводе CAN-high в рецессивном состоянии напряжение было 2,5 В. Помеха увеличила его на 1,1 В. Соответственно мы получили напряжение в 3,6 В, которое могло быть интерпретировано уже как доминантное состояние.

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

CAN-шина. Просто и понятно

Таким образом, на проводе CAN_L напряжение поднимется на те же 1,1 В. А разница напряжений как была 2,5 — 2,5 = 0 В, так и осталась 3,6 — 3,6 = 0 В. Действие помехи на шину в доминантном состоянии аналогично.

Зачем нужен трансивер

Название Transceiver произошло от двух слов receiver (приемник) и transmitter (передатчик). Переводится как приемопередатчик.

Трансиверы обрабатывают дифференциальный сигнал, принимают и передают информацию. Трансивер связывает провода витой пары (CAN_H и CAN_L) с линиями Tx и Rx микропроцессора, который не умеет напрямую работать с CAN-шиной.

По линии Tx микропроцессор отправляет информацию в шину данных, а по линии Rx он считывает информацию.

CAN-шина. Просто и понятно

В трансивере находится схемотехника, которая формирует разные уровни напряжения на проводах CAN_H и CAN_L для доминантного и рецессивного состояния шины.

Трансивер обычно устанавливается внутри электронного блока управления и представляет собой специализированную микросхему.

Оконечные сопротивления

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

CAN-шина. Просто и понятно

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

Правильно подобранные конечные нагрузочные сопротивления компенсируют отраженный сигнал. Обычно это два резистора по 120 ом внутри блока управления. Они подключены к противоположным концам шины. Таким образом, сопротивление между проводами can-шины составляет около 60 ом.

У разных автопроизводителей величина оконечных сопротивлений может отличаться.

Где применяется CAN high speed, а где CAN low speed

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

CAN-шина. Просто и понятно

Медленный CAN используется для менее важных систем, таких как климат-контроль, системы комфорта, наружное освещение, электропривод сидений и т. п. в зависимости от комплектации автомобиля.

CAN-шина. Просто и понятно

Особенностью медленного CAN является возможность сохранять работоспособность в однопроводном режиме, если второй провод витой пары поврежден.

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

Межсетевой шлюз (CAN gateway)

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

Так как напрямую разные CAN-шины не соединить, для этих целей используется межсетевой шлюз (CAN gateway). К нему подключаются шины с разными скоростями. Это могут быть не только CAN-шины, но и другие шины, присутствующие в автомобиле, к примеру, FlexRay или Ethernet.

CAN-шина. Просто и понятно

Часто в CAN gateway хранится информация об автомобиле, VIN номер и комплектация. Именно из него сканеры получают информацию при автоопределении автомобиля.

Сам межсетевой интерфейс может быть выполнен как отдельным блоком, так и встроен в другие блоки. Обычно это приборная панель, электронный замок зажигания или блок управления бортовой сети (Body Control Module — BCM).

CAN-шина. Просто и понятно
Межсетевой шлюз CAN

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

Канальный уровень CAN-шины (передача данных)

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

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

Эту задачу решает канальный уровень (data link layer), описанный в стандарте ISO 11898-1. Каждый узел может отправлять и принимать информацию кадр за кадром.

Существует четыре типа сообщений-кадров:

  • Кадр данных (data frame). Передает информацию одному или нескольким узлам-приемникам.
  • Кадр удаленного запроса (remote frame). Запрашивает данные у других узлов.
  • Кадр ошибки (error frame). Сообщает об ошибках.
  • Кадр перегрузки (overload frame). Сообщает о состоянии перегрузки.

Из чего состоит кадр CAN-шины

Рассмотрим структуру самого распространенного кадра Data frame.

CAN-шина. Просто и понятно

SOF. Начало кадра

Первый бит кадра (SOF — Start Of Frame) всегда доминантный логический ноль. Он выводит шину из состояния холостого хода и начинает передачу данных.

Арбитражное поле

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

Зачем нужен арбитраж CAN-шины

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

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

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

Как происходит арбитраж CAN-шины и что такое идентификатор

Представим, что есть три узла, которые одновременно хотят получить доступ к CAN-шине. После бита «Start Of Frame» каждый из этих блоков начинает отправлять биты идентификаторов в шину данных.

CAN-шина. Просто и понятно

Идентификатор присвоен каждому сообщению и определяет его приоритет, то есть определяет, какое сообщение более важное и должно быть отправлено в первую очередь.

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

CAN-шина. Просто и понятно

Пока отправляемые биты у всех блоков совпадают, все идет без изменений. Но рано или поздно случается конфликт, когда разные узлы одновременно отправят разные биты. И вот тут самое время вспомнить, что доминантный бит (логический 0) перебивает рецессивный бит (логическую 1) в конфликтных ситуациях. Это реализовано аппаратно в схемотехнике трансивера.

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

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

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

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

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

11-bit и 29-bit идентификаторы

11 бит дают возможность использовать только 2048 идентификаторов, то есть 2048 параметров Этого иногда бывает недостаточно. В этом случае используется 29-битый ID. Таким образом, появляется возможность использовать миллионы идентификаторов.

CAN-шина. Просто и понятно

Кадр с расширенным 29-битным идентификатором (CAN 2.0B) идентичен кадру с 11-битным идентификатором (CAN 2.0A), за исключением более длинного идентификатора. Он используется, например, в протоколе J1939 для большегрузных автомобилей.

Что произойдет, если узел будет один на шине и попытается передать сообщение?

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

Передатчик почувствует ошибку ACK, пошлет флаг ошибки, увеличит свой счетчик ошибок передачи на 8 и начнет повторную передачу. Это произойдет 16 раз. Затем передатчик перейдет в режим пассивной передачи ошибок.

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

RTR. Запрос на удаленную передачу.

Следующий бит Remote Transmission Request (RTR). Это бит запроса. Он определяет какого типа будет сообщение:

  • Dataframe, когда вещающий блок сообщает информацию или
  • Remote frame, когда передающий блок запрашивает информацию.

Поле Control

Дальше следует поле Control, в котором первый бит ID extension. Если в нем будет логический ноль, то будет использоваться стандартный 11-битный идентификатор, а если логическая единица, то расширенный 29-битный.

CAN-шина. Просто и понятно

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

Биты DL3 — DL0 в поле Control используется для определения заранее количества байтов, которые будут передаваться в следующем поле Data. Чтобы не передавать лишние биты и сократить время фрейма, тем самым увеличив скорость передачи данных. По этой же причине по-умолчанию используется 11-битный идентификатор, чтобы без надобности не тратить время на лишние 18 бит.

Поле Data

В поле Data находится самая полезная информация, которую нужно передать. Обороты, скорость, нагрузка и т. п.

CAN-шина. Просто и понятно

Ради передачи этой информации и строится весь фрейм. Это поле может составлять от 1 до 8 байт, то есть от 8 до 64 бит.

CRC. Контрольная сумма

Следующее поле это контрольная сумма CRC (Cyclic Redundancy Check). Представляет собой значение, вычисленное по определенной формуле, на основе битов из предыдущих полей.

CAN-шина. Просто и понятно

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

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

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

Если же контрольная сумма не сходится, распознается ошибка передачи данных и полученная информация игнорируется.

ACK. Бит подтверждения

Следующим идет бит подтверждения ACK (Acknowledge). Узел-отправитель выставляет в нем рецессивное состояние, но узел-получатель перебивает его доминантным в случае успешного приема, тем самым подтверждая передачу сообщения.

CAN-шина. Просто и понятно

Отправитель проверяет наличие бита подтверждения и повторно передает сообщение, если подтверждение не было обнаружено.

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

EOF. Конец кадра

Дальше идут 7 бит поля End of Frame (EOF). Это конец кадра, после которого кадр завершается и шина снова переходит состояние холостого хода.

CAN-шина. Просто и понятно

И так до тех пор, пока один или несколько блоков снова не начнут отправлять сообщения.

Адресация и идентификация сообщений CAN-шины

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

Фактически, в CAN не существует понятия адреса сообщения. Вместо этого, содержимое сообщений идентифицируется по ID, который присутствует в кадре. Считается, что сообщения CAN имеют «адрес содержимого».

Обычный адрес сообщения будет выглядеть так: «Вот сообщение для узла N». Сообщение с адресом содержимого выглядит так: «Вот сообщение, содержащее данные с меткой N». Разница между этими двумя понятиями небольшая, но существенная.

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

Стандарт не говорит, что поле арбитража должно использоваться в качестве идентификатора сообщения. Тем не менее это очень распространенное использование.

Что такое CAN FD (Flexible Data Rate CAN)?

С расширением функциональности автомобиля возрастает и нагрузка на CAN-шину. CAN FD (Flexible Data Rate) была разработана как шина CAN «следующего поколения».

CAN-шина. Просто и понятно

Стандартная длина каждого сообщения была увеличена в 8 раз — с 8 до 64 байт, а максимальная скорость передачи данных была аналогично увеличена с 1 Мбит/с до 8 Мбит/с. Одним словом, CAN FD повышает скорость и эффективность. Поэтому она используется в современных автомобилях.

CAN FD обратно совместим и поддерживает протокол CAN 2.0, а также специальные протоколы, такие как SAE J1939.

CAN FD по сути является расширением оригинального стандарта CAN, как указано в ISO 11898-1, и полностью совместим с классическими CAN-шинами.

Отличия CAN FD от обычной CAN-шины

  • CAN FD работает одновременно на двух скоростях. Поле арбитража или заголовок кадра передается со стандартной скоростью, например 500 кбит/с. А поле данных передается на скорости в несколько раз выше, вплоть до 8 Мбит/с.
  • Размер сообщения увеличен до 64 байт. В обычной CAN-шине — максимум 8 байт.
  • Контроллер CAN FD способен принимать обычные CAN сообщения, а стандартный CAN узел не может принимать кадры формата CAN FD.
  • Для шины CAN FD нужны специальные микросхемы-трансиверы с повышенным быстродействием.
CAN-шина. Просто и понятно

В настоящее время CAN FD используется в высокопроизводительных автомобилях, но по мере развития ЭБУ и снижения стоимости аппаратного обеспечения CAN FD, это лишь вопрос времени, когда CAN FD появится практически во всех автомобилях.

Будущее шины CAN

В будущем протокол шины CAN будет оставаться актуальным, хотя на него будут влиять основные тенденции:

  • Потребность во все более расширяющихся функциях автомобиля.
  • Рост облачных вычислений.
  • Развитие Интернета вещей (Internet of Things — IoT).
  • Развитие самоуправляемых автомобилей (без водителя).

В частности, рост числа подключенных автомобилей V2X и облачных вычислений приведет к быстрому росту автомобильной телематики и IoT CAN-регистраторов.

В свою очередь, перевод сети шины CAN в режим «онлайн» также подвергает автомобили рискам безопасности и может потребовать перехода на новые протоколы CAN, такие, как CAN FD.

Максимальная скорость CAN-шины

Максимальная скорость шины CAN, согласно стандарту, составляет 1 Мбит/с. Тем не менее некоторые CAN-контроллеры могут работать и с более высокими скоростями.

Медленный CAN low speed (ISO 11898-3) может работать на скорости до 125 кбит/с.

Однопроводной CAN может работать со скоростью около 50 кбит/с в стандартном режиме, а в специальном высокоскоростном режиме, используемом, например, для программирования ЭБУ, — до 100 кбит/с.

Максимальная длина кабеля в CAN-шине

При скорости 1 Мбит/с максимальная длина кабеля может составлять около 40 метров. Это связано с тем, что схема арбитража требует, чтобы волновой фронт сигнала успел распространиться до самого удаленного узла и обратно. Другими словами, длина кабеля ограничена скоростью света.

Другие максимальные длины кабелей (значения приблизительны):

  • 100 метров при скорости 500 кбит/с;
  • 200 метров — при 250 кбит/с;
  • 500 метров — при 125 кбит/с;
  • 6 километров — при 10 кбит/с.

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

Controller Area Network
(шина данных CAN)


Или разговорно: «Шина CAN».


В период с 1984 по 1986 г.г., компанией
Robert Bosch GmbH был придуман, разработан и воплощен в производство стандарт CAN — Controller Area Network (сеть контроллеров), основной целью которого является объединение в единую сеть различных исполнительных устройств, датчиков, сенсоров и т.п.


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

Электромагнитная совместимость


Раньше об этом понятии задумывались мало или вообще не задумывались. Потому что автомобилям хватало небольшого пучка проводов и пару-тройку устройств для нормальной работы двигателя внутреннего сгорания.


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

Что такое «Электромагнитная совместимость на автомобиле»?


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


Шина CAN как раз отвечает этим важным требованиям.


Более конкретно об этом вопросе чуть позже.

Уменьшение количества кабельных соединений

Сначала немного о том, что же такое эта шина и как она выглядит:


Шина данных CAN – это обычная «витая пара», вот как на фото справа. Это специально скрученный двухжильный провод.


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

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

  • для стабильности распознавания ошибок
  • для увеличения и повышения надёжности работы по передаче данных

Предположим, что пик напряжения возникнет только на одном проводе (например, вследствии проблем по электромагнитной совместимости).


И тогда блоки-приёмники могут идентифицировать это как ошибку и проигнорировать данный пик напряжения.


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

Так вот, продолжим о «уменьшении количества соединений между устройствами шины CAN»:

  • Провода от датчиков проводятся только к ближайшему блоку управления, который преобразует измеренные значения в пакет данных и передаёт его на шину данных CAN.
  • Уменьшение количества штекерных соединений
  • Уменьшение количества контактных выводов на блоках управления
  • Сигналами с одного датчика (например, с датчика температуры охлаждающей жидкости) могут воспользоваться различные системы

Пакет данных шины CAN


А сейчас давайте посмотрим, что представляет из себя «пакет данных» шины CAN. Он состоит из семи последовательных полей (отрезков).


На приведенном внизу рисунке показано восемь полей, последнее Intermission
«Пауза между пакетами данных» и оно не входит в Data Frame:

Цифры в каждом поле показывают количество битов, используемых в каждом сообщении (пакете данных).

Описание полей пакета данных<

Start of Frame


Маркирует начало сообщения (стартов, бит) и синхронизирует все модули шины.

Arbitration Field


Это поле состоит из идентификатора адреса в 11 бит и 1 контрольного бита и запрос (Remote Transmission Request-Bit).


Этот контрольный бит маркирует пакет как Data Frame (фрейм сообщения) или как Remote Frame (фрейм запроса) без байтов данных.

Control Field (управл. биты)


Поле управления (6 бит) содержит бит IDE (Identifier Extension Bit) для распознавания стандартного и расширенного формата, резервный бит для последующих расширений и — в последних 4 битах — количество байтов данных, заложенных в Data Field (поле данных).

Data Field (данные)


Поле данных может содержать от 0 до 8 байт данных. Сообщение по шине данных CAN длиной 0 байт используется для синхронизации распределённых процессов

CRC Field (контрольное поле)


Поле CRC (Cyclic-Redundancy-Check Field) содержит 16 бит и служит для контрольного распознавания ошибок при передаче данных.

АСК Field (подтверждение приема)


Поле АСК (Acknowledgement Field) содержит сигнал квитирования всех блоков-приёмников, получивших сообщение по шине данных CAN без ошибок (квитирование — подтверждение приема, отправка квитанции — управляющее сообщение или сигнал, выдаваемые в ответ на принятое сообщение)
.

End of Frame (конец фрейма)


Маркирует конец пакета данных

Intermission (интервал)


Интервал между двумя пакетами данных. Интервал должен составлять не менее 3 битов. После этого любой блок управления может передавать следующий пакет данных.

IDLE (режим покоя)


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

Прием и передача данных


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

На приведенном выше рисунке слово Dashboard можно заменить на привычное (разговорное и чаще применяемое) «Шлюз».


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

На следующих поколениях автомобилей с 2002 года начали использовать отдельный блок ZGW (центральный интерфейс), который выполняет функции шлюза, хранит кодировки комплектации авто и через него работает диагностика по CAN шине (именно по «чистому» CAN – без к-линий).

Шины данных CAN существуют с различными скоростями передачи данных и их иногда называют «быстрая шина» (High-Speed-CAN) и «медленная шина» (Low- Speed-CAN).


Например, High-Speed-CAN – это шина двигателя, АКПП и т.п., имеет скорость передачи данных 500 Кбит


Low-Speed-CAN — это шины для управления стеклоподъемниками, кондиционером и т.п. , со скоростью передачи данных 100 Кбит.


Порядок и формат передачи и приёма сообщений пользователями определён в протоколе обмена данных.


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

  • каждому сообщению по шине данных CAN присваивается его постоянный адрес (идентификатор), маркирующий содержание этого сообщения (например: температура охлаждающей жидкости).
  • протокол шины данных CAN допускает передачу до 2048 различных сообщений, причём адреса с 2033 по 2048 являются постоянно закреплёнными. Объём данных одного сообщения по шине данных CAN составляет 8 байт.

Блок-приёмник обрабатывает только те сообщения(пакеты данных), которые сохранены в его списке принимаемых по шине данных CAN сообщений (контроль назначения сообщения).

Пакеты данных могут передаваться только в том случае, если шина данных CAN свободна (то есть, если после передачи последнего пакета данных последовал интервал в 3 бита, и никакой из блоков управления не начинает передавать сообщение). При этом логический уровень шины данных является рецессивным (логическая «1»)

Шина данных CAN: РАСШИРЕННЫЕ ВОЗМОЖНОСТИ проведения Диагностики


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

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

Высокий уровень защиты передаваемых данных


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


При этом обеспечивается высокая скорость передачи данных (до 1 Mbit/s)

За счет чего это достигается:

  • Механизм обнаружения ошибок Механизм исправления ошибок
  • Сохранение работоспособности при высоком уровне электромагнитных помех
  • Распределение приоритетов команд
  • Работа в реальном режиме времени

Распознавание ошибок


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

  • механизмы на уровне Data Frame (фрейм сообщения)
  • механизмы на уровне битов

Cyclic-Redundancy-Check:


на основе передаваемого по шине данных CAN сообщения модуль-передатчик рассчитывает контрольные биты, которые передаются вместе с пакетом данных в поле «CRC Field». Модуль-приёмник заново вычисляет эти контрольные биты на основе принятого по шине данных CAN сообщения и сравнивает их с контрольными битами, полученными вместе с этим сообщением.

Frame Check:


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


Распознанные функцией Frame Check ошибки обозначаются как ошибки формата.

Механизмы на уровне битов

Мониторинг


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

Bit Stuffing:


В каждом пакете данных между полем «Start of Frame» и концом поля «CRC Field» должно быть не более 5 последовательных битов с одинаковой полярностью. После каждой последовательности из 5 одинаковых битов блок-передатчик добавляет в поток битов один бит с противоположной полярностью. Блоки- приёмники, в свою очередь, удаляют эти биты после приёма сообщения по шине данных CAN.

Механизм устранения ошибок


Если какой-либо модуль шины данных CAN распознаёт ошибку, то он прерывает текущий процесс передачи данных, отправляя сообщение об ошибке. Сообщение об ошибке состоит из 6 доминантных битов.

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

После короткой паузы все блоки управления снова смогут передавать сообщения по шине данных CAN, причём первым опять будет отправлено сообщение с наивысшим приоритетом (мотор, АКПП и т.п.).

Блок управления, чьё сообщение по шине данных CAN обусловило возникновение ошибки, также начинает повторную передачу своего сообщения (Automatic Repeat Request — автоматический повтор запроса).

ПРИОРИТЕТЫ шины данных CAN

«ПРИНЦИП ПРИОРИТЕТНОСТИ»


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

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

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

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

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

Идентификатор, соответствующий меньшему двоичному числу, имеет более высокий приоритет, и наоборот (чем больше нулей в идентификаторе (битов нулевых) тем больше приоритет). Протокол шины данных CAN основывается на двух логических состояниях: биты являются или «рецессивными» (логическая «1» — единица), или «доминантными» (логический «О» — ноль).

Если доминантный бит передаётся как минимум одним модулем шины, то рецессивные биты, передаваемые другими модулями, перезаписываются.

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

При передаче «поля идентификатора» блок-передатчик после каждого бита проверяет, обладает ли он ещё правом передачи, или уже другой блок управления передаёт по шине данных CAN сообщение с более высоким приоритетом. Если передаваемый первым блоком-передатчиком рецессивный бит перезаписывается доминантным битом другого блока- передатчика, то первый блок-передатчик утрачивает своё право передачи (арбитраж) и становится блоком-приёмником.


Первый блок управления (N 1) утрачивает арбитраж с 3-го бита.


Третий блок управления (N 3) утрачивает арбитраж с 7-го бита.


Второй блок управления (N 2) сохраняет право доступа к шине данных CAN и может передавать свое сообщение.

Другие блоки управления могут передавать свои сообщения по шине данных CAN только после того, как она освободится.

При этом право передачи опять будет предоставляться в соответствии с приоритетностью сообщения по шине данных CAN.

То есть, при использовании этого принципа «приоритетности», на шине данных CAN не должно происходить конфликта, если одновременно несколько устройств выставили различные логические уровни.

Виды существующих шин

(на примере VW, Audi, Opel, Mercedes)

Шина CAN силового агрегата (быстрая шина), позволяющая передавать информацию со скоростью 500 кбит/с. Она служит для связи между блоками управления на линии двигателя и трансмиссии.

Шина CAN системы «Комфорт» (медленная шина), позволяющая передавать информацию со скоростью 100 кбит/с. Она служит для связи между блоками управления, входящими в систему «Комфорт».

Виды шин по классификации Mercedes:


Шина CAN-С – «быстрая» шина силового агрегата.


Шина CAN-B – «медленная», салонная шина «комфорт».


Шина CAN-D – диагностическая шина (используется для диагностики).


В автомобилях, имеющих диагностику по CAN шине, в качестве шлюза всех трёх шин установлен блок ZGW (центральный интерфейс). Это на более современных Мерседесах с 2002 года выпуска.

Цветовая маркировка шин на Mercedes


«Быстрая» шина силового агрегата (500 кб/сек) – зелёный и зелёный с белой полосой.


Шина «комфорт» — коричневый и коричневый с чёрной полосой.


На рисунках в различного рода руководствах и справочниках, провода шин CAN, для наглядности, могут быть обозначены приблизительно таким образом:

Общими для всех систем является следующее:

  • Системы выполняют одинаковые предписания по передаче данных, сформулированные в соответствующем протоколе.
  • Для передачи сигналов используются два скрученных между собой провода (Twisted Pair),которые эффективно противостоят внешним помехам (например, такая необходимость существует при их расположении в моторном отсеке).
  • Один и тот же сигнал передается трансивером блока управления через оба провода шины, но на различных уровнях напряжения; только в дифференциальном усилителе принимающего блока управления формируется единый (разностный и очищенный от помех) сигнал, поступающий на вход шины CAN принимающего блока управления (Шина дифференциальная и работает только за счёт разницы напряжений между линиями, а не между линией и корпусом автомобиля. Многие «тыкаются» относительно «массы» и удивляются:
    Искал и нашел 12 вольт на медленной шине относительно кузова, откуда?!! Ведь в спецификациях написано 2,5 — 3,5 вольта?).

Области применения шины данных CAN

(применительно к Mercedes)


Для моторного отсека и салона применяются различные шинные системы CAN, которые отличаются друг от друга скоростью передачи данных.


Скорость передачи по шине данных CAN моторного отсека (CAN-С) составляет 500 Кбит/с, а шина данных CAN салона (CAN-B) вследствие меньшего количества особо срочных сообщений обладает гораздо меньшейскоростью передачи данных — 83 Кбит/с.


Обмен данными между обеими шинными системами осуществляется через так называемые «межсетевые шлюзы», т.е. блоки управления, подключенные к обеим шинам данных.

CAN-C (шина данных CAN моторного отсека)


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


Шина данных CAN моторного отсека активирована только при включенном зажигании.

CAN-B (шина данных CAN салона)


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

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

Для максимально возможного снижения энергопотребления в состоянии покоя шина данных CAN переходит в режим «пассивного ожидания» при отсутствии передаваемых пакетов данных и активируется снова только при последующем доступе к ней.

Если в режиме «пассивного ожидания» шины данных CAN салона какой-либо блок управления (например, потолочная блок-панель управления (N70) передаёт сообщение по шине данных CAN, то его принимает только ведущий системный модуль (например, блок управления EZS (N73)

Соответствующий ведущий блок управления сохраняет это сообщение в памяти и посылает сигнал активации («Wake-up») на все блоки управления, подключённые к шине данных CAN салона.

При выполнении активации блок управления (N73) проверяет наличие всех абонентов шины данных CAN, после чего передаёт сохранённое ранее в памяти сообщение.

Топология шины CAN


Схема соединения шины CAN называется «топологией».


Или:
«набор определенных правил, по которым к шине подключаются различные устройства».

Она зависит от модели конкретного автомобиля и Производителя.


Например, звездообразная топология запатентованная фирмой Daimler-Benz.
Эта топология позволяет уменьшить резонансные проблемы в линии.

CAN контроллеры соединяются с помощью шины, которая имеет как минимум два провода CAN H и CAN L , по которым передаются сигналы при помощи специализированных ИМС приемо-передатчиков. Кроме того, ИМС приемо- передатчиков реализуют дополнительные сервисные функции:

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


Наиболее широкое распространение получили два типа приемоперадатчиков (трансиверов):

  • «High Speed» приемопередатчики (ISO 11898-2),
  • «Fault Tolerant» приемопередатчики

Трансиверы, выполненные в соответствии со стандартом

«High-Speed» (ISO11898-2), наиболее просты, дешевы и дают возможность передавать данные со скоростью до 1 Мбит/c.

«Fault-Tolerant» приемопередатчики (не чувствительные к повреждениям на шине) позволяют построить высоконадежную малопотребляющую сеть со скоростями передачи данных не выше 125 кбит/c.

ПРАКТИЧЕСКАЯ РАБОТА


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


Ошибка была такая:

Этот автомобиль попал в Россию из Америки, был привезен на продажу, дефект оказался непонятным и «плавающим»: «автомобиль может 15-20 минут работать нормально, а потом на панели загорается значок BAS ESP и отключается вся шина данных».

Эти практические занятия проводились по учебному плану «Мастер-класс Mercedes» в компании BrainStorm, занятия проводил Дереновский Максим Васильевич (на фото вверху он слева: снимает разъем моторного блока).

До этого момента автомобиль уже пытались ремонтировать в другой мастерской. Там поменяли «по показаниям» (?) блок BAS ESP, что не помогло устранить неисправность.


Тогда им посоветовали «прокинуть» два провода шины CAN минуя крыло автомобиля.

(Эта неисправность – гниение проводов на этом крыле и выход их из строя, является конструктивно-технологической недоработкой фирмы).


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


Для поиска неисправности применили два рекомендуемых метода:

  • Проверка шины CAN по сопротивлению
  • Поочередное отключение блоков схемы

Проверка по сопротивлениям


Шина представляет собой два провода витой пары.


Образно: «имеет начало и конец», которыми являются какие-либо два блока. В этих конечных блоках находятся согласующие сопротивления
(«терминаторы»,- разг.), номиналом 120 Ом.


Следовательно:

  • Если шина исправна и оконечные блоки подключены, то на шине мы увидим сопротивление 60 Ом (два по 120 в параллель).
  • Если есть обрыв на одном из конечных блоков — шина будет звониться 120 Ом, и более 120 Ом, если конечных блоков нет вообще.


    Подключенные в параллель блоки мультиметром (по сопротивлению) не контролируются.


    В ML350 один из конечных блоков будет моторный, второй, в зависимости от года выпуска, вероятнее всего AAM, EAM или EZS.

Другие проверки


Определение КЗ (короткого замыкания) в шине данных CAN – определенно сложная задача. Как можно поступить:

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

Отключение блоков


Одним из обучаемых было предложено начать проверку с отключения стеклоподъемников: «Он же на CAN «висит».


Неправильно. Стеклоподъемники «висят» на «медленной» шине и даже «если сильно захотят», все-равно «не положат «быструю» шину».


Начали отключать другие блоки по «быстрой» шине. Их достаточно много…

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

Именно масло иногда является причиной неисправности этого блока.

Откуда оно там появляется – трудно сказать, но как вариант, — « согласно «эффекта каппилярности» масло из коробки поднимается по проводам и через неплотности уплотнений просачивается и на блок и вовнутрь его, привнося ошибку».

Эта ошибка конструктивная: некачественные уплотнения жгута проводов к соленоидам в коробке АКПП. По жгуту оно и поднимается в электронный блок.


Блок ААМ – тоже оказался исправным.


Кстати, если уж заговорили о нем:

  • по причине «программного сбоя», у него часто «слетает» радиоканал ключей зажигания. После «перезаливки» блока работоспособность восстанавливается.
  • Может «слететь» роллинг ключей ( автомобиль не запускается, не видит ключа)

Виной «слёта» не только радиоканала , но и роллинга самих ключей , могут быть проблемы с питанием. Прокрутка двигателя на слабом аккумуляторе, плавная «посадка» АКБ на автомобиле , клеммы и т.д.


Но сама шина такой «слёт» не вызовет. Максимум сигнал разрешения запуска от блока ААМ не дойдёт до моторного и не будет включен даже стартер.


Отключение блоков тоже ничего не дало.


Проверили номера блока, которого заменили – все нормально, хотя тут тоже может быть путаница, так как существуют три варианта спецификаций для заказа:


— номер фирмы Mercedes


— номер BOSCH


— внутризаводской номер

Кодировки


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


Что такое «кодировки» для автомобиля:


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


И так как автомобиль пришел из другой мастерской, а нам вообще неизвестна его история «жизни и ремонта», то проверять пришлось все кодировки.


И узнали, что в приборном щитке было прописано, что «BAS
не интегрирован в ESP».


Сделали наоборот – «BAS интегрирован в ESP», перезапустили систему управления и ошибка С1020 перестала появляться.

Какой можно сделать вывод: причиной неисправности С1020 на данном автомобиле явилась неправильно закодированная комплектация автомобиля.


Однако не стоит считать, что «ошибка по CAN» является простой
и её можно быстро найти и быстро устранить.


Как раз наоборот.

Как говорят специалисты: «Это «головняк» и разобраться с ним можно только при отличном знании «психологии Mercedes».


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


В жизни все намного труднее, сложнее и длиннее…

ШОПИН А.В

© Легион-Автодата

Информационный центр компании BrainStorm

Апрель 2009 г.

Комментарии к статье: http://forum.autodata.ru/7/12832/


Вас также может заинтересовать:

Диагностика и ремонт: CAN — шина

Шина CAN системы «Комфорт» 

Шина CAN — это страшно?

Возможно, вам также будет интересно:

  • Интерфейс системы ошибка ао карты памяти
  • Интерфейс передачи сообщений возвратил неизвестную ошибку outlook 2010
  • Интерфейс передачи сообщений возвратил неизвестную ошибку outlook 2007
  • Интерфейс не поддерживается код ошибки 0x80004002
  • Интерфейс не найден vcds как исправить ошибку

  • Понравилась статья? Поделить с друзьями:
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии