Смекни!
smekni.com

Локальные сети (стр. 4 из 7)

CAN сеть мультимастерная, т.е. все узлы имеют равные права доступа. Если шина свободна, каждый из узлов в произвольный момент времени может начинать передачу сообщения (кадра). Все передаваемые сообщения принимаются всеми узлами, CAN контроллер каждого узла содержит фильтр сообщений. Этот фильтр может быть настроен на обработку сообщений с определенными идентификаторами, все остальные сообщения будут игнорироваться. Т.е. сообщения в сети могут приниматься и обрабатываться любым числом узлов в зависимости от настройки их входных фильтров. Это позволяет, например, обрабатывать сообщения одного датчика всеми узлами, которым эти данные необходимы.

При попытке одновременной передачи кадров несколькими узлами работает механизм поразрядного неразрушающего арбитража, обеспечивающего первоочередной доступ сообщениям с высоким уровнем приоритета (Carrier Sense Multiple Access with Collision Detection and Arbitration on MessagePriority- CSMA/CD+AMP). Передача приоритетного сообщения будет продолжена, а остальные узлы должны прервать передачу до освобождения шины. Уровень приоритета определяется положением и количеством доминантных бит в поле арбитража, в котором передается идентификатор сообщения. Меньшему значению идентификатора соответствует более высокий уровень приоритета.

Каждый передающий узел, формируя сигналы на шине, контролирует ее состояние и продолжает передачу до тех пор, пока состояние шины и передаваемые сигналы совпадают. Прекращение передачи происходит только при передаче рецессивного бита, если одновременно какой-либо другой узел передает доминантный бит. При этом узел, формирующий доминантный бит, передачу сообщения продолжит.

Содержание передаваемых данных обозначается 11-битным идентификатором (29-битный идентификатор в расширенном формате), стоящим в самом начале сообщения. Особенностью является то, что этот идентификатор определяет приоритет сообщения. Кроме того, идентификаторы присваиваются не узлам, а сообщениям и определяются содержащимися в сообщениях данными. Такой тип рассылки сообщений называется "схема адресации, ориентированная на содержимое". При этом один узел может отправлять сообщения с различными идентификаторами в зависимости от характера передаваемых данных, а также принимать и обрабатывать сообщения с различными идентификаторами в зависимости от настройки входных фильтров.

В результате применения схемы адресации, ориентированной на содержимое, обеспечивается высокая степень конфигурируемости и гибкости системы. Добавление в сеть новых узлов может осуществляться без модификации аппаратной или программной части сети.

CAN протокол предусматривает два алгоритма передачи данных:

передающий узел самостоятельно передает кадр данных, остальные узлы его принимают и обрабатывают;

узел может послать запрос на необходимые данные, по этому запросу узел-источник данных передает сообщение, которое, как и в первом случае, принимается и обрабатывается.

Данные передаются в кадре данных (dataframe), а для запроса данных предусмотрен кадр запроса (remoteframe), имеющий сходную структуру. Кадр для передачи по шине состоит из семи основных полей. 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 рецессивных бит) для того, чтобы не мешать передаче кадров других узлов.