CAN-шина: цифровая шина передачи данных¶
CAN-шина (Controller Area Network, CAN) — последовательная цифровая шина передачи данных, разработанная немецкой компанией Robert Bosch GmbH в середине 1980-х годов для использования в автомобильной электронике. Основное назначение CAN-шины — объединение электронных блоков управления (ЭБУ) автомобиля в единую сеть с минимальным количеством проводов, что позволило существенно снизить массу и сложность проводки. Технология широко применяется не только в автомобилестроении, но и в промышленной автоматике, железнодорожном транспорте, медицинском оборудовании и других областях.
¶История создания
Разработка протокола CAN началась в компании Robert Bosch GmbH в 1983 году. Инициаторами выступили инженеры Вольфганг Лоцманн (Wolfgang Lawrenz) и Рольф Вистенберг (Rolf Wistenberg). Цель проекта состояла в создании надёжной и недорогой системы обмена данными между электронными устройствами автомобиля, способной работать в условиях сильных электромагнитных помех и значительных температурных перепадов.
В 1986 году на конференции SAE (Society of Automotive Engineers) в Детройте протокол CAN был официально представлен публике. Первым серийным автомобилем, в котором применялась CAN-шина, стал Mercedes-Benz W124 1986 года выпуска. В 1991 году опубликован стандарт ISO 11898, закрепивший технические параметры протокола. В 1993 году появился стандарт ISO 11519 для варианта CAN с более низкой скоростью передачи данных.
¶Принцип работы и физический уровень
CAN-шина представляет собой две проводящие линии — CAN High и CAN Low (так называемая дифференциальная пара). Все устройства (узлы) подключаются к шине параллельно. Логическое состояние шины определяется разностью потенциалов между линиями: доминантным считается логический «0» (разность напряжений около 2 В), рецессивным — логический «1» (разность близка к 0 В). Такое дифференциальное кодирование обеспечивает высокую помехоустойчивость.
Для подавления отражений сигнала на концах шины устанавливаются терминирующие резисторы номиналом 120 Ом. Максимальная скорость передачи данных зависит от длины шины: при длине до 40 м возможна скорость до 1 Мбит/с, при увеличении длины скорость снижается.
¶Уровни протокола
Стек CAN разделён на несколько уровней, соответствующих модели OSI:
- Уровень физического представления — определяет электрические параметры сигнала (ISO 11898-2 для высокоскоростного CAN, ISO 11898-3 для низкоскоростного CAN с отказоустойчивостью).
- Уровень канала передачи данных — реализует арбитраж доступа, контроль ошибок, формирование кадров. Этот уровень описан в стандартах Bosch CAN 2.0 (поддерживаются расширенные 29-битные идентификаторы) и CAN FD (Flexible Data-Rate).
- Верхние уровни — протоколы прикладного уровня, такие как CANopen, DeviceNet, J1939, NMEA 2000, OBD-II.
¶Формат кадра
В классическом CAN (стандарт 2.0A) кадр содержит идентификатор сообщения длиной 11 бит, который определяет приоритет сообщения и его содержание. Расширенный формат (2.0B) использует 29-битный идентификатор. Структура кадра включает:
| Поле | Назначение |
|---|---|
| SOF (Start of Frame) | Начало кадра |
| Идентификатор | Адресация и приоритет |
| RTR (Remote Transmission Request) | Запрос данных |
| Контрольное поле | Длина данных (DLC) |
| Поле данных | До 8 байт (в CAN FD — до 64 байт) |
| CRC | Контроль достоверности |
| ACK | Подтверждение приёма |
| EOF (End of Frame) | Конец кадра |
¶Арбитраж и обработка ошибок
При одновременной передаче кадров несколькими узлами используется небинарный арбитраж по идентификатору: сообщение с наименьшим числовым значением идентификатора имеет наивысший приоритет и получает право на передачу, остальные узлы переходят в режим приёма. Механизм основан на свойстве «доминантный бит перекрывает рецессивный».
Протокол CAN предусматривает пять типов ошибок: битовую, формальную, CRC-ошибку, подтверждения и отсутствие доминантного бита. Узел, обнаруживший ошибку, отправляет в шину сообщение об ошибке (Error Frame), после чего передача повторяется. Узлы, многократно нарушающие работу шины, автоматически переходят в состояние «выход из обнаружения ошибок» (error passive) и далее — «выход из шины» (bus off).
¶CAN FD и CAN XL
В 2012 году Bosch представил расширение CAN FD (Flexible Data-Rate), которое увеличивает длину поля данных до 64 байт и позволяет повышать скорость передачи на этапе данных до 5–8 Мбит/с. В 2019 году был анонсирован стандарт CAN XL, поддерживающий полезную нагрузку до 2048 байт и скорости до 10 Мбит/с, что позиционируется как решение для приложений, требующих высокой пропускной способности.
¶Применение
В автомобилестроении CAN-шина служит основой внутренней сети автомобиля: к ней подключаются блок управления двигателем, трансмиссией, системами ABS и ESP, приборная панель, блоки комфорта. Стандарт OBD-II (обязательный для автомобилей, выпускаемых в США с 1996 года) использует CAN в качестве основного протокола диагностики.
В промышленной автоматике CAN-шина применяется в рамках семейства протоколов CANopen (EN 50325-4), DeviceNet и SDS. Технология используется в медицинском оборудовании, железнодорожном транспорте (стандарт IEC 61375), авиации, судостроении, системах возобновляемой энергетики.
В России и СНГ CAN-шина применяется в отечественных автомобилях («АвтоВАЗ», «КАМАЗ», «ГАЗ»), а также в промышленных системах автоматизации. Разработкой и производством оборудования для работы с CAN-шиной занимаются компании Kvaser, PEAK-System, Vector Informatik и другие.
¶Ограничения
К основным ограничениям классического CAN относятся относительно небольшая длина шины (до 1 км при низкой скорости), ограниченный объём полезной нагрузки (8 байт) и отсутствие встроенного механизма передачи адреса конкретному узлу — все сообщения рассылаются в широковещательном режиме, а адресация реализуется на прикладном уровне.
¶Источники
- Robert Bosch GmbH. CAN with Flexible Data-Rate, Version 1.0, 2012
- ISO 11898-1:2015. Road vehicles — Controller area network (CAN)
- Lawrenz W. CAN Controller Area Network: Grundlagen und industrielle Anwendung. Hüthig Verlag
- Wolf F. Understanding CAN Bus. Elektor Electronics
- Шинные системы управления: учебное пособие / под ред. В. И. Куликова
