Сеть CAN.
CAN - название последовательного интерфейса, который был разработан компанией BOSCH - ведущим поставщиком автоэлектроники, в начале 90х годов, первоначально для использования в автомобильных приложениях. Сегодня на рынке можно найти более сотни реализаций протоколов CAN в виде отдельных микросхем или интерфейсов, интегрированных в оборудование, оснащенное микроконтроллерами.
Ныне CAN рассматривается как стандартный последовательный интерфейс - стандартная контроллерная сеть для распределенных систем управления в различных отраслях техники, в том числе в автомобильной, аэрокосмической, медицинской отраслях, а также в роботизированных промышленных установках.
Массовое производство компонентов CAN десятками известных производителей тиражами в десятки миллионов штук сделала технологию достаточно дешевой.
В качестве международного стандарта протокол CAN был признан в 1993г-ISO 11898.
Протокол отличается помехоустойчивостью и обладает следующими возможностями:
|
|
- Распределенный доступ абонентов в сеть с неразрушающим арбитражем,
- Обнаружение ошибок при передаче и информирование передатчика и получателей о них,
- Возможность подключения в сеть дополнительных абонентов без уточнения ПО существующих, из-за оригинальной системы адресации сообщений.
Протокол CAN обеспечивает пользователю два коммуникационных сервиса: посылку сообщений (передача кадра данных) и запрос на сообщение (удаленный запрос на передачу или remote transmission request, RTR). Другие сервисы: сообщения об ошибках, повтор передачи после обнаружения ошибки и т.п. является для пользователя прозрачным, т.е. микросхемы CAN выполняют эти действия автоматически. В отличие от MILSTD1553В, где эти функции выполняются ПО прикладного уровня. В CAN четко просматривается физический и канальный уровни семиуровневой OSI. Верхние уровни OSI объединены и программируются пользователем.
Физический уровень сети CAN
Топология сети CAN - шина. Подключение абонентов к линии передачи без шлейфов. Физический уровень реализуется в виде трех проводов. Два сигнальных - экранированная витая пара, и один общий. Возможно использование неэкранированных параллельных проводов, однако при этом вероятность искажения кадров повышается в 50 раз. Скорость передачи информации до 1 Мбит/с, при длине линии 50 - 60 м. С увеличением длины линии допустимая скорость передачи падает. При длине линии 1000 метров скорость передачи 50 - 60 кбит/с поэтому CAN допускает программирование скорости обмена от 10 кбит/с до 1 Мбит/с. Наилучшая помехозащищенность достигается при волновом сопротивлении линии 120 ом.
|
|
Возможна реализация физического уровня на оптоволокне, в радиоканале, в ИК канале.
Формат кадров
Обмен информацией между узлами осуществляется кадрами переменного размера до 108 бит. При этом кадр начинается стартовым битом и идентификатором в 11 бит, длина поля данных может варьироваться от 0 до 8 байт. Сегмент контрольной суммы CRS занимает 15 бит. Обращает на себя внимание само поле данных - не более 8 байт. Это обеспечивает малое время задержки при передаче с одной стороны, а с другой стороны является достаточным для тех задач управления, которые решает сеть CAN. При необходимости длинное сообщение может быть фрагментировано на несколько коротких.
Общее количество CAN узлов в сети логически не ограничивается и имеются только ограничения, связанные с числом нагрузок на электронику передатчиков. Для передатчиков одного из типов число узлов в сети может достигать значения 110.
0-64 бит поля данных
Бит RTR 6 бит поля управления 3 бит поля подтверждения
. | . | . | . | … | ... | . |
Стартовый бит 15 бит поле CRS
11 бит идентификатора 7 бит поле конца кадра
Распределенный доступ абонентов в сети CAN
В отличии от сети MILSTD1553B, сеть CAN имеет не централизованный, а распределенный доступ абонентов на шину, т.е. передача может быть инициирована любым узлом сети CAN при условии свободной шины. Поэтому после мониторинга шины передача может быть начата одновременно несколькими узлами сети, т.е. возможно возникновение столкновении сообщений - коллизий (как в Ethernet). Каждый начавший передачу узел осуществляет мониторинг поля идентификатора и бита RTR, находящиеся в заголовках кадра.
Идентификатор передается в последовательности от старшего бита к младшему. Доминирующим уровнем принят логический 0. Одновременная передача по сети (столкновение) бита с доминирующим уровнем (лог.0)и рецессивным уровнем (лог.1) даетв результате уровень логического нуля. Столкновение бит одинакового логического уровня дает в результате сигнал на шине того же логического уровня.
В процессе передачи «поля арбитража» - идентификатора + RTR, каждый передатчик проверяет текущий уровень на шине и сравнивает его с тем значением уровня, который он только что отправил в шину. Как только одним из передающих узлов будет обнаружено, что он передал лог.1,а на шине она превратилась в лог.0, он поймет, что его «перешибло» более приоритетное сообщение и ему надо уступать - прекращать свою передачу, так как его сообщение имеет меньший приоритет из сообщений начавших передачу узлов. Таким образом, арбитраж при выходе на шину осуществляется не по приоритету передающего узла, а по приоритету передающегося сообщения, который заключен в его идентификаторе.
Узел 1 0 1 0 1 1 0 1 1 0 1 0 0
Узел 2 0 1 0 1 1 0 1 1 1
На линии 0 1 0 1 1 0 1 1 0 1 0 0
Таким образом, приоритетным в сети при столкновениях сообщений является сообщение с наименьшим номером. Чем больше нулей в старших разрядах идентификатора, тем выше приоритет сообщения.
После освобождения шины попытка передачи менее приоритетного сообщения может быть повторена.
Обеспечение надежности передачи
В отличие от многих других коммуникационных технологий, использующих принцип подтверждения (квитирования) факта получения узлом адресованного ему сообщения за требуемый интервал времени, в стандарте CAN подтверждения получения индивидуально узлом отсутствуют, и сообщается лишь о появлении кадров с ошибкой передачи, а также факт, что хотя бы один узел сообщение принял. Для этого используется кадр сообщения об ошибке, а также бит подтверждения (ASK поле) принятия сообщения. Получив кадр сообщения об ошибке, передающий узел повторяет передачу исходного сообщения. Таким образом, имеет место решающая обратная связь при передаче данных.
|
|
При появлении сообщения об ошибках переданные ошибочные сообщения уничтожаются во всех узлах сети. Имеется счетчик переданных ошибочных сообщений. Переполнение счетчика является основанием для запрета узлу передавать сообщения.
Поле подтверждения передачи работает следующим образом. Передающий узел посылает в этом поле рецессивный бит. Если приемник принял сообщение правильное (подтверждается контрольной суммой), то он устанавливает в это поле бит доминирующего уровня, который по определению «перешибает» рецессивный уровень, передатчик читает значение этого бита прямо в процессе передачи и понимает, что в случае наличия доминирующего бита в этом поле, хотя бы один узел принял сообщение правильно.
Необходимость резервирования элементов и ЛПИ определяется разработчиком сети и осуществляется, при необходимости, вне рамок протокола CAN.
Адресация сообщений в CAN
В протоколе CAN отсутствует прямая адресация сообщений по уникальному адресу абонента.
Имеется идентификатор сообщения, который определяет приоритет и тип информации сообщения. При передаче сообщение получают все абоненты и проверяют тип сообщения. Абонент берет в обработку только тот тип сообщения, идентификатор которого «зашит» у него. Каждый абонент может обрабатывать до 15ти типов сообщений.
Таким образом, в CAN имеется возможность одновременной передачи сообщений нескольким абонентам, в том числе синхросигналов.
Кроме того новые узлы, добавленные в сеть, не меняют ПО существующих узлов, если они являются потребителями или производителями имеющихся в сети типов сообщений.
8-1