Подуровень MAC (Управление доступом к среде в CAN)



 

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

Передача информации в сети CAN осуществляется кадрами четырех форматов:

• кадры данных, служат для передачи информации от узла к узлу;

• кадры запроса, для запроса данных одним узлом у другого;

• кадры ошибки, передаются узлом, обнаружившим какую-либо ошибку;

• кадры перегрузки (переполнения), используются передатчиком для приос­тановки выдачи кадров в сеть.

Между кадрами вводится междукадровое пространство и при передаче кадров используются пять процедур управления:

• вставка дополнительных битов для синхронизации;

• побитовый арбитраж;

• обнаружение ошибок;

• контроль цикличности избыточным кодом;

• сигнализация ошибок.

► Кадр данных служит для передачи сообщений по шипе и состоит из семи ос­новных полей (рис. 5.7).

  SOF
11 Идентификатор
1 Индикатор запроса
6 Управляющее поле
0...64 Данные
15 CRC
1 CRC-разделитель
1 Поле АСК
1 Разделитель АСК
7 Конец кадра
3 Межкадровое пространство

Стандартный формат начинается со стартового бита SOF (start of frame — нача­ло кадра). Далее следует арбитражное поле с 11-битовым идентификатором, затем индикатор запроса. Индикатор показывает, какой это кадр — информационный или кадр запроса. В последнем случае в кадре отсутствует поле данных.

 

Рисунок 5.7–Кадр стандартного формата

 

Управляющее поле содержит один бит идентификатора расширения, указываю­щий, расширенный это формат или стандартный; один бит зарезервирован за бу­дущими возможными расширениями, оставшиеся четыре бита несут информацию о количестве байтов данных в кадре в поле данных.

В поле данных может быть от 0 до 8 байтов (64 бит).

1 SOF
11 Идентификатор
1 Дополнительный бит запроса
1 Признак расширения идентификатора
18 Расширение идентификатора
1 Индикатор'запроса
6 Управляющее поле
0...64 Данные

За полем данных следует 15-битовое поле контроля циклически избыточным ко­дом (CRC), используемое для обнаружения ошибок, и разделитель CRC.

Рисунок 5.8 – Начальная часть кадра данных расширенного формата

 

За разделителем CRC следует поле под­тверждения АСК и разделитель АСК. Пере­датчик устанавливает бит АСК в состояние недоминирующего уровня («1»). Этот бит переписывается в состояние доминирующе­го уровня («О») тем приемником, который принял сообщение правильно. Передаю­щий узел этим извещается, что хотя бы од­ним узлом его данные приняты. Сообщение подтверждается приемником независимо от того, ему оно адресовано или нет.

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

На рис. 5.8 показана начальная часть кадра данных расширенного формата с 29-битовым идентификатором. Биты индика­тора запроса и индикатора расширенного формата находятся в состоянии недоминиующего уровня. Это значит, что кадр стан­дартного формата имеет более высокий приоритет по отношению к кадру расширенного формата при одинаковом содер­жании первых 11-битов поля идентификатора

► Кадр запроса отличается от кадра данных отсутствием поля данных (рис. 5.9). Бит поля запроса находится в состоянии недоминирующего уровня. Кадр запроса используется для запроса данных одним узлом от другого. В ответ узел-адресат посылает кадр данных с таким же идентификатором.

► Кадр ошибки передается узлом, обнаружившим какую-либо неисправность. Кадр ошибки поступает на все узлы и состоит из двух полей — поля флага ошибки и поля разделителя. Флаг ошибки мо­жет быть активным или пассивным.

Активный флаг состоит из шести по­следовательных битов в состоянии до­минирующего уровня (рис. 5.10), пас­сивный — из шести битов недоминирующего уровня. Раздели­тель ошибок состоит из восьми битов в состоянии недоминирующего уровня.

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

1 SOF
11 Идентификатор
1, недоми-нантный Индикатор запроса
6 Управляющее поле
0...64 Данные
15 CRC
1 CRC-разделитель
1 АСК
1 Разделитель АСК
7 Конец кадра
3 Межкадровое пространство

 

Рисунок 5.9 – Кадр запроса

 

► Кадр перегрузки (переполнения) посылается на шину подуровнями MAC или LLC (см. рис. 5.1) при обнаружении перегрузки или некоторых ошибок. При получении кадра перегрузки узел задерживает передачу очередного кадра данных на шину, давая приемнику время выполнить его задание.

 

 

Рисунок 5.10 – Кадр ошибки

 

Рисунок 5.11 – Кадр перегрузки

 

Кадр перегрузки (рис. 5.11) содержит два поля — флаг перегрузки и раздели­тель. По структуре кадр перегрузки совпадает с кадром ошибки, но отличается временем передачи. Кадр ошибки передается немедленно после ее обнаружения одним из узлов, а кадр перегрузки передается после окончания текущего кадра, игнорируя междукадровое пространство.

Появление кадра ошибки в современных сетях CAN — событие маловероят­ное. Эта опция сохранена для совместимости с более медленными CAN — конт­роллерами прежних разработок, например, с пионером — Intel80526.

Более современные контроллеры это Intel: 82527; Philips: SJA1000; Siemens: 81C90; Siemens: 81C91.

► На подуровне MAC между окончанием предыдущего и началом последую­щего кадра обязательно проходит некоторое время, которое называется между­кадровым пространством. Перед кадрами ошибок и перегрузки междукадрового пространства нет.

Рисунок 5.12 – Междукадровое пространство

 

Пространство между кадрами может содержать поля: «между­кадровое пространство», «холостой ход шины», «задержка передачи». Для узлов в активном режиме (рис. 5.12) междукадровое пространство содержит паузу и холо­стой ход. Если узел находится в пассивном режиме и являлся передатчиком по­следнего кадра по мультиплексной шине данных, он добавляет 8 бит недомини­рующего уровня («задержка передачи») в междукадровое пространство. Если другой узел начнет передачу данных в это время, то узел в режиме пассивной ошибки станет приемником следующего кадра, вместо того чтобы продолжить передачу. В этом случае узел в режиме пассивной ошибки присвоит всем переда­ваемым им кадрам более низкий приоритет, чем у кадров, передаваемых узлами в режиме активной ошибки.

► В протоколе CAN используется NRZ-код (non-return-to-zero). При этом эф­фективно используется частотная полоса линии связи, но если в последовательно­сти много битов одного значения, возможно нарушение синхронизации. Для предотвращения этого в последовательность, состоящую из 5 и более одинаковых битов, вставляются дополнительные синхронизирующие биты (рис. 5.13). В при­емнике эти вспомогательные биты автоматически убираются.

Рисунок 5.13 – Введение дополнительных битов для синхронизации

 

Кадр всегда передается начиная со стартового бита (SOF). В пределах ноля первыми идут биты, несущие наиболее важную информацию.

► Побитовый арбитраж является особенностью протокола CAN.

Мультиплексная система, подчиняющаяся CAN-протоколу, является равно-ранговой. Любой узел имеет право на доступ к шине, когда она свободна. Призна­ком этого является обнаружение узлом междукадрового пространства.

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

На рис. 5.14 показаны три узла, пытающиеся одновременно получить доступ к сети CAN. Для первого узла идентификатор 0111111..., для второго — 0100110..., для третьего — 0100111... Первые две цифры в идентификаторах совпадают, все три узла продолжают передавать информацию (в данном случае свои идентификаторы) на шину до прихода третьей цифры, при этом шина будет установлена в доминирующее состояние «О». Далее узел 1 прекратит пе­редачу, так как передаваемая им цифра недоминирующего уровня «1» отличается от пуле­вого состояния шины. Узлы 2 и 3 продолжат передачу до седьмого бита. В этот момент вре­мени передаваемый узлом 3 бит «1» не совпа­дает с состоянием шины «О» и узел 3 отклю­чится, передачу продолжит только узел 2.

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

Неразрешимые конфликты могут возник­нуть на шине, если в кадрах запроса совпа­дают идентификаторы, но указано разное число битов в требуемых данных. Для избе­жания конфликтов в пределах системы эти числа должны быть одинаковыми.

 

Рисунок 5.14 – Побитовый арбитраж

 

► Протокол CAN в отличие от других не

использует квитирование сообщений. Вместо этого CAN сигнализирует об обна­руженных ошибках. В протоколе имеется пять способов обнаружения ошибок:

•контроль циклически избыточным кодом (CRC). Передатчик добавляет в кадр дополнительные биты в поле CRC, используя образующий полином и содер­жимое кадра. На принимающей стороне определяется код CRC и сравнива­ется с переданным. Отсутствие совпадения определяется как ошибка CRC;

• проверка кадра. Проверяются форматы полей кадра. Обнаруженные ошиб­ки называются ошибками кадра;

• определение ошибки АСК. Приемник, получивший информацию, устанавли­вает бит АСК в доминантное состояние. Передатчик, не получивший под­тверждения в такой форме, уведомляется об ошибке в кадре или отсутствии приемников.

В протоколе CAN имеется две процедуры обнаружения ошибок на битовом уровне:

•мониторинг шины. Узел может контролировать собственное сообщение при передаче и может обнаружить несоответствие между тем, что он передает, и тем, что приходит к приемнику. Исключением является посылка недоми­нантных битов при арбитраже или бита АСК. Это позволяет отличать гло­бальные ошибки от локальных ошибок передатчика;

•определение ошибки при вводе дополнительных битов синхронизации. Ошибка определяется при получении приемником шести одинаковых последова­тельных битов.

Первые три из перечисленных способов реализуются на уровне сообщения (кадра), два последних — на битовом уровне.

 

Рисунок 5.15 – Схема включения регистра

 

► В протоколе CAN применяется контроль циклически избыточным кодом (CRC), для чего используется полином х15 + х14 + х10+ х8 + х7 + х4 + х3 + 1, гене­рирующий двоичную псевдослучайную последовательность максимальной длины. Аппаратно или программно организуется сдвигающий 16-разрядный регистр с об­ратными связями через схемы «исключающее ИЛИ» (сумма по модулю два) в со­ответствии с коэффициентами образующего полинома (рис. 5.15). Регистры на стороне приемника и передатчика исходно устанавливаются в одинаковые состоя­ния. Через регистр проходят биты сообщения начиная со старших. После этого содержимое регистра становится циклически избыточным кодом (CRC). При от­сутствии ошибок коды приемника и передатчика совпадают. При ошибке бит АСК остается недоминантным.

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

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

После прерывания ошибочного сообщения передатчик пытается его повто­рить, как только шина освободится.

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

 

Подуровень LLC

Возможности подуровня

 

Подуровень LLC соответствует верхней части канального уровня модели ВОС. Здесь решаются вопросы независимо от способов доступа к среде, такие как: ре­шение о принятии сообщения узлом, определение состояния перегрузки, повторе­ние передачи и т. д.

►Подуровень LLC обеспечивает пользователя интерфейсом CAN возможно­стью выполнять следующие задания:

•передавать данные без квитирования;

•передавать кадр запроса без квитирования.

Взаимодействие между подуровнем LLC и пользователем осуществляется с при­менением двух типов кадров: кадра данных LLC и кадра запроса LLC (рис. 7.16).

Рисунок 5.16 – Форматы кадров подуровня LLC

 

В поле идентификатора содержит­ся 11 бит. Семь наиболее значимых битов не могут быть одновременно в состоянии «1».

В поле DLC (data length code) со­держится 4 бита. Здесь указывается размерность поля данных в байтах. Допустимыми значениями являются 0—8, комбинации цифр 9 и 5 запре­щены.

В поле данных может быть до 8 байт, в соответствии со значением DLC. Кадр запроса идентичен кадру данных, но не содержит поля данных. Поле DLC должно содержать число байтов данных в соответствии с идентификатором.

► Решение о принятии сообщения узлом реализуется следующим способом. При необходимости послать сообщение узел передает данные и идентификатор своему шинному драйверу CAN. Здесь сообщение форматируется в кадры и пере­дается на шину драйвером, когда шина свободна или в соответствии с приорите­том информации. Все другие узлы шипы становятся приемниками этого сообще­ния. Каждый узел определяет — ему предназначена эта информация или нет. Если «да», информация принимается, если «нет» — игнорируется. Процедуру та­кой фильтрации может выполнить и ЭБУ, но для разгрузки ЭБУ в современных протоколах CAN для мультиплексных систем определение назначения сообщения возложено на адаптеры CAN.

► Извещение о перегрузке передается в шину CAN, когда внутренние условия приемника требуют задержки перед принятием следующего кадра. Кадр перегруз­ки инициируется подуровнем LLC.

В результате арбитража передатчик может не передать свое сообщение на шину. Подуровень LLC инициирует ретрансляцию (повторение) данных, пока они не будут отосланы адресату. Доступ передающего узла к шине может быть за­блокирован другими сообщениями с более высокими приоритетами. Как должна отрабатываться такая ситуация, решается соответствующим приложением.

 


Дата добавления: 2018-11-24; просмотров: 446; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!