CAN (Controller Area Network)
CAN (Controller Area Network) — это последовательная шина данных, предназначенная для объединения в единую сеть различных электронных блоков управления (ЭБУ) в реальном времени. CAN-интерфейс обеспечивает высокую помехоустойчивость, отказоустойчивость и детерминированную передачу сообщений, что делает его основным стандартом для бортовых сетей автомобилей, а также для промышленной автоматизации, авионики, медицинского оборудования и робототехники. Протокол был разработан компанией Robert Bosch GmbH в 1983 году, а в 1993 году стандартизирован как ISO 11898.
История
Разработка CAN началась в начале 1980-х годов в компании Bosch под руководством инженера Уве Кирхгофа. Основной целью было создание единой сети, которая заменила бы громоздкие и ненадёжные жгуты проводов, соединявшие каждый датчик и исполнительный механизм с отдельным блоком управления. Первая версия протокола была представлена в 1986 году на конгрессе SAE (Society of Automotive Engineers) в Детройте. Серийное внедрение началось в 1988 году на модели BMW 8 Series (E31), где CAN использовалась для управления двигателем и трансмиссией.
В 1991 году Bosch выпустил спецификацию CAN 2.0, которая разделила протокол на два формата: стандартный (11-битный идентификатор, CAN 2.0A) и расширенный (29-битный идентификатор, CAN 2.0B). В 1993 году Международная организация по стандартизации (ISO) приняла CAN как стандарт ISO 11898, который охватывает физический и канальный уровни модели OSI. В 2003 году была опубликована версия ISO 11898-2, описывающая высокоскоростной CAN (до 1 Мбит/с), а в 2006 году — ISO 11898-3 для низкоскоростного CAN с отказоустойчивостью (до 125 кбит/с).
В 2011 году компания Bosch представила CAN FD (Flexible Data-Rate), который увеличил скорость передачи данных до 8 Мбит/с и размер полезной нагрузки до 64 байт. CAN FD обратно совместим с классическим CAN на физическом уровне, но требует поддержки со стороны контроллеров. С 2015 года CAN FD стандартизирован как ISO 11898-1:2015.
Архитектура и принцип работы
Физический уровень
CAN использует дифференциальную передачу сигнала по двум проводам: CAN High (CANH) и CAN Low (CANL). В состоянии доминантного бита (логический 0) напряжение на CANH повышается (например, до 3,5 В), а на CANL понижается (до 1,5 В), создавая разность потенциалов около 2 В. В рецессивном состоянии (логическая 1) оба провода имеют одинаковое напряжение (около 2,5 В). Такая схема обеспечивает высокую помехоустойчивость и возможность работы в условиях сильных электромагнитных помех, характерных для автомобильной среды.
Сеть строится по топологии «шина» (multi-drop) с терминаторами (резисторами 120 Ом) на обоих концах линии. Максимальная длина сегмента зависит от скорости передачи: при 1 Мбит/с — до 40 м, при 50 кбит/с — до 1 км. Количество узлов ограничено электрической нагрузкой шины и обычно не превышает 30–40 на один сегмент, хотя с использованием повторителей может достигать 200.
Канальный уровень
Передача данных осуществляется в виде кадров (frames). Основные типы кадров:
- Кадр данных (Data Frame): содержит идентификатор, поле данных (от 0 до 8 байт для классического CAN, до 64 байт для CAN FD), контрольную сумму (CRC) и биты подтверждения (ACK).
- Кадр запроса (Remote Frame): используется для запроса данных от другого узла; не содержит поля данных.
- Кадр ошибки (Error Frame): генерируется узлом при обнаружении ошибки, разрушает текущий кадр.
- Кадр перегрузки (Overload Frame): сигнализирует о том, что узел не готов к приёму данных.
Идентификатор кадра определяет приоритет: чем меньше числовое значение идентификатора, тем выше приоритет. Арбитраж доступа к шине реализован на основе доминантных и рецессивных битов: если два узла начинают передачу одновременно, узел с более высоким приоритетом (меньшим идентификатором) выигрывает, а узел с низким приоритетом автоматически прекращает передачу и переходит в режим приёма.
Методы обнаружения ошибок
CAN обеспечивает пять механизмов обнаружения ошибок:
- Битовое заполнение (Bit Stuffing): после пяти последовательных одинаковых битов вставляется противоположный бит; нарушение правила считается ошибкой.
- Контроль битов (Bit Monitoring): передатчик сравнивает отправленный бит с фактическим состоянием шины.
- Контрольная сумма (CRC): 15- или 17-битная последовательность для проверки целостности данных.
- Формат кадра (Frame Check): проверка правильности полей кадра.
- Подтверждение (ACK): каждый узел, успешно принявший кадр, отправляет доминантный бит в поле ACK.
При обнаружении ошибки узел генерирует кадр ошибки, что приводит к перезапуску передачи. После нескольких ошибок узел может перейти в состояние «пассивной ошибки» или «отключения от шины» (Bus Off) для предотвращения блокировки сети.
Виды и стандарты
Классический CAN (CAN 2.0)
- CAN 2.0A: 11-битный идентификатор, до 2048 узлов (теоретически), скорость до 1 Мбит/с.
- CAN 2.0B: 29-битный идентификатор, до 536 миллионов узлов (теоретически), обратно совместим с CAN 2.0A.
CAN FD (Flexible Data-Rate)
Введён в 2011 году. Отличается от классического CAN:
- Переменная скорость передачи: в фазе арбитража — до 1 Мбит/с, в фазе данных — до 8 Мбит/с.
- Увеличенный размер данных: до 64 байт на кадр.
- Улучшенная CRC (17 или 21 бит) для защиты больших пакетов.
- Обратная совместимость на физическом уровне: CAN FD-узлы могут работать в сети с классическими CAN-узлами, но при этом не могут использовать режим FD.
CANopen
Высокоуровневый протокол прикладного уровня, построенный на базе CAN. Разработан в 1995 году организацией CAN in Automation (CiA). Используется в промышленной автоматизации, медицинском оборудовании, железнодорожном транспорте. Определяет профили устройств, объектный словарь и механизмы синхронизации.
J1939
Протокол, разработанный SAE для тяжёлой коммерческой техники (грузовики, автобусы, сельхозтехника). Использует 29-битный идентификатор и скорость 250 кбит/с. Определяет стандартизированные сообщения для управления двигателем, трансмиссией, тормозами и другими системами.
DeviceNet
Протокол, разработанный компанией Allen-Bradley (Rockwell Automation) для промышленной автоматизации. Использует CAN на физическом уровне и поддерживает до 64 узлов. Широко применяется в системах управления производственными линиями.
Применение
Автомобильная промышленность
CAN является основой бортовых сетей в большинстве современных автомобилей. С его помощью соединяются блоки управления двигателем (ECU), трансмиссией, антиблокировочной системой (ABS), системой стабилизации (ESP), подушками безопасности, климат-контролем, мультимедиа и другими системами. В одном автомобиле может быть до 70–100 ЭБУ, объединённых несколькими CAN-шинами (например, шина силового агрегата, шина комфорта, шина информационно-развлекательной системы).
Промышленная автоматизация
В системах управления технологическими процессами CAN используется для связи программируемых логических контроллеров (ПЛК), датчиков, исполнительных механизмов и панелей оператора. Протоколы CANopen и DeviceNet обеспечивают стандартизированную интеграцию оборудования от разных производителей.
Медицинское оборудование
CAN применяется в аппаратах МРТ, КТ, ультразвуковых сканерах, системах жизнеобеспечения и хирургических роботах. Высокая надёжность и отказоустойчивость критически важны для медицинских устройств.
Авионика и космическая техника
В авиации CAN используется для управления системами самолёта (шасси, закрылки, топливная система). В космических аппаратах CAN применяется в системах телеметрии и управления научными приборами.
Робототехника
CAN широко применяется в промышленных роботах, сервоприводах и мобильных роботах. Позволяет синхронизировать движения нескольких осей и передавать данные с датчиков в реальном времени.
Преимущества и недостатки
Преимущества
- Высокая помехоустойчивость: дифференциальная передача и встроенные механизмы обнаружения ошибок.
- Детерминированность: приоритетный доступ к шине гарантирует, что критически важные сообщения будут переданы без задержек.
- Отказоустойчивость: при выходе из строя одного узла остальные продолжают работу.
- Низкая стоимость: двухпроводная шина и простые контроллеры.
- Масштабируемость: возможность добавления новых узлов без изменения существующей сети.
Недостатки
- Ограниченная скорость: классический CAN — до 1 Мбит/с, что недостаточно для современных мультимедийных систем (например, передача видео).
- Ограниченная длина кадра: 8 байт данных в классическом CAN (CAN FD решает эту проблему частично).
- Сложность диагностики: при большом количестве узлов и сообщений требуется специализированное оборудование для анализа сети.
- Отсутствие встроенной безопасности: протокол не предусматривает шифрования или аутентификации, что требует дополнительных мер защиты.
Интересные факты
- Первым автомобилем с CAN-шиной стал BMW 8 Series (E31) в 1988 году.
- CAN используется в Международной космической станции (МКС) для управления некоторыми системами.
- В 2018 году компания Bosch представила CAN XL (Extended Length), который увеличивает скорость до 10 Мбит/с и размер данных до 2048 байт.
- Протокол CAN является основой для стандарта ISO 11783 (ISOBUS), используемого в сельскохозяйственной технике.
- В России CAN применяется в системах управления железнодорожным транспортом, в том числе на локомотивах и вагонах метро.
Источники
- Bosch CAN Specification 2.0 (1991)
- ISO 11898-1:2015 — Road vehicles — Controller area network (CAN)
- CAN in Automation (CiA) — CANopen Application Layer and Communication Profile
- SAE J1939 — Recommended Practice for Serial Control and Communications Heavy Duty Vehicle Network
- Robert Bosch GmbH — CAN FD: The flexible data-rate extension
- National Instruments — CAN Physical Layer and Data Link Layer Overview
- Kvaser AB — CAN Protocol Tutorial
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →