CAN (Controll Area Network) - открытый протокол последовательной связи, который определен на физическом и канальном уровнях, получил развитие на пользовательском уровне и утвержден в качестве стандарта ISO 11898.
11.2.1. Физический уровень CAN реализуется экранированной витой парой с терминаторами RT на концах 118 Ом< RT< 130 Ом .
Рис. 1.3 Схема подключения и уровни электрических сигналов в САN
Сигнал в линии связи формируется в соответствии с рис. 12.3. Уровень сигналов составляет 30% от значения напряжения питания, причем значение напряжение питания жестко не определяется. Например, на рисунке приведены значения уровней сигналов при напряжении питания +5В. Нижний уровень сигнала определяется как доминирующим, а верхний уровень определяется как рецессивный.
В линии связи длиной до 40м обеспечивается скорость передачи сигналов до 1Мбит/с. При передаче сигналов на расстояния 500м или 1000м скорость должна быть уменьшена соответственно до 125 кбит/с и 50 кбит/с. При скорости 5 кбит/с дальность передачи может составлять несколько километром.
В СAN приемопередатчики подключаются к линии связи дифференциально, что обеспечивает подавление cинфазной помехи.
Количество узлов в сети CAN теоретически не ограничено. Практически же максимальное количество ограничивается на уровне 127.
11.2.2. Канальный уровень CAN реализуется передачей кадров сообщений, которые в CAN терминологии определяются как «фрейм» (frame – кадр).
В CAN выделяются фреймы следующих типов:
– фрейм данных, которым осуществляется перемещение данных из передатчика в приемник или несколько приемников;
– удаленный фрейм, которым запрашивается передача фрейма данных, связанного с определенным идентификатором;
– фрейм ошибки, информирующий о том, какой узел обнаружил ошибку шины/сети;
– фрейм перегрузки, обеспечивающий задержку между передачей фрей-мов в целях управления потоком данных.
Структура стандартного фрейма данных | |||||||||||
S O F | Полеарбитража | Поле управления | Поледанных |
C R C | По- ле А С К |
E O F |
I n t |
B I | |||
Идентифика-тор , 11 бит. | R T R | I D E | R0 | D L C Размер поля данных |
0…8 байт | ||||||
Рис. 11.4. Структур стандартного фрейма данных
На рис.11.4 приняты следующие обозначения:
SOF - старт фрейма: один доминирующий бит.
Поле арбитража – в структуре расширенного фрейма количество бит идентификактора увеличено до 29 и добавлены два служебных бита. RTR – бит, которым сообщение определяется как фрейм данных или как удаленный фрейм.
Поле Управляющее - содержит 6 бит, из которых 4 бита DLC определяют количество байт данных в поле данных, а биты- IDE и R(0) зарезервированы для развития.
CRC – 15 бит контрольной суммы, обеспечивающие высокий уровень достоверности передачи сообщений.
Поле АСК - поле подтверждения правильного приема сообщения.
EOF– поле конца фрейма. В нем передаются 7 рецессивных бит.
Int и BI - соответственно обязательный интервал между фреймами и уровень свободной шины.
По окончанию фрейма на шине в течение интервала времени Int, который не может быть меньше 3-х бит, удерживается сигнал высокого уровня для отделения переданного фрейма от следующего. Если после завершения передачи фрейма шина остается свободной, то на ней удерживается сигнал BI высокого уровня.
2)Структура и назначение служебных фреймов: Удаленный фрейм предназначен для выполнения запроса удаленной передачи от одного узла на передачу данных другим узлам сети. Его структурное отличие от фрейма данных состоит в отсутствии поля данных. Фрейм ошибок и фрейм перегрузки содержат по два поля: в первом располагаются флажки ошибок и служебная информация, а во втором передаются восемь рецессивных битов разграничения.
3) Организация достоверной передачи сообщений в сети CAN
Контроль достоверности приема сообщения осуществляется в поле подтверждения АСК (acknowlegment – подтверждение), которое содержит два участка: ACK-Slot и ACK –Delimiter (рис.11.5.):
Сегмент подтверждения ACK- Slot Сегмент разграничителя ACK- Delimiter
Рис. 11.5. Структура поля АСК
Принцип подтверждения состоит в том, что передающий узел посылает в обоих сегментах АСК рецессивные биты и одновременно отслеживает состояние сигнала на шине. Приемник анализирует СКС принимаемого фрейма: если будет установлено, что сообщение недостоверно, то состояние приемник не изменяет уровень сигнала в АСК-Slot, но если будет установлен достоверный прием сообщения, то приемник в секторе АСК-Slot выставляет доминирующий бит. При наложении рецессивного бита передатчика и доминирующего бита приемника в линии установится доминирующий бит, подтверждающий передающему узлу, что сообщение принято и повтор не требуется. Таким образом, если низкий уровень сигнала принять за логическую «1», а высокий – за логический «0», то в поле АСК будут передаваться сигналы: 10 – если подтверждение получено или 11 если подтверждение не получено.
Протокольно в CAN реализуются следующие механизмы обнаружения ошибок, которые возникают при передаче сообщения:
- Разрядная ошибка появляется, когда передатчик сравнивает уровень на шине с уровнем, который должен передаваться, и обнаруживает их неравенство.
- Ошибка подтверждения возникает, когда передатчик определяет, что сообщение не было подтверждено.
- Ошибка заполнения появляется, когда узел обнаруживает шесть (6) последовательных битов одного и того же значения. В процессе нормальной работы, когда передатчик обнаруживает, что послано пять (5) последовательных битов одного и того же значения, то он заполняет следующий бит противоположным значением (это называется заполнением бита). Все приемники удаляют заполненные биты до вычисления CRC (контрольного кода). Таким образом, когда узел обнаруживает шесть (6) последовательных битов того же значения, возникает ошибка заполнения.
- CRC ошибка выявляется, когда вычисленное приемником значение CRC принятого сообщения не соответствует значению CRC, указанному в сообщении.
Когда активный узел обнаруживает одну из указанных выше ошибок в передаче сообщения, то он передает активный фрейм ошибки, который состоит из шести (6) последовательных доминирующих битов. Такая передача отменит любую другую передачу, проходящую в то же самое время, и заставит все другие узлы обнаружить ошибку наполнения, которая, в свою очередь, заставляет их отбрасывать текущий фрейм.
4) Принцип организации взаимодействия устройств в сети CAN существенно отличается от других тем, что в ней используется децентрализованный принцип передачи сообщений, в котором для исключения состязаний за право передачи сообщения каждому сообщению присваивается определенный приоритет: он определяется значением идентификатора в поле арбитража. На основе идентификатора реализован механизм арбитража при выявлении конфликтов доступа к шине.
Управление доступом к CAN- шине состоит в том, что сообщение, передаваемое одним из CAN-устройств (узлом сети), рассылается сразу всем другим CAN-устройствам подключенным к линии связи (узлам сети). По этой причине все узлы CAN-сети непрерывно контролируют состояние уровня сигнала в шине.
Любое CAN-устройство может начать передачу фрейма только тог-да, когда линия связи не занята передачей сигнала. Если CAN-устройство начало передачу сообщения, то оно будет владеть шиной до завершения этой передачи. Если два или больше CAN-устройств одновременно попытаются начать передачу сообщения, то возникает конфликт, решение которого осуществляется арбитражным путем с использованием 11-битного идентификатора стандартного фрейма или 29-битного идентификатора расширенного фрейма: право на передачу фрейма получит тот узел, который передает сообщение с более высоким приоритетом.
Механизм арбитража состоит в следующем. В течение передачи поля арбитража биты идентификатора последовательно передаются в линию связи, начиная от старшего значещего к младшему. В процессе выполне-ния передачи CAN-устройство одновременно и формирует в линию связи сигнал требуемого уровня (CAN_L/CAN_H), и контролирует состояние си-гнала в линии связи, сравнивая: соответствует текущее значение сигнала в линии связи сформированному значению?
Если CAN-устройство сформировало в линию связи сигнал высокого уровня CAN_H и в линии связи установился сигнал CAN_H, то устройство продолжает передачу фрейма. Если CAN-устройство сформировало в линию связи сигнал высокого уровня CAN_H, а в линии связи будет установлен сигнал низкого уровня CAN_L, устройство должно прекратить передачу в линию связи своего сигнала. При одновременном формировании в линию связи сигналов с высоким и с низким уровнями сигнал низкого уровня «давит» сигнал высокого уровня. По этой причине арбитраж выигрывает то CAN-устройство, у которого идентификатор имеет самое низкое значение!
Пример поразрядного арбитража:
| Поле арбитража, 11 бит | ||||||||||
CAN-устройство 1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 0 |
CAN-устройство 2 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | х | х | х |
На этом бите устройство 2 проигрывает арбитраж и останавливает передачу |
CAN-устройство, которое по арбитражу «проиграло» право за передачу своего фрейма, может пытаться передать свое сообщение после каждого завершения очередной передачи фрейма до тех пор, пока оно не займет в сети приоритетное состояние.
5) В каждом приемном узле устанавливается идентификатор CAN-устройства путем настройки входных фильтров (маскирование). Существуют два типа входных фильтров: фиксированные фильтры или маскируемые (Mask and Match), которые применяют маску к полю идентификатора, прежде чем он сравнивается с приемным регистром кода. Пример поразрядного маскирования:
Фильтрация типа Mask-and- Match | |||||||||||
10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Разряды идентификатора |
1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | Принятое значение идентификатора |
mm | mm | mm | mm | mm | X | X | X | X | X | X | Регистр маски |
1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | Регистр кода после фильтрации |
mm - код маски, Х произвольное значение кода, которое значения не имеет |
В приведенном примере регистр маски сконфигурирован так, что полученные биты 10….6 идентификатора должны соответствовать битам 10…6 в приемном регистре кода. В этом примере биты 10…6 идентификатора должны быть установлены в 11110, а остальные не имеют значения. Если биты 10…6 в регистре маски установлены в 11110, то все сообщения, поступающие из линии связи, принимаются независимо от значений битов 5…0. Значения же битов 5… 0 могут в каждом CAN-устройстве обрабатываться по-разному: игнорироваться или определяться как команда.
11.3.3. Действующий стандарт CAN ограничивается спецификацией только нижних уровней: физического и канального. За рамками стандарта остаются решения таких важных при создании систем вопросов, как адресация узлов, распределение между ними CAN-идентификаторов, интерпретация содержимого фрейма данных, передача данных длиной более 8 байт.
Сервисов двух нижних уровней достаточно при разработке сравнительно простой сети, не планируемой к расширению и состоящей из созданных под эту сеть узлов, т.е. для создания закрытой сети. Для создания на базе CAN-протокола открытых сетей необходима определенность с организацией верхнего уровня. Необходимо ответить на вопросы пользователей: как применять CAN-протокол наиболее эффективно и как может быть обеспечена алгоритмическая преемственность CAN-устройств различных производителей. Таким образом должна быть определена технология построения систем на основе CAN-протокола.
В процессе применения CAN-протокола разработано несколько вариантов решения для прикладного (седьмого) уровня, поддерживаемых Асс-оциацией CiA (CAN in Automation): CAN Kingdom, DeviceNet, CAN-open и SDS (Smart Distributed System). Рассмотрим особенности двух подходов.
1) CAN Kingdom ориентирован на предоставление системному разработчику максимальной свободы в реализации своих идей при построении сети, сохранив при этом возможность использования стандартных модулей независимых производителей. Структура сети CAN Kingdom представляется одним центральным устройством и периферийными устройствами по числу узлов, а организация взаимодействия имеет следующие особенности:
- Распределение CAN-идентификаторов находится под полным контролем разработчика. Возможно динамическое распределение идентификаторов. Допускается использование как стандартного, так и расширенного фреймов.
- Во время первоначальной инициализации системы происходит обязательный этап настройки протокола, включая построение форматов данных, методов управления шиной, распределение идентификаторов.
- В сети как минимум до завершения настройки должен присутствовать супервизор, производящий инициализацию системы, контроль подключения узлов. Ни один модуль не может принимать участие в сетевом обмене без разрешения супервизора.
- Перед инициализацией сети каждому узлу сети должен быть задан номер, задана скорость передачи и должен быть задан идентификатор сообщения инициализации.
Максимальное количество устройств в сети CAN Kingdom- до 255. Допустимая скорость передачи сигнала составляют до 1Мбит/с. Но первоначальная инициализация должна выполняться на скорости 125 кбит/с. Обеспечивается защита от некорректной скорости передачи.
2) DeviceNetимеет дополнения стандарта, начиная с физического уровня. Физической средой передачи является 4-х жильный кабель, в котором по двум жилам стандартно передается информационный сигнал: CAN_H, CAN_L, а по двум другим – Vcc, GND - напряжение питания (24В). Определены два типа кабеля: толстый,12.2мм, обеспечивающий передачу тока нагрузки до 8А, и тонкий 6,9 мм, для токов нагрузки до 3А.
DeviceNet определены только три скорости передачи сигнала –125, 250 и 500 кбит/с. Длина линии связи в зависимости от скорости и типа кабеля может составлять до 100 или до 500 м. Топология линии связи – магистрального типа с ответвлениями.
При передаче данных в сети DeviceNet эффективно используется принцип адресации CAN –протокола с ориентацией на потребителя и узлы выбирают «свои» передаваемые в сети данные по их идентификаторам.
Всего определены два типа сообщений:
- сообщения ввода-вывода, которые предназначены для целей управления устройствами и передачи данных в реальном времени между узлами в широковещательном режиме или в режиме «точка-точка». Используют идентификаторы с высоким приоритетом, которые и определяют содержание сообщения;
- сообщения, которые предназначены для многоцелевого обмена данными в режиме «точка-точка» и обеспечивают типичный сервис «запрос-ответ», используют идентификаторы с низким приоритетом и применяются обычно для конфигурирования устройств и целей диагностики. Значение сообщения содержится в поле данных.
При необходимости передачи данных длиной более 8 байт применяется механизм фрагментации: одно длинное сообщение разбивается на фрагменты и передается фреймами.
В зависимости от потребностей обмена и возможностей CAN-узлов, возможны следующие режимы взаимодействия устройств в сети: ведущий (мастер) - ведомый, мультимастерный, равноправный. Пересылки данных могут инициироваться путем опроса, циклически или при изменении их значения относительно определенного статуса.
В DeviceNet поддерживается только стандартный формат фрейма. Максимальное количество CAN-узлов в DeviceNet - до 64 ( 6-разрядный идентификатор). Однако общее количество адресуемых устройств может достигать 2040 ( по 32 на узел).
Промышленная сеть Modbus |
AS-i. Промышленная сеть AS-i |
HART. Промышленная сеть HART |