AFON // радиотехник affonya@mail.ru
← Радиотехника

Шина CAN

Помехоустойчивая шина распределённых систем: дифференциальная линия, побитовый арбитраж по приоритету без коллизий, аппаратный контроль ошибок и адресация сообщений, CAN FD и терминаторы.

Что такое CAN

CAN (Controller Area Network) — помехоустойчивая последовательная шина для распределённых систем, где множество узлов обмениваются короткими сообщениями по общей линии. Создана для автомобилей, но широко применяется в промышленной автоматике, транспорте и робототехнике. Подробное описание — на странице интерфейс CAN.

Дифференциальная линия и надёжность

CAN использует дифференциальную пару (CAN_H, CAN_L) с согласующими резисторами 120 Ом по концам. Дифференциальная передача даёт высокую помехоустойчивость, а встроенные механизмы контроля (CRC, подтверждение, обнаружение и повтор ошибок) делают шину очень надёжной — узел с неисправностью автоматически отключается от шины.

Арбитраж без коллизий

CAN — многоведущая шина: любой узел может начать передачу. Конфликты решает побитовый арбитраж по идентификатору сообщения: доминантный бит (0) «пересиливает» рецессивный (1), поэтому сообщение с меньшим идентификатором (высшим приоритетом) выигрывает и передаётся без потерь, а остальные узлы отступают и повторяют попытку позже. Коллизий, как в Ethernet, не возникает.

Кадр и скорости

Сообщение (кадр) содержит идентификатор (11 или 29 бит), поле данных (до 8 байт в классическом CAN), CRC и подтверждение. Адресуются не узлы, а сообщения: каждый узел сам решает, какие идентификаторы принимать. Скорость — до 1 Мбит/с (зависит от длины линии). CAN FD — расширение с большей скоростью в поле данных и увеличенным размером кадра (до 64 байт). Расчёт сегментов бита под нужный битрейт — в калькуляторе CAN bit timing.

Частые вопросы

Чем CAN лучше RS-485 для автомобиля?

CAN имеет встроенный арбитраж без коллизий, аппаратный контроль ошибок и приоритеты сообщений — всё это на уровне контроллера. RS-485 даёт лишь физический уровень, а протокол надо реализовывать самому. Поэтому в критичных распределённых системах выбирают CAN.

Зачем резисторы 120 Ом?

Они согласуют линию с её волновым сопротивлением, гася отражения на концах шины. Без терминаторов на высокой скорости и большой длине связь нарушается. Ставят два резистора — по одному на каждом конце.

Итоги

CAN — надёжная дифференциальная шина с побитовым арбитражем по приоритету, аппаратным контролем ошибок и адресацией сообщений, а не узлов. Она незаменима в распределённых системах реального времени; CAN FD поднимает скорость и объём данных. Обязательны терминаторы 120 Ом.

Смотрите также: Интерфейс CAN (подробно) · RS-485 и Modbus · CAN bit timing.