Controller Area Network

CAN (англ. Controller Area Network (немцы, создатели стандарта, читают это слово как «КАН», а не «КЭН», как бы это следовало по английским нормам) — сеть контроллеров) — стандарт промышленной сети, ориентированный прежде всего на бъединение в единую сеть различных простых датчиков.

Режим передачи — последовательный, широковещательный, пакетный. CAN разработан компанией Robert Bosch GmbH в середине 1980-х и в настоящее время широко распространён в промышленной автоматизации, технологиях «умного дома», автомобильной промышленности и многих других областях.

Содержание

Описание стандарта

Непосредственно стандарт CAN от Bosch определяет передачу в отрыве от физического уровня — он может быть каким угодно, например, радиоканалом или оптоволокном. Но на практике под CAN-сетью обычно подразумевается сеть топологии «шина» с физическим уровнем в виде дифференциальной пары, определённым в стандарте ISO 11898. Иногда также в качестве физического уровня применяется RS-485. Передача ведётся кадрами, которые принимаются всеми узлами сети.

Общие сведения

Синхронная шина, с типом доступа Collision Resolution (CR), который в отличие от Collision Detect (CD) сетей (Ethernet - это CD) детерминировано (приоритетно) обеспечивает доступ на передачу сообщения, что особо ценно для промышленных сетей управления (fieldbus). Передача ведётся кадрами. Полезная информация в кадре состоит из идентификатора длиной 11 бит (стандартный формат) или 29 бит (расширенный формат, надмножество предыдущего) и поля данных длиной от 0 до 8 байт. Идентификатор говорит о содержимом пакета и служит для определения приоритета при попытке одновременной передачи несколькими сетевыми узлами.

Рецессивные и доминантные биты

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

Виды кадров

  • Кадр данных (data frame) — передаёт данные;
  • Кадр запроса передачи (remote frame) — служит для запроса на передачу кадра данных с тем же идентификатором;
  • Кадр перегрузки (overload frame) — обеспечивает промежуток между кадрами данных или запроса;
  • Кадр ошибки (error frame) — передаётся узлом, обнаружившим в сети ошибку

Кадры данных и запроса отделяются от предыдущих кадров межкадровым промежутком.

Формат кадра

Базовый формат кадра данных

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

Первые 7 бит идентификатора не должны быть все рецессивными.

Расширенный формат кадра данных

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

Идентификатор получается объединением частей A и B.

Формат кадра запроса

Совпадает с кадрами данных стандартного или расширенного формата за двумя исключениями:

  • В поле RTR рецессив вместо доминанты.
  • Отсутствует поле данных.

Арбитраж доступа

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

Контроль ошибок

CAN имеет несколько механизмов контроля и предотвращения ошибок:

  • Контороль передачи: при передаче битовые уровни в сети сравниваются с передаваемыми битами.
  • Дополняющие биты (bit stuffing): после передачи пяти одинаковых битов подряд автоматически передаётся бит противоположного значения. Таким образом кодируются все поля кадров данных или запроса, кроме разграничителя контрольной суммы, промежутка подтверждения и EOF.
  • Контрольная сумма: передатчик вычисляет её и добавляет в передаваемый кадр, приёмник считает контрольную сумму принимаемого кадра в реальном времени, сравнивает с суммой в самом кадре и в случае совпадения передаёт доминантный бит в промежутке подтверждения.
  • Контроль значений полей при приёме.

Разработчики оценивают вероятность невыявления ошибки передачи как 4,7×10-12.

Скорость передачи и длина сети

Диапазон скоростей

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

Предельная длина сети

Приведённые выше методы контроля ошибок требуют, чтобы изменение бита при передаче успело распространиться по всей сети к моменту замера значения. Это ставит максимальную длину сети в обратную зависимость от скорости передачи: чем больше скорость, тем меньше длина. Например, для сети стандарта ISO 11898 предельные длины составляют приблизительно:

1 Мбит/с 40 м
500 Кбит/с 100 м
125 Кбит/с 500 м
10 Кбит/с 5000 м

Использование оптопар для защиты устройств от высоковольтных помех в сети ещё больше сокращает предельную длину. <-- -- например, --> Сильно разветвлённые сети (паутина) также снижают скорость из-за множества отражений сигнала.

Протоколы высокого уровня

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

  • CANopen
  • DeviceNet
  • CAN Kingdom
  • J1939
  • SDS

Преимущества и недостатки

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

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

Недостатки

  • Максимальная длина сети обратно пропорциональна скорости передачи.
  • Большой размер служебных данных в пакете (по отношению к полезным данным).
  • Отсутствие единого общепринятого стандарта на протокол высокого уровня, однако же это и достоинство. Стандарт сети предоставляет широкие возможности для практически безошибочной передачи данных между узлами, оставляя разработчику возможность вложить в этот стандарт всё, что туда сможет поместиться. В этом отношении CAN подобен простому электрическому проводу. Туда можно «затолкать» любой поток информации, который сможет выдержать пропускная способность шины. Известны примеры передачи звука и изображения по шине CAN (Россия). Известен случай создания системы аварийной связи вдоль автодороги длиной несколько десятков километров (Германия). (В первом случае нужна была большая скорость передачи и небольшая длина линии, во втором случае — наоборот). Изготовители, как правило, не афишируют, как именно они используют полезные байты в пакете.

Ссылки

 
Начальная страница  » 
А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ы Э Ю Я
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9 Home