Канальный уровень CAN сети

December 22, 2010 by admin Комментировать »

Алгоритмы управления 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), имеющий сходную структуру. Кадр для передачи по шине состоит из семи основных полей (рис. 4.2). CAN протокол поддерживает два формата кадров (стандартный и расширенный), которые различаются только длиной идентификатора (ID).

Кадр стандартного формата начинается доминантным (0) стартовым битом "начало кадра" (SOF – Start of Frame). За ним следует поле арбитража, содержащее 11-битный идентификатор и бит RTR запроса передачи (Remote Transmission Request). Этот бит указывает, передается ли кадр данных (бит RTR – 0) или кадр запроса (бит RTR – 1), в котором отсутствует поле данных.

Рис. 4.2. CAN кадр

Управляющее поле содержит бит расширения идентификатора (IDE – identifier extension), который указывает тип формата кадра: стандартный (0) или расширенный (1). В этом поле также находятся четыре бита DLC для указания длины поля данных и зарезервированный для будущего применения бит R0. В расширенном формате после бита IDE следуют 18 дополнительных бит идентификатора (удлинение поля Arbitration Field до 32 бит). За управляющим полем идут поле данных (0-8 байт) и поле циклического контроля CRC длиной 15 бит плюс рецессивный бит ограничителя этого поля. Образующий полином CRC для контроля кадра – (x15 + x14 + x10 + x8 + x7 + x4 + x3 + 1).

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

Конец сообщения указывается EOF (7 рецессивных бит), после которого идет пауза. Длина паузы равна минимальному количеству битов (3 бита), отделяющих последовательные сообщения.

В CAN протоколе не используется подтверждение сообщений. Вместо этого сигнализируется о возникших ошибках передачи. Всего в CAN- протоколе реализовано пять механизмов проверки на наличие ошибок. Флаг ошибки – это сообщение, содержащее 6 доминантных бит подряд. Другие узлы, приняв такую последовательность, также могут передать флаг ошибки.

Первые три алгоритма контроля реализованы на уровне сообщений: • Циклический контроль. Контролируемые поля кадра от SOF до CRC.

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

•           Контроль кадра. Проверяется соответствие структуры передаваемого

кадра его фиксированному формату и размеру. Ошибки, которые могут возникнуть при проверке кадра, получили название "ошибки формата".

•           Ошибки подтверждения. Как уже ранее было сказано, принятые кадры

подтверждаются всеми приемниками. Если передатчик не получил никакого подтверждения, то это может означать, что приемники обнаружили ошибку (искажено поле АСК), либо приемники вообще отсутствуют в сети.

Следующие два алгоритма определения ошибок реализованы в протоколе CAN на битовом уровне:

•           Мониторинг шины. Одна из особенностей CAN сети состоит в том, что

передающий узел контролирует сигнал на шине во время передачи. Таким образом, каждый узел может наблюдать за уровнем сигнала на шине и определять различие переданного и принятого бита. Расхождение сигналов в поле арбитража требует прекращения передачи, а расхождение в других полях кадра генерирует ошибку.

•           Заполнение битами. В CAN используется сигнальный код NRZ. При

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

Если в течение передачи кадра хотя бы один узел обнаружит ошибку (локальная ошибка), то он передает кадр ошибки, который аварийно завершает текущую передачу. В этом случае все узлы сети не обрабатывают принятое сообщение, чем достигается непротиворечивость данных во всей сети. Узлы сети, не обнаружившие ошибку, после приема кадра ошибки должны повторить передачу кадра ошибки (глобализация ошибки), поэтому максимальная длина этого поля может достигать 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, т.к. это означает, что только данный узел обнаружил ошибку. TEC увеличивается на 8 при передаче кадра ошибки. Успешная передача кадра уменьшает TEC на 1 (если значение не 0). Успешный прием кадра узлом уменьшает REC (если он был не 0) на 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 обеспечивает обработку кадров обоих форматов.

Стандартная структура CAN контроллера приведена на рис. 4.3. Очевидно, что CAN контроллер должен содержать буферные ЗУ и для передаваемых данных, и для принимаемых данных. Реализация процедур CAN протокола, как правило, производится аппаратно с передачей через трансивер выходных сигналов узла (Tx) и входных сигналов с шины (Rx). Приемный фильтр аппа- ратно производит селективную запись принимаемых кадров по их идентификаторам в буферное ЗУ. Предполагается, что буфер передачи должен обеспечивать хранение, по крайней мере, одного сообщения, а буфер приема – не менее двух сообщений. Чаще всего CAN контроллеры имеют больший объем буферных ЗУ. Доступ к данным в буферных

Рис. 4.3. Структура CAN контроллера

ЗУ может производиться по алгоритму FIFO либо в более сложных реализациях с учетом уровня приоритета, определяемого идентификатором. Интерфейс CAN контроллера с управляющим микроконтроллером узла – стандартный. Через этот интерфейс производится настройка параметров, режимов, приемного фильтра и т.п., а также обмен данными с CAN шиной. В настоящее время производится достаточно большое число управляющих микроконтроллеров, которые содержат встроенные средства для обмена данными по CAN сети.

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

Оставить комментарий

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