Протокол CAN. Промышленные сети на основе CAN.
CAN (ISO 11898) разработан Bosch в начале 1980-х годов для упрощения процесса проводки кабелей в автомобилях Mercedes-Benz. Цель разработки CAN заключалась в замене пучков проводов (до 7,5 см в диаметре!) единственным кабелем, призванным соединить все основные компоненты управления автомобилем. Надежность связи в транспортном средстве в буквальном смысле вопрос жизни и смерти. Статистическая вероятность отказа CAN составляет менее одного случая за столетие.
Основные характеристики
1) Среда передачи данных в CAN не определена: это может быть витая пара, оптоволокно.
2) Скорость передачи задается программно и может быть до 1 Мбит/с. Пользователь выбирает скорость, исходя из расстояний, числа абонентов и емкости линий передачи.
Рис. Зависимость скорости обмена от длины линии передачи
3) Максимальное расстояние 500 м.
4) Максимальное количество узлов 64
5) Количество байтов данных настраивается от 0 до 8.
6) Если хоть один узел в сети принял сообщение с ошибкой, это сообщение признается ошибочным для всех узлов сети.
7) Отказавшие узлы динамически отключаются от шины.
Принцип работы CAN
Данные, передаваемые одним узлом принимается всеми узлами. Узел, принявший сообщение, может проигнорировать его, если оно не связано его функциями.
Тип передаваемых данных (например, число оборотов двигателя, температура масла и др.) обозначается 11-битным идентификатором, стоящим в начале сообщения и определяющим его приоритет. Такой тип рассылки называется "схема адресации, ориентированная на содержимое". В ней и заключается особенность CAN.
Каждый 11-битный идентификатор уникален. Никакая пара узлов сети не может послать сообщения с одинаковыми идентификаторами и никакой узел не может принять сообщения разных типов, но с одинаковыми идентификаторами. Это важно при распределении доступа узлов к шине.
В результате обеспечивается высокая гибкость сети. Добавление новых узлов приема осуществляется без модификации аппаратной или программной части сети. Протокол не требует назначения физических адресов принимающим узлам. Это позволяет синхронизировать распределенную обработку: информация, требуемая несколькими контроллерами, рассылается по сети, и нет необходимости оснащать каждый контроллер собственным датчиком.
Поразрядный арбитраж
Данные, подлежащие обработке в реальном масштабе времени, должны передаваться быстро, что требует не только высокой скорости передачи, но и быстрого предоставления шины, когда несколько устройств запрашивают ее для пересылки своих сообщений одновременно.
В системах реального времени срочность пересылаемых по сети сообщений бывает разной. Быстро меняющиеся величины, такие, как нагрузка двигателя, должны передаваться более часто и, следовательно, с меньшей задержкой, чем такие параметры, как относительно медленно меняющаяся температура двигателя.
Приоритет передаваемого сообщения входит в состав 11-битного идентификатора. Идентификатор с наименьшим двоичным значением имеет наивысший приоритет. Приоритеты задаются во время проектирования системы и динамически изменяться не могут. Конфликты доступа к шине разрешаются поразрядным сравнением идентификаторов, присвоенных каждой станцией. На рис. 3.5 приведен пример, иллюстрирующий описанную процедуру.
В отличие от метода арбитража CSMA/CD, используемого в Ethernet, недеструктивный метод разрешения конфликтов, применяемый в CAN, обеспечивает передачу только полезной информации.
Эффективность сети CAN определяется тем, что шина используется только теми узлами, у которых есть отложенные ("повисшие") запросы на передачу. Эти запросы обрабатываются в порядке степени важности сообщений для всей системы. Преимущества этого механизма особенно сказываются при сильной загрузке системы. Так как приоритеты доступа к шине базируются на сообщениях, можно гарантировать малое время задержки в системах реального времени.
Для обеспечения надежности в сети CAN реализуется децентрализованное управление шиной. Все основные механизмы связи, включая управление доступом к шине, реализуются в системе несколько раз.
Рис. 3.5. Принцип поразрядного арбитража
Формат кадра CAN
Рис. 3.6. Формат кадра CAN 2.0А
1) SOF (Start of Frame) - стартовый бит "начало кадра".
2) Поле арбитража, содержит 11-битный идентификатор и бит RTR запроса удаленной передачи (Remote Transmission Request). Этот бит указывает, передается ли кадр данных или кадр запроса (в котором отсутствует поле данных).
3) Управляющее поле содержит бит расширения идентификатора (IDE - identifier extension), который указывает тип формата кадра - стандартный или расширенный.
RO - зарезервированный для будущего применения бит
DLC - указание длины поля данных (4 бита).
4) Поле данных (0-8 байт)
5) Поле циклического контроля CRC, используется для определения ошибок (15 бит)..
6) Поле подтверждения (АСК) состоит из области АСК (1 бит) и ограничителя поля. АСК-бит помещается на шину передатчиком как рецессивный (логическая 1). Приемники, корректно принявшие эти данные, переписывают его в логический 0, делая его доминантным. Таким образом, передающий узел получает подтверждение, что хотя бы один приемник правильно принял его сообщение. Сообщения подтверждаются приемниками независимо от результата тестирования данных при приёме.
7) Конец сообщения указывается концом кадра, после которого идет пауза. Длина паузы равна минимальному количеству битов, отделяющих последовательные сообщения. Если в этот момент ни одна из станций не выдает запрос на доступ к шине, то шина остается незанятой.
В настоящее время CAN - интерфейс широко применяется во многих областях, в том числе в промышленной автоматике и в аэрокосмическом приборостроении. Предназначен для организации высоконадежных и недорогих каналов связи в распределенных системах управления.
Протокол CAN определяет только первые два уровня ISO/OSI – физический и уровень доступа к среде передачи данных и реализован в дешевых (менее доллара) широко распространенных микросхемах. Для превращения его в полнофункциональный сетевой протокол необходим дополнительный программный уровень. На базе CAN реализованы сети DeviceNet, SDS, CANOpen и др.