3.1.2 Канальный уровень can сети
Реализация процедур CAN протокола производится специальными аппаратными средствами - CAN контроллерами. Эти контроллеры выпускаются либо в виде отдельных интегральных схем, либо являются встроенными элементами более сложных устройств. CAN контроллер в комплекте с ИС CAN трансивера обеспечивает работу локальной сети, реализуя все необходимые функции: от управления доступом к разделяемой среде передачи данных (MAC - процедуры) до передачи сигналов по линии связи. Для HLP протоколов остаются только функции настройки сети: автоматический выбор и задание скорости передачи, поддержка алгоритмов контроля сообщений, передача сообщений большого объема, автоматическое распределение идентификаторов в сети и т.п. Эти задачи могут быть решены без HLP протоколов, при проектировании сети можно вручную задать все необходимые параметры и режимы и произвести настройку CAN контроллеров. HLP протоколы позволяют автоматизировать эти процедуры и в ряде случаев изменять их в процессе работы.
CAN сеть мультимастерная, т.е. все узлы имеют равные права доступа. Если шина свободна, каждый из узлов в произвольный момент времени может начинать передачу сообщения (кадра). Все передаваемые сообщения принимаются всеми узлами, CAN контроллер каждого узла содержит фильтр сообщений. Этот фильтр может быть настроен на обработку сообщений с определенными идентификаторами, все остальные сообщения будут игнорироваться. Т.е. сообщения в сети могут приниматься и обрабатываться любым числом узлов в зависимости от настройки их входных фильтров. Это позволяет, например, обрабатывать сообщения одного датчика всеми узлами, которым эти данные необходимы.
При попытке одновременной передачи кадров несколькими узлами работает механизм поразрядного неразрушающего арбитража, обеспечивающего первоочередной доступ сообщениям с высоким уровнем приоритета (Carrier Sense Multiple Access with Collision Detection and Arbitration on Message Priority - CSMA/CD+AMP). Передача приоритетного сообщения будет продолжена, а остальные узлы должны прервать передачу до освобождения шины. Уровень приоритета определяется положением и количеством доминантных бит в поле арбитража, в котором передается идентификатор сообщения. Меньшему значению идентификатора соответствует более высокий уровень приоритета.
Каждый передающий узел, формируя сигналы на шине, контролирует ее состояние и продолжает передачу до тех пор, пока состояние шины и передаваемые сигналы совпадают. Прекращение передачи происходит только при передаче рецессивного бита, если одновременно какой-либо другой узел передает доминантный бит. При этом узел, формирующий доминантный бит, передачу сообщения продолжит.
Содержание передаваемых данных обозначается 11-битным идентификатором (29-битный идентификатор в расширенном формате), стоящим в самом начале сообщения. Особенностью является то, что этот идентификатор определяет приоритет сообщения. Кроме того, идентификаторы присваиваются не узлам, а сообщениям и определяются содержащимися в сообщениях данными. Такой тип рассылки сообщений называется "схема адресации, ориентированная на содержимое". При этом один узел может отправлять сообщения с различными идентификаторами в зависимости от характера передаваемых данных, а также принимать и обрабатывать сообщения с различными идентификаторами в зависимости от настройки входных фильтров.
В результате применения схемы адресации, ориентированной на содержимое, обеспечивается высокая степень конфигурируемости и гибкости системы. Добавление в сеть новых узлов может осуществляться без модификации аппаратной или программной части сети.
CAN протокол предусматривает два алгоритма передачи данных:
передающий узел самостоятельно передает кадр данных, остальные узлы его принимают и обрабатывают;
узел может послать запрос на необходимые данные, по этому запросу узел-источник данных передает сообщение, которое, как и в первом случае, принимается и обрабатывается.
Данные передаются в кадре данных (data frame), а для запроса данных предусмотрен кадр запроса (remote frame), имеющий сходную структуру. Кадр для передачи по шине состоит из семи основных полей. CAN протокол поддерживает два формата кадров (стандартный и расширенный), которые различаются только длиной идентификатора (ID).
Кадр стандартного формата начинается стартовым битом "начало кадра" (SOF - Start of Frame). За ним следует поле арбитража, содержащее 11-битный идентификатор и бит RTR запроса удаленной передачи (Remote Transmission Request). Этот бит указывает, передается ли кадр данных (0) или кадр запроса (1), в котором отсутствует поле данных.
Управляющее поле содержит бит расширения идентификатора (IDE - identifier extension), который указывает тип формата кадра - стандартный (0) или расширенный (1). (В расширенном формате после бита IDE следуют 18 дополнительных бит идентификатора). Кроме того, в этом поле находятся зарезервированный для будущего применения бит R0 и четыре бита DLC для указания длины поля данных. За управляющим полем идут поле данных (0-8 байт) и поле (15 бит + рецессивный бит ограничителя этого поля) циклического контроля CRC, используемое для контроля кадра (x15 + x14 + x10 + x8 + x7 + x4 + x3 + 1).
Поле подтверждения (АСК) состоит из области АСК длиной в 1 бит и ограничителя поля АСК. АСК-бит помещается на шину передатчиком как рецессивный (логическая 1). Приемники, корректно принявшие эти данные, преобразуют его в логический 0, делая его доминантным. Таким образом, передающий узел получает подтверждение, что хотя бы один приемник правильно принял его сообщение. Сообщения подтверждаются приемниками независимо от результата тестирования данных при приёме.
Конец сообщения указывается EOF (7 рецессивных бит), после которого идет пауза. Длина паузы равна минимальному количеству битов (3 бита), отделяющих последовательные сообщения.
В отличие от других шинных систем, в CAN протоколе не используются подтверждающие сообщения. Вместо этого он сигнализирует о возникших ошибках передачи. Всего в CAN-протоколе реализовано пять механизмов проверки на наличие ошибок. Флаг ошибки - это сообщение, содержащее 6 доминантных бит подряд. Другие узлы, приняв такую последовательность, также могут передать флаг ошибки. Поэтому максимальная длина этого поля может достигать 12 доминантных бит. Завершается кадр ошибки ограничителем флага ошибки из 8 рецессивных бит, после стандартной паузы (3 бита), прерванная кадром ошибки передача должна быть повторена.
Первые три алгоритма контроля реализованы на уровне сообщений:
Циклический контроль. Контролируемые поля кадра от SOF до CRC. При использовании этого метода в конце передачи добавляются биты циклического избыточного кода. При приеме сообщения происходит его повторное вычисление и сравнение с полученным кодом циклического контроля. Если эти два значения не совпадают, то выявляется ошибка CRC.
Контроль кадра. Проверяется соответствие структуры передаваемого кадра его фиксированному формату и размеру. Ошибки, которые могут возникнуть при проверке кадра, получили название "ошибки формата".
Ошибки подтверждения. Как уже ранее было сказано, принятые кадры подтверждаются всеми приемниками. Если передатчик не получил никакого подтверждения, то это может означать, что приемники обнаружили ошибку (искажено поле АСК), либо приемники вообще отсутствуют в сети.
Следующие два алгоритма определения ошибок реализованы в протоколе CAN на битовом уровне:
Мониторинг шины. Одна из особенностей CAN сети состоит в том, что передающий узел может контролировать свой собственный сигнал на шине во время передачи. Таким образом, каждый узел может наблюдать за уровнем сигнала на шине и определять различие переданного и принятого бита. Расхождение сигналов в поле арбитража требует прекращения передачи, а расхождение в других полях кадра генерирует ошибку.
Заполнение битами. В CAN используется сигнальный код NRZ. Однако, если подряд идет слишком много битов с одним и тем же значением, то возможен сбой синхронизации. Если в сообщении подряд идут пять битов с одинаковым значением, то передатчик автоматически вставляет дополнительный бит. Этот бит автоматически удаляется из сообщения приемниками. Если будет получено шесть последовательных битов с одним и тем же значением, то по CAN протоколу это считается ошибкой.
Если в течение передачи кадра хотя бы одна станция обнаружит ошибку по любому из алгоритмов контроля (локальная ошибка), то она передает кадр ошибки, который аварийно завершает текущую передачу. В этом случае все узлы сети не обрабатывают принятое сообщение, чем достигается непротиворечивость данных во всей сети. Узлы сети, не обнаружившие ошибку, после приема кадра ошибки должны повторить передачу кадра ошибки (глобализация ошибки), поэтому максимальная длина этого поля может достигать 12 доминантных бит. Завершается кадр ошибки ограничителем флага ошибки из 8 рецессивных бит, после стандартной паузы (3 бита), прерванная кадром ошибки передача должна быть повторена. Как правило, повторная передача начинается в течение периода времени, соответствующего передаче 23 битов, отсчитываемого с момента обнаружения ошибки.
Для реализации процедур самоконтроля каждый узел CAN сети содержит два счетчика: счетчик ошибок приема (REC) и счетчик ошибок передачи (TEC). Счетчики автоматически инкрементируются после обнаружения каждой ошибки и декрементируются после корректной передачи или приема кадра. В зависимости от состояния счетчиков ошибок узел может находиться в одном из трех состояний: активной ошибки, пассивной ошибки, отключен от шины.
Состояние активной ошибки является основным для узла CAN сети и предполагает его нормальное функционирование. При обнаружении ошибки в этом состоянии узел посылает кадр активной ошибки (6 доминантных бит). Состояние активной ошибки будет продолжаться до тех пор, пока число ошибок в любом из счетчиков не превышает 127. Если число ошибок превышает 96, микроконтроллеру узла передается сообщение о критическом числе ошибок. При числе ошибок более 127, но менее 256 узел переходит в состояние пассивной ошибки.
Состояние пассивной ошибки свидетельствует о часто повторяющихся ошибках. Узел из этого состояния может самостоятельно вернуться к активной ошибке, если число ошибок в счетчиках станет менее 128. При обнаружении очередной ошибки узел имеет право передать только кадр пассивной ошибки (6 рецессивных бит), который не может изменить текущую передачу любого другого узла. При повторении прерванной передачи этого узла должна быть сделана дополнительная пауза (8 рецессивных бит) для того, чтобы не мешать передаче кадров других узлов.
Если число ошибок в любом из счетчиков превысит 255, узел должен отключиться от шины (на практике REC содержит только 8 дв. разрядов и поэтому число ошибок приема не может превысить этот порог). Самостоятельно CAN контроллер узла не может вернуться в рабочее состояние. Если произведен внешний сброс, CAN контроллер возвращается в состояние активной ошибки и после паузы 128х11 (1408) может передавать сообщения.
CAN протокол определяет правила накопления числа ошибок в счетчиках REC и TEC. В зависимости от вида ошибки увеличение числа ошибок в счетчиках может быть от 1 до 8 при обнаружении однократной ошибки. Декремент содержимого счетчиков в состоянии активной ошибки производится всегда только на 1. Это позволяет присваивать разные веса различным ошибкам. Например, обнаружение ошибки при приеме увеличивает REC на единицу одновременно с отправкой кадра активной ошибки; если принимается доминантный бит после отправки узлом кадра активной ошибки, REC увеличивается на 8, т.к это означает, что только данный узел обнаружил ошибку. Успешный прием кадра узлом уменьшает REC (если он был не нулевым) на 1 в состоянии активной ошибки; если узел был в состоянии пассивной ошибки, в REC устанавливается величина от 119 до 127 (т.е. при TEC менее 128 узел перейдет в состояние активной ошибки).
Любой узел может также послать кадр перегрузки (overload frame), если, во-первых, он не успевает обрабатывать поступающие сообщения и не может обеспечить прием следующего сообщения, во-вторых, при приеме доминантных бит в паузе между кадрами (это может означать потерю синхронизации при приеме). Кадр перегрузки имеет такой же формат, как и кадр ошибки, но передается всегда только после завершения приема кадра. А кадр ошибки может быть передан только в процессе передачи кадра. Кадр перегрузки не увеличивает состояние счетчиков ошибок и не приводит к повторной передаче кадров. Допускается передача узлом не более 2 кадров перегрузки подряд.
В соответствии со всеми процедурами контроля:
передача кадра считается успешной, если не обнаружено ошибок до конца поля EOF;
прием кадра считается успешным, если не обнаружено ошибок и в течение межкадрового интервала (3 бита после EOF).
Необходимо помнить, что CAN протокол не содержит эффективных средств контроля и восстановления искаженных данных кроме процедуры контроля CRC. Процедуры LLC не предусмотрены, несмотря на высокую помехоустойчивость возможны выпадения и вставки. Если необходимы дополнительные средства контроля данных, они должны реализовываться HLP протоколами.
В настоящее время выпускают CAN контроллеры, которые поддерживают одну из трех версий протокола. Версия CAN 2.0A поддерживает работу только с кадрами стандартного формата, имеющими 11-битный идентификатор. CAN 2.0B passive обеспечивает передачу кадров стандартного формата, а прием и обработку кадров и стандартного формата, и расширенного формата с 29-битным идентификатором. CAN 2.0B active обеспечивает обработку кадров обоих форматов.
Рис.1. Архитектура CAN контроллера
Очевидно, что CAN контроллер должен содержать буферные ЗУ и для передаваемых данных, и для принимаемых данных. Реализация процедур CAN протокола, как правило, производится аппаратно с передачей через трансивер выходных сигналов узла (Tx) и входных сигналов с шины (Rx). Приемный фильтр аппаратно производит селективную запись принимаемых кадров по их идентификаторам в буферное ЗУ. Предполагается, что буфер передачи должен обеспечивать хранение, по крайней мере, одного сообщения, а буфер приема - не менее двух сообщений. Чаще всего CAN контроллеры имеют больший объем буферных ЗУ. Доступ к данным в буферных ЗУ может производиться по алгоритму FIFO либо в более сложных реализациях с учетом уровня приоритета, определяемого идентификатором. Интерфейс CAN контроллера с управляющим микроконтроллером узла - стандартный. Через этот интерфейс производится настройка параметров, режимов, приемного фильтра и т.п., а также обмен данными с CAN шиной. В настоящее время производится достаточно большое число управляющих микроконтроллеров, которые содержат встроенные средства для обмена данными по CAN сети.
В связи с тем, что CAN протокол определяет только процедуры физического и MAC уровней, а построение сети требует решения и других задач, связанных, например, с процедурами LLC, процедурами автоматического выбора параметров и режимов при инициализации работы узлов, разработаны так называемые CAN HLP протоколы.
К настоящему времени известно уже более четырех десятков CAN HLP. Среди CAN HLP наибольшее распространение в системах промышленной автоматизации получили четыре, поддерживаемых ассоциацией CiA: CAL/CANopen, CAN Kingdom, DeviceNet и SDS.
- Содержание
- 1. Особенности локальных сетей
- 2. Стандарты 802. Х
- 2.1 Стандарт 802.3, сети Ethernet
- 2.2 Стандарт 802.5, сети Token ring
- 3. Промышленные сети (Fieldbus)
- 3.1 Can сети
- 3.1.1 Физический уровень can сети
- 3.1.2 Канальный уровень can сети
- 3.2 Сети profibus
- 3.2.1 As-интерфейс
- 3.2.2 Сеть Profibus-dp
- Список литературы