Controller Area Network | это... Что такое Controller Area Network? (original) (raw)
CAN (англ. Controller Area Network — сеть контроллеров) — стандарт промышленной сети, ориентированный прежде всего на объединение в единую сеть различных исполнительных устройств и датчиков. Режим передачи — последовательный, широковещательный, пакетный.
CAN разработан компанией Robert Bosch GmbH в середине 1980-х и в настоящее время широко распространён в промышленной автоматизации, технологиях «умного дома», автомобильной промышленности и многих других областях. Стандарт для автомобильной автоматики.
Содержание
- 1 Описание стандарта
- 1.1 Общие сведения
- 1.2 Рецессивные и доминантные биты
- 1.3 Виды кадров
- 1.4 Формат кадра
* 1.4.1 Базовый формат кадра данных
* 1.4.2 Расширенный формат кадра данных
* 1.4.3 Формат кадра удаленного запроса - 1.5 Арбитраж доступа
- 1.6 Контроль ошибок
- 1.7 Скорость передачи и длина сети
* 1.7.1 Диапазон скоростей
* 1.7.2 Предельная длина сети
- 2 Протоколы высокого уровня
- 3 Применение CAN в машиностроении
- 4 Преимущества и недостатки
- 5 См. также
- 6 Ссылки
Описание стандарта
Непосредственно стандарт CAN от Bosch определяет передачу в отрыве от физического уровня — он может быть каким угодно, например, радиоканалом или оптоволокном. Но на практике под CAN-сетью обычно подразумевается сеть топологии «шина» с физическим уровнем в виде дифференциальной пары, определённым в стандарте ISO 11898. Передача ведётся кадрами, которые принимаются всеми узлами сети. Для доступа к шине, выпускаются специализированные микросхемы — драйверы CAN шины.
Общие сведения
Синхронная шина, с типом доступа Collision Resolution (CR), который в отличие от Collision Detect (CD) сетей (Ethernet — это CD) детерминировано (приоритетно) обеспечивает доступ на передачу сообщения, что особо ценно для промышленных сетей управления (fieldbus). Передача ведётся кадрами. Полезная информация в кадре состоит из идентификатора длиной 11 бит (стандартный формат) или 29 бит (расширенный формат, надмножество предыдущего) и поля данных длиной от 0 до 8 байт. Идентификатор говорит о содержимом пакета и служит для определения приоритета при попытке одновременной передачи несколькими сетевыми узлами.
Рецессивные и доминантные биты
Для абстрагирования от среды передачи спецификация CAN избегает описывать двоичные значения как «0» и «1». Вместо этого применяются термины «рецессивный» и «доминантный», при этом подразумевается, что при передаче одним узлом сети рецессивного бита, а другим доминантного, принят будет доминантный бит. Например, при реализации физического уровня на радиоканале отсутствие сигнала означает рецессивный бит, а наличие — доминантный; тогда как в типичной реализации проводной сети рецессив бывает при наличии сигнала, а доминант, соответственно, при отсутствии. Стандарт сети требует от «физического уровня», фактически, единственного условия: чтобы доминантный бит мог подавить рецессивный, но не наоборот. Например, в оптическом волокне доминантному биту должен соответствовать «свет», а рецессивному — «темнота». В электрическом проводе может быть так: рецессивное состояние — высокое напряжение на линии (от источника с большим внутренним сопротивлением), доминантное — низкое напряжение (все узлы сети «подтягивают» линию на землю). Если линия находится в рецессивном состоянии, перевести её в доминантное может любой узел сети (включив свет в оптоволокне или закоротив высокое напряжение). Наоборот — нельзя (включить темноту нельзя).
Виды кадров
- Кадр данных (data frame) — передаёт данные;
- Кадр удаленного запроса (remote frame) — служит для запроса на передачу кадра данных с тем же идентификатором;
- Кадр перегрузки (overload frame) — обеспечивает промежуток между кадрами данных или запроса;
- Кадр ошибки (error frame) — передаётся узлом, обнаружившим в сети ошибку.
Кадры данных и запроса отделяются от предыдущих кадров межкадровым промежутком.
Формат кадра
Базовый формат кадра данных
Поле | Длина (в битах) | Описание |
---|---|---|
Начало кадра | 1 | Сигнализирует начало передачи кадра |
Идентификатор | 11 | Уникальный идентификатор |
Запрос на передачу (RTR) | 1 | Должен быть доминантным |
Бит расширения идентификатора (IDE) | 1 | Должен быть доминантным |
Зарезервированный бит (r0) | 1 | Резерв |
Длина данных (DLC) | 4 | Длина поля данных в байтах (0-8) |
Поле данных | 0-8 байт | Передаваемые данные (длина в поле DLC) |
Контрольная сумма (CRC) | 15 | Контрольная сумма всего кадра |
Разграничитель контрольной суммы | 1 | Должен быть рецессивным |
Промежуток подтверждения (ACK) | 1 | Передатчик шлёт рецессивный, приёмник вставляет доминанту |
Разграничитель подтверждения | 1 | Должен быть рецессивным |
Конец кадра (EOF) | 7 | Должен быть рецессивным |
Первые 7 бит идентификатора не должны быть все рецессивными.
Расширенный формат кадра данных
Поле | Длина (в битах) | Описание |
---|---|---|
Начало кадра | 1 | Сигнализирует начало передачи кадра |
Идентификатор A | 11 | Первая часть идентификатора |
Подмена запроса на передачу (SRR) | 1 | Должен быть рецессивным |
Бит расширения идентификатора (IDE) | 1 | Должен быть рецессивным |
Идентификатор B | 18 | Вторая часть идентификатора |
Запрос на передачу (RTR) | 1 | Должен быть доминантным |
Зарезервированные биты (r1 и r0) | 2 | Резерв |
Длина данных (DLC) | 4 | Длина поля данных в байтах (0-8) |
Поле данных | 0-8 байт | Передаваемые данные (длина в поле DLC) |
Контрольная сумма (CRC) | 15 | Контрольная сумма всего кадра |
Разграничитель контрольной суммы | 1 | Должен быть рецессивным |
Промежуток подтверждения (ACK) | 1 | Передатчик шлёт рецессивный, приёмник вставляет доминанту |
Разграничитель подтверждения | 1 | Должен быть рецессивным |
Конец кадра (EOF) | 7 | Должен быть рецессивным |
Идентификатор получается объединением частей A и B.
Формат кадра удаленного запроса
Совпадает с кадрами данных стандартного или расширенного формата за двумя исключениями:
- В поле RTR рецессив вместо доминанты.
- Отсутствует поле данных.
Арбитраж доступа
При свободной шине любой узел может начинать передачу в любой момент. В случае одновременной передачи кадров двумя и более узлами проходит арбитраж доступа: передавая адрес источника, узел одновременно проверяет состояние шины. Если при передаче рецессивного бита принимается доминантный — считается, что другой узел передаёт сообщение с большим приоритетом и передача откладывается до освобождения шины. Таким образом, в отличие, например, от Ethernet в CAN не происходит непроизводительной потери пропускной способности канала при коллизиях. Цена этого решения — вероятность того, что сообщения с низким приоритетом никогда не будут переданы.
Контроль ошибок
CAN имеет несколько механизмов контроля и предотвращения ошибок:
- Контроль передачи: при передаче битовые уровни в сети сравниваются с передаваемыми битами.
- Дополняющие биты (bit stuffing): после передачи пяти одинаковых битов подряд автоматически передаётся бит противоположного значения. Таким образом кодируются все поля кадров данных или запроса, кроме разграничителя контрольной суммы, промежутка подтверждения и EOF.
- Контрольная сумма: передатчик вычисляет её и добавляет в передаваемый кадр, приёмник считает контрольную сумму принимаемого кадра в реальном времени (одновременно с передатчиком), сравнивает с суммой в самом кадре и в случае совпадения передаёт доминантный бит в промежутке подтверждения.
- Контроль значений полей при приёме.
Разработчики оценивают вероятность невыявления ошибки передачи как 4,7×10-11.
Скорость передачи и длина сети
Диапазон скоростей
Все узлы в сети должны работать с одной скоростью. Стандарт CAN не определяет скоростей работы, но большинство как отдельных, так и встроенных в микроконтроллеры адаптеров позволяют плавно менять скорость в диапазоне по крайней мере от 20 килобит в секунду до 1 мегабита в секунду. Существуют решения, выходящие далеко за рамки данного диапазона.
Предельная длина сети
Приведённые выше методы контроля ошибок требуют, чтобы изменение бита при передаче успело распространиться по всей сети к моменту замера значения. Это ставит максимальную длину сети в обратную зависимость от скорости передачи: чем больше скорость, тем меньше длина. Например, для сети стандарта ISO 11898 предельные длины составляют приблизительно:
1 Мбит/с | 40 м |
---|---|
500 Кбит/с | 100 м |
125 Кбит/с | 500 м |
10 Кбит/с | 5000 м |
Использование оптопар для защиты устройств от высоковольтных помех в сети ещё больше сокращает предельную длину. Сильно разветвлённые сети (паутина) также снижают скорость из-за множества отражений сигнала и большей электрической ёмкости шины.
Протоколы высокого уровня
Базовой спецификации CAN недостаёт многих возможностей, требуемых в реальных системах: передачи данных длиннее 8 байт, автоматического распределения идентификаторов между узлами, единообразного управления устройствами различных типов и производителей. Поэтому вскоре после появления CAN на рынке начали разрабатываться протоколы высокого уровня для него. В число распространённых на данный момент протоколов входят:
Применение CAN в машиностроении
Во всех высокотехнологических системах современного автомобиля применяется CAN-протокол для связи ЭБУ с дополнительными устройствам и контроллерами исполнительных механизмов и различных систем безопасности. В некоторых автомобилях CAN связывает IMMO, приборные панели, SRS блоки и т.д.
Также протокол CAN ISO 15765-4 вошел в состав стандарта OBDII.
Преимущества и недостатки
Преимущества
- Возможность работы в режиме жёсткого реального времени.
- Простота реализации и минимальные затраты на использование.
- Высокая устойчивость к помехам.
- Арбитраж доступа к сети без потерь пропускной способности.
- Надёжный контроль ошибок передачи и приёма.
- Широкий диапазон скоростей работы.
- Большое распространение технологии, наличие широкого ассортимента продуктов от различных поставщиков.
Недостатки
- Небольшое количество данных, которое можно передать в одном пакете (до 8 байт).
- Большой размер служебных данных в пакете (по отношению к полезным данным).
- Отсутствие единого общепринятого стандарта на протокол высокого уровня, однако же, это и достоинство. Стандарт сети предоставляет широкие возможности для практически безошибочной передачи данных между узлами, оставляя разработчику возможность вложить в этот стандарт всё, что туда сможет поместиться. В этом отношении CAN подобен простому электрическому проводу. Туда можно «затолкать» любой поток информации, который сможет выдержать пропускная способность шины. Известны примеры передачи звука и изображения по шине CAN (Россия). Известен случай создания системы аварийной связи вдоль автодороги длиной несколько десятков километров (Германия). (В первом случае нужна была большая скорость передачи и небольшая длина линии, во втором случае — наоборот). Изготовители, как правило, не афишируют, как именно они используют полезные байты в пакете.
См. также
Ссылки
- CANopen Special Interest Group
- Международная организация CAN In Automation
- Российский сайт CAN In Automation
- Официальный сайт ассоциации CAN Kingdom
- ODVA — сайт ассоциации-разработчика DeviceNet
- Литература по CAN от производителя CAN-совместимых устройств
- Автомобильные CAN-адаптеры
- Автомобильный стандарт LIN
Промышленные сети | |
---|---|
Системные шины систем управления | PROFINET • PROFIBUS FMS • EtherCAT • GENIbus |
Распределённая периферия | PROFINET • PROFIBUS DP • MPI • INTERBUS • RS-485 • GENIbus |
Приводная техника | PROFINET • PROFIBUS DP • SERCOS • GENIbus |
Полевые устройства | PROFIBUS PA • AS-i • CAN • DeviceNet • LonTalk • MOST |
Автоматизация зданий | EIB • BACnet • LonWorks • Industrial Ethernet |
Микроконтроллеры | |
---|---|
Архитектура | 8-бит MCS-51 • MCS-48 • PIC • AVR • Z8 • H8 • COP8 • 68HC08 • 68HC11 16-бит MSP430 • MCS-96 • MCS-296 • PIC24 • MAXQ • Nios • 68HC12 • 68HC16 32-бит ARM • MIPS • AVR32 • PIC32 • 683XX • M32R • SuperH • Nios II • Am29000 • LatticeMico32 • MPC5xx • PowerQUICC • Parallax Propeller |
Производители | Analog Devices • Atmel • Silabs • Freescale • Fujitsu • Holtek • Hynix • Infineon • Intel • Microchip • Maxim • Parallax • NXP Semiconductors • Renesas • Texas Instruments • Toshiba • Ubicom • Zilog • Cypress |
Компоненты | Регистр • Процессор • SRAM • EEPROM • Флеш-память • Кварцевый резонатор • Кварцевый генератор • RC-генератор • Корпус |
Периферия | Таймер • АЦП • ЦАП • Компаратор • ШИМ-контроллер • Счётчик • LCD • Датчик температуры • Watchdog Timer |
Интерфейсы | CAN • UART • USB • SPI • I²C • Ethernet • 1-Wire |
ОС | FreeRTOS • μClinux • BeRTOS • ChibiOS/RT • eCos • RTEMS • Unison • MicroC/OS-II • Nucleus |
Программирование | JTAG • C2 • Программатор • Ассемблер • Прерывание • MPLAB • AVR Studio • MCStudio |