Что такое 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.