CAN 2.0B
CAN 2.0B — это спецификация протокола последовательной передачи данных, разработанная компанией Robert Bosch GmbH в 1991 году, которая расширяет возможности оригинальной версии CAN 2.0A за счёт увеличения длины идентификатора сообщения с 11 до 29 бит. CAN (Controller Area Network) представляет собой стандарт промышленной сети, ориентированный на объединение в единую систему различных контроллеров, датчиков и исполнительных механизмов без использования центрального узла (хоста). Протокол широко применяется в автомобильной промышленности, промышленной автоматизации, медицинской технике, авиации и робототехнике благодаря высокой надёжности, устойчивости к помехам и детерминированности передачи данных.
История
Разработка протокола CAN началась в 1983 году по инициативе компании Bosch, которая стремилась создать стандарт для бортовых сетей автомобилей, способный заменить громоздкие жгуты проводов и обеспечить надёжную связь между электронными блоками управления (ЭБУ). Первая версия спецификации, известная как CAN 1.0, была выпущена в 1986 году, а в 1987 году появилась версия 1.2. В 1991 году была опубликована спецификация CAN 2.0, которая включала две части: часть A (CAN 2.0A) с 11-битным идентификатором и часть B (CAN 2.0B) с 29-битным идентификатором. CAN 2.0B полностью обратно совместима с CAN 2.0A на физическом уровне, но требует поддержки расширенного формата кадра на уровне контроллеров.
Стандарт был принят Международной организацией по стандартизации (ISO) в 1993 году как ISO 11898, который описывает физический уровень и канальный уровень модели OSI. Впоследствии протокол неоднократно дополнялся, в частности, в 2003 году вышла версия CAN 2.0B с уточнениями для высокоскоростных приложений. На сегодняшний день CAN 2.0B остаётся одним из наиболее распространённых протоколов в автомобильной электронике, хотя в новых проектах его постепенно вытесняет CAN FD (Flexible Data Rate), который позволяет увеличить скорость передачи данных.
Архитектура и принцип работы
Физический уровень
Физический уровень CAN 2.0B основан на дифференциальной передаче сигналов по двум проводам (CAN_H и CAN_L), что обеспечивает высокую помехоустойчивость. Линия представляет собой витую пару, терминированную на обоих концах резисторами сопротивлением 120 Ом. Логические уровни определяются разностью потенциалов между проводами: доминантный уровень (логический 0) соответствует разности от 1,5 до 3,0 В, а рецессивный уровень (логическая 1) — разности менее 0,5 В. Максимальная скорость передачи данных зависит от длины шины: при 40 метрах возможна скорость до 1 Мбит/с, при 500 метрах — до 125 кбит/с, при 1000 метрах — до 50 кбит/с.
Канальный уровень
Канальный уровень реализует протокол доступа к среде с множественным доступом с контролем несущей и разрешением коллизий на основе приоритетов (CSMA/CR). Каждое сообщение содержит идентификатор, который определяет его приоритет: чем меньше числовое значение идентификатора, тем выше приоритет. При одновременной передаче нескольких узлов арбитраж происходит на битовом уровне: узел, передающий доминантный бит, выигрывает арбитраж у узла, передающего рецессивный бит. Это гарантирует, что сообщение с наивысшим приоритетом будет передано без задержек.
Формат кадра
CAN 2.0B поддерживает два формата кадра: стандартный (11-битный идентификатор) и расширенный (29-битный идентификатор). Расширенный формат отличается от стандартного наличием флага IDE (Identifier Extension), который устанавливается в 1, и дополнительных 18 бит идентификатора. Структура кадра включает следующие поля:
- SOF (Start of Frame) — стартовый бит, синхронизирующий все узлы.
- Идентификатор — 11 или 29 бит, определяет приоритет и содержание сообщения.
- RTR (Remote Transmission Request) — бит запроса удалённой передачи.
- IDE (Identifier Extension) — флаг расширенного идентификатора.
- DLC (Data Length Code) — 4 бита, указывающие длину поля данных (0–8 байт).
- Поле данных — от 0 до 8 байт полезной информации.
- CRC (Cyclic Redundancy Check) — 15-битная контрольная сумма для обнаружения ошибок.
- ACK (Acknowledge) — поле подтверждения приёма.
- EOF (End of Frame) — 7 рецессивных бит, завершающих кадр.
Классификация и типы
По формату идентификатора
- CAN 2.0A (стандартный формат) — использует 11-битный идентификатор, поддерживает до 2048 уникальных сообщений. Обратно совместим с CAN 2.0B на физическом уровне, но не поддерживает расширенный формат.
- CAN 2.0B (расширенный формат) — использует 29-битный идентификатор, поддерживает до 536 миллионов уникальных сообщений. Полностью совместим с CAN 2.0A, но требует контроллеров, поддерживающих расширенный формат.
По скорости передачи
- Low-speed CAN (ISO 11898-3) — скорость до 125 кбит/с, используется для систем комфорта (например, управление стеклоподъёмниками, климат-контролем).
- High-speed CAN (ISO 11898-2) — скорость до 1 Мбит/с, применяется для критически важных систем (двигатель, трансмиссия, тормозная система).
По типу узлов
- Активные узлы — контроллеры, которые могут инициировать передачу сообщений.
- Пассивные узлы — устройства, которые только принимают сообщения (например, датчики, исполнительные механизмы).
Применение
Автомобильная промышленность
CAN 2.0B является основным протоколом для бортовых сетей автомобилей. Он используется для связи между ЭБУ двигателя, коробки передач, антиблокировочной системы (ABS), системы курсовой устойчивости (ESP), подушек безопасности, климат-контроля, мультимедийных систем и других компонентов. По данным Bosch, в современном автомобиле может быть до 70 ЭБУ, объединённых несколькими шинами CAN.
Промышленная автоматизация
В промышленности CAN 2.0B применяется в системах управления станками, роботами, конвейерами и другими производственными механизмами. Протокол используется в стандартах CANopen и DeviceNet, которые предоставляют унифицированные профили устройств и протоколы прикладного уровня.
Медицинская техника
В медицинском оборудовании (например, в аппаратах ИВЛ, дефибрилляторах, диагностических системах) CAN 2.0B обеспечивает надёжную связь между датчиками, контроллерами и исполнительными механизмами. Высокая помехоустойчивость и детерминированность критически важны для безопасности пациентов.
Авиация и космос
В авиационной и космической технике CAN 2.0B используется для управления системами жизнеобеспечения, навигации, управления полётом и мониторинга состояния оборудования. Например, в самолётах Airbus A380 и Boeing 787 применяются сети на основе CAN.
Робототехника
В робототехнике CAN 2.0B позволяет объединять в единую сеть контроллеры двигателей, датчики положения, гироскопы и другие компоненты. Протокол используется в промышленных роботах, сервоприводах и автономных транспортных средствах.
Преимущества и недостатки
Преимущества
- Высокая надёжность — механизмы обнаружения и коррекции ошибок (CRC, битовая синхронизация, повторная передача) обеспечивают вероятность ошибки менее 10⁻¹².
- Детерминированность — приоритетная арбитражная система гарантирует, что критически важные сообщения будут переданы без задержек.
- Масштабируемость — возможность подключения до 127 узлов на одну шину (с учётом ограничений по нагрузке).
- Низкая стоимость — простота реализации и широкое распространение делают протокол экономически эффективным.
- Помехоустойчивость — дифференциальная передача сигналов и экранирование обеспечивают работу в условиях сильных электромагнитных помех.
Недостатки
- Ограниченная скорость — максимальная скорость 1 Мбит/с недостаточна для некоторых современных приложений (например, передача видео или больших объёмов данных).
- Ограниченная длина данных — поле данных не превышает 8 байт, что требует фрагментации сообщений для передачи больших блоков.
- Сложность настройки — для корректной работы требуется правильная терминизация шины и расчёт времени битовой синхронизации.
- Отсутствие встроенной безопасности — протокол не предусматривает шифрования или аутентификации, что делает его уязвимым для атак (например, в автомобильных сетях).
Сравнение с другими протоколами
CAN FD
CAN FD (Flexible Data Rate) — расширение протокола CAN, представленное в 2012 году. В отличие от CAN 2.0B, CAN FD поддерживает скорость передачи данных до 8 Мбит/с и поле данных до 64 байт. CAN FD обратно совместим с CAN 2.0B на физическом уровне, но требует контроллеров, поддерживающих новый формат кадра.
LIN
LIN (Local Interconnect Network) — более дешёвый и простой протокол для низкоскоростных приложений (до 20 кбит/с). В отличие от CAN, LIN использует однонаправленную связь и требует ведущего узла. CAN 2.0B обеспечивает более высокую скорость и надёжность.
FlexRay
FlexRay — высокоскоростной протокол (до 10 Мбит/с) с временным разделением каналов, используемый в системах управления шасси и тормозной системой. FlexRay сложнее и дороже CAN 2.0B, но обеспечивает более высокую детерминированность и отказоустойчивость.
Интересные факты
- Первая реализация протокола CAN была использована в автомобилях Mercedes-Benz в 1992 году.
- В 2010 году компания Bosch выпустила спецификацию CAN 2.0B с открытым исходным кодом, что способствовало её широкому распространению.
- Протокол CAN используется не только в автомобилях, но и в системах управления железнодорожным транспортом, лифтами, эскалаторами и даже в бытовой технике (например, в стиральных машинах).
- Для тестирования и отладки сетей CAN существуют специализированные анализаторы, такие как CANalyzer, PCAN-View и USB-CAN-адаптеры.
Источники
- Robert Bosch GmbH. CAN Specification Version 2.0. — 1991.
- ISO 11898-1:2015. Road vehicles — Controller area network (CAN) — Part 1: Data link layer and physical signalling.
- ISO 11898-2:2016. Road vehicles — Controller area network (CAN) — Part 2: High-speed medium access unit.
- Lawrenz, W. CAN System Engineering: From Theory to Practical Applications. — Springer, 2013.
- Paret, D. Multiplexed Networks for Embedded Systems: CAN, LIN, FlexRay, Safe-by-Wire. — Wiley, 2007.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →