CAN – Controller Area Network

Views: 1071


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


Обзор CAN

Большинство сетевых приложений нуждаются в многоуровневом подходе к реализации системы. Этот системный подход обеспечивает взаимодействие между продуктами разных производителей. Стандарт был создан международной организацией по стандартизации (ISO) в качестве шаблона для создания многоуровневого подхода. Она называется ISO взаимодействие открытых систем (OSI) Сеть многоуровнего формирования ориентировочная модель показана на рисунке 1 для справки.

Сам протокол CAN реализует большую часть двух нижних уровней этой эталонной модели. Часть среды коммуникационной модели были намеренно исключены из Bosch CAN спецификации, чтобы позволить разработчикам систем для адаптации и оптимизации протокола связи реализации его на носителях различных типов для максимальной гибкости (витая пара, одиночный провод оптически изолированный, РФ ИК и т.д.) . Благодаря такой гибкости однако, приходит проблема совместимости.

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


Основы CAN протокола

Связь на основе CAN протокола является CSMA/CD протоколом. CSMA отвечает за коллективный доступ к шине. Это означает, что каждый узел работающий в сети должен контролировать шину после последнего обращения к ней, прежде чем пытаться отправить сообщение в шину (Контроль Несущей). Кроме того, когда условие отсутствия активности определено, каждый узел на шине имеет равные возможности для передачи сообщения (коллективный доступ – CD). CD отвечает за обнаружение коллизий на шине. Если два узла в сети начинают передачу одновременно, узлы обнаруживают ‘столкновение’ и принимают соответствующие меры. В протоколе CAN используется неразрушающий метод поразрядного арбитража. Это означает, что сообщения остаются нетронутыми после завершении арбитража, даже если конфликт обнаружен. Весь этот арбитраж происходит без коррупции и задержки с узлом с имеющий более высокий приоритет сообщений.

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

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


Базовые сообщения связи.

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

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

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

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

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


Описание кадров

CAN протокол определяет четыре различных типа сообщений (или кадров):

  1. Первый и самый распространенный тип кадра, это кадр данных. Это используется, когда узел передает информацию на любой или на все другие узлы в системе.
  2. Второй тип, это является дистанционный кадр – команда дистанционного запроса, такое сообщение передается с установленным битом RTR, чтобы показать, что это дистанционного запроса на передачу (см. рисунок 1 и рисунок 2).
  3. Два других типов кадров являются кадры обработки ошибок. Один из них называется кадром Ошибок, второй кадром Перегрузки. Кадры ошибок генерируются узлами, которые обнаруживают любую из многих ошибок протокола, определенных в CAN. Ошибки перегрузки генерируются узлами, которые требуют больше времени для обработки сообщений уже полученными.

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

Арбитражные поля позволяют установить приоритеты для сообщений на шине. Поскольку протокол CAN на основании свойства о доминирующем условии, логический определяет механизм арбитража, чем меньше число в арбитражном поле, тем выше приоритет сообщение имеет на шине. Арбитражный поле состоит из 12 бит (11 бит идентификатор и один RTR бит) или 32 бита (29 битный идентификатор, IDE бит для определения сообщение как длительного кадра данных, в SRR бит который не используется, и RTR бит), в зависимости от того, были ли использованы стандартные кадры или расширенные кадры. Только версия спецификации CAN 2.0B, определяет 29-битные идентификаторы и называет их расширенные кадры. Предыдущие версии спецификации CAN определяется 11-битные идентификаторы, которые называются стандартные кадры.

Как описано в предыдущем разделе, Дистанционный запрос на передачу (RTR=1) используется узлом, когда он требует, чтобы информация была направлена к нему от другого узла. Бит RTR=1 – дистанционный запрос отправляется с идентификатором какие данные требуются. RTR бит в Арбитражном поле используется, чтобы различать кадр дистанционного запроса и кадра данных. Если бит RTR является рецессивным (равен 1), то сообщение является дистанционным запросом. Если бит RTR является доминирующим (равен 0), сообщение – кадр данных.

Поле управления состоит из шести битов. Старший является бит IDE (означает расширенный кадр), который должен быть доминирующим (0) для стандартных кадров данных. Этот бит определяет, является ли сообщение стандартным или расширенным кадром. В расширенных кадрах, бит RB0 и RB1 зарезервированы. Четыре младших разрядов являются битами кода длины данных (DLC). Эти биты определяют длину данных, т.е. сколько байтов данных включены в сообщение. Следует отметить, что команды дистанционного запроса и не имеет поле данных, независимо от значения DLC битов.

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

рисунок 1

catcatcat_CAN_01

catcatcat_CAN_03

рисунок 2

catcatcat_CAN_02

catcatcat_CAN_04

Поле подтверждения – предназначено для контроля, что сообщение было правильно принято. Любой узел, который правильно получил сообщение, независимо от того, сколько узлов принимает или отбрасывает данные, формирует доминирующий бит на шине в слоте бита ACK (см. рисунок 1 или рисунок 2).

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


Быстрая и надежная связь
Поскольку CAN был первоначально разработан для использования для работы в автомобиле, и чтобы получить признание на рынке, критическим условием использования которого была задача эффективности в обработки ошибок. С выпуском версии 2.0B спецификации CAN, максимальная скорость передачи данных была увеличена в 8x раз по сравнению с версией 1.0 и составила 1Mbit/sec. При таких скоростях, даже самые критичные ко времени параметры могут быть переданы последовательно без проблем задержки. В дополнение к этому, протокол CAN имеет полный список ошибок которые он может определить, что обеспечивает целостность сообщений.

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

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


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

CRC ошибка

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

Ошибка подтверждения (ACK)

Передающий узел контролирует в поле подтверждения сообщения, бит ACK (который он формирует как рецессивный бит (1)) он должен содержать доминирующий бит (0). Наличие доминирующего бита означает, что хотя бы один узел правильно получил сообщение. Если этот бит является рецессивным (1), то ни один узел не получил сообщение надлежащим образом. Произошла ошибка подтверждения. Запрос Ошибка, а затем и оригинальное сообщение будет повторно отправлено в шину через определённое время ожидания.

Ошибка Формы

Если узел обнаруживает доминирующей бит в одном из следующих четырех сегментах сообщения:

  • конец кадра
  • меж кадровое пространство
  • бит подтверждения
  • CRC Разделитель

протокол CAN определяет это как нарушение кадра и формирует кадр ошибки. Оригинальное сообщение затем передается после определенной паузы. (см. рисунок 1 и рисунок 2 для того, где эти сегменты лежат в сообщении CAN).

Бит ошибки

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

Разные ошибки

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


продолжение следует …


Это может быть интересно


  • ch-4050 – дифференциальный терморегуляторch-4050 – дифференциальный терморегулятор
    Views: 1867 ch-4050 – это не новая модель, это расширенная версия универсального терморегулятора ch-4000. Различия коснулись в появлении новой функции дифференциального регулирования. Это вид регулирования по разности температур измеренного двумя …
  • MCC PIC24 – модуль REAL-TIME CLOCK AND CALENDAR (RTCC)MCC PIC24 – модуль REAL-TIME CLOCK AND CALENDAR (RTCC)
    Views: 472 RTCC предоставляет пользователю часы реального времени и функция календаря (RTCC), точность “хода” может быть откалибрована. Основные особенности модуля RTCC: • Работает в режиме глубокого сна. • Возможность выбора источника …
  • Светодиоды со встроенным драйвером WS2812BСветодиоды со встроенным драйвером WS2812B
    Views: 924 Производитель http://www.world-semi.com Краткое описание продукции фирмы Каталог продукции” catcatcat_ws_19 catcatcat_ws_15 catcatcat_ws_11 catcatcat_ws_07 catcatcat_ws_03 catcatcat_ws_18 catcatcat_ws_14 catcatcat_ws_10 catcatcat_ws_06 catcatcat_ws_02 catcatcat_ws_05 catcatcat_ws_09 catcatcat_ws_13 catcatcat_ws_17 catcatcat_ws_16 catcatcat_ws_12 catcatcat_ws_08 catcatcat_ws_04 catcatcat_ws_01 This jQuery …
  • VU Meter Tower ART – part 2VU Meter Tower ART – part 2
    Views: 976 Проект – VU Meter Tower ART получил продолжение в своем развитии. Теперь можно заказать набор деталей из акрила для самостоятельной сборки. В проект корпуса внесено целый ряд доработок, …
  • LM317 и светодиодыLM317 и светодиоды
    Views: 7830 LM317 и светодиоды статья с переработанная с сайта http://invent-systems.narod.ru/LM317.htm Долговечность светодиодов определяется качеством изготовления кристалла, а для белых светодиодов еще и качеством люминофора. В процессе эксплуатации скорость деградации кристалла …
  • BMP280 – температура и атмосферное давление – учебный проектBMP280 – температура и атмосферное давление – учебный проект
    Views: 2052 Учебный проект на PIC32 и светодиодной панели P5 (2121)-168-6432-80 (32*64). Проект позволяет ознакомиться с простой графикой и с чтением давления и температуры с датчика BMP280. Для тестирования необходимо …
  • Kitchen timer with contactless gesture controlKitchen timer with contactless gesture control
    Views: 614    Кухонний таймер з безконтактним керуванням жестами дозволяє встановити необхідний період часу для приготування страв, не торкаючись пристрою. Дуже зручно під час приготування їжі, коли руки забрудниться. Усі …
  • DS18B20 – удаленный контроль температурыDS18B20 – удаленный контроль температуры
    Views: 3035 Контроль температуры с использованием датчиков температуры DS18B20 и платы ILLISSI-4B-09-primum Проект позволяет подключать к плате ILLISSI-4B-09-primum до 16 датчиков температуры DS18B20, удаленных более 300 метров,  и выводить информацию …
  • REFERENCE CLOCK OUTPUT MODULEREFERENCE CLOCK OUTPUT MODULE
    Views: 497 REFERENCE CLOCK OUTPUT MODULE Модуль формирования опорного тактового сигнала Модуль опорного тактового сигнала обеспечивает возможность посылать сигнал синхронизации на тактовый опорный выходной контакт или контакты (CLKR) в зависимости от …
  • Цифровой спидометр для автомобиляЦифровой спидометр для автомобиля
    Views: 10151  Универсальность печатной платы ch-c0030pcb позволяет создавать на её основе разнообразные устройства. Одним из таких устройств является электронный спидометр для автомобиля, в котором можно задать два компаратора скорости, например,  для …



Поделись этим!

Catcatcat

catcatcat

Development of embedded systems based on Microchip microcontrollers.

Метки

Продолжайте читать

НазадДалее