Controller Area Network
Controller Area Network (CAN, с англ. — «сеть контроллерной области») — это последовательная шина данных, предназначенная для объединения в единую сеть различных электронных блоков управления (ЭБУ) и исполнительных устройств в реальном времени. CAN-интерфейс обеспечивает обмен короткими сообщениями с высокой степенью надёжности и устойчивости к помехам, что делает его стандартом де-факто в автомобильной промышленности, а также в промышленной автоматизации, авиации, медицинской технике и робототехнике. Протокол был разработан в середине 1980-х годов компанией Robert Bosch GmbH и впоследствии стандартизирован (ISO 11898).
История
Разработка CAN началась в 1983 году по инициативе немецкого инженера Уве Крашера (Uwe Kiencke) из компании Bosch. Основной задачей было создание единой сети, способной заменить громоздкие и ненадёжные жгуты проводов, соединявшие отдельные блоки управления в автомобиле. Первая микросхема CAN-контроллера была выпущена компанией Intel в 1987 году. В 1991 году Bosch опубликовал спецификацию CAN 2.0, разделённую на две части: CAN 2.0A (стандартный формат 11-битного идентификатора) и CAN 2.0B (расширенный формат 29-битного идентификатора).
В 1993 году CAN был принят как международный стандарт ISO 11898, который описывает физический уровень и протокол передачи данных. Впоследствии стандарт был дополнен: ISO 11898-2 (высокоскоростной физический уровень), ISO 11898-3 (низкоскоростной отказоустойчивый уровень) и ISO 11898-4 (протокол синхронизации времени). С 2000-х годов CAN активно вытеснял устаревшие шины (например, K-Line, LIN) и стал основой для бортовых сетей большинства автомобилей. В 2011 году компания Bosch представила CAN FD (Flexible Data-Rate), позволяющий увеличить скорость передачи данных до 8 Мбит/с за счёт гибкого размера кадра данных (до 64 байт).
Архитектура и принцип работы
Топология сети
CAN-сеть построена по принципу многоточечной шины (multidrop bus). Все устройства (узлы) подключаются параллельно к одной дифференциальной паре проводов (CAN_H и CAN_L). Каждый узел состоит из микроконтроллера, CAN-контроллера (аппаратного или программного) и трансивера (приёмопередатчика). Трансивер преобразует логические уровни контроллера в дифференциальные сигналы на шине. На концах шины обязательно устанавливаются терминальные резисторы (обычно 120 Ом) для подавления отражений сигнала.
Метод доступа к среде
CAN использует метод множественного доступа с контролем несущей и разрешением коллизий на основе приоритетов (CSMA/CR — Carrier Sense Multiple Access with Collision Resolution). В отличие от Ethernet, где коллизия ведёт к потере пакета, в CAN коллизия разрешается без потери данных: узел с более высоким приоритетом (меньшим числовым значением идентификатора) продолжает передачу, а узлы с меньшим приоритетом автоматически прекращают передачу и переходят в режим приёма. Это достигается за счёт доминантного и рецессивного состояний шины: логический 0 (доминантный) перебивает логическую 1 (рецессивную).
Формат кадра
Сообщение CAN состоит из следующих полей:
- SOF (Start of Frame) — один доминантный бит, обозначающий начало кадра.
- Идентификатор — 11 бит (стандартный формат) или 29 бит (расширенный), определяет приоритет и содержание сообщения.
- RTR (Remote Transmission Request) — бит, указывающий, является ли кадр запросом данных.
- DLC (Data Length Code) — 4 бита, кодирующих длину поля данных (от 0 до 8 байт).
- Поле данных — от 0 до 8 байт (до 64 байт в CAN FD).
- CRC (Cyclic Redundancy Check) — 15-битная контрольная сумма для обнаружения ошибок.
- ACK (Acknowledgement) — два бита, подтверждающие корректный приём.
- EOF (End of Frame) — 7 рецессивных бит, завершающих кадр.
Арбитраж и приоритеты
Арбитраж происходит во время передачи идентификатора. Если два узла начинают передачу одновременно, на шине устанавливается доминантный уровень (0), если хотя бы один узел передаёт 0. Узел, передающий рецессивный бит (1), обнаруживает несовпадение и прекращает передачу. Таким образом, сообщение с наименьшим идентификатором (наивысшим приоритетом) гарантированно проходит без коллизий. Это обеспечивает детерминированное поведение сети, критически важное для систем реального времени.
Физический уровень
Дифференциальная передача
CAN использует дифференциальную передачу сигнала по двум проводам: CAN_H и CAN_L. В доминантном состоянии (логический 0) напряжение на CAN_H повышается до 3,5 В, а на CAN_L понижается до 1,5 В (разница 2 В). В рецессивном состоянии (логическая 1) оба провода находятся на уровне 2,5 В (разница 0 В). Дифференциальная схема обеспечивает высокую помехоустойчивость: помеха, наведённая на оба провода одинаково, не влияет на разность потенциалов.
Скорость передачи
Стандартный CAN (ISO 11898-2) поддерживает скорость до 1 Мбит/с при длине шины до 40 метров. При увеличении длины скорость снижается: например, 250 кбит/с на 250 метрах, 125 кбит/с на 500 метрах. CAN FD может работать на скоростях до 8 Мбит/с на коротких линиях. Низкоскоростной CAN (ISO 11898-3) работает на скоростях до 125 кбит/с и допускает длину шины до 1 км.
Типы трансиверов
- Высокоскоростные (HS-CAN) — до 1 Мбит/с, стандарт ISO 11898-2.
- Низкоскоростные отказоустойчивые (LS-CAN) — до 125 кбит/с, стандарт ISO 11898-3. Допускают работу при обрыве одного из проводов.
- Однопроводные (SW-CAN) — упрощённый вариант, используемый в некоторых автомобилях (например, GM), скорость до 33,33 кбит/с.
Виды и расширения
CAN 2.0A и CAN 2.0B
- CAN 2.0A — стандартный формат с 11-битным идентификатором. Поддерживает до 2048 различных сообщений.
- CAN 2.0B — расширенный формат с 29-битным идентификатором. Поддерживает до 536 миллионов сообщений. Обратно совместим с CAN 2.0A.
CAN FD (Flexible Data-Rate)
Разработан компанией Bosch в 2011 году и стандартизирован как ISO 11898-1:2015. Отличается от классического CAN:
- Переменная скорость передачи данных — арбитраж идёт на стандартной скорости (до 1 Мбит/с), а поле данных передаётся на повышенной скорости (до 8 Мбит/с).
- Увеличенный размер данных — до 64 байт вместо 8.
- Новый формат кадра — добавлены биты BRS (Bit Rate Switch) и ESI (Error State Indicator).
CANopen
Протокол более высокого уровня, построенный на основе CAN. Разработан в 1990-х годах для промышленной автоматизации. Определяет стандартизированные профили устройств, объектный словарь и механизмы синхронизации. Широко применяется в станкостроении, робототехнике, медицинском оборудовании.
J1939
Стандарт для тяжёлой техники (грузовики, автобусы, сельскохозяйственные машины), разработанный SAE International. Использует 29-битный идентификатор CAN 2.0B и определяет протоколы диагностики, управления двигателем, трансмиссией и тормозной системой.
DeviceNet
Протокол, разработанный компанией Rockwell Automation для промышленных сетей. Ориентирован на простые устройства (датчики, исполнительные механизмы) и использует 11-битный идентификатор.
Применение
Автомобильная промышленность
CAN является основной бортовой сетью в современных автомобилях. Он используется для связи между:
- Блоком управления двигателем (ECU) и коробкой передач.
- Антиблокировочной системой (ABS) и системой стабилизации (ESP).
- Панелью приборов и блоком управления кузовом (BCM).
- Системами безопасности (подушки, преднатяжители ремней).
- Информационно-развлекательными системами.
В типичном современном автомобиле может быть до 70-80 ЭБУ, объединённых несколькими CAN-шинами (например, силовая шина, шина комфорта, шина диагностики).
Промышленная автоматизация
В промышленности CAN применяется в системах управления станками, конвейерами, роботами. Протокол CANopen используется для интеграции датчиков, приводов, контроллеров. Преимущества: высокая надёжность, детерминизм, низкая стоимость реализации.
Авиация и космонавтика
CAN применяется в системах управления самолётов (например, Airbus A380, Boeing 787) и космических аппаратов. Используются специализированные отказоустойчивые варианты (например, CANaerospace).
Медицинская техника
В медицинских устройствах (аппараты ИВЛ, мониторы пациента, хирургические роботы) CAN обеспечивает надёжную связь между модулями. Протокол CANopen используется в стандарте IEC 62304 для медицинского ПО.
Робототехника
CAN применяется для связи контроллеров с сервоприводами, датчиками и исполнительными механизмами. Поддерживает синхронизацию движений нескольких осей в реальном времени.
Преимущества и недостатки
Преимущества
- Высокая надёжность — дифференциальная передача, CRC, механизмы обнаружения ошибок (битовые, заполнения, формы, ACK).
- Детерминизм — арбитраж на основе приоритетов гарантирует время доставки критических сообщений.
- Низкая стоимость — простая двухпроводная линия, недорогие микросхемы.
- Масштабируемость — до 127 узлов на одной шине (теоретически до 2032).
- Устойчивость к помехам — дифференциальный сигнал и экранирование.
Недостатки
- Ограниченная скорость — стандартный CAN ограничен 1 Мбит/с (CAN FD до 8 Мбит/с).
- Ограниченная длина шины — при высоких скоростях длина не превышает 40 метров.
- Ограниченный размер данных — до 8 байт в классическом CAN (CAN FD до 64 байт).
- Отсутствие встроенной безопасности — протокол не предусматривает шифрования или аутентификации (решается на уровне приложений).
Интересные факты
- Первым серийным автомобилем, оснащённым CAN-шиной, стал Mercedes-Benz W140 (1991 год). В нём CAN использовалась для связи блоков управления двигателем и трансмиссией.
- CAN-протокол используется не только в транспорте, но и в системах управления лифтами, эскалаторами, солнечными электростанциями.
- В 2018 году исследователи из Университета Мичигана продемонстрировали атаку на CAN-сеть автомобиля через аудиосистему, что привело к разработке стандарта CANsec (безопасность на уровне канала).
- CAN FD был разработан для удовлетворения потребностей автономных автомобилей, где требуется передача больших объёмов данных (например, от лидаров и камер).
Источники
- 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 coding sublayer.
- ISO 11898-2:2016. Road vehicles — Controller area network (CAN) — Part 2: High-speed medium access unit.
- ISO 11898-3:2006. Road vehicles — Controller area network (CAN) — Part 3: Low-speed, fault-tolerant, medium-dependent interface.
- CAN in Automation (CiA). CANopen Application Layer and Communication Profile (CiA 301).
- SAE International. J1939-11: Physical Layer, 250 kbps, Twisted Shielded Pair.
- Uwe Kiencke, Siegfried Dais. Controller Area Network — From Concept to Reality // SAE Technical Paper 900694. — 1990.
- Wolfhard Lawrenz. CAN System Engineering: From Theory to Practical Applications. — Springer, 2013.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →