Протокол CAN 2.0A
CAN 2.0A (Controller Area Network, версия 2.0, часть A) — это стандарт последовательной шины передачи данных, разработанный компанией Bosch в 1991 году для обеспечения надёжного обмена информацией между электронными блоками управления (ЭБУ) в реальном времени. Протокол определяет физический и канальный уровни модели OSI, используя дифференциальную передачу сигнала по витой паре, и поддерживает скорость передачи до 1 Мбит/с. CAN 2.0A является частью семейства стандартов CAN, где часть A описывает формат кадра с 11-битным идентификатором (стандартный формат), в отличие от CAN 2.0B, который поддерживает 29-битный идентификатор (расширенный формат).
История
Протокол CAN был изначально разработан компанией Bosch в 1983 году для автомобильной промышленности с целью замены сложных жгутов проводов и повышения надёжности передачи данных между компонентами автомобиля. Первая версия спецификации была опубликована в 1986 году, а в 1991 году вышла версия 2.0, которая разделила протокол на две части: CAN 2.0A (стандартный формат) и CAN 2.0B (расширенный формат). CAN 2.0A стал основой для большинства ранних внедрений CAN, особенно в автомобилях, где требовалась простая и быстрая передача данных. В 1993 году стандарт был принят как международный ISO 11898, что закрепило его использование в промышленности и транспорте.
Архитектура и принцип работы
Физический уровень
CAN 2.0A использует дифференциальную передачу сигнала по витой паре проводов (CAN_H и CAN_L). Уровни напряжения определяют два логических состояния: доминантное (логический 0) и рецессивное (логическая 1). В доминантном состоянии напряжение на CAN_H выше, чем на CAN_L, а в рецессивном — оба провода имеют одинаковый потенциал (обычно около 2,5 В). Скорость передачи данных зависит от длины шины: при 1 Мбит/с максимальная длина составляет около 40 метров, при 125 кбит/с — до 500 метров.
Канальный уровень
Канальный уровень CAN 2.0A реализует доступ к среде с помощью механизма множественного доступа с контролем несущей и разрешением коллизий (CSMA/CR). Каждый узел может начать передачу, если шина свободна. При одновременной передаче нескольких узлов коллизия разрешается путём арбитража: узел с наименьшим значением идентификатора (доминантный бит) выигрывает и продолжает передачу, а остальные переходят в режим приёма. Это обеспечивает детерминированное поведение сети.
Формат кадра CAN 2.0A
Кадр CAN 2.0A состоит из нескольких полей, которые передаются последовательно. Основные поля:
- Начало кадра (SOF) — один доминантный бит, обозначающий начало передачи.
- Поле арбитража — 11-битный идентификатор (ID) и бит RTR (Remote Transmission Request). Идентификатор определяет приоритет сообщения (чем меньше значение, тем выше приоритет). Бит RTR указывает, является ли кадр кадром данных (доминантный) или кадром запроса (рецессивный).
- Поле управления — 6 бит, включая 4-битный код длины данных (DLC), который указывает количество байт данных (от 0 до 8).
- Поле данных — от 0 до 8 байт полезной информации.
- Поле CRC — 15-битная контрольная сумма (CRC) и один бит-разделитель CRC (рецессивный). CRC вычисляется на основе полей SOF, арбитража, управления и данных.
- Поле ACK — 2 бита: слот подтверждения (ACK slot) и разделитель ACK (ACK delimiter). Передающий узел отправляет рецессивный бит в слоте ACK, а принимающие узлы, если CRC верен, перезаписывают этот бит в доминантный.
- Конец кадра (EOF) — 7 рецессивных бит.
- Межкадровое пространство (IFS) — 3 рецессивных бита, разделяющие кадры.
Типы кадров
CAN 2.0A поддерживает четыре типа кадров:
- Кадр данных — передаёт данные от 0 до 8 байт.
- Кадр запроса (RTR) — запрашивает данные от другого узла с тем же идентификатором.
- Кадр ошибки — генерируется любым узлом при обнаружении ошибки, состоит из 6 доминантных бит (флаг ошибки) и 8 рецессивных бит (разделитель).
- Кадр перегрузки — сигнализирует о перегрузке приёмника, состоит из 6 доминантных бит и 8 рецессивных бит.
Обнаружение и обработка ошибок
CAN 2.0A использует несколько механизмов обнаружения ошибок:
- CRC-контроль — 15-битная контрольная сумма проверяет целостность данных.
- Бит-стаффинг — после пяти последовательных одинаковых бит вставляется противоположный бит для синхронизации; ошибка возникает, если это правило нарушается.
- Проверка формы кадра — проверяет, что все поля имеют правильные значения (например, фиксированные биты в EOF и ACK delimiter).
- Проверка ACK — если ни один узел не подтверждает приём (ACK slot остаётся рецессивным), передающий узел фиксирует ошибку.
- Мониторинг бита — передающий узел сравнивает отправленный бит с битом на шине; если они не совпадают (кроме арбитража), фиксируется ошибка.
При обнаружении ошибки узел отправляет кадр ошибки, который разрушает текущую передачу. После этого все узлы переходят к повторной передаче сообщения. Для предотвращения постоянных ошибок каждый узел имеет два счётчика: счётчик ошибок приёма (REC) и счётчик ошибок передачи (TEC). При превышении пороговых значений (например, TEC > 255) узел переходит в состояние «bus off» и отключается от шины.
Применение
CAN 2.0A широко применяется в различных отраслях, где требуется надёжная передача данных в реальном времени:
- Автомобильная промышленность — управление двигателем, трансмиссией, тормозной системой (ABS), подушками безопасности, климат-контролем и другими системами. В современных автомобилях используется до 50 и более ЭБУ, соединённых несколькими шинами CAN.
- Промышленная автоматизация — связь между программируемыми логическими контроллерами (ПЛК), датчиками и исполнительными механизмами в системах управления производством.
- Медицинское оборудование — передача данных между блоками в аппаратах МРТ, УЗИ, системах мониторинга пациентов.
- Авиация и космос — управление системами самолётов (например, Airbus A380 использует CAN для управления шасси) и спутников.
- Робототехника — обмен данными между контроллерами, сервоприводами и датчиками.
- Сельское хозяйство — управление тракторами, комбайнами и другой техникой (стандарт ISOBUS основан на CAN).
- Морской транспорт — управление двигателями, навигационными системами и системами безопасности.
Сравнение с CAN 2.0B
Основное отличие CAN 2.0A от CAN 2.0B заключается в длине идентификатора:
- CAN 2.0A использует 11-битный идентификатор, что позволяет адресовать до 2048 различных сообщений (с учётом зарезервированных значений).
- CAN 2.0B поддерживает 29-битный идентификатор (расширенный формат), что увеличивает количество возможных сообщений до 536 миллионов.
CAN 2.0A несовместим с CAN 2.0B на уровне кадров: узлы, работающие только с CAN 2.0A, не могут обрабатывать расширенные кадры CAN 2.0B, хотя физически они могут сосуществовать на одной шине, если узлы CAN 2.0A игнорируют расширенные кадры (при правильной настройке). Однако на практике CAN 2.0A считается устаревшим для новых проектов, так как CAN 2.0B обеспечивает большую гибкость адресации.
Ограничения
- Максимальная длина данных — 8 байт на кадр, что может быть недостаточно для передачи больших объёмов информации (например, обновлений прошивки).
- Скорость передачи — ограничена длиной шины и количеством узлов; при 1 Мбит/с длина не превышает 40 метров.
- Отсутствие встроенной безопасности — CAN 2.0A не имеет механизмов шифрования или аутентификации, что делает его уязвимым для атак (например, в автомобилях).
- Сложность отладки — из-за детерминированного арбитража и множества узлов отладка может быть затруднена.
Интересные факты
- Протокол CAN был разработан инженером Bosch Уве Кляйном (Uwe Kiencke) и его командой.
- Первое коммерческое использование CAN произошло в 1992 году в автомобилях Mercedes-Benz S-Class (W140).
- В 2012 году была опубликована спецификация CAN FD (CAN Flexible Data-Rate), которая расширяет CAN 2.0A, увеличивая скорость передачи данных и длину поля данных до 64 байт.
- CAN 2.0A является основой для многих отраслевых стандартов, таких как SAE J1939 (тяжёлая техника) и DeviceNet (промышленная автоматизация).
Источники
- Bosch, «CAN Specification 2.0», 1991.
- ISO 11898-1:2015, «Road vehicles — Controller area network (CAN) — Part 1: Data link layer and physical signalling».
- Robert Bosch GmbH, «CAN with Flexible Data-Rate (CAN FD)», 2012.
- Lawrenz, W. (Ed.), «CAN System Engineering: From Theory to Practical Applications», Springer, 2013.
- SAE J1939-11, «Physical Layer, 250 kbps, Twisted Shielded Pair», 2012.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →