Открыть сервисСервис

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
  • Шинные системы управления: учебное пособие / под ред. В. И. Куликова
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru