Реклама на сайте:

CAN 2.0 В

Библиотека

    1. Введение

CAN — последовательный протокол связи, который эффективно поддерживает распределенное управление в реальном масштабе времени с высоким уровнем безопасности.

Область применения — от высокоскоростных сетей до дешевых мультиплексных шин. В автоматике, устройствах управления, датчиках используется CAN со скоростью до 1 Mbit/s.

Задача данной спецификации состоит в том, чтобы достигнуть совместимости между любыми двумя реализациями CAN — систем. Однако, совместимость имеет различные аспекты относительно, например электрических элементов и интерпретации данных, которые будут передаваться.
Для достижения прозрачности проекта и гибкости реализации, CAN был подразделен на различные уровни согласно модели ISO/OSI:

  • Уровень передачи данных (Data Link Layer)
  • Подуровень логического управления линией (LLC)
  • Подуровень управления доступом к среде передачи (MAC)
  • Физический Уровень (Physical Layer)

Обратите внимание, что в предыдущих версиях спецификации CAN функции LLC и MAC подуровней, уровня передачи данных, были описаны в уровнях, обозначенных как ‘объектный уровень ‘ и ‘канальный уровень’.

Область LLC подуровня:

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

Область MAC подуровня главным образом — протокол передачи, то есть: арбитраж, проверка на ошибки, сигнализация и типизация ошибок.
Внутри MAC подуровня решается, является ли шина свободной для начала новой передачи или возможен только приём данных.
В MAC подуровень также включены некоторые элементы битовой синхронизации. Всё это находится внутри MAC подуровня и не имеет никакой возможности к модификации.
Область физического уровня — фактическая передача битов между различными узлами с соблюдением всех электрических правил.

Внутри одной сети, физический уровень одинаков для всех узлов.

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

    2. Основные характеристики

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

Послойная архитектура CAN — сети согласно модели OSI

  • Физический уровень определяет, как сигналы фактически передаются и, следовательно, имеет дело с описанием битовой синхронизации и кодирования битов. Внутри этой спецификации характеристики передатчика / приемника физического уровня не определены, чтобы позволить среде передачи и реализации уровня сигнала быть оптимизированными для конкретных систем.
  • MAC подуровень представляет собой ядро протокола CAN. Он передает сообщения, полученные от LLC подуровня, и принимает сообщения, которые будут переданы к LLC подуровню. MAC подуровень ответственен за арбитраж, подтверждение, обнаружение ошибок и их сигнализацию.
  • LLC подуровень — имеет отношение к фильтрации сообщений, уведомлению о перегрузке и управлению восстановлением.

Послойная архитектура CAN - сети согласно модели OSI

Сообщения

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

Информационная маршрутизация

В системах CAN, нет никакой информации относительно конфигурации системы (например, адрес узла). Это имеет несколько важных следствий:

Гибкость системы:

    Узлы могут быть добавлены к CAN — сети без изменения программного обеспечения и аппаратных средствах любого узла или прикладного уровня.

Маршрутизация сообщения:

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

Групповая обработка:

    Любое число узлов может получать и одновременно воздействовать на одно и то же сообщение.

Непротиворечивость данных:

    Внутри CAN-сети гарантируется, что сообщение одновременно принято или всеми узлами или ни одним узлом.

Скорость передачи информации в битах

Скорость CAN может быть отлична в различных системах. Однако в конкретной сети скорость передачи информации должна быть фиксированная.

Приоритеты

Идентификатор определяет статический приоритет сообщения в течение доступа к шине.

Удаленный запрос данных

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

Multimaster

Когда шина свободна, любой узел, может начинать передавать сообщение. Узлу с сообщением более высокого приоритета, будет передано право на доступ к шине.

Арбитраж

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

Безопасность

Для достижения безопасности передачи данных, в каждом узле CAN имеются мощные средства самоконтроля, обнаружения и сообщения об ошибках.

Обнаружение ошибок

Для обнаружения ошибок применяются следующие меры:
Текущий контроль (передатчики сравнивают уровни передающихся битов с уровнями, обнаруженными на шине)
Циклический контроль по избыточности
Контроль кадра сообщения

Эффективность обнаружения ошибок

Механизмы обнаружения ошибок позволяют обнаруживать:

— все ошибки глобального характера

— все локальные ошибки передатчика

— до 5 случайных ошибок в сообщении

— последовательную группу ошибок длиной до 15

— любые ошибки нечетности.

Общая остаточная вероятность ошибки для необнаруженных искаженных сообщений меньше чем:
частота ошибки сообщения * 4.7* 10 Е-11

Сигнализация ошибки и время восстановления

Искаженные кадры помечаются любым узлом, обнаружившим ошибку. Такие кадры прерываются и должны быть автоматически переданы заново. Время восстановления от обнаружения ошибки до начала следующего кадра — в большинстве случаев равно 31 интервалу передачи бита, если не будет последующей ошибки.

Типизация ошибок

Узлы CAN способны отличить короткие неполадки от постоянных отказов. Дефектные узлы отключаются.

Подключение

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

Канал обмена

Шина состоит из канала обмена, который передаёт биты. Из этих данных может быть получена информация о пересинхронизации. Способ, по которому этот реализуется канал обмена, в этой спецификации не устанавливается. Например, это может быть одно-проволочный провод (плюс земля), два дифференциальных провода, оптическое стекловолокно.

Уровни сигналов

Шина может иметь одно из двух логических значений: ‘dominant’ или ‘recessive’. При одновременной передаче ‘dominant’ и ‘recessive’ битов, возникающая в результате величина на шине будет ‘dominant’. Физические состояния (например, электрическое напряжение, свет), которые представляют логические уровни, не даны в этой спецификации.
(прим. переводчика: далее считается, что «dominant» уровень эквивалентен нулевому уровню, а «recessive» уровень эквивалентен единичному уровню).

Подтверждение

Все приемники проверяют непротиворечивость получаемого сообщения, подтверждают непротиворечивость сообщения и помечают противоречивые сообщения.

Режим «сна» / пробуждения

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

Генератор

Требования к синхронизации позволяют использовать керамические резонаторы в системах со скоростями передачи до 125kbit/s.
Для более высокой скорости шины CAN, требуется кварцевый резонатор.

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

Форматы кадров

Имеются два формата, которые отличаются по длине поля идентификатора:

  • Кадры с 11-разрядным идентификатором — называются стандартными кадрами.
  • Кадры, содержащие 29 разрядные идентификаторы, называются расширенными кадрами.

Типы кадров

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

Кадр данных (Data frame)

Кадр данных состоит из семи различных полей:

«Начало кадра» (start of frame), «поле арбитража» (arbitration field), «поле управления» (control field), «поле данных» (data field), «поле CRC» (CRC field), «поле подтверждения» (ACK field), «конец кадра» (end of frame).
Поле данных может иметь нулевую длину.

Кадр данных (Data frame)

Начало кадра (стандартный или расширенный формат) (Start of frame)

Начало кадра отмечает начало кадра данных или кадра удаленного запроса данных. Это поле состоит из одиночного нулевого бита. Узлу разрешено начать передачу, когда шина свободна (см. ‘межкадровый интервал’). Все узлы должны синхронизироваться по фронту, вызванному передачей поля «начало кадра» (см. ‘аппаратная синхронизация’) узла, начавшего передачу первым.

Поле арбитража (Arbitration field)

Формат поля арбитража отличается для стандартного и расширенного форматов.

— в стандартном формате поле арбитража, состоит из 11 разрядного

идентификатора и RTR-бита. Биты идентификатора обозначены

ID-28 … ID-18.

— в расширенном формате поле арбитража состоит из 29 разрядного

идентификатора, SRR-бита, IDE-бита, и RTR-бита. Биты

     идентификатора обозначены ID-28 … ID-0.
Чтобы отличать стандартный формат и расширенный формат, зарезервированный в предыдущих спецификациях CAN (версия 1.0-1.2) бит r0 теперь обозначен как IDE бит.

Поле арбитража (Arbitration field)

Идентификатор

Идентификатор — стандартный формат
Длина идентификатора — 11 бит и соответствует BASE ID в расширенном формате. Эти биты передаются в порядке ID-28 … ID-18. Самый младший бит — ID-18. 7 старших битов (ID-28 — ID-22) не должны быть все единичными битами.

Идентификатор — расширенный формат
В отличие от стандартного идентификатора, расширенный идентификатор состоит из 29 бит. Его формат содержит две секции:
1. Base ID — 11 бит
2. Extended ID — 18 бит

Base ID

Base ID состоит из 11 бит. Эта секция передается в порядке от ID-28 до ID-18. Это эквивалентно формату стандартного идентификатора. Base ID определяет базовый приоритет расширенного кадра.

Extended ID

Extended ID состоит из 18 бит. Эта секция передается в порядке от ID-17 до ID-0.
В стандартном кадре идентификатор сопровождается RTR битом.

Бит RTR (стандартный и расширенный формат)

Бит запроса удаленной передачи.
В кадрах данных RTR бит должен быть передан нулевым уровнем. Внутри кадра удаленного запроса данных RTR бит должен быть единичным.
В расширенном кадре сначала передается Base ID , с последующими битами IDE и SRR. Extended ID передается после SRR бита.

Бит SRR (расширенный формат)

Заменитель бита удаленного запроса.
SRR — единичный бит. Он передается в расширенных кадрах в позиции RTR бита. Таким образом, он заменяет RTR — бит стандартного кадра.
Следовательно, при одновременной передаче стандартного кадра и расширенного кадра, Base ID которого совпадает с идентификатором стандартного кадра, стандартный кадр преобладает над расширенным кадром.

Бит IDE (расширенный формат)

Бит расширения идентификатора
IDE Бит принадлежит:

— Полю арбитража для расширенного формата

— Полю управления для стандартного формата
IDE бит в стандартном формате передается нулевым уровнем, в то время как в расширенном формате IDE бит — единичный уровень.

Поле управления (стандартный формат и расширенный формат)
(Control field)

Поле управления состоит из шести бит. Формат поля управления отличается для стандартного и расширенного формата. Кадры в стандартном формате включают: код длины данных (DLC), бит IDE, который передается нулевым уровнем (см. выше), и зарезервированный бит r0.
Кадры в расширенном формате включают код длины данных и два зарезервированных бита r1 и r0. Зарезервированные биты должны быть посланы нулевым уровнем, но приемники принимают единичные и нулевые уровни биты во всех комбинациях.

Поле управления (стандартный формат и расширенный формат)

Код длины данных (стандартный и расширенный форматы)
(Data length code)

Число байт в поле данных обозначается кодом длины данных. Этот код длины данных, размером 4 бита, передается внутри поля управления.

Код длины данных (стандартный и расширенный форматы)

Допустимое число байт данных: {0,1, …., 7,8}.
Другие величины использоваться не могут.

Поле данных (стандартный и расширенный форматы)
(Data field)

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

Поле CRC (стандартный и расширенный форматы)
(CRC field)

Содержит последовательность CRC и CRC — разделитель.

Поле данных (стандартный и  расширенный форматы)

Последовательность CRC (стандартный и расширенный форматы)
(CRC Sequence)

Последовательность контроля кадра, получаемая из избыточного циклического кода, лучше всего подходит для кадров с числом битом меньше чем 127 бит.
При вычислении CRC, полином разделяется и определяется как полином, коэффициенты которого заданы последовательностью бит, состоящей из полей: «начало кадра», «поле арбитража», «управляющее поле», «поле данных» (если есть) и, для 15 самых младших коэффициентов, 0. Этот полином разделен на полином:
X ^15 + X ^14 + X ^10 + X ^8 + X^ 7 + X^4 + X^3 + 1.
Остаток от этого полиномиального деления и есть последовательность CRC, передаваемая по шине.

Разделитель CRC (стандартный формат, а также расширенный формат)
(CRC Delimiter)

Последовательность CRC сопровождается разделителем CRC, который состоит из одного единичного бита.

Поле подтверждения (стандартный формат и расширенный формат)
(ACK field)

Поле подтверждения имеет длину два бита и содержит: «область подтверждения» и разделитель подтверждения. В поле подтверждения передающий узел посылает два бита с единичным уровнем. Приемник, который получил сообщение правильно, сообщает об этом передатчику, посылая бит с нулевым уровнем в течение приема поля «область подтверждения».

Область подтверждения (ACK slot)

Все узлы, получившие соответствующую последовательность CRC, сообщают об этом во время приема поля «область подтверждения» путем замены бита с единичным уровнем на бит с нулевым уровнем.

Разделитель подтверждения (ACK delimiter):

Разделитель подтверждения — второй бит поля подтверждения, и он должен быть представлен единичным уровнем.

Конец кадра (стандартный формат и расширенный формат)
(End of frame)

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

Кадр удаленного запроса данных (Remote frame)

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

Кадр удаленного запроса данных существует и в стандартном формате и расширенном формате. В обоих случаях он состоит из шести битовых полей:
«начало кадра» (Start of frame), «поле арбитража» (Arbitration field), «управляющее поле» (Control field), «поле CRC» (CRC — field), «поле подтверждения» (ACK field), «конец кадра» (End of frame).
В отличие от кадра данных, RTR бит кадра удаленного запроса данных — единичный. В этом кадре отсутствует поле данных. При этом значение кода длины данных может принимать любое значение в пределах допустимого диапазона [0,8]. Значение кода длины данных соответствует коду длины данных кадра данных. RTR бит указывает, является ли переданный кадр кадром данных.

Кадр ошибки (Error frame)

Кадр ошибки состоит из двух различных полей.
Первое поле получается суперпозицией флагов ошибки, полученных от
различных узлов. Следующее поле — разделитель ошибки (Error Delimiter).

Кадр ошибки (Error frame)

Для правильного завершения кадра ошибки, узел в состоянии «пассивной ошибки» может нуждаться в доступе к шине, по крайней мере, на 3 битовых интервала (если имеет место локальная ошибка приемника, находящегося в состоянии «пассивной ошибки»). Следовательно, шина не должна быть загружена на 100 %.

Флаг ошибки (Error flag)

Имеются два вида флага ошибки: флаг активной ошибки и флаг пассивной ошибки.
    1. Флаг активной ошибки состоит из шести последовательных нулевых бит.
    2. Флаг пассивной ошибки состоит из шести последовательных единичных бит, если они не перезаписаны нулевыми битами других узлов.
Узел в состоянии «активной ошибки», обнаружив условие ошибки, сообщает об этом передачей флага активной ошибки. Форма флага ошибки нарушает закон заполнения бита (см. кодирование) применяемый ко всем полям от поля «начало кадра» до разделителя CRC или разрушает фиксированную форму поля подтверждения или поля «конец кадра». Как следствие, все другие узлы обнаруживают условие ошибки и в свою очередь начинают передачу флага ошибки. Таким образом, последовательность «dominant» битов, которая фактически может появиться на шине, получается суперпозицией различных флагов ошибки, переданных отдельными узлами. Суммарная длина этой последовательности изменяется от шести до двенадцати бит.
Узел, в состоянии «пассивной ошибки», обнаружив условие ошибки, пробует сообщить об этом передачей флага пассивной ошибки, он ожидает появления шести последовательных одинаковых бит, начинающих флаг пассивной ошибки. Флаг пассивной ошибки завершен, когда после обнаружения этих 6 бит.

Разделитель ошибки

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

Кадр перегрузки

Кадр перегрузки содержит два битовых поля: флаг перегрузки и разделитель перегрузки. Имеются два вида перегрузки, оба которых приводят к передаче флага перегрузки:
    1. Внутреннее состояние приемника, требует задержки следующего кадра данных или кадра удаленного запроса данных.
    2. Обнаружение «dominant» бита при передаче первого и второго битов перерыва.
    3. Если узел обнаруживает «dominant» бит на восьмом бите (последнем бите) разделителя ошибки или разделителя перегрузки, это повлечет передачу кадра перегрузки (а не кадра ошибки). Счетчики ошибок не будут увеличены.
Передачу кадра перегрузки, обусловленного 1-м видом перегрузки, разрешено начинать в первом битовом интервале предусмотренного перерыва, в то время как кадр перегрузки, обусловленный 2-м и 3-м видами перегрузки, начинает передаваться на один бит позже обнаружения «dominant» бита.
Не больше двух кадров перегрузки может быть сгенерировано, чтобы задержать следующий кадр данных или кадр удаленного запроса данных.

Флаг перегрузки

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

Замечание:
Контроллеры, базирующиеся на CAN 1.0 и 1.1, по-другому интерпретируют 3-й бит перерыва. Если в это время будет обнаружен «dominant» бит, то эти узлы интерпретируют его как поле «начало кадра»; шестой «dominant» бит нарушает правило заполнения бит и вызовет ошибку.

Разделитель перегрузки

Состоит из восьми «recessive» бит. Разделитель перегрузки имеет такую же форму, как и разделитель ошибки. После передачи флага перегрузки узел контролирует шину, пока не обнаружит переход от «dominant» бита к «recessive» биту. В этот момент времени каждый узел заканчивает передачу флага перегрузки, и все узлы начинают передачу еще 7 «recessive» битов.

Межкадровое пространство

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

Межкадровое пространство: содержит битовые поля: перерыв и простой шины.
Рисунок «а» приведен для узла, который был источником предыдущего сообщения.
Рисунок «в» приведен для узла в состоянии «пассивной ошибки», который был источником предыдущего сообщения.

Межкадровое пространство

Перерыв

Состоит из трех «recessive» бит.
В течение перерыва единственное действие, которое можно предпринять — сообщение об условии перегрузки и никакой узел не может начать передачу
кадра данных или кадра удаленного запроса данных.

Замечание:

Если узел имеет сообщение, которое нужно передать, и он выявляет «dominant» бит в третьем бите перерыва, это интерпретируется, как бит «начало кадра», и, со следующего бита, он начинает передавать сообщение, с первым битом его идентификатора, не передавая предварительно, бита «начало кадра».

Простой шины

Период простоя шины может иметь произвольную длину. Шина свободна
и любой узел, которому нужно что-либо передать, может обращаться к шине. Сообщение, которое ждет передачи во время передачи другого сообщения, начинает передаваться в первом бите после перерыва.
Обнаружение «dominant» бита на шине интерпретируется как «начало кадра».

Приостановка передачи

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

Стандартный и расширенный формат кадра

Стандартный формат эквивалентен формату кадра данных / формату кадра удаленного запроса данных, как это описано в CAN спецификации 1.2.
В отличие от него, в расширенном формате — новой версии CAN протокола для проектировки относительно простых контроллеров, не требуется полная реализация расширенного формата (передача или прием данных из сообщения в расширенном формате), в то время как стандартный формат должен быть реализован без ограничений.
Новые контроллеры, в соответствии с CAN спецификацией, должны удовлетворять, по крайней мере, следующим требованиям:
    — Каждый новый контроллер поддерживает стандартный формат;
    — Каждый новый контроллер может получать сообщения расширенного формата.
Это значит, что расширенные кадры не должны быть разрушены только из-за их формата. Однако не требуется, чтобы расширенный формат поддерживался новыми контроллерами.

Определение передатчика / приемника

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

Приемник:
Узел называется приемником сообщения, если он не является передатчиком этого сообщения и шина не простаивает.

    4. Фильтрация сообщений

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

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

    5. Проверка допустимости сообщения

Момент времени, при котором сообщение является допустимым, различен для передатчика и приемников сообщения.

Передатчик:
Сообщение допустимо для передатчика, если нет никакой ошибки до конца сообщения. Если сообщение разрушено, повторная передача будет следовать автоматически и согласно приоритетам. Чтобы, конкурировать за доступ к шине с другими сообщениями, повторная передача должна начаться, как только, шина станет свободна.

Приемник:
Сообщение допустимо для приемников, если нет никакой ошибки до предпоследнего бита «конец кадра». Значение последнего бита «конец кадра» рассматривается как безразличное, «dominant» значение не ведет к ошибке формы.

    6. Кодирование

Кодирование последовательности битов:
Сегменты: «начало кадра», «поле арбитража», «поле управления», «поле данных» и «последовательность CRC» кодируются методом разрядного заполнения.
Всякий раз, когда передатчик обнаруживает в разрядном потоке, пять последовательных одинаковых бит, он автоматически вставляет дополнительный бит в фактический переданный разрядный поток.
Оставшиеся битовые поля кадра данных или кадра удаленного запроса данных («разделитель CRC», «поле подтверждения», и «конец кадра») имеют фиксированную форму. Кадр ошибки и кадр перегрузки имеют фиксированную форму также и не кодируются методом разрядного заполнения.
    Разрядный поток сообщения кодируется согласно NRZ методу (без возврата к нулю). Это означает, что в течение всего времени передачи битов сгенерированный разрядный уровень является или «dominant» или «recessive».

    7. Обработка ошибок

Обнаружение ошибок

    Существует 5 различных типов ошибки (не взаимоисключающихся):

  • Ошибка бита

    Узел, который передает данные на шину, осуществляет контроль шины. Ошибка бита имеет место, если значение бита на шине отличается от переданного значения.
        Исключение — посылка «recessive» бита в течение заполненного битового потока поля арбитража или в течение поля подтверждения.
        Передатчик, посылающий флаг пассивной ошибки и обнаруживший «dominant» бит не интерпретирует это как ошибку бита.

  • Ошибка заполнения

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

  • Ошибка CRC

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

  • Ошибка формы

    Ошибка формы обнаруживается, если битовое поле фиксированного формата содержит одни или более запрещенных битов. (Примечание: для приемника «dominant» бит в течение последнего бита «конец кадра» не интерпретируется как ошибка формы).

  • Ошибка подтверждения

    Ошибка подтверждения обнаруживается передатчиком всякий раз, когда он не обнаруживает «dominant» бит в «области подтверждения».

Передача сигналов ошибки

Узел, обнаруживший ошибку сообщает об этом, передавая флаг ошибки. Для узла в состоянии «активной ошибки» — это флаг активной ошибки, для узла в состоянии «пассивной ошибки» — это флаг пассивной ошибки.

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

Всякий раз, когда обнаружена ошибка CRC, передача флага ошибки начинается с бита, следующего после разделителя подтверждения, если не передается флаг ошибки для другого условия

    8. Типизация неисправностей

Неисправный узел может быть в одном из трех состояний:

  • активной ошибки
  • пассивной ошибки
  • отключения от шины

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

Для типизации неисправностей в каждом узле есть два счетчика:
    1) Счетчик ошибок передачи
    2) Счетчик ошибок приема

Замечание:
Значение счетчика ошибок больше чем 96 указывает на то, что шина сильно повреждена.

Замечание:
Если в CAN — сети подключен только один узел, и если этот узел передает некоторое сообщение, он не получит подтверждения, обнаружит ошибку и повторит сообщение. Из-за этого он может перейти в состояние «пассивной ошибки», но не в состояние «отключен от шины».

    9. Генератор

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

Замечание:
CAN контроллеры соответствующие данной CAN спецификации и контроллеры, соответствующие предыдущим версиям 1.0 и 1.1, используемые в одной и той же сети, должны все иметь кварцевый генератор. Это означает, что керамические резонаторы могут использоваться только в сети, все узлы которой соответствуют CAN Спецификации 1.2.

    10. Битовая синхронизация

Номинальная битовая скорость

Номинальная скорость передачи информации в битах — число битов в секунду переданное в отсутствие пересинхронизации идеальным передатчиком.

номинальное время передачи бита =
    1/ номинальную скорость передачи информации в битах

Номинальное время передачи бита можно разделились на несколько не перекрывающихся участков:
    — Сегмент синхронизации (SYNC_SEG)
    — Сегмент времени распространения (PROP_SEG)
    — Сегмент TSEG1 (PHASE_SEG1)
    — Сегмент TSEG2 (PHASE_SEG2)

Битовая синхронизация

Сегмент синхронизации

Используется для синхронизации различных узлов на шине.
Предполагается, что фронт сигнала должен находиться в пределах этого сегмента.

Сегмент времени распространения

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

Сегменты TSEG1, TSEG2

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

Точка считывания (Sample point)

Момент времени, при котором уровень шины читается и интерпретируется, как значение соответственного бита. Она расположена в конце TSEG1.

Время обработки информации

Время обработки информации — сегмент времени, начинающийся с точки считывания.

Шаг квантования времени

Шаг квантования времени — фиксированная единица времени, полученная из периода генератора. Существует программируемый делитель, со значениями, от 1 до 32.
    При старте с минимальным шагом квантования времени, шаг квантования времени может иметь длину:

шаг квантования = м * минимальный шагом квантования времени
где м- значение делителя.

Длительность сегментов

  • SYNC_SEG — 1 шаг квантования времени.
  • PROP_SEG — программируется, может быть 1,2, …, 8 квантов времени.
  • TSEG1 — программируется, может быть 1,2… 8 квантов времени.
  • TSEG2 — максимум из PHASE_SEG1 и времени обработки информации.
  • Время обработки информации — меньше или равно 2 квантам времени.

Общее число квантов времени в битовом интервале должно быть программируемым, по крайней мере, от 8 до 25.

    11. Аппаратная синхронизация

После аппаратной синхронизации внутреннее битовое время каждого узла перезапускается с SYNC_SEG.

Переход пересинхронизации

В результате пересинхронизации TSEG1 может быть удлинен, или TSEG2 может быть укорочен. Размер удлинения или укорачивания сегментов TSEG имеет предел, определяемый переходом пересинхронизации

Перехода пересинхронизации должен быть программируем от 1 до минимума из
(4, PHASE_SEG1).

Ошибка фазы границы

Ошибка фазы границы определяется положением фронта сигнала относительно SYNC_SEG, измеряется в квантах времени. Знак ошибки фазы определен следующим образом:

  • e = 0, если фронт сигнала находится в пределах SYNC_SEG.
  • e> 0, если фронт сигнала находится перед точкой считывания.
  • e < 0, если фронт сигнала находится после точки считывания предыдущего бита.

    12. Пересинхронизация

Эффект от пересинхронизации — такой же как в случае аппаратной синхронизации, когда величина ошибки фазы границы, которая вызывает пересинхронизацию — меньше или равна программируемому значению перехода пересинхронизации.
    Когда величина ошибки фазы большая, чем ширина перехода пересинхронизации и:

  • если ошибка фазы положительна, то TSEG1 удлиняется на ширину перехода пересинхронизации.
  • если ошибка фазы отрицательна, то TSEG2 укорачивается на ширину перехода пересинхронизации.

Правила синхронизации

Аппаратная синхронизация и пересинхронизация — две формы синхронизации. Они удовлетворяют следующим правилам:

    1. Допускается только одна синхронизация в пределах битового интервала.
    2. Фронт сигнала будет использоваться для синхронизации только, если значение, обнаруженное при предыдущей точке считывания (предыдущее значение на шине) отличается из значения на шине сразу после фронта.
    3. Аппаратная синхронизация происходит всякий раз, когда есть переход от «recessive» бита к «dominant» в течение простоя шины.