CAN 2.0 А
1. Введение
объектный уровень
канальный уровень
физический уровень
Сообщения
Информационная маршрутизация
Гибкость системы:
Узел может быть добавлен в CAN - сеть, без каких либо изменений в программном или
аппаратном обеспечении, какого - либо узла в сети.
Маршрутизация сообщений:
Передача группе:
Непротиворечивость данных:
Внутри сети CAN гарантировано, что сообщение принято всеми узлами или ни одним
узлом.
Скорость передачи информации в CAN - сети может быть различной для каждой сети.
Однако в каждой конкретной сети скорость передачи информации фиксирована.
Приоритеты
Посылая кадр удаленного запроса данных, узел может потребовать данные от другого
узла. Кадр данных и кадр удаленного запроса данных должны иметь одинаковый
идентификатор.
Multimaster
Когда шина свободна, любой узел может начать передачу сообщения. Доступ к шине
получает узел, передающий кадр с наивысшим приоритетом.
Арбитраж
Когда шина свободна, любой узел может начать передачу сообщения. Если два или
больше узла начинают передавать сообщения в одно и тоже время, конфликт при доступе
к шине будет решен поразрядным арбитражем используя идентификатор и RTR - бит.
Механизм арбитража гарантирует, что ни время, ни информация не будут потеряны. Если
кадр данных и кадр удаленного запроса данных начинают передаваться в одно время, то
кадр данных имеет более высокий приоритет, чем кадр удаленного запроса данных. В
течение арбитража каждый передатчик сравнивает уровень переданного бита с уровнем,
считываемым с шины. Если эти уровни одинаковы, узел может продолжать посылать
данные дальше. Если был послан уровень лог. '1' (recessive), а с шины считан уровень лог.
'0' (dominant), то узел теряет право дальнейшей передачи данных и должен прекратить
посылку данных на шину.
Безопасность
Обнаружение ошибок
Типизация ошибок
Соединения
Линия связи по протоколу CAN - это шина, к которой может быть подключѐн ряд узлов.
Количество узлов не имеет никакого теоретического предела. Фактически количество
узлов будет ограничено временами задержек и/или электрической нагрузкой на линии
шины. Способ, которым выполнена шина, не установлен в данной спецификации.
Например, это может быть одиночный провод (+земля), два дифференциальных провода,
оптическое стекловолокно.
Уровни шины
Подтверждение
Чтобы уменьшить потребляемую мощность системы, узел CAN может быть переведен в
режим "сна". Режим "сна" заканчивается при любом действии на шине или внутреннем
состоянии системы. При пробуждении запускается внутренняя синхронизация, канальный
уровень ждѐт стабилизации генератора системы, а затем будет ожидать
самосинхронизации к действиям на шине (синхронизация к действиям на шине
заканчивается после принятия последовательности 11 битов с лог. "1"). Для пробуждения
узла из режима покоя может использоваться некоторое сообщение пробуждения со
специальным идентификатором.
3. Передача сообщений
Кадр данных состоит из 7 различных полей: "Начало кадра", "поле арбитража", "поле
контроля", "поле данных", "поле CRC", "поле подтверждения", "конец кадра".
Имеет длину 11 бит. Эти биты должны быть переданы в порядке от ID10 до ID4. Самый
старший бит ID0. 7 старших битов не должны быть все битами с лог '1'.
Включает 6 бит. Это - код длины данных (4бита) и 2 бита зарезервированные под
будущие расширения. Зарезервированные биты должны быть "0".
Показывает количество байт в поле данных. Код длины данных имеет размер 4 бита и
передаѐтся внутри контрольного поля.
Допустимые значения: 0.......8.
Другие значения использоваться не могут.
Второй бит области подтверждения должен быть - лог. "1". Следовательно, область
подтверждения окружена битами с лог. "1" (CRC-разделитель и разделитель
подтверждения).
Узел может инициализировать передачу кадра данных другим узлом, посылая кадр
удаленного запроса данных.
Этот кадр состоит из 6 полей:
"Начало кадра", "поле арбитража", "поле контроля", "поле CRC", "поле подтверждения",
"конец кадра".
В отличие от кадра данных , RTR бит = "1". Здесь нет поля данных, зависящего от
значения "кода длины данных", внутри этого поля может быть записано любое из
допустимых значений (0…….8).
Полярность RTR бита показывает, является ли передаваемый кадр кадром данных или
кадром удаленного запроса данных
Состоит из двух различных полей. Первое поле является суперпозицией флагов ошибки
различных узлов, второе поле - поле разделителя ошибки.
Разделитель ошибки состоит из 8 бит с лог. "1". После передачи флага ошибки каждый
узел посылает биты с лог. "1" и контролирует шину, пока не обнаружит бит с лог. "1".
Впоследствии он начинает передавать 7 бит с лог. "1".
Имеются два вида перегрузки, которые оба приводят к передаче кадра перегрузки.
1. Внутреннее состояние приѐмника, которое требует задержки следующего кадра
данных или кадра удаленного запроса данных.
2. Обнаружение бита с лог. "0" в течение поля перерыва (см. межкадровое
пространство).
Передача кадра перегрузки из-за состояния 1 возможна только в первом битовом
интервале перерыва, в то время как кадры перегрузки по состоянию 2 начинают
передаваться на следующем битовом интервале после обнаружения бита с лог. "0".
Для больших задержек может быть послано несколько кадров перегрузки.
Состоит из 3 бит с лог. "1". В течение перерыва никакому узлу нельзя начинать
передачу кадра данных или кадра удаленного запроса данных. Единственно возможное
действие - это сигнализация состояния перегрузки.
Простой шины (Bus Idle)
Простой шины может иметь произвольную длину. Если шина опознана как свободная,
любой узел, который имеет что - либо для передачи может начать передачу. Сообщение,
которое было задержано для передачи другого сообщения, начинает передаваться в
первом бите после поля перерыва.
Обнаружение бита с лог. "0" на шине в течение этого поля интерпретируется как поле
"начало кадра".
Приостановка передачи
Передатчик
Приѐмник
6. Корректность сообщения
Передатчик
Сообщения пригодно для передатчика, если нет ошибок до конца кадра. Если
сообщение разрушено, ретрансляция будет происходить автоматически и согласно
приоритетам. Чтобы решить приоритеты доступа к шине с другими сообщениями,
ретрансляция должна начаться, как только шина освободится.
Приѐмник
Следующие поля: "начало кадра", "поле арбитража", "поле контроля", "поле данных" и
"поле CRC" кодированы методом разрядного заполнения. Всякий раз, когда передатчик
передает пять последовательных бит идентичной величины в битовом потоке, он
автоматически вставляет дополняющий бит противоположного значения в фактически
передаваемый битовый поток.
Оставшиеся битовые поля кадра данных или кадра удаленного запроса данных
("разделитель CRC", "поле подтверждения" и "конец кадра") имеют фиксированную
форму и не кодируются. Кадр ошибки и кадр перегрузки также имеют фиксированную
длину и не кодируются методом разрядного заполнения.
8. Обработка ошибок
разрядная ошибка
ошибка заполнения
ошибка CRC
ошибка формата
ошибка подтверждения
9. Сигнализация ошибок
активной ошибки
пассивной ошибки
отключения от шины
Обратите внимание:
1. Величина счетчика ошибки большая, чем 96 указывает на серьезные нарушения на
шине. Это можно использовать для проверки состояния шины.
2. Запуск / Пробуждение:
Если в некоторый момент времени активен только один узел, и если этот узел передает
некоторое сообщение, он не получит подтверждения, обнаруживается ошибка и
происходит повтор сообщения. Из-за этого он может перейти в состояние "пассивной
ошибки", но не может перейти в состояние "отключения от шины".
SYNC SEG
PROP SEG
TSEG1 и TSEG2.
Квант времени
12. Синхронизация
Аппаратная синхронизация
В результате пересинхронизации TSEG1 может быть удлинен, или TSEG2 может быть
сокращен. Количество удлинения или сокращения сегментов TSEGx (x=1,2) имеет
верхний предел, связанный с шириной перехода пересинхронизации. Ширина перехода
пересинхронизации должна быть программируема между 1 и min(4, TSEG1).
Синхронизация информации может быть получена из переходов от одного бита к
другому. Максимальная длина между двумя переходами, которые могут использоваться
для пересинхронизации - 29 времен передачи бита.
CAN 2.0 В
1. Введение
2. Основные характеристики
приоритетность сообщений
гарантированное время отклика
гибкость конфигурации
групповой прием с синхронизацией времени
система непротиворечивости данных
multimaster
обнаружение ошибок и их сигнализация
автоматическая ретрансляция испорченных сообщений, как только шина снова
станет свободной.
различие между нерегулярными ошибками и постоянными отказами узлов и
автономное выключения дефектных узлов
Информационная маршрутизация
Гибкость системы:
Узлы могут быть добавлены к CAN - сети без изменения программного обеспечения и
аппаратных средствах любого узла или прикладного уровня.
Маршрутизация сообщения:
Содержание сообщения определяется идентификатором. Идентификатор не указывает
адресата сообщения, но описывает значение данных, так, чтобы все узлы в сети были
способны решить фильтрацией, должны ли они воздействовать на данное сообщение или
нет.
Групповая обработка:
Любое число узлов может получать и одновременно воздействовать на одно и то же
сообщение.
Непротиворечивость данных:
Внутри CAN-сети гарантируется, что сообщение одновременно принято или всеми
узлами или ни одним узлом.
Скорость CAN может быть отлична в различных системах. Однако в конкретной сети
скорость передачи информации должна быть фиксированная.
Приоритеты
Посылая кадр удалѐнного запроса данных, узел может запрашивать данные у другого
узла, которые тот должен послать в виде соответствующего кадра данных. Кадр данных и
кадр удаленного запроса данных имеют один и тот же идентификатор.
Multimaster
Когда шина свободна, любой узел, может начинать передавать сообщение. Узлу с
сообщением более высокого приоритета, будет передано право на доступ к шине.
Арбитраж
Всякий раз, когда шина свободна, любой узел может начинать передавать сообщение.
Если два или большее количество узлов начинают передавать сообщения в одно и то же
время, конфликт доступа к шине решается поразрядным арбитражем, с использованием
идентификатора. Механизм арбитража гарантирует, что ни информация, ни время не
будут потеряны. Если кадр данных и кадр удаленного запроса данных с одинаковым
идентификатором начинают передаваться одновременно, то кадр данных преобладает
над кадром удаленного запроса данных. В течение арбитража каждый передатчик
сравнивает уровень переданного бита с уровнем, который наблюдается на шине. Если эти
уровни одинаковы, узел может продолжать передачу. Когда послан единичный уровень, а
наблюдается нулевой уровень (см. значения на шине), это означает, что узел потерял
право арбитража и не должен посылать больше ни одного бита.
Безопасность
Для достижения безопасности передачи данных, в каждом узле CAN имеются мощные
средства самоконтроля, обнаружения и сообщения об ошибках.
Обнаружение ошибок
Типизация ошибок
Подключение
Канал обмена
Шина состоит из канала обмена, который передаѐт биты. Из этих данных может быть
получена информация о пересинхронизации. Способ, по которому этот реализуется канал
обмена, в этой спецификации не устанавливается. Например, это может быть одно-
проволочный провод (плюс земля), два дифференциальных провода, оптическое
стекловолокно.
Уровни сигналов
Шина может иметь одно из двух логических значений: 'dominant' или 'recessive'. При
одновременной передаче 'dominant' и 'recessive' битов, возникающая в результате
величина на шине будет 'dominant'. Физические состояния (например, электрическое
напряжение, свет), которые представляют логические уровни, не даны в этой
спецификации. (прим. переводчика: далее считается, что "dominant" уровень
эквивалентен нулевому уровню, а "recessive" уровень эквивалентен единичному уровню).
Подтверждение
Для уменьшения потребляемой мощности системы, CAN - узел может быть переведен
в режим "сна" без внутренней активности и с отключенными формирователями шины.
Выход из этого режима происходит при проявлении какой-либо активности на шине или
внутреннем состоянии системы. При пробуждении, осуществляется внутренний
перезапуск, MAC подуровень будет ждать стабилизации генератора системы, и затем
будет ожидать самосинхронизации с сигналами на шине (проверяя, одиннадцать
последовательных единичных бит), пока выходные формирователи снова не установятся
в состояние "подключен к шине".
Генератор
3. Передача сообщений
Форматы кадров
Имеются два формата, которые отличаются по длине поля идентификатора:
Типы кадров
Начало кадра отмечает начало кадра данных или кадра удаленного запроса данных.
Это поле состоит из одиночного нулевого бита. Узлу разрешено начать передачу, когда
шина свободна (см. 'межкадровый интервал'). Все узлы должны синхронизироваться по
фронту, вызванному передачей поля "начало кадра" (см. 'аппаратная синхронизация')
узла, начавшего передачу первым.
Base ID
Base ID состоит из 11 бит. Эта секция передается в порядке от ID-28 до ID-18. Это
эквивалентно формату стандартного идентификатора. Base ID определяет базовый
приоритет расширенного кадра.
Extended ID
Поле управления состоит из шести бит. Формат поля управления отличается для
стандартного и расширенного формата. Кадры в стандартном формате включают: код
длины данных (DLC), бит IDE, который передается нулевым уровнем (см. выше), и
зарезервированный бит r0.
Кадры в расширенном формате включают код длины данных и два зарезервированных
бита r1 и r0. Зарезервированные биты должны быть посланы нулевым уровнем, но
приемники принимают единичные и нулевые уровни биты во всех комбинациях.
Число байт в поле данных обозначается кодом длины данных. Этот код длины данных,
размером 4 бита, передается внутри поля управления.
Допустимое число байт данных: {0,1, ...., 7,8}.
Другие величины использоваться не могут.
Поле данных состоит из данных, которые будут переданы внутри кадра данных. Оно
может содержать от 0 до 8 байт, каждый содержит 8 бит, которые передаются, начиная с
MSB.
Для правильного завершения кадра ошибки, узел в состоянии "пассивной ошибки" может
нуждаться в доступе к шине, по крайней мере, на 3 битовых интервала (если имеет место
локальная ошибка приемника, находящегося в состоянии "пассивной ошибки").
Следовательно, шина не должна быть загружена на 100 %.
Имеются два вида флага ошибки: флаг активной ошибки и флаг пассивной ошибки.
1. Флаг активной ошибки состоит из шести последовательных нулевых бит.
2. Флаг пассивной ошибки состоит из шести последовательных единичных бит, если
они не перезаписаны нулевыми битами других узлов.
Узел в состоянии "активной ошибки", обнаружив условие ошибки, сообщает об этом
передачей флага активной ошибки. Форма флага ошибки нарушает закон заполнения
бита (см. кодирование) применяемый ко всем полям от поля "начало кадра" до
разделителя CRC или разрушает фиксированную форму поля подтверждения или поля
"конец кадра". Как следствие, все другие узлы обнаруживают условие ошибки и в свою
очередь начинают передачу флага ошибки. Таким образом, последовательность
"dominant" битов, которая фактически может появиться на шине, получается
суперпозицией различных флагов ошибки, переданных отдельными узлами. Суммарная
длина этой последовательности изменяется от шести до двенадцати бит.
Узел, в состоянии "пассивной ошибки", обнаружив условие ошибки, пробует сообщить
об этом передачей флага пассивной ошибки, он ожидает появления шести
последовательных одинаковых бит, начинающих флаг пассивной ошибки. Флаг
пассивной ошибки завершен, когда после обнаружения этих 6 бит.
Разделитель ошибки
Разделитель ошибки состоит из восьми "recessive" битов. После передачи флага
ошибки каждый узел посылает "recessive" биты и проверяет шину, пока не обнаруживает
"recessive" бит. Далее он начинает передачу еще семи "recessive" битов.
Кадр перегрузки
Флаг перегрузки
Замечание:
Контроллеры, базирующиеся на CAN 1.0 и 1.1, по-другому интерпретируют 3-й бит
перерыва. Если в это время будет обнаружен "dominant" бит, то эти узлы интерпретируют
его как поле "начало кадра"; шестой "dominant" бит нарушает правило заполнения бит и
вызовет ошибку.
Разделитель перегрузки
Состоит из восьми "recessive" бит. Разделитель перегрузки имеет такую же форму, как
и разделитель ошибки. После передачи флага перегрузки узел контролирует шину, пока
не обнаружит переход от "dominant" бита к "recessive" биту. В этот момент времени
каждый узел заканчивает передачу флага перегрузки, и все узлы начинают передачу еще
7 "recessive" битов.
Межкадровое пространство
Перерыв
Замечание:
Если узел имеет сообщение, которое нужно передать, и он выявляет "dominant" бит в
третьем бите перерыва, это интерпретируется, как бит "начало кадра", и, со следующего
бита, он начинает передавать сообщение, с первым битом его идентификатора, не
передавая предварительно, бита "начало кадра".
Простой шины
Период простоя шины может иметь произвольную длину. Шина свободна и любой
узел, которому нужно что-либо передать, может обращаться к шине. Сообщение, которое
ждет передачи во время передачи другого сообщения, начинает передаваться в первом
бите после перерыва. Обнаружение "dominant" бита на шине интерпретируется как
"начало кадра".
Приостановка передачи
После того, как узел в состоянии "пассивной ошибки" передал сообщение, он посылает
восемь "recessive" бит после которых идет перерыв, перед передачей следующего
сообщение или распознавания простоя шины.
Если тем временем начинается передача, вызванная другим узлом, узел становиться
приемником этого сообщения.
Передатчик:
Узел, инициирующий сообщение называется передатчиком этого сообщения. Узел
остается передатчиком до освобождения шины или потери арбитража.
Приемник:
Узел называется приемником сообщения, если он не является передатчиком этого
сообщения и шина не простаивает.
4. Фильтрация сообщений
Если регистры масок есть, то каждый бит регистров маски должен быть
программируемым, то есть его можно использовать для фильтрации сообщения. Длина
регистра маски может составлять целый идентификатор или только его часть.
Передатчик:
Сообщение допустимо для передатчика, если нет никакой ошибки до конца сообщения.
Если сообщение разрушено, повторная передача будет следовать автоматически и
согласно приоритетам. Чтобы, конкурировать за доступ к шине с другими сообщениями,
повторная передача должна начаться, как только, шина станет свободна.
Приемник:
Сообщение допустимо для приемников, если нет никакой ошибки до предпоследнего
бита "конец кадра". Значение последнего бита "конец кадра" рассматривается как
безразличное, "dominant" значение не ведет к ошибке формы.
6. Кодирование
7. Обработка ошибок
Обнаружение ошибок
Существует 5 различных типов ошибки (не взаимоисключающихся):
Ошибка бита
Ошибка заполнения
Ошибка CRC
Ошибка подтверждения
Узел, обнаруживший ошибку сообщает об этом, передавая флаг ошибки. Для узла в
состоянии "активной ошибки" - это флаг активной ошибки, для узла в состоянии
"пассивной ошибки" - это флаг пассивной ошибки.
Всякий раз, когда каким-либо узлом обнаружена ошибка бита, ошибка заполнения,
ошибка формы или ошибка подтверждения, со следующего бита начинается передача
флага ошибки соответствующим узлом.
Всякий раз, когда обнаружена ошибка CRC, передача флага ошибки начинается с бита,
следующего после разделителя подтверждения, если не передается флаг ошибки для
другого условия
8. Типизация неисправностей
активной ошибки
пассивной ошибки
отключения от шины
Замечание:
Значение счетчика ошибок больше чем 96 указывает на то, что шина сильно повреждена.
Замечание:
Если в CAN - сети подключен только один узел, и если этот узел передает некоторое
сообщение, он не получит подтверждения, обнаружит ошибку и повторит сообщение. Из-
за этого он может перейти в состояние "пассивной ошибки", но не в состояние "отключен
от шины".
9. Генератор
Замечание:
CAN контроллеры соответствующие данной CAN спецификации и контроллеры,
соответствующие предыдущим версиям 1.0 и 1.1, используемые в одной и той же сети,
должны все иметь кварцевый генератор. Это означает, что керамические резонаторы
могут использоваться только в сети, все узлы которой соответствуют CAN
Спецификации 1.2.
Сегмент синхронизации
Эти сегменты используются, чтобы компенсировать ошибки фазы. Эти сегменты могут
быть удлинены или укорочены пересинхронизацией.
Длительность сегментов
Переход пересинхронизации
В результате пересинхронизации TSEG1 может быть удлинен, или TSEG2 может быть
укорочен. Размер удлинения или укорачивания сегментов TSEG имеет предел,
определяемый переходом пересинхронизации
12. Пересинхронизация
Правила синхронизации
Для систем реального времени на базе CAN нет необходимости в реализации полной 7-
ми уровневой модели OSI(рис. 1). Это связано с тем, что типичная CAN система имеет в
своей основе единственный канал данных для обмена сообщениями между устройствами,
все устройства ориентированы на конкретный способ передачи данных по каналу, а
приложения пишутся именно под данную архитектуру сети и данный протокол. Поэтому
нет необходимости в реализации уровня представлений, уровня сеанса и сетевого уровня
из 7-ми уровневой модели OSI и были оставлены только 3 уровня этой модели :
физический уровень, уровень канала данных и уровень приложений(рис. 2). Причем
последний реализует некоторые функции транспортного уровня.
Из-за широко использования CAN сетей с различными целями и требованиями
существуют несколько главных стандартов CAN-протоколов высокого уровня : CAL
(CAN Application Layer), OSEK/VDX, SAE J1939, CANopen, DeviceNet, SDS (Smart
Distribution Systems),CAN-Kingdom. Далее более подробно будет рассмотрен стандарт
DeviceNet для сравнения с TCP/IP.
Идентификаторы сообщений
Fragmented:
Acknowledged
fragmented
Fragmented: protocol with
Unacknowledged fragmented Acknowledge
protocol 1 byte protocol after reception of
overhead per frame complete block 4
bytes protocol
overhead per
fragment
On Request of
Message local or remote Cyclic
Production application Change-of-State Specified by
Triggering Cyclic/acyclic Application specific object model
Modes synchron
Maximum number of
mappable application
objects/PDO dependent Arbitrary number of
Network Data
on data size of objects (1- Application objects mappable
Descriptor
bit objects: 64 application with fragmented protocol.
Mapping of defines size,
objects mappable) Definition of Application
Application granularity and
Definition of Application objects by means of
Objects data type of I/O
objects by means of Assembly Object (several
data of
"Mapping Parameter Assembly Objects possible)
Embedded
Record" (configurable) Dynamic mapping supported
Dynamic mapping
supported
Вызов (triggering) сообщений
Сетевое управление
Профайлы устройств
Object Function
Connection Instantiates connections (I/O or Explicit Messaging)
DeviceNet Maintains configuration and status of physical attachments to DeviceNet.
Message
Routes received Explicit Messages to appropriate target objects
Router
Groups attributes of multiple objects into a single block of data, which can be
Assembly
sent and received over a single connection
Parameter Provides a standard means for device configuration and attribute access
Identity Provides general information about the identity of a device
Application Supplies application-specific behaviour and data
Заключение