CAN-шина: протокол обмена данными¶
CAN-шина (Controller Area Network, CAN) — последовательная цифровая шина, разработанная немецкой компанией Robert Bosch GmbH в середине 1980-х годов для обмена данными между электронными блоками управления в автомобилях. Протокол относится к классу промышленных и автомобильных шин и характеризуется высокой помехоустойчивостью, отказоустойчивостью и возможностью работы без центрального контроллера (мастера). Стандарт ISO 11898 регламентирует физические и логические уровни протокола.
¶История
Разработка CAN началась в Bosch в 1983 году под руководством Ульриха Кройценберга (Ulrich Kreyenberg) и Вольфганга Лоцмана (Wolfgang Lawrenz). Необходимость обусловлена ростом числа электронных блоков в автомобилях: к середине 1980-х годов в транспортных средствах премиум-класса использовалось до нескольких десятков датчиков и исполнительных механизмов, и прокладка отдельных проводов между каждыми парами блоков становилась экономически и технически нецелесообразной.
В 1986 году протокол был впервые представлен на конференции SAE (Society of Automotive Engineers) в Детройте. Первым серийным автомобилем с CAN-шиной стал Mercedes-Benz W124 1986 года, где шина использовалась для связи блока управления двигателем и системы антиблокировочной тормозной системы (ABS). В 1993 году вышел стандарт ISO 11898, закрепивший протокол как международный.
¶Принцип работы
CAN-шина построена на принципе «многоточечной» (multi-master) архитектуры: любой узел сети может инициировать передачу данных. Физически шина представляет собой две провода — CAN_H и CAN_L, по которым передаются дифференциальные сигналы. Логический уровень «0» (доминантный) соответствует разности напряжений между проводами, логический «1» (рецессивный) — их выравниванию.
¶Арбитраж
При одновременной попытке нескольких узлов начать передачу применяется механизм небинарного арбитража по идентификатору сообщения (CAN ID). Узел, передающий доминантный бит, подавляет узел с рецессивным битом без потери данных. Идентификатор с меньшим числовым значением имеет приоритет. Механизм обеспечивает детерминированное разрешение конфликтов и отсутствие блокировок.
¶Формат кадра
Стандартный кадр CAN (CAN 2.0A) содержит идентификатор длиной 11 бит, поле данных до 8 байт, контрольную сумму CRC и поле подтверждения ACK. Расширенный формат (CAN 2.0B) использует 29-битный идентификатор.
¶Классификация
| Класс | Скорость | Область применения |
|---|---|---|
| CAN 2.0A | до 1 Мбит/с | Стандартная автомобильная сеть |
| CAN FD | до 5–8 Мбит/с | Современные автомобили, расширенный полезный объём (до 64 байт) |
| CAN XL | до 10+ Мбит/с | Следующее поколение, разрабатывается с 2019 года |
CAN FD (Flexible Data-rate) был стандартизирован в 2012 году и получил одобрение ISO в 2015-м (ISO 11898-1:2015). Он позволяет увеличить скорость передачи в фазе данных и расширить длину полезной нагрузки до 64 байт.
¶Применение
Основная область применения — автомобильная промышленность. CAN-шина используется для связи блоков управления двигателем, трансмиссией, тормозной системой, подвеской, кузовной электроникой, приборной панелью и системами безопасности. В современных автомобилях CAN-сети часто объединены в иерархическую структуру с мостами (шлюзами) между подсетями.
Помимо автомобилей, протокол применяется в железнодорожном транспорте (стандарт EN 50155), промышленной автоматизации (CANopen, DeviceNet), медицинском оборудовании, авиации и строительной технике. В России CAN-шина широко используется в отечественной автомобильной промышленности: на автомобилях ВАЗ, ГАЗ, КАМАЗ, УАЗ и других производителей.
¶Преимущества и ограничения
К достоинствам протокола относятся: отказоустойчивость (при обрыве одного провода шина продолжает работу в однопроводном режиме), низкая стоимость реализации, отсутствие необходимости в центральном контроллере, высокая помехоустойчивость за счёт дифференциальной передачи.
Ограничения связаны с ограниченной длиной полезной нагрузки (8 байт в классическом CAN), относительно невысокой скоростью по сравнению с Ethernet и отсутствием встроенной поддержки адресации узлов (адресация реализуется через идентификаторы сообщений).
¶См. также
- LIN (Local Interconnect Network)
- FlexRay
- Automotive Ethernet
- CANopen
¶Источники
- ISO 11898-1:2015 — Road vehicles — Controller area network (CAN)
- Robert Bosch GmbH. CAN with Flexible Data-Rate Specification Version 1.0
- Lawrenz W. CAN Controller Area Network: Grundlagen und Anwendungen. — Hüthig, 1994
- Robert Bosch GmbH. Automotive Electrics and Automotive Electronics. — Springer, 2014
