Основы can шины: Хакаем CAN шину авто. Виртуальная панель приборов / Хабр

Содержание

Побеждаем шину CAN. Часть 1. Технология / Хабр

Сегодня я хочу познакомить вас с интересной микроконтроллерной платформой CANNY. Это обзорная статья в которой вы узнаете о технологии, а в последующих статьях я расскажу вам о работе с сообщениями CAN, интеграции CANNY c Arduino Mega Server и о тех возможностях, которые предоставляет эта связка.

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

Шина CAN

Образно говоря, шина CAN это нервная система вашего автомобиля. По ней передаётся вся информация о состоянии блоков и систем, а также управляющие команды, которые во многом определяют поведение автомобиля. Зажигание фар, открывание и закрывание дверей, управление проигрыванием музыки в салоне машины, срабатывание сигнализации и т. д. — всё это работает и управляется по этой шине.

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

Контроллеры CANNY

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

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

Кроме CANNY 7 в линейке контроллеров присутствует ещё несколько моделей, мы будем проводить свои эксперименты с более простой встраиваемой моделью CANNY 5 Nano. Она также поддерживает работу с CAN шиной, но при этом похожа на уже знакомую нам Arduino Nano.

Визуальное программирование

Развитая поддержка шины CAN это не единственная особенность этих контроллеров, кроме этого CANNY имеют свою собственную среду программирования, CannyLab, но не «обычную», а визуальную, где весь процесс написания программ сводится к манипулированию готовыми структурными блоками, заданию их параметров и соединению входов и выходов этих блоков в определённой последовательности, в соответствии с алгоритмом решаемой задачи.

Ни одной строчки кода!

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

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

CannyLab является бесплатной средой разработки и вы можете свободно скачать её с сайта разработчиков, она также не требует специальной процедуры инсталляции — достаточно распаковать файл с архивом — и вы можете начинать работу.

Подключение

Подключение CANNY 5 Nano к компьютеру мало чем отличается от подключения контроллеров Arduino. При наличии в системе драйвера Silicon Labs CP210x, либо после его установки из скаченного дистрибутива CannyLab, Windows создаёт виртуальный COM порт и CANNY готов к работе. В моём случае понадобилось ещё перезагрузить компьютер, но возможно это особенность моей системы.

Практические примеры

Давайте на простых примерах разберём, как в CannyLab выполнять действия, привычные нам в Arduino IDE. Начнём с традиционного мигания светодиодом.

В контроллере CANNY 5 на выводе С4 (Channel 4) присутствует тестовый светодиод (аналог светодиода, находящегося на 13 выводе в Arduino). И его тоже можно использовать для индикации и экспериментов, чем мы и воспользуемся.

Что же нужно, чтобы помигать светодиодом в контроллере CANNY? Нужно сделать всего две вещи — сконфигурировать пин четвертого канала как выход и подать на этот выход сигнал с ШИМ генератора. Все эти действия мы уже не раз проделывали в Arduino IDE, посмотрим как это выглядит в CannyLab.

Итак, конфигурируем пин четвертого канала как выход

Настраиваем генератор ШИМ. Задаём период 500 миллисекунд, заполнение — 250 миллисекунд (то есть 50 %) и 1 (true) на входе генератора «Старт» и… всё! Больше ничего делать не нужно — программа готова, осталось только залить её в контроллер.

Режим симуляции

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

Среда разработки CannyLab позволяет запускать и отлаживать программу, не записывая её в память контроллера. В режиме симуляции вы можете видеть результат работы программы прямо в реальном времени и даже вмешиваться в её работу.

Заливка в контроллер

Для работы контроллеров CANNY, перед заливкой программы (в терминологии разработчиков «диаграммы») нужно сначала залить операционную систему «Устройство/Системное ПО/Записать». Это нужно сделать только один раз, для этого нужно выбрать соответствующий вашему контроллеру файл с расширением

.ccx

.

После того, как программа написана и отлажена, её можно загрузить в ваш контроллер. Это делается просто — в меню выбираете пункт «Устройство/Диаграмма/Записать» и через несколько секунд программа оказывается записанной в контроллер.

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

Аналоговые входы

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

Мы будем отслеживать уровень напряжения на 10 пине контроллера и если он находится в диапазоне 2,5 В ± 20%, будем зажигать встроенный в плату светодиод.

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

Включаем АЦП на 10-м канале.

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

Блок «Логическое И» довершает работу и со своего выхода управляет работой светодиода на плате.

Вот и всё. То, что мы привычно делали на Arduino, мы легко сделали в CannyLab. Осталось только освоиться в этой среде программирования и вы сможете легко и непринуждённо создавать свои проекты на этой платформе.

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

Заключение по вводной статье цикла

Подключив контроллер

CANNY

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

Если вам нравится визуальное программирование в стиле CannyLab, то контроллеры CANNY могут стать для вас интересной альтернативой Arduino или работать в связке с контроллерами Arduino. Об этом мы поговорим во второй статье цикла, в которой я расскажу вам об интеграции контроллеров CANNY с системой Arduino Mega Server.

Напомню, что AMS теперь работает не только на платах Arduino, но и на беспроводных Wi-Fi модулях ESP8266 и именно о такой связке пойдёт речь в следующий раз.

И как обычно, оставайтесь с нами, будет интересно!

установка и подключение своими руками, фото и видео, как сделать анализатор

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

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

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

Где находится устройство

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

Он может располагаться в моторном отсеке или в салоне, под панелью приборов. Подробно на фото показаны примеры расположения КАН интерфейсов.

Кан модуль в одном из жгутов со штатной проводкой Расположение шины в багажном отсеке Шина КАН под приборной панелью автомобиляОбычно блок управления сигнализацией ставится под контрольным щитком либо за «приборкой» в салоне машины.

Функции

Функции, выполняющиеся интерфейсом КАН:

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

Режимы

Цифровая система может функционировать в нескольких режимах:

  1. Автономный или фоновый. При его активации все системы в

Протокол 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-шина – принцип работы системы и ее диагностика + Видео

Бортовые системы электроники в современных легковых и грузовых автомобилях обладают огромным количеством дополнительных устройств и исполнительных механизмов. Для того, чтобы обмен информацией между всеми устройствами был максимально эффективен, в автомобиле должна быть надежная коммуникационная сеть. В начале 80-ых годов 20 века компания Bosch и разработчик Intel предложили новый сетевой интерфейс – Controller Area Network, который в народе называется Can-шина.

1 О принципе работы сетевого интерфейса CAN-шина

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

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

Кан-шина в автомобиле

Похожие статьи

CAN-шина  это специальная сеть, с помощью которой осуществляется передача и обмен данными между различными узлами управления. Каждый из узлов состоит из микропроцессора (CPU) и CAN-контроллера, с помощью которого реализуется исполняемый протокол и обеспечивается взаимодействие с сетью автомобиля. Шина Кан имеет минимум две пары проводов – CAN_L и CAN_H, по которым и передаются сигналы посредством трансиверов – приемо-передатчиков, способных усиливать сигнал от управляющих устройств сети. Кроме того, трансиверы выполняют и такие функции как:

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

На сегодняшний день признаны два вида трансиверов – High Speed и Fault Tolerant. Первый тип наиболее распространен и соответствует стандарту (ISO 11898-2), он позволяет передавать данные со скоростью до 1МБ в секунду. Второй тип приемопередатчиков позволяет создать энергосберегающую сеть, со скоростью передачи до 120 Кб/сек, при этом подобные передатчики не имеют чувствительности к каким-либо повреждениям на самой шине.

2 Особенности работы сети

Следует понимать, что данные по CAN-сети передаются в виде кадров. Наиболее важные из них – это поле идентификатора (Identifire) и система данных (Data). Наиболее часто используемый тип сообщения по Кан-шине – Data Frame. Данный тип передачи данных состоит из так называемого арбитражного поля и определяет приоритетную передачу данных в том случае, если сразу несколько узлов системы передают данные на CAN-шину.

Данные по CAN-сети

Каждое из подключенных к шине устройств управления имеет свое входное сопротивление, а общая нагрузка рассчитывается из суммы всех подключенных к шине исполняемых блоков. В среднем, входное сопротивление систем управления двигателем, которые подключаются на CAN-шину, составляет 68-70 Ом, а сопротивление информационно-командной системы может составлять до 3-4 ОМ.

Таким образом, при проведении диагностических работ своими руками используется унифицированный разъем типа OBD1 или OBD2, который можно встретить на большинстве современных иномарок и отечественных автомобилей. Однако, некоторые модели автомобилей, например Volkswagen Golf 5V, Audi S4, не имеют межсетевого интерфейса. Кроме того, схема блоков управления и CAN-шины индивидуальна для каждой марки и модели авто. Для того, чтобы провести диагностику CAN-системы своими руками, используется специальная аппаратура, которая состоит из осциллографа, анализатора CAN и цифрового мультиметра.

Работы по выявлению неисправностей начинаются со снятия напряжения сети (снятие минусовой клеммы АКБ). Далее определяется изменение сопротивления между проводами шины. Самыми распространенными видами неисправности Кан-шины в автомобиле является замыкание или обрыв линии, выход из строя резисторов нагрузки и снижение уровня передачи сообщений между элементами сети. В некоторых случаях без применения анализатора Can выявить неисправность не получается.

Получение данных с CAN-шины автомобиля


Инновации или уже реальность?
 

Задача: Получить доступ к показаниям штатных датчиков автомобиля без установки дополнительных.
Решение: Считывание данных с CAN-шины автомобиля.

 

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

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

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

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

  • обороты двигателя;
  • уровень топлива в баке;
  • пробег автомобиля;
  • температура охлаждающей жидкости двигателя ТС;
  • и т.д.

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

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

 

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


• Откуда появилась задача считывания данных с CAN-шины?

Задача считывания данных с CAN-шины появилась как следствие задачи оптимизации расходов на эксплуатацию автотранспорта.

В соответствии с типовыми запросами заказчиков, автомобили и спецтехника оснащаются системой спутникового ГЛОНАСС или GPS мониторинга и системой контроля оборота топлива (на базе погружных либо ультразвуковых датчиков уровня топлива).

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

Именно таким решением стало получение информации с CAN-шины. Ведь оно имеет целый ряд преимуществ:

1. Экономия на дополнительных устройствах

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

2. Сохранение гарантии на автомобиль

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

3. Получение доступа к информации со штатно установленных электронных устройств и датчиков.


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

Технические специалисты компании Скайсим выбрали для тестирования данного решения прибор Galileo Глонасс. Он имеет встроенный дешифратор FMS и может считывать информацию напрямую с CAN-шины автомобиля.
 
• Какие достоинства и недостатки влечет за собой решение со считыванием данных с CAN-шины?

Достоинства:

• Возможность работы в режиме жёсткого реального времени.
• Простота реализации и минимальные затраты на использование.
• Высокая устойчивость к помехам.
• Надёжный контроль ошибок передачи и приёма.
• Широкий диапазон скоростей работы.
• Большое распространение технологии, наличие широкого ассортимента продуктов от различных поставщиков.

Недостатки:

• Максимальная длина сети обратно пропорциональна скорости передачи.
• Большой размер служебных данных в пакете (по отношению к полезным данным).
• Отсутствие единого общепринятого стандарта на протокол высокого уровня.

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

Известны примеры передачи звука и изображения по шине CAN. Известен случай создания системы аварийной связи вдоль автодороги длиной несколько десятков километров (Германия). (В первом случае нужна была большая скорость передачи и небольшая длина линии, во втором случае — наоборот).
 

Изготовители, как правило, не афишируют, как именно они используют полезные байты в пакете. Поэтому FMS прибор не всегда может расшифровать данные, которые «отдает» CAN-шина. Кроме того, не все марки автомобилей имеют CAN-шину. И даже не все автомобили одной марки и модели могут выдавать одинаковую информацию.


Пример реализации решения:

Не так давно компанией Скайсим совместно с партнером был реализован большой проект по мониторингу автотранспорта. В парке были различные грузовые автомобили иностранного производства. В частности, грузовые автомобили Scania p340.

 

Для того, чтобы проанализировать процесс получения данных с CAN-шины мы, по солгасованию с заказчиком, провели соответствующие исследования на трех автомобилях Scania p340: один 2008 года выпуска, второй начала 2009 и третий конца 2009 года.


Результаты оказались следующими:

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

На рисунке отображен фрагмент сообщения из информационной системы Wialon, где:
Fuel_level – уровень топлива в баке в %;
Temp_aqua – Температура охлаждающей жидкости в градусах Цельсия;
Taho  — Данные с тахометра (об/мин).

 

Регламент реализации решения был следующий:
 

 

1.  Навигационный прибор Galileo ГЛОНАСС/GPS был подключен к CAN-шине грузовиков.
Данная модель автотрекера была выбрана из-за оптимального сочетания функционала, надежности и стоимости. Кроме того, она поддерживает FMS (Fuel Monitoring System) — систему, которая позволяет регистрировать и контролировать основные параметры использования транспортного средства, т.е. подходит для подключения к CAN-шине.

 

Схему подключения к CAN-шине со стороны прибора Galileo можно найти в руководстве пользователя.  Для подключения со стороны автомобиля необходимо, в первую очередь, найти свитую пару проводов, подходящую к диагностическому разъёму. Диагностический разъем всегда в доступности и располагается вблизи от рулевой колонки. В 16 контактном разъёме по стандарту OBD II это 6-CAN high, 14-CAN low. Обратите внимание, что у проводов High напряжение примерно 2,6-2,7В, у проводов Low оно, как правило на 0,2В меньше.

_________________________________________________________________________

 

Еще одним уникальным решением, которое было использовано для снятия данных с CAN-шины, стал бесконтактный считыватель данных CAN Crocodile (производство СП Технотон, г. Минск). Он отлично подходит для работы с приборами Galileo.


Преимущества технологии CAN Crocodile:
 

• CAN Crocodile позволяет получать данные о работе автомобиля из шины CAN без вмешательства в целостность самой шины.

• Считывание данных происходит без механического и электрического контакта с проводами.

• CAN Crocodile применяется для подключения к шине CAN систем GPS/ГЛОНАСС мониторинга, которые получают информацию о режимах работы двигателя, состоянии датчиков, наличии неисправностей и т.д.

• CAN Crocodile не нарушает изоляцию проводов CAN и «слушает» обмен по шине с помощью специального беспроводного приемника.

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


 

2. Если провода обнаружены и идентифицированы верно, можно приступать к запуску CAN-сканера в приборе Galileo.

3. Выбирается стандарт FMS, скорость для большинства автомобилей 250 000.

4. Запускается сканирование.

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

6. Если ничего, кроме «end scan» Вы не увидели, тут есть несколько вариантов. Либо было неправильно осуществлено подключение, либо автомобиль по каким-то причинам не выдает данные, либо прибору неизвестен шифр данной CAN-шины. Как уже было сказано, такое случается довольно часто, поскольку пока не существует единого стандарта для передачи данных и их обработки по CAN. К сожалению, как показывает практика, получить полные данные с CAN-шины не всегда удается.


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



Но есть еще один момент, который важно затронуть.

Чаще всего основной целью клиентов является контроль уровня и расхода топлива.

  •  Даже если данные со штатных датчиков будут успешно получены с CAN-шины, какова их практическая ценность?

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

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

Выводы


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

 

Что такое КАН ШИНА?

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

Часто при обсуждении вопросов дополнительной охраны автомобиля приходится «читать лекции» клиентам, объясняя , иногда очень долго, почему на их автомобиль сигнализация должна ставиться не 1 час, а как минимум 10 часов, а иногда и полтора — два дня. И часто в этих разговорах приходится упоминать такое словосочетание как «Кан шина», что частенько вводит в ступор клиентов.

Так что же это такое — КАН ШИНА?

И для чего она в автомобиле?

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

 

Сначала ответ на вопрос — для чего?:

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

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

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

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

Далее неплохая статья объясняющая принципы конфигурирования и управления всеми устройствами в современном автомобиле:

 

Бортовая электроника современного автомобиля в своем составе имеет большое количество исполнительных и управляющих устройств. К ним относятся всевозможные датчики, контроллеры и т.д.
Для обмена информацией между ними требовалась надежная коммуникационная сеть.
В середине 80-х годов прошлого столетия компанией BOSCH была предложена новая концепция сетевого интерфейса CAN (Controller Area Network).

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

Как правило, провода CAN-шины оранжевого цвета, иногда они отличаются различными цветными полосами (CAN-High — черная, CAN-Low — оранжево-коричневая).
Благодаря применению данной системы из состава электрической схемы автомобиля высвободилось определенное количество проводников,которые обеспечивали связь, например, по протоколу KWP 2000 между контроллером системы управления двигателем и штатной сигнализацией, диагностическим оборудованием и т.д.

Скорость передачи данных по CAN-шине может достигать до 1 Мбит/с, при этом скорость передачи информации между блоками управления (двигатель — трансмиссия, ABS — система безопасности) составляет 500 кбит/с (быстрый канал), а скорость передачи информации системы «Комфорт» (блок управления подушками безопасности, блоками управления в дверях автомобиля и т.д.), информационно-командной системы составляет 100 кбит/с (медленный канал).
На рис. 1 показана топология и форма сигналов CAN-шины легкового автомобиля.
При передаче информации какого-либо из блоков управления сигналы усиливаются приемо-передатчиком (трансивером) до необходимого уровня.
 

Рис. 1. Топология и формы сигналов CAN-шины

Каждый подключенный к CAN-шине блок имеет определенное входное сопротивление, в результате образуется общая нагрузка шины CAN. Общее сопротивление нагрузки зависит от числа подключенных к шине электронных блоков управления и исполнительных механизмов. Так, например, сопротивление блоков управления, подключенных к CAN-шине силового агрегата, в среднем составляет 68 Ом, а системы «Комфорт» и информационно-командной системы — от 2,0 до 3,5 кОм.
Следует учесть, что при выключении питания происходит отключение нагрузочных сопротивлений модулей, подключенных к CAN-шине.

 

 

Рис. 2. Фрагмент CAN-шины с распределением нагрузки в проводах CAN High
can-Low

 

Еще подробнее и квалифицированней здесь: 

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

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

В данном случае большим плюсом в проведении диагностических работ является наличие единого унифицированного диагностического разъема (колодка OBD).
На рис. 3 показана блок-схема межсетевого интерфейса.

 

Рис. 3. Блок-схема межсетевого интерфейса

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

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

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

CAN-шины современного автомобиля

В скобках помечено какие из блоков управления, общающихся по шине данных присутствуют в автомобиле ВАЗ 2170 (ПРИОРА)

Единственное, что у наших автомобилей управление все-таки пока реализовано по однопроводной схеме (Шина LIN), но общее представление о том, что такое современный автомобиль производства АВТОВАЗ из таблицы получить можно…

 

CAN шина силового агрегата
Электронный блок управления двигателя   (Присутствует в автомобиле Приора)
Электронный блок управления КПП
Блок управления подушками безопасности   (Присутствует в автомобиле Приора)
Электронный блок управления АБС   (Присутствует в автомобиле Приора)
Блок управления электроусилителя руля   (Присутствует в автомобиле Приора)
Блок управления ТНВД
Блок управления системой отопления   (Присутствует в автомобиле Приора)
Блок управления штатной сигнализацией   (Присутствует в автомобиле Приора)
Центральный монтажный блок
Электронный замок зажигания
Датчик угла поворота рулевого колеса  
CAN-шина системы «Комфорт»
Комбинация приборов   (Присутствует в автомобиле Приора)
Электронные блоки дверей   (Присутствует в автомобиле Приора)
Электронный блок контроля парковочной
системы
Блок управления системы «Комфорт»   (Присутствует в автомобиле Приора как блок электропакета)
Блок управления стеклоочистителями
Контроль давления в шинах
CAN-шина информационно-командной
системы
Комбинация приборов   (Присутствует в автомобиле Приора)
Система звуковоспроизведения
Информационная система
Навигационная система
Схема подключения CAN-шины

, Учебное пособие

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

В этой статье рассматриваются основы разводки шины CAN, показана простая схема подключения шины CAN и способы подключения кабеля шины CAN.В нем описывается проводка для общей вилки и розетки DB9, часто используемых с испытательным оборудованием шины CAN. DB9 также известен как 9-контактный D-sub, DE-9 (его правильное название), DB-9, последовательный разъем, разъем RS232 или нуль-модемный разъем. Шина CAN используется практически во всех видах моторизованного автомобильного транспорта (даже в некоторых мотоциклах и скутерах). В автомобиле CAN-шина обычно доступна через порт бортовой диагностики (OBD). Таким образом, покрывается проводка шины CAN OBD. Чтобы перейти прямо к разделу проводки, прокрутите вниз.В противном случае прочтите следующую информацию о CAN-шине.

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

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

  • В 1983 году компания Robert Bosch GmbH начинает разработку нового серийного автобуса для транспортных средств, так как им не удалось найти подходящий серийный автобус для использования в транспортных средствах.Для поддержки новых электронных функций требовалась последовательная шина.
  • Автомобильная последовательная сеть контроллеров (CAN) была анонсирована в 1986 году.
  • Intel поставляет первые интегральные схемы CAN в 1987 году.
  • Популярность CAN привела к тому, что в 1991 году исходный 11-битный идентификатор сообщения был расширен до 29 бит. Этот новый расширенный CAN работает в той же сети, что и стандартный CAN. Спецификация Bosch CAN 2.0 1991 года включает часть A для стандартных сообщений и часть B для расширенных сообщений.Вот почему некоторые публикации ссылаются на спецификацию CAN 2.0B .
  • Увеличение объема данных, передаваемых в транспортных средствах (включая время, затрачиваемое на установку новой прошивки на транспортные средства) привело к проблемам с проектированием использования шины CAN. Внедрение CAN с гибкой скоростью передачи данных или просто CAN FD.

CAN FD был представлен в 2012 году для увеличения объема данных. Для этого сегмент данных CAN-пакета был увеличен в размере с максимум восьми байтов до максимум 64 байтов.Более того, в CAN FD скорость передачи битов может быть увеличена во время передачи байтов данных пакета до 4 раз, отсюда и название «Гибкая скорость передачи данных». Это увеличивает максимально возможную скорость передачи данных для CAN с 1 мегабит в секунду (1 Мбит / с) до 4 Мбит / с. Скорость передачи данных CAN-шины может быть очень низкой, например 5 килобит в секунду (Кбит / с).

Характеристики шины CAN

По шине CAN доступно много информации, потому что она существует уже давно.Международная организация по стандартизации (ISO) поддерживает спецификации CAN в дорожных транспортных средствах в серии публикаций ISO 11898. Однако, поскольку для доступа к стандартам ISO 11898 требуется плата, оригинальные спецификации Bosch широко использовались.

Спецификация Bosch CAN раньше была указана на литературной веб-странице Bosch CAN, но эта страница исчезла. Кроме того, Bosch предоставил ссылку на свою оригинальную спецификацию CAN FD, однако эта ссылка также исчезла.Пока Bosch не сделает эти спецификации снова доступными, используйте документы ISO 11898, если это возможно, в качестве альтернативы оригинальные спецификации Bosch CAN временно доступны здесь для исторических целей:

Texas Instruments дает хорошее представление о сети контроллеров. О шине CAN есть статья в Википедии. У Microchip есть примечание по применению AN228, «Физическое обсуждение CAN», в котором содержится полезная информация о сигналах CAN. Наконец, CAN in Automation (CiA) выпускает спецификацию CiA 303-1 для кабельной разводки соединителей, которая определяет широко используемый соединитель кабеля CAN-шины DB9 (9-контактный D-Sub) и необходимые выводы.Спецификации CiA также называются CANopen.

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

Те, кому не хватает технических знаний о CAN, могут захотеть взглянуть на статью CSS Electronics и видео «Объяснение шины CAN — простое введение». У них также есть хорошая статья о CAN с гибкой скоростью передачи данных, см. «Объяснение CAN FD — простое введение».

Протокол шины CAN

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

Пакеты данных CAN, передаваемые по шине CAN, считываются приложением, которое поставляется с конкретным устройством интерфейса CAN. Устройства подключаются к USB-порту компьютера, через Wi-Fi или Bluetooth. Иногда устройства могут предоставлять данные CAN через интерфейс прикладного программирования (API), что позволяет разрабатывать собственные приложения. В качестве альтернативы, устройство может просто предоставлять последовательный интерфейс к CAN, например, к общедоступным устройствам на базе ELM327.Затем терминальная программа или пользовательское приложение, такое как Torque, считывает данные CAN с последовательного порта USB или Bluetooth с помощью устройства интерфейса CAN. Каждый пакет сообщения CAN состоит из:

  • Идентификатор 0-2047 (11-битный) стандартный или 0-2 29 -1 (29-битный) расширенный
  • Код длины данных (DLC) от 0 до 8 для количества имеющихся байтов данных, для CAN FD значение 8 = 8 байтов, 9 = 12 байтов, 10 = 16 байтов, 11 = 20, 12 = 24, 13 = 32, 14 = 48 и 15 = 64 байта
  • Байты данных от 0 до 8 или для CAN FD от 0 до 64 (с использованием длины, определенной DLC)

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

Пример данных CAN от шины CAN Ford

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

Время (мс) Id Длина Данные
5328.009 043A 8 1C 21 17 71 17 71 FF FF
5329.008 0296 8 00 00 00 00 00 00 00 60
5331.029 04F2 8 00 53 6C 00 00 00 00 00
5338.165 0215 7 00 1С 01 00 00 01 40

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

Схема подключения шины CAN

Большинство оборудования для взаимодействия с CAN поставляется с 9-контактным разъемом D-sub (9-контактный штекер D-sub с контактами).Наличие разъема на устройстве CAN противоположно последовательному интерфейсу RS232, который часто поставляется с разъемом на оборудовании. Вот увеличенное изображение некоторого оборудования с интерфейсами CAN, предоставляемыми с использованием 9-контактных разъемов D-sub:

Вот еще одно устройство интерфейса CAN, называемое PCAN-USB FD. Это устройство CAN-USB предоставляется PEAK-System Technik GmbH и поддерживает стандартные CAN, расширенные CAN и CAN FD и использует штекер DB9:

Распиновка 9-контактного кабеля CAN-шины D-sub определяется CANopn в спецификации CiA 303-1, показанной в этой таблице.

Шина CAN, 9-контактный разъем D-Sub (DB9) Таблица контактов

Штифт Описание
1 Зарезервировано
2 Доминирующий низкий уровень шины CAN_L (также известный как низкий уровень CAN или CAN-)
3 Дополнительная CAN земля
4 Зарезервировано
5 Дополнительный экран CAN
6 Дополнительное заземление
7 Доминантный высокий уровень шины CAN_H (a.k.a. CAN высокий или CAN +)
8 Зарезервировано
9 CAN_V +, дополнительный внешний положительный источник питания CAN

Для базовой сети CAN это упрощается до:

Штифт Описание
2 Доминирующий низкий уровень шины CAN_L (также известный как низкий уровень CAN или CAN-)
7 Доминантный высокий уровень шины CAN_H (a.k.а. CAN высокий или CAN +)

Следовательно, для устройств, соответствующих спецификации CANopen, основной кабель CAN-шины представляет собой отрезок кабеля одиночной витой пары с разъемами DB9 (9-контактные розетки D-sub с отверстиями):

Самая простая проводка — контакты 2 и 7 на разъемах DB9 для прямого подключения. Помните, что нумерация выводов меняется при просмотре разъема спереди или сзади. Вид сзади будет использоваться при прокладке кабелей, а вид спереди — при поиске сигналов:

Для более отказоустойчивой сети можно подключить сигналы заземления CAN.Когда используется заземление CAN и поврежден один из проводов CAN high или CAN low, сеть может продолжать работать. См. Технические характеристики для использования линий заземления CAN.

Клемма подключения CAN-шины

Диаграмма в начале статьи была взята из образа CAN-шины Wikimedia Commons. На нем показана схема шины CAN. На каждом конце шины есть резистор. Шина CAN должна иметь согласующий резистор на каждом конце. Согласующий резистор имеет сопротивление около 120 Ом. Резистор поглощает энергию сигнала CAN, так что он не отражается от конца кабеля обратно по сети, вызывая помехи.При использовании кабеля вилки и розетки DB9 можно использовать адаптер DB9 со встроенным резистором на 120 Ом:

Это оконечное устройство CAN с сопротивлением 120 Ом подключается к последнему устройству в сети CAN, затем кабель CAN DB9 подключается к оконечному устройству DB9.

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

При прокладке кабелей оконечные резисторы на 120 Ом могут быть припаяны к задней части разъемов DB9. Эта диаграмма иллюстрирует идею:

Вот пример оконечного резистора на 120 Ом, припаянного к разъему DB9 с проводкой CAN, расположенной в корпусе DB9.

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

Терминатор на 120 Ом может быть улучшен для обеспечения дополнительной помехоустойчивости, см. Технические характеристики для получения информации о раздельном согласовании (с использованием двух резисторов на 60 Ом и соединительного конденсатора, подключенного между ними и заземлением, например 4,7 нФ для 1 Мбит / с).

Объединение нескольких устройств в сеть

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

Для стендовых испытаний это может быть выполнено с использованием изготовленных на заказ кабелей, гирляндного подключения прямых кабелей разветвителя DB9 или ленточных кабелей, оснащенных 9-контактными разъемами смещения изоляции D-Sub (IDC).

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

Кабель автомобильной шины CAN

Шина CAN распространена в автомобилях.Как узнать, есть ли в моей машине CAN-шина? Шина CAN присутствует почти во всех автомобилях, которые производятся из-за требования к властям доступа к данным о выбросах двигателя (загрязнении выхлопных газов) из систем управления двигателем. Данные о выбросах считываются через шину CAN. Это требование вступило в силу в Америке с конца 1990-х годов, в Европе и Японии с начала 2000-х годов и в Австралии с конца 2000-х годов. Автомобили созданы для мирового рынка, поэтому все автомобили имеют шину CAN. Доступ к CAN-шине осуществляется через порт OBD:

.

Использование выводов ODB

Штифт Описание
1 Определено производителем, e.грамм. VW / Audi / BMW игн. включено, низкая скорость GMLAN
2 SAE J1850 ШИМ автобус +
3 Производитель определен, например Ford средней или высокой скорости CAN- (низкий), Chrysler CCD bus +
4 Шасси наземное
5 Сигнальная площадка
6 CAN + (высокий), ISO 15765-4, SAE J2284
7 K-Line (ISO 9141-2, ISO 14230-4)
8 Определено производителем, e.грамм. BMW второй K-Line
9 Производитель определен, например Обороты двигателя BMW
10 SAE J1850 ШИМ автобус-
11 Производитель определен, например Ford средней или высокой скорости CAN + (высокий), Chrysler CCD bus-
12 Определено производителем
13 Определено производителем, например, программирование Ford PCM
14 CAN- (низкий), ISO 15765-4, SAE J2284
15 L-линия (ISO 9141-2, ISO 14230-4)
16 Автомобильный аккумулятор + ve (под напряжением 12 В или 24 В)

CAN Подключение ODB к DB9

При подключении порта OBD к устройству CAN DB9 можно приобрести или изготовить кабель.Для изготовления кабеля требуется штекер OBD (вилка) и 9-контактное гнездо D-sub (розетка). При покупке кабеля OBD-CAN убедитесь, что разъем DB9 соответствует вилке устройства CAN. Некоторые кабели от OBD до DB9 не соответствуют стандарту CANopen (например, контакты 2 и 7 на разъеме DB9). Также имейте в виду, что разъем OBD на автомобиле открывает 12-вольтовую электрическую систему автомобиля. Это означает, что контакты питания на разъеме OBD могут иметь диапазон напряжения от 10 до 18 вольт (выше на грузовиках) и обеспечивать опасно высокий ток.Поэтому необходимо принимать меры против поражения электрическим током.

Шина CAN Интерфейсы Arduino

Для создания сенсорной сети, подключения к шине CAN или просмотра сигналов CAN от транспортных средств в Интернете доступно множество проектов. Многие микроконтроллеры поддерживают протокол CAN. Они подключены к CAN с помощью чипа трансивера CAN. Многие популярные одноплатные компьютеры (SBC), такие как Arduino, Raspberry Pi и Texas Instruments Launchpad, могут подключаться к CAN через надстройки.Интерфейсы CAN Arduino очень популярны, например, Seeed Studio CAN-BUS Shield и SparkFun CAN-BUS Shield, а также различные совместимые устройства. Для одноплатного решения Arduino раньше была доступна плата Leonardo CAN BUS.

Примечание. Некоторые дополнительные платы с разъемом DB9 требуют правильной настройки для совместимости с CANopen (контакты 2 и 7 на разъеме DB9).

Оборудование для тестирования CAN-шины

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

См. Также

17 августа 2020 г. — TC спросил: Какова максимальная или минимальная длина каждого узла на шине?

Tek Eye — Максимальная длина кабеля между двумя конечными узлами на шине CAN зависит от используемой скорости передачи данных шины (т. Е. Скорости передачи данных). Скорость передачи сигналов в битах в секунду (бит / с) определяет максимальную длину кабеля для шины CAN.Низкая скорость передачи данных CAN-шины, например 10 Кбит / с, позволит шине работать на большом расстоянии 6700 метров между двумя концами шины. По мере увеличения скорости передачи данных максимальная длина шины быстро уменьшается. При обычных скоростях передачи данных CAN-шины автомобиля максимальная длина шины составляет:

.
  • 125 Кбит / с — 530 метров
  • 500 Кбит / с — 130 метров
  • 1000 Кбит / с (1 Мбит / с) — 49 метров

Длина шлейфов должна быть короткой, 30 см для CAN-шины 1 Мбит / с, т. Е. Прокладывать кабели CAN-шины к каждому узлу, а не использовать длинные кабели для узлов на шлейфах.

15 сентября 2020 года — andreaspenda92 спросил: Привет, вы проводите онлайн-уроки по CAN-шине?

Tek Eye — Здравствуйте, онлайн классы CAN-шины в настоящее время не предусмотрены. Поищите на YouTube по запросу can bus, чтобы увидеть некоторые ресурсы.

Автор: Дэниел С. Фаулер Опубликовано: Обновлено:

Основы CAN-Bus — KMP Drivetrain Solutions

  • Автор: Тимон Альферинк
  • 24 августа 2017

В этом посте я объясню самые основы сети CAN-Bus, которая используется в автомобилях Motorsport.Это может быть полезно для людей, которые когда-либо слышали это имя, но никогда не знали, что это такое или что оно делает. В Интернете много технической информации, но моя цель — объяснить ее на очень простом языке. В этом посте в качестве примера я использую 11-битную спецификацию высокоскоростной (1 Мбит / с) CAN2.0A.

CAN означает C ontroller A rea N etwork. Это метод, позволяющий микроконтроллерам связываться друг с другом по сети (шине). Сравните его с Ethernet (LAN), стандартом, позволяющим компьютерам также взаимодействовать друг с другом.

Оборудование CAN-Bus

Линия шины — это витая пара с согласующим резистором (120 Ом) на каждой стороне. Один провод называется CAN High, а другой — CAN Low. Оба провода нужны для правильной связи.

Устройство, подключенное к шине, называется «Узлом». Для связи в сети CAN всегда требуются два или более узла. В автоспорте вы обычно найдете от 3 до 10 узлов на автобусе.

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

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

Сообщения CAN-Bus

Сообщение CAN-Bus содержит все виды данных, но основными являются идентификатор и кадр сообщения (8 байтов).Представьте себе поезд: поезд движется с определенной скоростью (1 Мбит / с) по рельсам (автобусам) и имеет несколько вагонов (удостоверений личности). На каждой железнодорожной станции (Узле) вы можете поставить больше вагонов на поезд или посмотреть, кто в другом вагоне. Вагон (ID) с наименьшим номером имеет наивысший приоритет и идет первым. Узел может отправлять по шине несколько идентификаторов.

В вагоне (ID) есть 8 личных комнат (байтов) по 8 мест (бит) в каждой. Каждое место (бит) может иметь значение 0 или 1. Полная отдельная комната с 8 местами может иметь 256 различных комбинаций, что составляет максимальное значение в 1 байт.На нормальном языке; 1 идентификатор может содержать несколько сигналов, таких как обороты, дроссельная заслонка, температура и т. Д. Если каждый сигнал имеет размер 1 байт (8 бит), идентификатор может содержать 8 сигналов.

Если вы хотите отправить сообщение как «8000 об / мин», максимальная точность для 1 помещения (байта) будет 5000 мВ / 256 = 31 об / мин. Передача сигнала будет происходить с шагом 31 об / мин. Чтобы получить более высокую точность, можно использовать 2 комнаты (байта) для 1 сообщения. Две комнаты могут иметь максимальное значение 62236. Если вы отправляете сообщение «8000 об / мин» более 2 байтов, шаги будут 8000/65536 = 0,12 об / мин.

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

Чтобы получить сигнал, который вы ищете, вам необходимо иметь идентификатор, старший байт, младший байт и коэффициент количественной оценки. Q-фактор используется для преобразования значения сообщения (без единицы) в понятное значение (такие единицы, как об / мин, В, бар).

Важная информация

Сколько ID (вагонов) может стоять на рельсах (автобусе), зависит от многих факторов.Если загрузка автобуса превышает 60-70%, вы получите потерю данных или разбитый поезд. Кроме того, когда состояние рельсов плохое (плохая проводка, отсутствие скрученных проводов и т. Д.), Вы также получите потерю данных или разбитые поезда. Всегда проверяйте, что каждый узел (вокзал) может подключаться к шине (рельсам). Узел, созданный для рельсов со скоростью 500 Кбит / с, не может быть подключен к рельсам со скоростью 1 Мбит / с.

Я знаю, что не все сравнения, которые я сделал в этом посте, на 100% верны, но из личного опыта, когда я объяснял основы CAN другим, пытаясь визуализировать это, очень помог им понять основы.

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

Система CAN-шины

: основы

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

Как работает эта автомобильная магия? Прочтите основы работы с шиной CAN.

Сеть, автомобильный стиль

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

Как это работает?

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

OBD-II

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

Ознакомьтесь со всеми продуктами для электрооборудования и системы зажигания, доступными на NAPA Online, или доверьтесь одному из наших 17 000 пунктов обслуживания NAPA AutoCare для текущего обслуживания и ремонта.Чтобы получить дополнительную информацию о системе CAN-шины и вашем автомобиле, поговорите со знающим экспертом в местном магазине NAPA AUTO PARTS.

Фото любезно предоставлено Wikimedia Commons.

Основы CAN-шины | Macchina

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

Во-первых, некоторая информация, которая может служить пояснением.CAN — это протокол, который может работать во многих различных физических конфигурациях и относительно гибок в своих приложениях. За исключением реализаций, которые используют стандарт SAE J2411 «Single-Wire CAN» («SWC»), который используется в основном в последних автомобилях GM и известен как GMLAN, физический уровень большинства реализаций CAN, с которыми вы, вероятно, столкнетесь, включает 4 сигнала: CAN -Low и CAN-High составляют сбалансированный дифференциальный сигнал, заземление и мощность. Во многих реализациях используются согласующие резисторы между CAN-High и CAN-Low на каждом «конце» шины.В зависимости от вашей системы вам может потребоваться установить резистор между двумя сигналами данных на вашем контроллере CAN.

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

Эти сообщения (или «кадры») отправляются и принимаются контроллером CAN и несут все данные, которые передаются по шине.Описание этих фреймов в Википедии (http://en.wikipedia.org/wiki/CAN_bus#Frames) на удивление полезно, и в сочетании с некоторой аппаратной документацией, описывающей конкретный набор сообщений, может дать вам очень долгий путь к декодированию и управление CAN-совместимым оборудованием. Раздел «Идентификатор» — либо 11 бит в случае CAN 2.0 A, либо 29 бит, разделенных на две части, в случае CAN 2.0 B, — этих фреймов сообщений примерно то, на что это похоже: уникальный идентификатор для конкретного типа сообщения.В кадре данных идентификатор, наряду с некоторыми другими конфигурационными и описательными битами, сопровождает до 8 байтов данных. Мы надеемся, что в документации по оборудованию будут указаны идентификаторы для сообщений, которые оборудование отправляет и получает, но если документации недостаточно, иногда необходимо просто прослушать шину и посмотреть, какие сообщения и идентификаторы присутствуют.

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

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

Протокол шины CAN — 10-минутный урок

Введение в шину CAN:

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

CAN — это система широковещательной рассылки сообщений с несколькими ведущими (одноранговая сеть), которая определяет максимальную скорость передачи сигналов от 125 кбит / с до 1 Мбит / с. Он предусматривает 2048 различных идентификаторов сообщений.


CAN был разработан Robert Bosch GmbH в 1983 году. CAN-шина является одним из пяти протоколов, используемых в стандарте бортовой диагностики (OBD) -II. Каждый год продается около 1 миллиарда CAN-узлов.

Конкурентные преимущества и применение

Преимущества:

  • Низкая стоимость : ЭБУ (ECU = электронные блоки управления) обмениваются данными через единственный интерфейс CAN, т.е.е. не прямые аналоговые сигнальные линии, снижение ошибок, веса, затрат.
  • Централизованный : Система CAN-шины позволяет централизованно диагностировать и настраивать ошибки во всех ЭБУ.
  • Надежность : Система устойчива к отказам подсистем и электромагнитным помехам.
  • Эффективный : сообщения CAN имеют приоритет через идентификаторы, так что идентификаторы наивысшего приоритета не прерываются.
  • Гибкий : Каждый ЭБУ содержит микросхему для приема всех передаваемых сообщений, определения релевантности и соответствующих действий — это позволяет легко изменять и включать дополнительные узлы


Рис. 1: Пример CAN и без CAN в автомобильном приложении

Шина CAN широко используется в:

  • Транспортные системы (железнодорожные, авиационные, морские и т. Д.))
  • Системы управления промышленными машинами
  • Автоматизация дома и зданий (например, HVAC, лифты)
  • Машины мобильные (строительная и с / х техника)
  • Медицинские устройства и лабораторная автоматизация, а также во многих других встроенных и глубоко встроенных приложениях.
Компоненты системы и структура сети


Фиг.2: CAN BUS Архитектура OSI

Типы CAN-шины

Высокая скорость CAN (CAN 2.0B)

  • Скорость: до 1 Мбит / с
  • Диапазон: 40 м
  • 29-битный идентификатор сообщения
  • Оконечная нагрузка с резистором 120 Ом

Низкая скорость CAN (CAN 2.0A)

  • Скорость: до 125 Кбит / с
  • Диапазон: 500 м
  • 11-битный идентификатор сообщения
  • общее оконечное сопротивление должно быть около 100 Ом.

CAN FD (гибкая скорость передачи данных)

  • Скорость: до 15 Мбит / с
  • Дальность 10м


Фиг.3: Схема подключения DB9 CAN BUS Notwork

CAN синхронный или асинхронный?

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

CAN используется метод побитового арбитража без потерь для разрешения конфликтов. Этот метод арбитража требует, чтобы все узлы в сети CAN были синхронизированы для одновременной выборки каждого бита в сети CAN. Поэтому некоторые называют CAN синхронным. (К сожалению, термин «синхронный» неточен, поскольку данные передаются без тактового сигнала в асинхронном формате) Все узлы соединены друг с другом через двухпроводную шину.Провода представляют собой витую пару с характеристическим сопротивлением 120 Ом (номинальное).
ПРИМЕЧАНИЕ: Шина CAN должна иметь оконечный резистор. Согласующие резисторы необходимы для подавления отражений, а также для возврата шины в рецессивное состояние или состояние ожидания.

Топология


Рис.4: Топология шины CAN

CAN позволяет использовать несколько устройств (называемых «узлами»), для связи в сети CAN требуются два или более узла.Сложность узла может варьироваться от простого устройства ввода-вывода, встроенного компьютера или шлюза. Для каждого узла требуется: Центральный процессор: микропроцессор или хост-процессор. Контроллер CAN: часто является неотъемлемой частью микроконтроллера. Приемопередатчик CAN: определяется Стандарты ISO 11898-2 / 3 для устройств доступа к среде [MAU].

Сколько узлов у вас может быть?

В CANopen уникальные адреса доступны для 127 узлов на шине.Однако практический физический предел количества узлов составляет около 110 единиц на шину. В J1939 для шины доступно 253 уникальных адреса.


Рис.5: CAN NODE

Как работает механизм передачи данных?

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

В следующем видео подробно объясняется, как работает CAN-шина:

При использовании протокола на основе сообщений другие узлы могут быть добавлены без перепрограммирования, поскольку устройства, подключенные к шине, не имеют идентифицирующей информации — например, адресации узлов.Таким образом, не требуется никаких изменений в программном и аппаратном обеспечении любого из устройств, подключенных к шине. Арбитраж — это процесс согласования между устройствами, в ходе которого решается, какое из них может взять на себя управление шиной (Рекомендуемое чтение: https://www.linkedin.com/pulse/bus-arbitration-can-controller-area-network- abdul-rehman-anwer / и https://www.mikroe.com/blog/can-bus).

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


Основы CAN — ОСНОВЫ АВТОМОБИЛЯ

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

Введение

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

Реализации CAN:
В CAN есть две основные аппаратные реализации, это базовая CAN и полная CAN.

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

Полная CAN: В полной CAN имеется от 8 до 16 буферов памяти для каждого переданного или полученного сообщения. Здесь приемочная фильтрация выполняется аппаратно, а не программно. Каждый буфер можно настроить для приема сообщений с определенными идентификаторами.
Поскольку приемочная фильтрация выполняется аппаратно, нагрузка на программное обеспечение значительно снижается. Использование разных буферов для разных сообщений обеспечивает больше времени для обработки полученных сообщений, а переданное сообщение может обрабатываться в соответствии с уровнями приоритета. Настройка каждого буфера для каждого сообщения также обеспечивает согласованность данных в Full CAN.

Основы арбитража

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

Переменные электрического уровня (требования к битовой синхронизации)

Каждый бит CAN разделен на четыре сегмента (см. Рисунок 1). Первый сегмент, сегмент синхронизации (SYNC_SEG), — это время, в течение которого ожидается переход от рецессивного к доминантному или от доминантного к рецессивному. Второй сегмент, временной сегмент распространения (PROP_SEG), предназначен для компенсации времени физической задержки сети, как показано на рисунке 2, и должен быть в два раза больше суммы задержки распространения шины, задержки входного компаратора и задержка драйвера вывода.Третий и четвертый сегменты, оба сегмента фазового буфера (PHASE_SEG1 и PHASE_SEG2), используются для повторной синхронизации. Значение бита дискретизируется сразу после PHASE_SEG1. Скорость передачи данных может быть изменена либо путем изменения частоты генератора, которая обычно ограничена требованиями процессора, либо путем указания длины сегментов битов в «кванте времени» и значении предварительного делителя. Значение предварительного делителя умножается на минимальный квант времени, который является обратной величиной тактовой частоты системы, 1 / f sys, для определения длины кванта рабочего времени.Затем битовое время может быть вычислено как сумма каждого битового сегмента, а битовая скорость может быть вычислена как величина, обратная этой сумме.

Каждый узел должен выполнять жесткую синхронизацию по каждому краю, переходящему от рецессивного к доминантному, после простоя шины или полученного начала кадра. Жесткая синхронизация — это перезапуск внутренней битовой синхронизации для принудительного перехода фронта в SYNC_SEG, где ожидаются фронты. Ресинхронизация выполняется на всех других краях от рецессивного к доминирующему других принятых битов путем удлинения или сокращения PHASE_SEG1 или PHASE_SEG2 на один-четыре временных кванта, как указано шириной скачка ресинхронизации.Если разница между фронтом, вызывающим повторную синхронизацию, и SYNC_SEG превышает ширину скачка повторной синхронизации, эффективный результат такой же, как при жесткой синхронизации.

Ошибки сети CAN

Протокол

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

Протокол CAN обеспечивает средства локализации ошибок, требуя от каждого узла поддерживать отдельные счетчики ошибок приема и передачи. Любой счетчик будет увеличен на 1 или 8, в зависимости от типа ошибки и условий, связанных с ошибкой.Счетчик ошибок приема увеличивается для ошибок во время приема сообщения, а счетчик ошибок передачи увеличивается для ошибок во время передачи сообщения (для получения дополнительной информации см. Ссылку 1). Когда один из этих счетчиков превышает 127, узел объявляется «пассивным к ошибкам», что ограничивает отправку узлом любых дальнейших доминирующих кадров ошибок. Когда количество переданных ошибок превышает 255, узел объявляется «отключенным от шины», что запрещает узлу отправлять любые дальнейшие передачи. Счетчики ошибок приема и передачи также уменьшаются на 1 каждый раз, когда сообщение получено или передано без ошибок, соответственно.Это позволяет узлу вернуться из режима пассивной ошибки в режим активной ошибки (нормальный режим передачи), когда оба счетчика меньше 128. Узел также может вернуться в режим активности ошибки из режима отключения шины после получения 128 вхождений 11 последовательных рецессивных битов. В целом сеть поддерживает постоянные счетчики ошибок передачи и приема, если она усредняет восемь правильно переданных или принятых сообщений для каждой ошибки, возникающей во время передачи или приема, соответственно.

Сеть контроллеров (CAN) появилась в 1983 году в компании Robert Bosch GmbH как стандарт последовательной шины данных для соединения микроконтроллеров в транспортных средствах.Хотя изначально он был разработан специально для автомобильной промышленности, теперь он также используется в других приложениях. Протокол был официально выпущен в 1986 году, а первые микросхемы контроллеров CAN, произведенные Intel и Phillips, были коммерчески доступны в 1987 году. Спецификация CAN 2.0 была опубликована Bosch в 1991 году. Канал передачи данных и физические уровни CAN для скоростей передачи данных до 125 кбит / с (описываемая как «низкоскоростной последовательный обмен данными» была определена во второй части исходного стандарта ISO, опубликованного в 1994 году (ISO 11519).Часть 1 более позднего стандарта ISO, опубликованного в 2003 году (ISO 11898), охватывает канал передачи данных и физические уровни CAN, но для скорости передачи данных до 1 Мбит / с. Есть также ряд других связанных стандартов. Протоколы более высокого уровня, используемые с CAN, зависят от приложения. Ряд микроконтроллеров (например, микроконтроллеры PIC Microchip Technology) теперь имеют встроенную поддержку CAN.

Современный автомобиль обычно имеет порядка пятидесяти (а иногда и намного больше) электронных блоков управления (ЭБУ), управляющих различными автомобильными подсистемами.Самым большим микропроцессорным блоком в автомобиле обычно является блок управления двигателем (также, что сбивает с толку, сокращенно ЭБУ). Другие микропроцессорные элементы управления, начиная от системы трансмиссии и тормозной системы, заканчивая косметическими элементами, такими как автомобильные аудиосистемы, и регулировкой ведущих зеркал. Некоторые из этих подсистем работают независимо, другие должны взаимодействовать друг с другом, обрабатывать данные, полученные от датчиков, и отвечать на них. Шина CAN в системе управления автомобилем, например, обычно соединяет блок управления двигателем с системой управления коробкой передач.Он также хорошо подходит для использования в качестве полевой шины в общих средах автоматизации и стал широко использоваться для таких приложений, отчасти из-за низкой стоимости, небольшого размера и доступности многих контроллеров и процессоров CAN. В автомобильных системах они являются идеальной альтернативой дорогостоящим, громоздким и ненадежным электромонтажным станкам и разъемам.

Сеть CAN соединяет между собой управляющие устройства, датчики и исполнительные механизмы (все вместе именуемые здесь как узлов ). Каждый узел, подключенный к шине CAN, может отправлять и получать данные, но не одновременно.Сообщение состоит в основном из идентификатора , , который идентифицирует тип и отправителя сообщения, и до восьми байтов фактических данных. Физическая среда в сети CAN — это дифференциальная двухпроводная шина (обычно неэкранированная или экранированная витая пара), а используемая схема сигнализации — Non-Return to Zero (NRZ) с битовой вставкой. Поскольку CAN по сути является широковещательной сетью, сообщения будут приниматься всеми узлами. Сообщения достигают устройств не напрямую, а через каждый узел , хост-процессор и CAN-контроллер .Эти элементы находятся между самим узлом и шиной данных. Любой узел может передать сообщение при условии, что шина свободна. Если два или более узла передают данные одновременно, система арбитража просто дает приоритет на основе идентификационного номера сообщения. Сообщение с идентификатором с более высоким приоритетом перезапишет все другие сообщения, и все узлы, ответственные за сообщения с более низким приоритетом, отключаются и ждут перед повторной передачей.

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

Передача сообщений в CAN основана на принципе производитель-потребитель (широковещательная передача). Сообщение, переданное одним узлом (производитель ), принимается всеми другими узлами (потребители ). Сообщения не имеют адреса назначения, но имеют идентификатор сообщения . Сообщения в стандартном формате имеют 11-битный идентификатор сообщения, что позволяет определять 2048 различных сообщений для любой системы — более чем достаточно для большинства приложений.Для приложений, которым требуется большее количество сообщений, может использоваться расширенный формат сообщения с 29-битным идентификатором сообщения, позволяющий определять более пятисот миллионов различных сообщений. Только определенные сообщения будут применяться к каждому узлу в сети, поэтому узел, принимающий сообщение, должен применить приемную фильтрацию (обычно реализуемую аппаратно и на основе идентификатора сообщения). Если сообщение, полученное узлом, имеет отношение к нему, оно будет обработано, в противном случае оно будет проигнорировано. Сети CAN могут быть расширены без модификации существующего оборудования или программного обеспечения, если добавляемые устройства являются чисто приемниками и если им требуются только сообщения, которые уже генерируются сетью.

Арбитраж в CAN сетях

Стандартная форма арбитража в сети CAN — Множественный доступ с контролем несущей / побитовый арбитраж (CSMA / BA). Если два или более узла начинают передачу одновременно, арбитраж основан на уровне приоритета идентификатора сообщения и позволяет доставить сообщение, идентификатор которого имеет наивысший приоритет, немедленно, без задержки. Это делает CAN идеальным для систем реального времени, основанных на приоритетах. Каждый узел, когда он начинает передавать свой идентификатор сообщения, будет отслеживать состояние шины и сравнивать каждый бит, полученный с шины, с переданным битом.Если доминирующий бит (0) получен, когда был передан рецессивный бит (1), узел прекращает передачу, потому что другой узел установил приоритет. Эта концепция иллюстрируется схемой ниже.

Побитовый арбитраж в CAN сетях

Арбитраж выполняется по мере передачи поля идентификатора и равен неразрушающим . Каждый узел передает свой 11-битный идентификатор сообщения, начиная с самого старшего бита (бит 10). Двоичный ноль (0) — это доминантный бит , а двоичный (1) — это рецессивный бит .Поскольку доминирующий бит перезаписывает рецессивный бит на шине, состояние шины всегда будет отражать состояние идентификатора сообщения с наивысшим приоритетом (т. Е. Наименьшим числом). Как только узел видит неблагоприятное для себя сравнение битов, он прекращает участвовать в процессе арбитража и ждет, пока шина снова не освободится, прежде чем пытаться повторно передать свое сообщение. Таким образом, сообщение с наивысшим приоритетом будет продолжать передаваться без задержки и беспрепятственно.На приведенной выше иллюстрации узел 2 передает бит 5 как рецессивный бит (1), в то время как чтение уровня шины является доминирующим (0), поэтому узел 2 отключается. Точно так же Узел 1 отключается после передачи бита 2 в качестве рецессивного бита, тогда как уровень шины остается доминирующим. После этого узел 3 может завершить передачу своего сообщения.

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

Формат кадра CAN

Общий формат кадра сообщения CAN показан ниже.

Данные передаются с использованием кадров сообщения . Стандартный протокол CAN (версия 2.0A), также известный как Base Frame Format , использует 11-битный идентификатор сообщения. Расширенный протокол CAN (версия 2.0B), также известный теперь как Extended Frame Format , поддерживает как 11-битные, так и 29-битные идентификаторы сообщений. Большинство контроллеров версии 2.0A терпимо к сообщениям расширенного формата, но по существу игнорируют их.Контроллеры версии 2.0B могут отправлять и получать сообщения в обоих форматах.

О начале кадра сообщения сигнализирует доминирующий бит начала кадра , за которым следуют 11-битный идентификатор сообщения и бит запроса удаленной передачи (RTR), который устанавливается, только если сообщение — это кадр запроса данных, (в отличие от кадра данных). Здесь, вероятно, следует отметить, что, хотя узлы в сети CAN обычно отправляют данные без опроса, узел может запросить передачу определенного сообщения другим узлом в системе.Первые два бита ( r0, и r1 ) 6-битного поля управления определяют формат передачи (т. Е. Стандарт или расширенный ), а последние четыре бита образуют код длины данных (DLC) , который указывает количество байтов переданных данных. Поле данных может содержать от нуля до восьми байтов данных, за ним следует 16-битное поле CRC , содержащее 15-битный код проверки циклическим избыточным кодом, который используется принимающим узлом для обнаружения ошибок, и рецессивный бит разделителя .

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

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

Формат кадра сообщения


Фрейм сообщения для стандартного формата (спецификация CAN 2.0A)

Протокол CAN поддерживает два формата кадра сообщения, единственное существенное различие заключается в длине идентификатора (ID).В стандартном формате длина идентификатора составляет 11 бит, а в расширенном формате — 29 бит. Кадр сообщения для передачи сообщений по шине состоит из семи основных полей.

Сообщение в стандартном формате начинается с начального бита «начало кадра», за ним следует «поле арбитража», которое содержит идентификатор и бит «RTR» (запрос удаленной передачи), который указывает, является ли это кадр данных или кадр запроса без байтов данных (удаленный кадр).«Поле управления» содержит бит IDE (расширение идентификатора), который указывает либо стандартный формат, либо расширенный формат, бит, зарезервированный для будущих расширений, и — в последних 4 битах — количество байтов данных в поле данных. «Поле данных» имеет длину от 0 до 8 байтов, за ним следует «поле CRC», которое используется в качестве проверки безопасности кадра для обнаружения битовых ошибок. «Поле ACK» включает слот ACK (1 бит) и разделитель ACK (1 рецессивный бит). Бит в слоте ACK отправляется как рецессивный бит и перезаписывается как доминирующий бит теми приемниками, которые в это время приняли данные правильно (положительное подтверждение).Правильные сообщения подтверждаются получателями независимо от результата приемочного теста. Конец сообщения обозначается «концом кадра». «Перерыв» — это минимальное количество битовых периодов, разделяющих последовательные сообщения. Если какая-либо станция не подходит к автобусу, автобус остается в режиме ожидания («автобус простаивает»).

Стандартный фрейм данных


Стандартный кадр данных CAN показан на рисунке 2-1. Как и все другие кадры, кадр начинается с бита начала кадра (SOF), который находится в доминирующем состоянии и позволяет жесткую синхронизацию всех узлов.За SOF следует поле арбитража, состоящее из 12 бит: 11-битный идентификатор и бит запроса удаленной передачи (RTR). Бит RTR используется для различения кадра данных (доминирующий бит RTR) от удаленного кадра (рецессивный бит RTR). За полем арбитража следует поле управления, состоящее из шести битов. Первый бит этого поля — это бит расширения идентификатора (IDE), который должен быть доминирующим, чтобы указать стандартный кадр. Следующий бит, зарезервированный бит нуля (RB0), зарезервирован и определяется протоколом CAN как доминирующий бит
.Остальные четыре бита поля управления — это код длины данных (DLC), который определяет количество байтов данных (0-8 байтов), содержащихся в сообщении. После поля управления находится поле данных, которое содержит все отправляемые байты данных и имеет длину
, определенную DLC (0-8 байтов). Поле циклического контроля избыточности (CRC) следует за полем данных и используется для обнаружения ошибок передачи. Поле
CRC состоит из 15-битной последовательности CRC, за которой следует рецессивный бит разделителя CRC.Последнее поле — это двухбитовое поле подтверждения (ACK).
Во время бита слота ACK передающий узел отправляет рецессивный бит. Любой узел, получивший безошибочный кадр, подтверждает правильный прием кадра, отправляя обратно доминирующий бит (независимо от того, настроен ли узел на прием этого конкретного сообщения или нет). Разделитель рецессивного подтверждения заполняет поле подтверждения и не может быть перезаписан доминирующим битом.

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

В расширенном кадре данных CAN, показанном на рисунке 2-2, за битом SOF следует поле арбитража, которое состоит из 32 бит.Первые 11 битов являются старшими значащими битами (MSb) (Base-lD) 29-битного идентификатора. За этими 11 битами следует бит удаленного запроса замены (SRR), который определен как рецессивный. За битом SRR следует бит lDE, который является рецессивным для обозначения расширенного кадра CAN. Следует отметить, что если арбитраж остается нерешенным после передачи первых 11 бит идентификатора, и один из узлов, участвующих в арбитраже,
отправляет стандартный кадр CAN (11-разрядный идентификатор), стандартный кадр CAN выиграет арбитраж. из-за утверждения доминирующего бита lDE.Кроме того, бит SRR в расширенном кадре CAN должен быть рецессивным, чтобы позволить утверждение доминирующего бита RTR узлом, который отправляет стандартный удаленный кадр CAN. За битами SRR и lDE следуют оставшиеся 18 бит идентификатора (расширенный lD) и бит запроса удаленной передачи.
Чтобы стандартные и расширенные кадры передавались по общей сети, 29-битный расширенный идентификатор сообщения разделен на 11-битные (наиболее значимые) и 18-разрядные (наименее значимые) секции. Это разделение гарантирует, что бит lDE может оставаться в одной и той же битовой позиции как в стандартном, так и в расширенном кадрах
.За полем арбитража следует шестибитовое поле управления. Первые два бита этого поля зарезервированы и должны быть
доминирующими. Остальные четыре бита поля управления — это DLC, который определяет количество байтов данных, содержащихся в сообщении.
Оставшаяся часть кадра (поле данных, поле CRC, поле подтверждения, конец кадра и перерыв) строится так же, как и стандартный кадр данных

Фрейм удаленных данных

Обычно передача данных выполняется на автономной основе узлом источника данных (например,g., датчик, отправляющий фрейм данных). Однако возможно,
, чтобы целевой узел запросил данные у источника. Для этого узел назначения отправляет удаленный кадр с идентификатором, который соответствует идентификатору требуемого кадра данных. Затем соответствующий узел источника данных отправит фрейм данных в ответ на удаленный запрос фрейма. Есть два различия между удаленным фреймом (показанным на рисунке 2-3) и фреймом данных. Во-первых, бит RTR находится в рецессивном состоянии, а во-вторых, поле данных отсутствует.В случае передачи кадра данных и удаленного кадра с одним и тем же идентификатором в одно и то же время
кадр данных выигрывает арбитраж из-за доминирующего бита RTR, следующего за идентификатором. Таким образом, узел, который передал удаленный фрейм, немедленно получает желаемые данные.

Кадр ошибки генерируется любым узлом, обнаруживающим ошибку шины. Кадр ошибки, показанный на рисунке 2-4, состоит из двух полей: поля флага ошибки, за которым следует поле разделителя ошибки. Есть два типа полей флагов ошибок.Тип отправляемого поля флага ошибки зависит от состояния ошибки узла, который обнаруживает и генерирует поле флага ошибки.

2.4.1 АКТИВНЫЕ ОШИБКИ
Если активный к ошибкам узел обнаруживает ошибку шины, узел прерывает передачу текущего сообщения, генерируя активный флаг ошибки. Флаг активной ошибки состоит из шести последовательных доминирующих битов. Эта битовая последовательность активно нарушает правило вставки битов. Все другие станции распознают результирующую ошибку вставки битов и, в свою очередь, сами генерируют кадры ошибки, называемые эхо-флагами ошибок.

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

2.4.2 ПАССИВНЫЕ ОШИБКИ
Если пассивный к ошибкам узел обнаруживает ошибку шины, этот узел передает флаг пассивной ошибки, за которым следует поле разделителя ошибок.Флаг пассивности к ошибкам состоит из шести последовательных рецессивных битов. Кадр ошибки для ошибочно-пассивного узла состоит из 14 рецессивных битов. Из этого
следует, что, если ошибка шины не обнаружена неисправным узлом или передающим узлом, сообщение будет продолжать передачу, потому что флаг пассивной ошибки не мешает работе шины.

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

Кадр перегрузки, межкадровое пространство
Кадр перегрузки, показанный на рисунке 2-5, имеет тот же формат, что и активный кадр ошибки. Однако кадр перегрузки может быть создан только во время межкадрового интервала.Таким образом, кадр перегрузки можно отличить от кадра ошибки (кадр ошибки отправляется во время передачи сообщения). Кадр перегрузки состоит из двух полей: флага перегрузки, за которым следует ограничитель перегрузки. Флаг перегрузки состоит из шести доминирующих битов, за которыми следуют флаги перегрузки, генерируемые другими узлами (и, как и для активного флага ошибки, дающие максимум двенадцать доминирующих битов). Разделитель перегрузки состоит из восьми рецессивных битов. Фрейм перегрузки может быть сгенерирован узлом в результате двух условий:
1.Узел обнаруживает доминирующий бит в межкадровом пространстве, это недопустимое состояние. Исключение: доминирующий бит обнаруживается во время третьего бита IFS. В этом случае приемники интерпретируют это как SOF.

2. Из-за внутренних условий узел еще не может начать прием следующего сообщения. Узел может сгенерировать максимум два последовательных кадра перегрузки, чтобы отложить начало следующего сообщения. КАДРЫ СООБЩЕНИЙ CAN BUS — Межкадровое пространство Межкадровое пространство отделяет предыдущий кадр (любого типа) от последующих данных или удаленного кадра.Межкадровое пространство состоит как минимум из трех рецессивных битов, называемых перерывом. Это дает узлам время для внутренней обработки до начала следующего кадра сообщения. После перерыва линия шины остается в рецессивном состоянии (шина свободна) до начала следующей передачи.

Обнаружение и сигнализация ошибок

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

Циклический контроль избыточности (CRC)

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

Проверка кадра

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

Ошибки ACK

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

Протокол CAN также реализует два механизма обнаружения ошибок на битовом уровне:

Мониторинг

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

Бит набивка

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

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

После того, как передача ошибочного сообщения была прервана, отправитель автоматически повторяет попытку передачи (автоматический запрос на повтор).Снова может возникнуть конкуренция за размещение автобусов. Как правило, повторная передача начинается в течение 23-битных периодов после обнаружения ошибки; в особых случаях время восстановления системы составляет 31 бит.

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

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

Сообщения CAN в расширенном формате

Подкомитет SAE «Truck and Bus» стандартизировал сигналы и сообщения, а также протоколы передачи данных для различных скоростей передачи данных.Стало очевидно, что стандартизацию такого рода легче осуществить, когда доступно более длинное поле идентификации.

Для поддержки этих усилий в протокол CAN был введен 29-битный идентификатор. Этот идентификатор состоит из существующего 11-разрядного идентификатора (базовый идентификатор) и 18-разрядного расширения (расширение идентификатора). Таким образом, протокол CAN позволяет использовать два формата сообщений:

  • StandardCAN (Версия 2.0A) и
  • ExtendedCAN (Версия 2.0B)

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

! стандартное сообщение всегда имеет приоритет над сообщением в расширенном формате.

Стандартный формат кадра сообщения (спецификация CAN 2.0A)

Контроллеры

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

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

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

Кадр сообщения для расширенного формата (спецификация CAN 2.0B)

В отличие от стандартного формата, в расширенном формате за битом IDE следует 18-битное расширение идентификатора, бит RTR и зарезервированный бит (r1).

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

Обнаружение ошибок и управление

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

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

.

Шлюз CAN

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

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

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

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

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

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

Шлюз CAN / CAN, который маршрутизирует сообщения CAN через среду, такую ​​как оптическое волокно (CG-FL, EtherCAN FX) или Ethernet (EtherCAN CI) с использованием протокола, такого как TCP или UDP, называется маршрутизатором CAN / CAN.Они расширяют концепцию шлюза до большего физического расширения, но сохраняют атрибуты шлюза. Эти устройства способны реализовывать двухточечные соединения систем CAN на расстоянии до 40 км с малыми задержками и обеспечивать выполнение сложных приложений CAN.

Повторитель CAN


Принципиальная схема работы CAN-повторителя

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

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

Если сеть CAN разделена на два сегмента повторителем CAN, оба из них должны быть правильно оконцованы двумя резисторами 120R на концах. Оба сегмента физически независимы, но с логической точки зрения образуют единую сеть CAN. Это означает, что максимальная длина тупиковой линии определяется только максимальным расстоянием между двумя конечными точками сети. Линия CAN, имеющая шлейф где-то посередине, имеет три конечных точки: «A», «B» и «C».Максимальное из трех расстояний «AB», «AC» и «BC» важно для определения максимальной скорости передачи в этой конкретной системе. Следует отметить, что необходимо учитывать эквивалентную длину кабеля повторителя CAN. Чтобы увидеть пример по этой теме, посетите нашу статью: CAN Repeater example

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

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

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

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

Различия CAN и Flexray: [youtube http://www.

Отправить ответ

avatar
  Подписаться  
Уведомление о