Основы CAN Bus: физический уровень, структура фреймов и обнаружение ошибок
Разработанный Bosch в 1986 году и стандартизированный как ISO 11898, CAN bus является базовой полевой шиной для оборудования HVAC, чиллеров, частотных преобразователей и контроллеров автоматизации зданий. Дифференциальная передача сигналов, аппаратный арбитраж и пятиуровневое обнаружение ошибок делают его значительно более надёжным, чем RS485 Modbus в электрически зашумлённых машинных залах — понимание этих основ необходимо перед развёртыванием любого устройства CANopen.
Физический уровень ISO 11898-2 и дифференциальная передача сигналов
ISO 11898-2 определяет High-Speed CAN — вариант, используемый практически во всех приложениях автоматизации зданий и промышленности. Физический уровень использует дифференциальную пару: CAN_H (CAN High) и CAN_L (CAN Low), оба относительно GND. В рецессивном состоянии (логическая 1) обе линии находятся приблизительно на 2,5В, дифференциальное напряжение равно 0В. В доминантном состоянии (логический 0) CAN_H поднимается до примерно 3,5В, а CAN_L — до примерно 1,5В, создавая дифференциал 2В, устойчивый к синфазным помехам до ±30В.
Используйте экранированную витую пару с характеристическим импедансом 120Ω — Belden 9841 (однопарный, 24AWG) или аналог. Подключайте экран только с одного конца (обычно со стороны щита), чтобы избежать контурных токов. Оба конца сегмента шины должны быть нагружены резистором 120Ω между CAN_H и CAN_L. Раздельная оконечная нагрузка (два резистора по 60Ω с конденсатором 4,7нФ на землю в средней точке) улучшает ЭМС в условиях высоких помех.
Подключение CAN bus — 3-проводное соединение
CAN bus cable (Belden 9841 or equivalent, 120Ω STP): CAN_H → CAN_H terminals on all nodes CAN_L → CAN_L terminals on all nodes GND → GND terminals on all nodes (reference, not signal ground) Termination resistors: Node 1 (first node on bus): 120Ω between CAN_H and CAN_L Node N (last node on bus): 120Ω between CAN_H and CAN_L All intermediate nodes: NO termination Measure termination (bus powered off): CAN_H to CAN_L resistance should read ~60Ω (Two 120Ω resistors in parallel = 60Ω) Values outside 54–66Ω indicate missing or extra termination
Предупреждение: Звёздная и древовидная топология не допускаются на CAN bus. Все узлы должны быть подключены к единому линейному магистральному кабелю — ответвления должны быть не длиннее 0,3м для предотвращения отражений сигнала. Длинные ответвления вызывают ошибки доминантных битов на высоких скоростях.
Битрейт versus длина кабеля
Битрейт CAN bus ограничен задержкой распространения — временем, необходимым сигналу для прохождения до самого удалённого узла и обратно до окончания битового периода. ISO 11898-2 задаёт стандартные комбинации битрейта и длины кабеля. Системы автоматизации зданий редко требуют 1 Мбит/с; 125 кбит/с или 250 кбит/с типично для оборудования HVAC на кабельных трассах 100–500м между техническими помещениями.
| Битрейт | Макс. длина кабеля | Макс. длина ответвления | Типичное применение |
|---|---|---|---|
| 1 Мбит/с | 40 м | 0,3 м | Управление станками, короткие внутрищитовые линии |
| 500 кбит/с | 100 м | 0,3 м | Промышленные приводы, компактное техническое помещение |
| 250 кбит/с | 250 м | 0,3 м | HVAC мульти-чиллер, этажное техническое помещение |
| 125 кбит/с | 500 м | 0,3 м | Магистраль здания, межэтажные трассы |
| 50 кбит/с | 1000 м | 0,3 м | Длинные кабельные трассы, крупные объекты |
| 20 кбит/с | 2500 м | 0,3 м | В пределах кампуса, редко используется |
Примечание: Все узлы в одном сегменте CAN должны работать на одном битрейте. Смешивание устройств 250 кбит/с и 125 кбит/с на одной шине невозможно — используйте повторитель CAN или отдельные сегменты, соединённые через шлюз, если требуются разные скорости.
Структура фрейма CAN
Стандартный кадр данных CAN (ISO 11898-1) состоит из семи полей. Понимание поля идентификатора арбитража критически важно для конфигурации CANopen — COB-ID (Communication Object Identifier), используемый в CANopen, является 11-битным стандартным идентификатором CAN. Расширенные фреймы используют 29-битные идентификаторы и применяются в CANopen с 4-байтными COB-ID (режим расширенной адресации).
| Поле | Биты | Описание |
|---|---|---|
| SOF | 1 | Start of Frame — доминантный бит, синхронизирующий все приёмники |
| Идентификатор арбитража (стандартный) | 11 | Идентификатор сообщения — меньшее значение = более высокий приоритет на шине |
| Идентификатор арбитража (расширенный) | 29 | Расширенный формат фрейма — включает 11-битную базу + 18-битное расширение |
| RTR | 1 | Remote Transmission Request — 1 = запрос данных от другого узла |
| IDE | 1 | Бит расширения идентификатора — 0 = стандартный фрейм, 1 = расширенный фрейм |
| DLC | 4 | Data Length Code — количество байт данных: от 0 до 8 |
| Данные | 0–64 бита | Полезная нагрузка: 0–8 байт для классического CAN; до 64 байт для CAN FD |
| CRC | 15 + 1 | 15-битный контроль циклической избыточности плюс разделитель CRC (рецессивный бит) |
| ACK | 2 | Слот подтверждения (доминантный) + разделитель ACK (рецессивный) |
| EOF | 7 | End of Frame — 7 рецессивных битов |
Механизмы обнаружения ошибок
CAN имеет пять независимых механизмов обнаружения ошибок, работающих одновременно. Каждая обнаруженная ошибка заставляет все узлы отбросить текущий фрейм, а передатчик — повторить отправку. Узел, многократно вызывающий ошибки, переходит из активного состояния ошибки в пассивное, а затем в состояние отключения от шины, защищая сеть от неисправного узла.
| Тип ошибки | Метод обнаружения | Частая причина |
|---|---|---|
| Ошибка CRC | Приёмник пересчитывает CRC и сравнивает с переданным значением | Искажённые биты данных из-за EMI или длинного кабеля |
| Ошибка бита | Передатчик мониторит шину и обнаруживает несоответствие уровня собственного бита | Короткое замыкание, конфликт на шине, неисправность проводки |
| Ошибка фрейма | Поля с фиксированным форматом (EOF, разделитель CRC) проверяются на корректный уровень | Сбой bit stuffing, повреждённая структура фрейма |
| Ошибка ACK | Передатчик проверяет, что хотя бы один приёмник отправил доминантный ACK | Отсутствующий узел, неправильный битрейт, нет оконечной нагрузки |
| Ошибка stuffing | После 5 последовательных битов одного уровня должен следовать комплементарный бит | EMI вызывает последовательность одного уровня более 5 битов |
Неразрушающий побитовый арбитраж
Когда два или более узла пытаются передавать одновременно, CAN разрешает конфликт через побитовый арбитраж без уничтожения сообщений. Каждый узел мониторит шину во время передачи — если узел передаёт рецессивный бит (1), но считывает доминантный бит (0), он немедленно прекращает передачу и переключается в режим приёма. Узел с наименьшим числовым идентификатором арбитража всегда побеждает.
В CANopen это означает, что более низкие COB-ID имеют более высокий приоритет. Аварийные сообщения (EMCY, COB-ID 0x080 + ID узла) и сообщения heartbeat получают более низкие COB-ID, чем данные PDO — это гарантирует, что сигналы тревоги никогда не задерживаются из-за трафика технологических данных. Назначайте наименьшие ID узлов наиболее критичным устройствам, таким как шлюзы пожарных панелей или контроллеры аварий чиллеров.
CAN FD — Flexible Data-rate
CAN FD (ISO 11898-1:2015) расширяет классический CAN двумя улучшениями: переменная скорость передачи данных в фазе данных до 8 Мбит/с (против 1 Мбит/с для классического CAN) и размер полезной нагрузки до 64 байт (против 8 байт). Фаза арбитража по-прежнему работает на классическом битрейте для совместимости — только фаза данных переключается на более высокий битрейт после бита BRS (Bit Rate Switch).
| Параметр | Классический CAN | CAN FD |
|---|---|---|
| Макс. битрейт арбитража | 1 Мбит/с | 1 Мбит/с (тот же — обратно совместимый) |
| Макс. битрейт фазы данных | 1 Мбит/с | 8 Мбит/с |
| Макс. байт полезной нагрузки | 8 байт | 64 байта |
| Длина CRC | 15 бит | 17 или 21 бит (длиннее для больших полезных нагрузок) |
| Применение в автоматизации зданий | Широко распространён — большинство устройств HVAC | Появляющийся — новые ЧП, счётчики энергии |
Примечание: Большинство CAN-устройств для автоматизации зданий (чиллеры, ПВУ, ЧП) по-прежнему используют классический CAN на 125 или 250 кбит/с. Оборудование CAN FD (PEAK-System PCAN-USB FD, Vector CANalyzer FD) обратно совместимо и может взаимодействовать с классическими CAN-узлами в одном сегменте при условии, что фаза данных не активируется при работе с классическими узлами.
Диагностические инструменты
Используйте анализатор CAN при вводе в эксплуатацию для проверки трафика шины, мониторинга фреймов ошибок и подтверждения ID узлов перед интеграцией со шлюзом CANopen. Три инструмента являются стандартными в отрасли.
| Инструмент | Интерфейс | Применение |
|---|---|---|
| PEAK-System PCAN-USB | USB-донгл, ~€100 | Бесплатное ПО PCAN-View — прослушивание трафика, отправка фреймов, запись в CSV |
| PEAK-System PCAN-USB FD | USB-донгл CAN FD, ~€130 | То же, но поддерживает фазу данных CAN FD до 8 Мбит/с |
| Vector CANalyzer | PCI/USB карта, профессиональный | Полный анализ протокола, просмотр словаря объектов CANopen, скриптинг |
| Kvaser Leaf Light v2 | USB-донгл, ~€180 | Бесплатное ПО Kvaser CanKing — удобен для полевой наладки |
| PCAN-View (бесплатно) | ПО (Windows) | Используется с адаптерами PEAK — фильтрация по COB-ID, мониторинг счётчиков ошибок |
Похожие статьи
Нужен щит CAN bus с интеграцией шлюза CANopen?
Мы проектируем и строим низковольтные щиты со шлюзами CANopen-to-KNX/Modbus/BACnet, правильной оконечной нагрузкой 120Ω, экранированными CAN-кабелями и документацией по вводу в эксплуатацию для объектов HVAC и промышленности.
Запросить предложение →