Подуровень 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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!