Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Передача сообщений



Сообщения в CAN передаются с помощью фреймов (блоков данных). Используется два разных формата фреймов, которые различаются длиной поля идентификатора: стандартный фрейм с идентификатором длиной 11 бит и расширенный фрейм с длиной идентификатора 29 бит.

Существует 4 различных типа фреймов:

- DATA FRAME - "фрейм данных" - переносит данные от передатчика к приемнику;

- REMOTE FRAME - "дистанционный фрейм" (фрейм вызова) - передается одним из устройств для того, чтобы получить от другого устройства данные в формате DATA FRAME с тем же идентификатором, что и в REMOTE FRAME;

- ERROR FRAME - "фрейм ошибок" - передается любым устройством, обнаружившим ошибку на шине;

- OVERLOAD FRAME - "фрейм перегрузки" - используется для запроса дополнительной задержки между предыдущими и последующими данными.

Фрейм данных состоит из следующих полей (рисунокРисунок 2.3): начало фрейма (Start Of Frame), поле арбитража (Arbitration Field), поле контроля (Control Field), поле данных (Data Field), поле циклического избыточного кода (CRC Field), поле уведомления о приеме (ACKnowledgement Field) и поле конца фрейма (End Of Frame). Поле данных может иметь нулевую длину.

Рисунок 2.3 - Структура фрейма данных
 

Пространство между фреймами представлено рецессивным состоянием шины (которое соответствует высокому уровню на рисунке Рисунок 2.3, поскольку CAN-передатчики инвертируют логические уровни). Только при рецессивном состоянии шины устройство может начать передачу фрейма.

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

Формат поля арбитража различается для стандартного и расширенного формата фрейма. В стандартном фрейме поле арбитража состоит из идентификатора длинной 11 бит и RTR-бита (Remote Transmission Request - "запрос дистанционной передачи").

В расширенном формате поле арбитража имеет идентификатор длиной 29 бит, SRR-бит (Substitute Remote Request - "заменяющий RTR-бит"),IDE-бит (Identifier Extension Bit - "бит идентификации расширенного формата") и RTR-бит. Поле идентификатора в расширенном формате состоит из базового идентификатора и расширенного идентификатора. Базовый идентификатор определяет приоритет расширенного фрейма. RTR-бит служит для того, чтобы отличить фрейм данных от фрейма вызова. IDE-бит служит для различения стандартного и расширенного формата фреймов.

Поле контроля включает в себя код, который указывает длину данных в поле данных, IDE-бит и один (в стандартном формате) или два (в расширенном) зарезервированных бита.

Поле данных состоит из данных, которые должны быть переданы фреймом данных. Он может иметь длину от 0 до 8 байт по 8 бит каждый. Данные передаются младшим разрядом вперед.

Поле CRC содержит циклический избыточный код, служащий для обнаружения ошибок во всех предшествующих ему полях фрейма, включая бит начала фрейма. Поле CRC оканчивается CRC-разделителем (рецессивное состояние) длиной в 1 бит. Стандарт CAN устанавливает алгоритм вычисления CRC. Биты стаффинга перед вычислением удаляются.

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

Конец фрейма представляет собой последовательность из семи рецессивных бит.

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

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

Фрейм перегрузки состоит из двух полей: флага перегрузки и поля разделителя. Существуют следующие условия, при наступлении которых начинается передача фрейма перегрузки:

- перегрузка приемника, которая требует увеличить паузу между принимаемыми им фреймами;

- обнаружение доминантного бита на месте первого и второго бита в поле перерыва паузы между фреймами.

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

Пауза содержит поле перерыва (3 бита) и поле простоя (произвольной длины) и, для пассивных к ошибке устройств, которые выполняли передачу предыдущего сообщения, поле приостановленной передачи.

Фильтрация сообщений используется для выбора из всех сообщений на шине только тех, которые соответствуют маске, записанной в регистр приемника. Маска может быть настроена на отбор группы сообщений и использует идентификатор, входящий в состав поля арбитража на рисунке Рисунок 2.3. Отобранные сообщения помещаются в буфер приемника.





Дата публикования: 2014-12-11; Прочитано: 293 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...