Автор работы: Пользователь скрыл имя, 30 Апреля 2013 в 13:05, курсовая работа
CAN (Controller Area Network) - это последовательный протокол связи с эффектив-ной поддержкой распределения контроля в реальном времени и очень высоким уров-нем безопасности.
Основное назначение: организация передачи информации в сложных условиях, таких как среды с высоким уровнем различного рода помех. Этот протокол передачи приме-няется в автомобильной электронике, машинных устройствах управления, датчиках при передаче информации со скоростями до 1 Мбит/сек.
1. Введение 3
2. Основные характеристики протокола 3
3. Передача сообщений 6
4. Межкадровое пространство (INTERFRAME SPACE) 11
5. Определение передатчика / приемника 12
6. Корректность сообщения 13
7. Кодирование битового потока 13
8. Обработка ошибок 13
9. Сигнализация ошибок 14
10. Типизация ошибок 15
11. Синхронизация 17
Литература 19
3.3. Кадр ошибки (ERROR FRAME)
Состоит из двух различных полей. Первое поле является суперпозицией флагов ошибки различных узлов, второе поле - поле разделителя ошибки.
Для корректного завершения кадра ошибки, узлу в состоянии "пассивной ошибки" может быть необходим доступ к шине, поэтому шина должна быть свободной, по крайней мере, три времени передачи бита. Следовательно, шина не должна быть загружена на 100%.
Флаг ошибки (Error Flag):
Существует 2 формы флага ошибки: активный и пассивный флаг ошибки.
1. активный флаг ошибки состоит из 6 последовательных бит с лог. "0".
2. пассивный
флаг ошибки состоит из 6 последовательных
бит с лог. "1, если они не
перезаписаны битами с лог. "0"
других узлов.
Узел в состоянии "активной ошибки"
при обнаружении ошибки передает активный
флаг ошибки. Форма флага ошибки нарушает
закон кодирования битового потока методом
разрядного заполнения (см. раздел "Кодирование
битового потока"). Вследствие этого
все узлы обнаруживают условие ошибки
и начинают передавать флаг ошибки. В результате,
последовательность бит с лог. "0",
контролируемая на шине является суперпозицией
флагов ошибок отдельных узлов. Общая
длина этой последовательности - от 6 до
12 бит с лог. "0".
Узел в состоянии "пассивной ошибки"
при обнаружении ошибки передает пассивный
флаг ошибки, он ждет последовательности
из 6 одинаковых бит, определяющих начало
флага пассивной ошибки. Когда эта последовательность
будет обнаружена, флаг пассивной ошибки
будет завершен.
Разделитель ошибки (Error Delimiter)
Разделитель ошибки состоит из 8 бит с лог. "1". После передачи флага ошибки каждый узел посылает биты с лог. "1" и контролирует шину, пока не обнаружит бит с лог. "1". Впоследствии он начинает передавать 7 бит с лог. "1".
3.4. Кадр перегрузки (OVERLOAD FRAME)
Кадр перегрузки содержит два битовых поля: флаг перегрузки и разделитель перегрузки.
Имеются два вида перегрузки, которые оба приводят к передаче кадра перегрузки.
1. Внутреннее состояние
2. Обнаружение бита с лог. "0"
в течение поля перерыва (см. межкадровое
пространство).
Передача кадра перегрузки из-за состояния
1 возможна только в первом битовом интервале
перерыва, в то время как кадры перегрузки
по состоянию 2 начинают передаваться
на следующем битовом интервале после
обнаружения бита с лог. "0".
Для больших задержек может быть послано
несколько кадров перегрузки.
Флаг перегрузки (Overload flag)
Состоит из 6 бит с лог. "0". Формат
соответствует активному флагу
ошибки.
Форма флага перегрузки нарушает фиксированную
форму поля перерыва. Поэтому, другие узлы
также обнаруживают состояние перегрузки
и в свою очередь начинают передавать
флаг перегрузки.
В случае обнаружения бита с лог. "0"
в течение третьего бита перерыва, некоторые
узлы не будут корректно интерпретировать
флаг перегрузки, первый (из шести) бит
с лог. "0" будет принят за поле "начало
кадра". Шестой бит флага перегрузки
с лог. "0" нарушает закон кодирования
битового потока методом разрядного заполнения
(см. раздел "Кодирование битового потока
методом разрядного заполнения").
Разделитель перегрузки (Overload Delimiter)
Состоит из 8 бит с лог. "1".
Разделитель перегрузки имеет такую
же форму, как и разделитель ошибки. После
передачи флага перегрузки узел контролирует
шину, пока не обнаружит бит с лог. "1".
В этой точке времени все узлы уже закончили
передавать флаг перегрузки и начинают
передавать 7 бит с лог. "1".
4. Межкадровое пространство (INTERFRAME SPACE)
Кадры данных и кадры удаленного запроса данных отделяются от предшествующих кадров любого типа (кадра данных, кадра удаленного запроса данных, кадра ошибки, кадра перегрузки). Это разделяющее битовое поле называется межкадровым пространством.
Кадрам перегрузки и кадрам ошибки
не предшествует межкадровое пространство;
несколько кадров перегрузки также
не отделяются межкадровым пространством.
Межкадровое пространство содержит поля
"перерыв" и "простой шины", и
для узла в состоянии "пассивной ошибки",
который был передатчиком предыдущего
сообщения, дополнительное поле - "приостановка
передачи" (поле "приостановка передачи"
находится между полями "перерыв"
и "простой шины").
Поле перерыва (Intermission)
Состоит из 3 бит с лог. "1". В течение перерыва никакому узлу нельзя начинать передачу кадра данных или кадра удаленного запроса данных. Единственно возможное действие - это сигнализация состояния перегрузки.
Простой шины (Bus Idle)
Простой шины может иметь произвольную длину. Если шина опознана как свободная, любой узел, который имеет что - либо для передачи может начать передачу. Сообщение, которое было задержано для передачи другого сообщения, начинает передаваться в первом бите после поля перерыва.
Обнаружение бита с лог. "0" на шине в течение этого поля интерпретируется как поле "начало кадра".
Приостановка передачи
Узел в состоянии "пассивной ошибки", после передачи сообщения, посылает 8 бит с лог. "1" после поля перерыва, перед началом передачи дальнейших сообщений или определением занятости шины. Если тем временем началась передача (вызванная другим узлом), узел станет приёмником этого сообщения.
5. Определение передатчика / приемника
Передатчик
Узел, передающий сообщение называется передатчиком этого сообщения. Узел является передатчиком до тех пор, пока он не потерял арбитраж.
Приёмник
Узел называется приёмником сообщения, если он не передатчик сообщения и шина занята.
6. Корректность сообщения
Точка времени, в которой сообщение является корректным, различна для передатчиков и приёмников сообщений.
Передатчик
Сообщения пригодно для передатчика, если нет ошибок до конца кадра. Если сообщение разрушено, ретрансляция будет происходить автоматически и согласно приоритетам. Чтобы решить приоритеты доступа к шине с другими сообщениями, ретрансляция должна начаться, как только шина освободится.
Приёмник
Сообщение корректно для приёмника, если нет ошибок до конца кадра.
7. Кодирование битового потока
Следующие поля: "начало кадра",
"поле арбитража", "поле контроля",
"поле данных" и "поле CRC" кодированы
методом разрядного заполнения.
Всякий раз, когда передатчик передает
пять последовательных бит идентичной
величины в битовом потоке, он автоматически
вставляет дополняющий бит противоположного
значения в фактически передаваемый битовый
поток.
Оставшиеся битовые поля кадра данных
или кадра удаленного запроса данных ("разделитель
CRC", "поле подтверждения" и "конец
кадра") имеют фиксированную форму и
не кодируются. Кадр ошибки и кадр перегрузки
также имеют фиксированную длину и не
кодируются методом разрядного заполнения.
8. Обработка ошибок
Существует пять типов не взаимоисключающих ошибок:
Узел, который посылает что - либо на
шину также контролирует шину. Разрядная
ошибка может быть обнаружена во время
передачи бита, если переданное значение
отличается от значения, прочитанного
с шины.
Исключение:
При посылке бита с лог. "1" в течение поля арбитража или области подтверждения разрядная ошибка не возникает, если контролируется бит с лог. "0". Передатчик, посылающий флаг пассивной ошибки и обнаруживший бит с лог. "0" не интерпретирует его как разрядную ошибку.
Ошибка заполнения обнаруживается
во время приема последовательности
из шести бит одинакового
Последовательность CRC состоит из результата вычисленного передатчиком. Приёмники вычисляют CRC таким же образом, как и передатчик. Ошибка CRC обнаруживается при несовпадении расчетного результата CRC - последовательности в приёмнике и присланной CRC - последовательности передатчика.
Ошибка формата обнаруживается, когда разрядное поле фиксированного формата содержит один или несколько лишних бит.
Ошибка подтверждения
9. Сигнализация ошибок
Узел, обнаруживший состояние ошибки сигнализирует об этом передачей флага ошибки. Для узла в состоянии "активной ошибки" это передача флага активной ошибки, для узла в состоянии "пассивной ошибки" это передача флага пассивной ошибки. Всякий раз при обнаружении разрядной ошибки, ошибки заполнения, ошибки формата и ошибки подтверждения узел начинает передавать флаг ошибки в следующем бите. Всякий раз, когда обнаружена ошибка CRC, передача флага ошибки будет начата после разделителя подтверждения, если не была начата передача флага ошибки для другого состояния.
10. Типизация ошибок
Узел может быть в одном из трех состояний:
В состоянии
"активной ошибки" узел может взаимодействовать
с шиной, посылая флаг активной ошибки при обнаружении ошибки.
В состоянии "пассивной ошибки" узел
не должен слать флаг активной ошибки.
Он принимает участие во взаимодействии
с шиной, но при обнаружении ошибки должен
послать флаг пассивной ошибки. После
передачи сообщения об ошибке, узел в состоянии
"пассивной ошибки" будет ждать инициализации
дальнейшей передачи (см. приостановка
передачи).
В состоянии отключения от шины узлу не
разрешено оказывать влияние на шину.
Для типизации ошибок у каждого узла -
CAN есть два счетчика:
1. счетчик ошибок передачи
2. счетчик ошибок приема
(Прим. переводчика: Правила модификации
счетчиков здесь не приводятся. Но хочется
обратить внимание на то, что при наличии
ошибок, счетчики увеличиваются быстрей,
чем уменьшаются при приемах или передачах
без ошибок).
Узел находится в состоянии "пассивной ошибки", если счетчик ошибок передачи и / или счетчик ошибок приема больше или равен 128.
Узел отключается от шины, если счетчик ошибок передачи или приема больше или равен 256.
Узел, находившиеся в состоянии "пассивной ошибки" переходит в состояние "активной ошибки", если счетчик ошибок передачи и счетчик ошибок приема меньше или равен 127.
Узлу, который находится в состоянии "отключения от шины", разрешается перейти в состояние "активной ошибки", с установкой обоих счетчиков в 0, после того, как на шине будут проконтролированы 128 прохождений 11 последовательных битов с лог. "1".
Обратите внимание:
1. Величина счетчика ошибки
2. Запуск / Пробуждение:
Если в некоторый момент времени активен только один узел, и если этот узел передает некоторое сообщение, он не получит подтверждения, обнаруживается ошибка и происходит повтор сообщения. Из-за этого он может перейти в состояние "пассивной ошибки", но не может перейти в состояние "отключения от шины".
10. Требования к синхронизации
Номинальная скорость передачи информации в битах
Номинальная скорость передачи информации в битах - число битов за секунду, передаваемое в отсутствии пересинхронизации идеальным передатчиком.
Номинальное время передачи
бита
номинальное время передачи бита = 1 / номинальную
скорость передачи информации
Номинальное время передачи бита можно представить как время, разделенное на отдельные не перекрывающиеся сегменты времени. Это сегменты:
- Сегмент синхронизации (SYNC_
- Сегмент времени
- Сегмент TSEG1 (PHASE_SEG1)
- Сегмент TSEG2 (PHASE_SEG2)
SYNC SEG
Эта часть времени передачи бита используется, чтобы синхронизировать различные узлы на шине. Ожидается, что фронт сигнала находится внутри этого сегмента.
PROP SEG
Эта часть времени передачи бита используется, чтобы компенсировать физическую задержку времён внутри сети.
Это удвоенная сумма времени распространения сигнала по шине, входной задержки компаратора, и выходной задержки формирователей.
TSEG1 и TSEG2.
Эти сегменты используются, чтобы компенсировать ошибки смещения фазы сигнала. Эти сегменты могут быть удлинены или укорочены пересинхронизацией.
Точка считывания (Sample point)
Точка считывания - точка времени, в которой уровень шины читается и интерпретируется, как величина соответствующего бита. Ее место - в конце TSEG1.
Время обработки информации
Время обработки информации - отрезок времени, начинающийся с точки считывания, зарезервированный для вычисления уровня бита.
Квант времени
Квант времени - фиксированная единица времени, полученная из периода генератора. Существует программируемый делитель, оперирующий целочисленными величинами, изменяющимися, по крайней мере, от 1 до 32. Начиная с минимального кванта времени, квант времени может иметь длительность:
квант времени = m * минимальный квант
времени ,где m - величина делителя.
минимальный квант времени = 1 / f генератора.
Длительность отрезков времени
11. Синхронизация
Аппаратная синхронизация
После аппаратной синхронизации внутреннее время передачи бита перезапускается с SYNC_SEG. Таким образом, аппаратная синхронизация вынуждает фронт находиться внутри сегмента SYNC_SEG.
Ширина перехода пересинхронизации
В результате пересинхронизации TSEG1 может быть удлинен, или TSEG2 может быть сокращен. Количество удлинения или сокращения сегментов TSEGx (x=1,2) имеет верхний предел, связанный с шириной перехода пересинхронизации. Ширина перехода пересинхронизации должна быть программируема между 1 и min(4, TSEG1).
Синхронизация информации может быть получена из переходов от одного бита к другому. Максимальная длина между двумя переходами, которые могут использоваться для пересинхронизации - 29 времен передачи бита.