Описание шины CAN. Элементная база для CAN. Оконечное прерывание шины

ENG 192Kb Control Area Network Rus CAN 2.0 A Rus CAN 2.0 В CAN протоколы высокого уровня Шины для бортовых автомобильных систем

CAN (Control Area Network) - последовательная магистраль, обеспечивающая увязку в сеть "интеллектуальных" устройств ввода/вывода, датчиков и исполнительных устройств некоторого механизма или даже предприятия. Характеризуется протоколом, обеспечивающим возможность нахождения на магистрали нескольких ведущих устройств, обеспечивающим передачу данных в реальном масштабе времени и коррекцию ошибок, высокой помехоустойчивостью. Система CAN обеспечена большим количеством микросхем, обеспечивающих работу подключенных к магистрали устройств, разработку которых начинала фирма BOSH для использования в автомобилях, и в настоящее время широко используемых в автоматизации промышленности. Цеколёвка разема приведена на рисунке.

  • Предназначен для организации высоконадежных недорогих каналов связи в распределенных системах управления. Интерфейс широко применяется в промышленности, энергетике и на транспорте. Позволяет строить как дешевые мультиплексные каналы, так и высокоскоростные сети.
  • Скорость передачи задается программно и может быть до 1 Мбит/с. Пользователь выбирает скорость, исходя из расстояний, числа абонентов и емкости линий передачи.
Расстояние, м 25 50 100 250 500 1000 2500 5000
Скорость, Кбит/с 1000 800 500 250 125 50 20 10
  • Максимальное число абонентов, подключенных к данному интерфейсу фактически определяется нагрузочной способностью примененных приемопередатчиков. Например, при использовании трансивера фирмы PHILIPS PCA82C250 она равна 110.
  • Протокол CAN использует оригинальную систему адресации сообщений. Каждое сообщение снабжается идентификатором, который определяет назначение передаваемых данных, но не адрес приемника. Любой приемник может реагировать как на один идентификатор, так и на несколько. На один идентификатор могут реагировать несколько приемников.
  • Протокол CAN обладает развитой системой обнаружения и сигнализации ошибок. Для этих целей используется поразрядный контроль, прямое заполнение битового потока, проверка пакета сообщения CRC-полиномом, контроль формы пакета сообщений, подтверждение правильного приема пакета данных. Хемминговый интервал d=6. Общая вероятность необнаруженной ошибки 4.7x10 -11 .
  • Система арбитража протокола CAN исключает потерю информации и времени при "столкновениях" на шине.
  • Интерфейс с применением протокола CAN легко адаптируется к физической среде передачи информации. Это может быть дифференциальный сигнал, оптоволокно, просто открытый коллектор и т.п. Несложно делается гальваническая развязка.
  • Элементная база, поддерживающая CAN, широко выпускается в индустриальном исполнении.

Полевая шина CAN (Controller Area Network) характеризуется высокими скоростью передачи данных и помехоустойчивостью, а также способностью обнаруживать любые возникающие ошибки. Не удивительно, что благодаря этому CAN сегодня широко используется в таких областях, как автомобильный и железнодорожный транспорт, промышленная автоматика, авиация, системы доступа и контроля. По данным ассоциации CiA (CAN in Automation, www.can-cia.de), в настоящее время в эксплуатации находится около 300 млн CAN-узлов по всему миру. В Германии CAN-шина занимает первое место по популярности среди остальных полевых шин. В данной статье приводится общее описание и технические характеристики CAN-шины и описывается логика ее работы. Кроме того, приводится описание встроенных модулей CAN, автономных контроллеров на примере микроконтроллеров (МК) Infineon, трансиверов и дросселей. Рассматриваются средства разработки устройств с CAN-шиной.

Характеристики протокола CAN Преимущества CAN

Общая тенденция в области автоматизации состоит в замене традиционной централизованной системы управления на распределенное управление путем размещения интеллектуальных датчиков и исполнительных механизмов рядом с управляемым процессом. Это вызвано ростом числа проводов связи, увеличением количества соединений, сложностью диагностики ошибок и проблемами с надежностью. Связь между узлами такой системы осуществляется с помощью полевой шины. CAN - это система связи для многоконтроллерных систем. Рассмотрим более подробно преимущества CAN и причины, по которым CAN приобретает все большее распространение.

Испытанный стандарт. Протокол CAN активно используется уже более 20 лет, что очень важно для таких консервативных областей как железнодорожный транспорт или судостроение. CAN был разработан в 1980 г. фирмой Robert Bosch для автомобильной промышленности. CAN-интерфейс регламентирован международными стандартами ISO 11898 для высокоскоростных и ISO 11519-1 для низкоскоростных приложений. Низкая стоимость определяется хорошим соотношением цена/производительность, также широкой доступностью CAN-контроллеров на рынке. Надежность определяется линейной структурой шины и равноправностью ее узлов, так называемой мультимастерностью (Multi Master Bus), при которой каждый узел CAN может получить доступ к шине. Любое сообщение может быть послано одному или нескольким узлам. Все узлы одновременно считывают с шины одну и ту же информацию, и каждый из них решает, принять данное сообщение или игнорировать его. Одновременный прием очень важен для синхронизации в системах управления. Отказавшие узлы отключаются от обмена по шине.

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

Гибкость достигается за счет простого подключения к шине и отключения от шины CAN-узлов, причем общее число узлов не лимитировано протоколом нижнего уровня. Адресная информация содержится в сообщении и совмещена с его приоритетом, по которому осуществляется арбитраж. В процессе работы возможно изменение приоритета передаваемого сообщения. Следует также отметить возможность программирования частоты и фазы передаваемого сигнала и арбитраж, не разрушающий структуру сообщений при конфликтах. На физическом уровне есть возможность выбора разнотипных линий передачи данных: от дешевой витой пары до оптоволоконной линии связи.

Работа в реальном времени становится возможной благодаря механизмам сетевого взаимодействия (мультимастерность, широковещание, побитовый арбитраж) в сочетании с высокой скоростью передачи данных (до 1 Мбит/с), быстрой реакцией на запрос передачи и изменяемой длиной сообщения от 0 до 8 байт.

Приложения CAN

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

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

Физический уровень

Физический уровень CAN-шины представляет собой соединение «монтажное И» между всеми устройствами, подключенными к ней. Дифференциальные сигнальные линии называются CAN_H и CAN_L и в статическом состоянии находятся под потенциалом 2,5 В. Лог. 1 (рецессивный бит) обозначает состояние шины, при котором уровень на линии CAN_H выше, чем уровень CAN_L. При лог. 0 (доминантный бит) уровень на линии CAN_H ниже, чем уровень CAN_L. Принято следующее соглашение о состоянии шины: пассивное состояние шины соответствует уровню лог. 1, а активное - уровню лог. 0. Когда сообщения не передаются по шине, она находится в пассивном состоянии. Передача сообщения всегда начинается с доминантного бита. Логика работы шины соответствует «проводному И»: доминантный бит «0» подавляет рецессивный бит «1» (рис. 1).

Рис. 1. Логика работы CAN шины

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

Максимальная скорость передачи данных составляет 1 Мбит/с при длине шины 40 м и около 40 Кбит/с при длине шины 1000 м.

Арбитраж узлов CAN-шины

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

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

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

Если передача узла А приостанавливается узлом B, посылающим сообщение с более высоким приоритетом, то, как только шина освободится, будет сделана другая попытка передачи сообщения от узла A. Этот принцип получил название CSMA/CA: Carrier Sense Multiple Access/Collision Avoidance (общий доступ с опросом/предотвращение конфликтов). Такой режим в отличие от Ethernet не позволяет конфликтующим узлам в шине выяснять отношения, а сразу выявляет победителя и сокращает время обмена.

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

Формат сообщений

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

Рис. 2. Кадр данных (Data Frame)

Для передачи данных служит кадр данных - Data Frame (рис. 2), который содержит:

  • идентификатор, указывающий на тип сообщения («скорость_двигателя», «температура_масла») и на приоритет доступа к шине. Поле идентификатора содержит различное количество бит в зависимости от разновидности протокола: в стандартном формате CAN V2.0A предусмотрен 11-разрядный идентификатор, а в расширенном CAN V2.0B - 29-разрядный;
  • поле данных, содержащее соответствую-щее сообщение («скорость_двигателя»= 6000 об/мин, «температура_масла»=110 °C) длиной до восьми байт;
  • два байта контрольной суммы - Cyclic Redundancy Check (CRC) для выявления и коррекции ошибок передачи.

Для запроса информации узел CAN использует кадр запроса данных Remote Frame (рис. 3), который содержит:

  • идентификатор, определяющий тип запрашиваемой информации («скорость_ двигателя», «температура_масла») и приоритет сообщения;
  • два байта контрольной суммы CRC .

Рис. 3. Кадр запроса данных Remote Frame

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

Дополнительная информация, содержащаяся в кадре, позволяет определить формат и синхронизацию протокола передачи сообщения и тип посылки:

  • какое сообщение послано - запрос о данных или собственно данные определяют бит удаленного запроса передачи (RTR для 11-разрядного идентификатора и SRR для 29-разрядного);
  • код длины данных, сообщающий, сколько байтов данных содержит сообщение; все узлы принимают кадр данных, но те из них, которым эта информация не нужна, ее не сохраняют;
  • для обеспечения синхронизации и контроля кадр содержит поля начала кадра Start of Frame, конца кадра End of Frame и подтверждения Acknowledgement Field;
  • вход в режим синхронизации на шине осуществляется первым битом поля Start of Frame, далее синхронизация поддерживается фронтом при смене уровня посылаемых битов;
  • используется механизм битстаффинга - вставка дополнительного бита при следующих подряд пяти нулях или единицах.

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

Сигнализация об ошибках происходит путем передачи кадра ошибки Error Frame. Он инициируется любым узлом, обнаружившим ошибку. CAN-контроллеры используют метод статистической обработки ошибок. Каждый узел содержит счетчики ошибок при передаче и приеме Transmit Error Counter и Receive Error Counter. Если передатчик или приемник обнаруживают ошибку, значение соответствующего счетчика увеличивается. Когда значение счетчика превышает некоторый предел, текущая передача прерывается. Узел выдает сигнал об ошибке в виде Error Frame, где выставляет активный доминантный флаг ошибки длиной 6 бит. После этого узел, передача которого была прервана, повторяет сообщение. Ненадежным или частично поврежденным узлам разрешено посылать лишь пассивный рецессивный флаг ошибки.

В CAN существует несколько разновидностей ошибок. Из них три типа на уровне сообщений:

  • CRC Error - ошибка контрольной суммы (при несовпадении принятой в поле CRC и вычисленной контрольных сумм).
  • Form Error - ошибка формата кадра при несоответствии принятого сообщения формату CAN.
  • Acknowledgement Error - ошибка подтверждения приема сообщения, если ни один из узлов не подтвердил правильного получения сообщения.

Кроме того, существует два типа ошибок на битовом уровне:

  • Bit Error - обнаружение активным узлом расхождения между посланным в шину уровнем и фактическим значением за счет реализации узлом механизма самоконтроля.
  • Stuff Error - наличие в поле сообщения шести следующих подряд бит 0 или 1 (ошибка битстаффинга).

Благодаря этим механизмам обнаружения и коррекции ошибок вероятность пропуска ошибки крайне мала. Например, при скорости 500 Кбит/с, загруженности шины 25 % и использовании в течение 2000 часов в год возникает лишь одна необнаруженная ошибка за 1000 лет. Кроме того, в шине невозможна ситуация блокировки неисправным узлом работы всей сети. Такие узлы обнаруживаются и отключаются от обмена по шине.

Разновидности CAN

В настоящее время доступны различные устройства с CAN-интерфейсом, которые помимо передачи данных из одной точки в другую позволяют реализовать синхронизацию процессов и обслуживание по приоритетам. Более ранние реализации CAN-контроллеров используют кадры с 11-разрядным идентификатором и возможностью адресации до 2048 сообщений и соответствуют спецификации CAN V. 2.0A. Такие контроллеры носят название Basic CAN и характеризуются сильной загруженностью центрального процессора (ЦПУ), так как каждое входящее сообщение запоминается в памяти и ЦПУ решает, нужны ему данные сообщения или нет (рис. 4). Контроллеры Basic CAN содержат один передающий буфер и один или два приемных буфера сообщений. Чтобы послать или получить сообщение, требуется задействовать ЦПУ через прерывания «сообщение_послано» и «сообщение_получено». В результате проверки каждого входящего сообщения загрузка ЦПУ очень велика, что ограничивает реальную скорость обмена по сети. По этой причине такие контроллеры используются в сетях CAN с низкой скоростью обмена и/или малым количеством сообщений.

Рис. 4. Структура контроллера Basic CAN

Большинство выпускаемых сегодня CAN-контроллеров используют расширенные кадры сообщений с идентификатором длиной 29 разрядов, что позволяет адресовать до 536 млн сообщений. Такие контроллеры соответствуют спецификации CAN V. 2.0B (active) и называются контроллеры Full-CAN. В них предусмотрен буфер для нескольких сообщений, причем каждое сообщение имеет свою маску, и фильтрация осуществляется по соответствию идентификатора маске.

В случае Full-CAN ЦПУ максимально разгружено, поскольку не обрабатывает ненужные сообщения (рис. 5). При приеме сообщения с идентификатором, соответствующим маске, оно запоминается в специальной зоне двухпортового ОЗУ, и работа ЦПУ прерывается. Full-CAN имеет также специальный тип сообщения, которое означает: «у кого бы ни находилась эта информация, пожалуйста, пошлите ее сейчас же». Контроллер Full-CAN автоматически прослушивает все сообщения и посылает запрошенную информацию.

Рис. 5. Структура контроллера Full-CAN

До недавнего времени в промышленности был широко распространен Basic CAN с 11-разрядным идентификатором. Этот протокол допускает простую связь между микроконтроллерами и периферийными устройствами при скорости обмена вплоть до 250 Кбит/с. Однако при стремительном удешевлении CAN-контроллеров использование Full-CAN стало оправданным и для связи с медленными устройствами. Если в промышленных приложениях требуется высокоскоростной (до 1 Мбит/с) обмен данными, то непременно следует использовать Full-CAN.

Элементная база для CAN

На самом нижнем уровне CAN-шины находится собственно двухпроводная линия с терминальными резисторами. Далее для повышения помехоустойчивости расположен дифференциальный приемопередатчик - трансивер. На следующем уровне - контроллер со встроенным модулем или автономный модуль CAN, подключаемый к главному контроллеру через параллельный или последовательный порт. Связь с узлами CAN, осуществляющими обмен информацией, ведется через линии портов микроконтроллеров. CAN-контроллеры осуществляют процедуру приема-передачи данных и соединяются с шиной двумя сигналами: RxD для приема с шины и TxD для передачи на шину. Реализация CAN-шины с помощью микроконтроллеров Infineon представлена на рис. 6.

Рис. 6. Реализация CAN-шины с помощью микроконтроллеров Infineon

Микроконтроллеры с CAN-модулем

Одним из факторов, обеспечивших популярность CAN, является богатый выбор и доступная цена элементной базы различных производителей - Infineon, Motorola, Microchip, Philips и др.

В данной статье упор сделан на элементную базу Infineon. Такое решение основано, в частности, на результатах опроса, проводимого на сайте Keil Software (www.keil.com) для микроконтроллерных платформ 8051/251/С166. На вопрос, какой микроконтроллер со встроенным CAN вы используете, по выборке из 2111 респондентов ответы распределились согласно табл. 1.

Таблица 1. Результаты опроса: "Какой микроконтроллер со встроенным CAN вы используете?"

Фирма Infineon выпускает продукты во всех классах цена/производительность. В настоящее время доступны как 8-разрядные контроллеры C505CA, C515C, так и 16-разрядные: C161CS, C164CI, C167CR, 167CS (табл. 2). Самым дешевым кристаллом с CAN является C505CA. МК C161CS и C167СS содержат два CAN-модуля. Самый мощный и дорогой микроконтроллер TriCore TC1775 также содержит реконфигурируемый модуль TwinCAN с двумя модулями CAN на 32 сообщения. TriCore - это первый 32-разрядный микроконтроллер Infineon с архитектурой DSP, оптимизированный для встроенных приложений реального времени, который заменяет собой МК, процессор DSP и заказную микросхему ASIC. Встроенный модуль соответствует спецификации CAN V2.0 B active и содержит память на 15 сообщений для приема/передачи с собственными идентификаторами, битами состояния и управления. Кроме того, он содержит регистры маски для фильтрации входящих сообщений и оснащен двумя приемными буферами. Встроенный модуль CAN позволяет строить системы с разнообразными задачами, используя минимальное количество микросхем внешнего интерфейса. Подключение любого из микроконтроллеров Infineon к CAN-шине осуществляется по одним и тем же принципам. Пример соединения C167CR с CAN-шиной представлен на рис. 7.

Таблица 2. CAN-микроконтроллеры фирмы Infineon

Тип Версия CAN Кол-во сообщ. CAN-модуль Корпус Примечание
С505СА V2.0 B 15 1 x CAN MQFP-44 8 bit MC
С151С V2.0 B 15 1 x CAN MQFP-80 8 bit MC
С161СS V2.0 B 30 2 x CAN TQFP-128 16 bit MC
C164CI V2.0 B 15 1 x CAN MQFP-80 16 bit MC
C167CR V2.0 B 15 1 x CAN MQFP-144 16 bit MC
C167CS V2.0 B 30 2 x CAN MQFP-144 16 bit MC
TC1775 V2.0 B 32 TwinCAN BGA-329 32 bit MC
SAE81C90 V2.0 A 16 1 x CAN PLCC-44 Stand Alone
SAE81C91 V2.0 A 16 1 x CAN PLCC-28 Stand Alone
SAK82C900 V2.0 B 32 TwinCAN P-DSO-28 Stand Alone

Кроме того, следует сказать также несколько слов о МК фирмы Philips - одного из родоначальников элементной базы CAN. На смену устаревшему автономному CAN-контроллеру Philips PCA82C200 пришел полностью совместимый с ним контроллер SJA1000, работающий со стандартом CAN V2.0 B. Необходимо отметить, что PCA82C200 поддерживает только стандарт CAN V2.0 A и способен передавать и принимать только стандартный CAN-протокол, то есть при приеме расширенного кадра он генерирует ошибку и может разрушить всю сеть. В SJA1000 за счет поддержки стандарта PeliCAN (чтение и запись счетчиков ошибок, программирование их количественного порога) значительно расширены возможности по управлению CAN.

Рис. 7. Пример соединения МК С167CR c CAN-шиной

В результате объединения SJA1000 с ядром XA появился 16-разрядный МК XAC3 с интегрированным CAN-интерфейсом. Совместимый с 8051 режим микроконтроллера Philips XA позволяет осуществить простой переход от 8-разрядной архитектуры 8051 к 16-разрядной, что особенно важно для сохранения преемственности программного обеспечения. Среди 8-разрядных МК следует отметить также Philips P80C592, P8xC591 и 8xCE598.

Motorola тоже предлагает широкий спектр микроконтроллеров с интегрированным CAN-модулем: от самых дешевых 8-разрядных МК 68HC05X до 32-разрядного Power PC MPC555 с дуальным CAN V2.0 B.

Продолжение следует

Входящий в МК STM32 CAN-контроллер является полнофункциональным CAN-узлом, отвечающий требованиям к активным и пассивным устройствам CAB 2.0A и 2.0B и поддерживающий передачу данных на скорости не более 1 Мбит/сек. CAN-контроллер оснащен также дополнительными возможностями для организации детерминистической передачи данных по специальному CAN-протоколу передачи в реальном времени TTCAN. После активизации функции TTCAN будет поддерживаться автоматическая повторная передача сообщений и автоматическая вставка в CAN-пакет двух дополнительных байт с зафиксированным моментом времени передачи сообщения. Все эти возможности необходимы в системах управления через CAN-интерфейс в масштабе реального времени.

Полное наименование CAN-контроллера - модуль bxCAN, где bx указывает на поддержку модулем дополнительных возможностей. Обычный модуль CAN использует один буфер приема и передачи, а у расширенного модуля CAN используется несколько буферов приема и передачи. Модуль bxCAN является гибридом двух архитектур модулей CAN. У него имеется три почтовых ящика для передаваемых сообщений и два почтовых ящика для принимаемых сообщений. Каждый из принимающих почтовых ящиков имеет буфер FIFO для помещения в него трех сообщений. Данная архитектура является компромиссной с точки зрения производительности передачи данных и занимаемого места в кристалле ИС.


Модуль CAN оснащен тремя почтовыми ящиками для передачи сообщений и имеет возможность автоматической вставки в сообщение текущего времени по протоколу TTCAN

Следующая важная функция CAN-контроллера - фильтрация получаемых сообщений. Поскольку CAN является широковещательной шиной, каждое переданное сообщение принимается всеми узлами шины. В CAN-шине любой разумной степени сложности передается достаточно большое число сообщений. Задачей каждого подключенного к CAN-узлу ЦПУ является реагирование на CAN-сообщения. Таким образом, чтобы избавить CAN-контроллер от проблемы приема в буфер нежелательных сообщений, необходима их фильтрация. У CAN-контроллера микроконтроллеров STM32 имеется 14 банков фильтров, которые можно использовать для блокировки всех CAN-сообщений, кроме избранных сообщений или групп сообщений.


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

Каждый банк фильтров состоит из двух 32-битных регистров и может работать в одном из четырех режимов. При использовании базового метода в каждый регистр банка фильтров записывается идентификатор сообщения. После поступления сообщения проверяется его идентификатор и, исходя из этого, принимается решение о приеме или отклонении сообщения. Данный режим поддерживает две конфигурации. В первой конфигурации регистры банков фильтров являются 3-битными и могут использоваться для фильтрации 11- и 29-битных полей идентификаторов сообщения, а также бит RTR и IDE в 16-битном режиме.

Во второй конфигурации, в первый 32-битный регистр записывается идентификатор сообщения, во второй - маска сообщения. Регистр маски маркирует биты регистра идентификатора, как "важный" или "неважный". Благодаря этому, появляется возможность принимать группу сообщений с помощью одного банка фильтров. Если принимающие фильтры пропускают сообщение, то вместе с ним принимающий буфер FIFO будет записан указатель на определивший совпадение фильтр. Это позволит прикладной программе ускорить идентификацию сообщения без необходимости считывания и дешифрации идентификатора пакета сообщения.

Все CAN-контроллеры поддерживают два режима работы: нормальный режим для приема и передачи пакетов сообщений и режим инициализации для задания параметров связи. Как уже говорилось, МК STM32 могут работать в экономичном режиме SLEEP. В этом режиме синхронизация модуля bxCAN отключена, однако доступ к регистрам почтовых ящиков остается возможным. Модуль bxCAN имеет возможность активизации работы при обнаружении активности на шине CAN. Его работу можно также реактивировать прикладной программой. Работая в нормальном режиме, поддерживаются два дополнительных подрежима. Первый подрежим - режим SILENT. В нём CAN-контроллер может принимать сообщения, но не может передавать и не генерирует бит ошибок в посылке и подтверждения сообщения. Данный режим рассчитан на CAN-шины с пассивным мониторингом. Второй подрежим - режим LOOPBACK. В этом режиме, передаваемые сообщения сразу же принимаются в приемный буфер. Он необходим для реализации диагностических функций и также полезен на фазе отладки кода программы. Оба рассмотренных режима можно комбинировать. Они идеальны для выполнения функций самотестирования при подключении к работающей шине.

CAN (Controller Area Network - "область, охваченная сетью контроллеров") представляет собой комплекс стандартов для построения распределенных промышленных сетей, который использует последовательную передачу данных в реальном времени с очень высокой степенью надежности и защищенности. Центральное место в CAN занимает протокол канального уровня модели OSI. Первоначально CAN был разработан для автомобильной промышленности, но в настоящее время быстро внедряется в область промышленной автоматизации. Это хорошо продуманный, современный и многообещающий сетевой протокол. Начало развития CAN было положено компанией Bosch в 1983 г., первые микросхемы CANконтроллеров были выпущены фирмами Intel и Philipsв 1987 году, в настоящее время контроллеры и трансиверы CANвыпускаются многими фирмами, в том числе Analog Devices, Inc., Atmel Corp. Cast, Dallas Semiconductor, Freescale, Infineon, Inicore Inc., Intel, Linear Technology, Maxim Integrated Products, Melexis, Microchip, National Semiconductor, NXP, OKI, Renesas Technology Corp., STMicroelectronics, Yamar Electronics, Texas Instruments.

В России интерес к CAN за последние годы сильно возрос, однако контроллерного оборудования для CAN в России крайне мало, в десятки или сотни раз меньше, чем для Modbus или Profibus. Среди протоколов прикладного уровня для работы с CAN наибольшее распространение в России получили CANopen и DeviceNet.

В настоящее время CAN поддерживается 11-ю стандартами ISO, в том числе [ISO - Diagnostics ].

CAN охватывает два style="color:red"> уровня модели OSI: физический и канальный (табл. 2.7). Стандарт не предусматривает никакого протокола прикладного (7-го) уровня модели OSI. Поэтому для его воплощения в жизнь различные фирмы разработали несколько таких протоколов: CANopen (организации CiA), SDS (фирмы Honeywell Micro Switch Division), CAN Kingdom (фирмы Kvaser), DeviceNet (фирмы Allen-Bradley, ставший Европейским стандартом в 2002 г.) и ряд других [Грибанов - Третьяков ].

CAN характеризуется следующими основными свойствами:

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

К недостаткам можно отнести сравнительно высокую стоимость CAN-устройств, отсутствие единого протокола прикладного уровня, а также чрезмерную сложность и запутанность протоколов канального и прикладного уровня, изложенных в стандартах организации CAN in Automation (CiA).

2.6.1. Физический уровень

Где - длительность переднего фронта передатчика. Основные требования к линии передачи и ее характеристикам близки к RS-485, однако в передатчиках CAN есть режим управления длительностью фронтов импульсов. Управление выполняется путем заряда емкостей затворов выходных транзисторов от источников тока, при этом величина тока задается внешним резистором. Увеличение длительности фронта позволяет снизить требования к согласованию линии на низких частотах, увеличить длину отводов и ослабить излучение электромагнитных помех.

Выводы "земли" всех передатчиков сети должны быть соединены (если интерфейсы гальванически не изолированы). При этом разность потенциалов между выводами заземлений не должна превышать 2 В. Гальваническая изоляция рекомендуется при длине линии более 200 м, но не является обязательным требованием стандарта.

Для электрического соединения устройств с CAN интерфейсом стандарт предусматривает два варианта. Первый вариант состоит в применении Т-образных разветвителей, которые состоят из трех 9-штырьковых разъемов D-sub, расположенных в одном корпусе, одноименные контакты которых соединены между собой. Разветвители имеют один разъем со штырьками и два - с гнездами.

Второй вариант требует наличия в каждом CAN-устройстве двух разъемов. Для включения устройства в сеть кабель разрезают и на его концах устанавливают ответные части разъемов. Устройство включается буквально в разрыв линии передачи. Такой подход позволяет наращивать количество устройств и изменять топологию сети путем добавления в разрыв кабеля новых устройств и кабеля с разъемами на концах. Один из разъемов должен быть со штырьками, второй - с гнездами. Подключение устройств к шине без разъемов не допускается. Согласующий резистор должен располагаться внутри разъема, который подключается к концу кабеля. Для присоединения модулей к CAN-шине должен использоваться 9-штырьковый разъем типа D- Sub. На модуле устанавливается разъем с гнездами, на соединяющем кабеле - со штырьками. Цоколевка разъемов показана в табл. 2.8 .

Применение разъемов со штырьками или гнездами определяется следующим правилом: при "горячей" замене модулей питание должно оставаться только на разъемах с гнездами; это позволяет избежать случайного короткого замыкания.

Отметим, что в основанном на CAN стандарте CANopen предусмотрено гораздо большее разнообразие вариантов разъемов, в том числе для плоского кабеля, RJ-10, RJ45, разъемный винтовой клеммник, и еще около десяти вариантов специальной конструкции [Cabling ]. Допускается применение и других разъемов.

Это свойство CAN обеспечивает возможность получения доступа к линии, сравнивая посылаемые в линию логические уровни с тем уровнем, который фактически устанавливается в ней: если передатчик посылает в линию рецессивное состояние, а в ней при этом остается доминантное, значит линия занята. Доступ получает тот узел сети, который может предоставить ей доминантный уровень сигнала. Узлы с рецессивным уровнем покидают линию и ждут следующего случая. Этот метод доступа справедлив и при использовании оптоволоконного канала или беспроводной сети - в этих случаях наличие света или электромагнитной волны всегда будет доминировать над их отсутствием.

Вывод на рис. 2.20 позволяет установить пороговое напряжение для входа и уровень синфазного напряжения в линии, когда она находится в рецессивном состоянии. Обычно = 2,5 В. Чтобы установить уровень синфазного напряжения на линии, терминальные сопротивления делят на два по 60 Ом, соединяют их последовательно, а к точке соединения подключают вывод . При симметричной форме импульсов и относительно рецессивного состояния уменьшается уровень излучаемых помех, поскольку приращения токов в каждом из проводов витой пары при переключении логических уровней (см. рис. 2.21) оказываются равными по величине, но обратными по знаку и поэтому компенсируют друг-друга.

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

Рис. 2.21. Пояснение понятий рецессивного и доминантного состояния

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

Стандартом предусмотрена возможность подключения к CAN сети любого количества устройств, однако практически оно ограничивается нагрузочной способностью передатчиков (100...200) или задержкой в повторителях.

В CAN-трансивере имеется генератор синхроимпульсов с частотой 16 МГц ±0,1%. Ширина одного бита программно устанавливается величиной от 8 до 25 импульсов синхрогенератора, обычно 8 импульсов при скорости передачи 1 Мбит/с и 16 импульсов при 20 кбит/с. Синхронизация всех узлов сети происходит в течение первого такта синхронизации. Процедура обработки битов в приемнике обеспечивает программируемую задержку импульсов синхронизации, необходимую для компенсации времени задержки прохождения сигнала в линии связи и сдвига фазы вследствие дрейфа частоты тактового генератора.

Различают два типа синхронизации: жесткую синхронизацию с помощью стартового бита в начале сообщения и ресинхронизацию во время передачи сообщения. С помощью ресинхронизации можно подстроить интервал времени от начала синхронизации до момента, в который измеряется логический уровень принимаемого импульса данных. Интервал подстройки может быть изменен на 1...4 такта.

Для определения логического состояния шины уровни принимаемых сигналов измеряются на расстоянии 6-ти тактов синхрогенератора от переднего фронта импульса (бита) при скорости 1 Мбит/с и на расстоянии 14-ти тактов при скорости 20 кбит/с [CAN ] (для сравнения укажем, что в стандартных UART отсчеты берутся посередине импульса). Количество отсчетов может быть 1 или 3 (устанавливается программно). CAN использует синхронную передачу битов. Это повышает пропускную способность канала связи, но требует усложненного процесса синхронизации.

Канальный уровень CAN, рассмотренный выше, практически невозможно использовать в SCADA-пакетах, поскольку он оперирует битами, фреймами, полями. Для написания же прикладных программ нужно использовать понятия: переменная, массив, событие, клиент, сервер, имя устройства и т. п.

Рассмотрим наиболее распространенный стандарт прикладного уровня CANopen [CANopen ]. Для упрощения применения стандарта вводятся несколько специфических для CANopen понятий. Все функциональные возможности прикладного уровня делятся между так называемыми сервисами (элементами услуг). Программные приложения взаимодействуют между собой путем вызова соответствующих сервисов прикладного уровня. Сервисы обмениваются данными с равными им (одноранговыми) сервисами через CAN-сеть с помощью определенного протокола. Этот протокол описывается в спецификации протокола сервиса.

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

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

Администратор

Необходимость последовательного соединения в автомобилях

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

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

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

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

Если мы также рассмотрим будущие разработки, направленные на общую оптимизацию транспортных средств, то необходимо преодолеть ограничения, существующие в связи с обычными устройствами управления. Это можно сделать только путем объединения в сеть компонентов системы с использованием последовательной шины данных. Bosch разработал для этой цели систему «Controller Area Network» (CAN), которая с тех пор была стандартизирована на международном уровне (ISO 11898) и была «отлита в камне (в кремнии)» несколькими производителями полупроводников.

Используя CAN, одноранговые (одноуровневые) станции (контроллеры, датчики и исполнительные механизмы) подключаются через последовательную шину. Сама шина является симметричной или асимметричной двухпроводной цепью, которая может быть экранированной или неэкранированной. Электрические параметры физической передачи также указаны в стандарте ISO 11898. Подходящие чипы драйвера шины доступны от большого ряда производителей

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

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

Использование CAN сети в автомобилях

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

Сетевые контроллеры для синхронизации двигателя, трансмиссии, шасси и тормозов. Скорости передачи данных находятся в диапазоне - типичном для систем реального времени от 200 кбит /с до 1 Мбит /с.
Сетевые компоненты общей электроники и электроники шасси, которые делают автомобиль более комфортным. Примерами таких мультиплексных применений являются управление освещением, кондиционирование воздуха и центральный замок, а также регулировка сиденья и зеркала. Особое значение здесь должно быть уделено стоимости компонентов и требованиям к проводке. Типичная скорость передачи данных составляет около 50 кбит / с.
В ближайшем будущем последовательная связь также будет использоваться в области мобильной связи, чтобы связать такие компоненты, как автомобильные радиоприемники, автомобильные телефоны, навигационные средства и т. д., с центральной более эргономичной панелью управления. Функции, определенные в проекте «Прометей», такие как связь между транспортным средством и транспортным средством, будут в большой степени зависеть от последовательной связи.
В настоящее время CAN используется для первых трех приложений, но для диагностики предпочтительным решением является интерфейс в соответствии со стандартом ISO 9141.

Промышленные применения сети CAN

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

Стандартное использование CAN в «S-классе» Mercedes-Benz и принятие CAN коммерческими автопроизводителями США для быстрой передачи (до 1 Мбит / с) заставляли промышленных пользователей навострить уши. Не только производители мобильных и стационарных сельскохозяйственных и морских машин и оборудования выбрали CAN, но и выбор производителей медицинской аппаратуры, текстильных машин, а также специальной техники и элементов управления лифтами. Система последовательной шины особенно хорошо подходит для сетевых «интеллектуальных» устройств ввода-вывода, а также датчиков и исполнительных механизмов внутри машины или завода.

Промышленность текстильного машиностроения является одним из пионеров CAN. Один производитель оснастил свои ткацкие станки модульными системами управления, сообщающимися в режиме реального времени через сети CAN еще в 1990 году. Тем временем несколько производителей текстильных машин объединились в группу «CAN Textile Users Group», которая, в свою очередь, является членом международной группы пользователей и производителей «CAN in Automation». Аналогичные требования к текстильному оборудованию имеются в упаковочных машинах и машинах для производства и обработки бумаги.

В США ряд предприятий используют CAN в производственных линиях и станках в качестве внутренней системы шин для сетевых датчиков и исполнительных механизмов внутри линии или непосредственно машины. Некоторые пользователи, такие как сектор медицинской инженерии, решили в пользу CAN, поскольку у них были особенно строгие требования безопасности. С аналогичными проблемами сталкиваются и другие производители машин и оборудования с особыми требованиями в отношении безопасности (например, роботы и транспортные системы).

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

Как функционируют CAN-сети

Принципы обмена данными

Когда данные передаются по CAN, никакие станции не адресуются, но вместо этого содержание сообщения (например, скорость вращения или температура двигателя) обозначается идентификатором, который является уникальным во всей сети. Идентификатор определяет не только содержимое, но и приоритет сообщения. Это важно для распределения шины, когда несколько станций конкурируют за доступ к шине. Если ЦПУ данной станции желает отправить сообщение одной или нескольким станциям, он передает данные и их идентификаторы в назначенный CAN-чип (стостояние «Готово»). Это все, что должен сделать ЦП, чтобы инициировать обмен данными. Сообщение формируется и передается с помощью CAN-чипа. Как только CAN-чип получает выделение шины (состояние «Send Message»), все остальные станции в сети CAN становятся получателями этого сообщения (состояние «Receive Message»). Каждая станция в сети CAN, правильно приняв сообщение, выполняет приемный тест (тест получения), чтобы определить, относятся ли полученные данные к этой станции (состояние «Выбор»). Если данные имеют значение для соответствующей станции, они обрабатываются (состояние «Принято»), в противном случае они игнорируются. Высокая степень гибкости системы и конфигурации достигается благодаря схеме адресации, ориентированной на содержание. Очень просто добавлять станции в существующую сеть CAN без внесения каких-либо изменений в аппаратные или программные средства для существующих станций при условии, что новые станции являются чисто приемниками. Поскольку протокол передачи данных не требует физических адресов назначения для отдельных компонентов, он поддерживает концепцию модульной электроники, а также допускает множественный прием (широковещательный, многоадресный) и синхронизацию распределенных процессов: могут быть переданы измерения, необходимые в качестве информации несколькими контроллерами через сеть таким образом, что для каждого контроллера не требуется иметь свой собственный датчик.



1. Передача вещания и входная фильтрация узлами CAN на предмет того подходящие ли данные для того или иного узла

Неразрушающая побитовая проверка:

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



2. Принцип неразрушающего побитового проверки(оценки, считывания)

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

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

Эффективность распределения шины:

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

Распределение по фиксированному графику. Распределение производится последовательно каждому участнику для максимальной продолжительности независимо от того, нужена ли этому участнику шина в данный момент или нет (примеры: маркерная ячейка или передача маркера).
Распределение шины на основе необходимости. Шина назначается одному участнику на основании невыполненных запросов на передачу, то есть система распределения учитывает только участников, желающих передать (примеры: CSMA, CSMA / CD, управляющий полет, циклическая или побитовая проверка). Для CAN распределение шины согласовано исключительно между сообщениями, ожидающими передачи. Это означает, что процедура, определенная CAN, классифицируется как распределение на основе необходимости.

Еще одним средством оценки эффективности систем проверки(оценки) шины является метод доступа к шине:

Неразрушающий доступ к шине. С помощью методов этого типа шина назначается одной и только одной станции либо немедленно, либо в течение определенного времени после одного доступа к шине (одной или несколькими станциями). Это гарантирует, что каждый доступ к шине одной или несколькими станциями приводит к однозначному распределению шины (примеры: : маркерная ячейка, передача маркера, циклическая обработка, побитовая проверка.
Разрушающее распределение шины. Одновременный доступ к шине более чем одной станцией приводит к прерыванию всех попыток передачи и, следовательно, успешное распределение шины отсутствует. Для распределения шины может потребоваться более одного доступа к шине, количество попыток до успешного распределения шины является чисто статистической величиной (примеры: CSMA / CD, Ethernet). Чтобы обрабатывать все запросы на передачу сети CAN, соблюдая ограничения времени ожидания при как можно более низкой скорости передачи данных, CAN-протокол должен реализовывать метод распределения шины, который гарантирует, что всегда имеется однозначное распределение шины, даже если есть одновременныё доступ к шине с разных станций.

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

Даже в ситуациях, когда шина перегружена, связь приоритета доступа к шине с содержимым сообщения оказывается полезным атрибутом системы по сравнению с существующими протоколами CSMA / CD или токенными(маркерными) протоколами: несмотря на недостаточную пропускную способность шины, все невыполненные запросы на передачу обрабатываются в порядке их важности для всей системы (как определено приоритетом сообщения).

Имеющаяся пропускная способность эффективно используется для передачи полезных данных, так как «пробелы» в распределении шины остаются очень маленькими. Падение всей системы передачи из-за перегрузки, что может произойти с протоколом CSMA / CD, невозможен при CAN. Таким образом, CAN позволяет реализовать быстрый, трафик-определенный доступ к шине, который является неразрушающим из-за побитовой проверке на основе используемого приоритета сообщения.

Неразрушающий доступ к шине можно разделить на:

Централизованное управление доступом к шине и
Децентрализованное управление доступом к шине

В зависимости от того, присутствуют ли механизмы управления в системе только один раз (централизованный) или более одного раза (децентрализованный).

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

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

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

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



3. Кадр сообщения для стандартного формата (CAN Specification 2.0A)

Форматы сообщений.

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

Сообщение в стандартном формате начинается с стартового бита «начало кадра», за ним следует «поле проверки», которое содержит идентификатор и бит «RTR» (запрос удаленной передачи), который указывает, является ли это кадр с данными или кадр запроса без каких-либо байтов данных (кадр удаленного запроса).

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

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

Поле «ACK» содержит слот ACK (1 бит) и разделитель ACK (один рецессивный бит). Бит в слоте ACK отправляется как рецессивный бит и перезаписывается в качестве доминантного бита теми приемниками, которые на этот момент времени приема данных приняли их корректно(правильно) (положительное подтверждение). Правильные сообщения подтверждаются приемниками независимо от результата приемочной проверки. Конец сообщения обозначается «конец кадра». «Перерыв» - это минимальное количество периодов битов, разделяющих последовательные сообщения. Если какой-либо станции нет следующего доступа к шине, шина остается бездействующей («bus idle»).

Обнаружение и сигнализация об ошибках.

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

Циклическая проверка избыточности (CRC) CRC защищает информацию в кадре путем добавления избыточных проверочных битов на конце передачи. На конце приемника эти биты повторно вычисляются и проверяются на соответствие принятым битам. Если они не согласны, произошла ошибка CRC. Проверка кадра - этот механизм проверяет структуру передаваемого кадра, проверяя битовые поля на фиксированный формат и размер фрейма. Ошибки, обнаруженные при проверке кадров, обозначаются как «ошибки формата».
Ошибки ACK. Как уже упоминалось выше, полученные кадры подтверждаются всеми получателями посредством «положительного подтверждения». Если не получено подтверждение передатчиком сообщения (ошибка ACK), это может означать, что есть ошибка передачи, которая была обнаружена только получателями, что поле ACK было повреждено или что нет приемников.

Протокол CAN также реализует два механизма обнаружения ошибок на уровне битов.

Мониторинг. Способность передатчика обнаруживать ошибки основана на контроле сигналов шины: каждый узел, который передает, также наблюдает за уровнем шины и, таким образом, обнаруживает различия между отправленным битом и полученным битом. Это обеспечивает надежное обнаружение всех глобальных ошибок и ошибок, локальных для передатчика.
Набивка бит - кодирование отдельных битов проверяется на уровне битов. Битовое представление, используемое CAN, - это кодирование NRZ (non-return-to-zero), которое гарантирует максимальную эффективность в кодировании битов. Края синхронизации генерируются посредством заполнения битов, то есть после пяти последовательных равных битов отправитель вставляет в поток битов бит информации с дополнительным значением, которое удаляется приемниками. Проверка кода ограничивается проверкой соблюдения правила заполнения. Если одна или несколько ошибок обнаруживаются по меньшей мере одной станцией (любой станцией) с использованием указанных выше механизмов, текущая передача прерывается отправкой «флага ошибки». Это предотвращает прием другими станциями сообщений и, таким образом, обеспечивает согласованность данных на протяжении всей сети.

После прекращения передачи ошибочного сообщения отправитель автоматически повторяет попытку передачи (автоматический запрос повторения). Может снова возникнуть конкуренция за распределение шины. Как правило, повторная передача начинается в течение 23-битных периодов после обнаружения ошибки; В особых случаях время восстановления системы составляет 31 бит.

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

Надежность данных протокола CAN:

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

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



4. Вероятность остаточной ошибки как функция вероятности ошибки бита

Вычисление вероятности остаточной ошибки требует классификации ошибок и того, что весь путь передачи описывается моделью. Если мы определим вероятность остаточной ошибки CAN как функцию вероятности ошибки в битах для длин сообщений от 80 до 90 бит, для системных конфигураций, например, пяти или десяти узлов и с частотой ошибок 1/1000 (ошибка в одном сообщении из каждой тысячи), то максимальная вероятность ошибки в битах составляет приблизительно от 0,02 – до порядка 10^-13. Исходя из этого, можно рассчитать максимальное количество необнаруживаемых ошибок для данной сети CAN.

Например, если сеть CAN работает со скоростью передачи данных 1 Мбит/с, при среднем использовании пропускной способности шины 50%, при общем сроке службы 4000 часов и при средней длине сообщения 80 бит, то общее число Передаваемых сообщений составляет 9x10^10. Статистическое число необнаруженных ошибок передачи в течение срока эксплуатации, таким образом, составляет менее чем порядка 10^-2. Или, иначе говоря, с продолжительностью работы восемь часов в день на 365 дней в году и частотой ошибок каждые 0,7 с, одна необнаруженная ошибка происходит раз в тысячу лет (статистическое среднее значение).

Сообщения CAN расширенного формата

Подкомитет SAE «Грузовые автомобили и автобусы» стандартизовал сигналы и сообщения, а также протоколы передачи данных для различных скоростей передачи данных. Стало очевидно, что стандартизацию такого рода легче реализовать, когда доступно более длинное поле идентификации.

Чтобы поддержать эти усилия, протокол CAN был расширен за счет введения 29-битного идентификатора. Этот идентификатор состоит из существующего 11-битного идентификатора (базового ID) и 18-битного расширения (ID-расширения). Таким образом, протокол CAN позволяет использовать два формата сообщений: StandardCAN (Версия 2.0A) и ExtendedCAN (Версия 2.0B). Поскольку два формата должны сосуществовать на одной шине, устанавливается, какое сообщение имеет более высокий приоритет на шине в случае коллизий доступа к шине с форматами сглаживания и одним и тем же базовым идентификатором: стандартное сообщение всегда имеет приоритет над сообщением в расширенном формате.

CAN-контроллеры, которые поддерживают сообщения в расширенном формате, могут также отправлять и получать сообщения в стандартном формате. Только сообщения в стандартном формате могут передаваться по всей сети, если в этой сети используются CAN-контроллеры, которые поддерживают только стандартный формат (Версия 2.0A). Сообщения в расширенном формате будут неправильно поняты. Однако есть CAN-контроллеры, которые поддерживают только стандартный формат, но распознают сообщения в расширенном формате и игнорируют их (версия 2.0B пассивная).

Различие между стандартным форматом и расширенным форматом осуществляется с использованием бита IDE (бит расширения идентификатора), который передается как доминирующий в случае кадра в стандартном формате. Для кадров в расширенном формате это рецессивно. Бит RTR передается доминантно или рецессивно в зависимости от того, передаются ли данные или запрашивается конкретное сообщение от станции. Вместо бита RTR в стандартном формате бит SRR (замена удаленного запроса) передается для кадров с расширенным идентификатором. Бит SRR всегда передается как рецессивный, чтобы гарантировать, что в случае проверки стандартный кадр всегда имел приоритетное распределение шины к расширенному кадру, когда оба сообщения имеют одинаковый базовый идентификатор.

В отличие от стандартного формата, в расширенном формате за битом IDE следует 18-битный ID-номер, бит RTR и зарезервированный бит (r1).

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



5. Кадр сообщения для расширенного формата (CAN Specification 2.0A)

Реализации протокола CAN

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

CAN-контроллер с промежуточным буфером

Контроллеры CAN с промежуточным буфером (ранее называемые чипами basicCAN) реализовали в качестве аппаратного обеспечения логику, необходимую для создания и проверки потока битов согласно протоколу. Однако администрирование наборов данных, которые должны быть отправлены и получены, в частности, фильтрация приёма осуществляется только CAN-контроллером.

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

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

CAN-контроллер с хранилищем объектов.

Объекты CAN состоят в основном из трех компонентов: идентификатора, кода длины данных и фактических полезных данных.

CAN-контроллеры с хранилищем объектов (ранее называемые fullCAN) функционируют как CAN-контроллеры с промежуточными буферами, но также управляют определенными объектами. Там, где есть несколько одновременных запросов, они определяют, например, какой объект должен быть передан первым. Они также выполняют фильтрацию принятия для входящих объектов. Интерфейс к следующему микроконтроллеру соответствует ОЗУ. Данные, подлежащие передаче, записываются в соответствующую область ОЗУ, полученные данные считываются из области ОЗУ, соответственно. Микроконтроллер должен управлять только несколькими битами (например, запросом передачи).

Контроллеры CAN с хранилищем объектов рассчитаны на максимальную нагрузку от локального микроконтроллера. Однако эти CAN-контроллеры требуют большей площади кристалла и, следовательно, более дороги. В дополнение к этому, они могут администрировать только ограниченное количество чипов(микроконтроллеров).

На сегодняшний день доступны контроллеры CAN, которые сочетают в себе оба принципа реализации. Они имеют хранилище объектов, по крайней мере одно из которых спроектировано как промежуточный буфер. По этой причине больше нет смысла дифференцировать basicCAN и fullCAN.

CAN подчиненные контроллеры для функций ввода / вывода.

Также как CAN-контроллеры, которые поддерживают все функции CAN-протокола, есть CAN-чипы, для которых не требуется следующий за ним микроконтроллер. Эти CAN-чипы называются SLIO (последовательное соединение ввода / вывода). CAN-чипы являются подчиненными и должны управляться CAN-мастером(центральный, основной микроконтроллер в сети).

Физическое соединение CAN

Скорости передачи данных (до 1 Мбит / с) требуют достаточно крутого наклона импульса, который может быть реализован только с использованием силовых элементов. В принципе возможно несколько физических соединений. Тем не менее, пользователи и производители группы «CAN in Automation» рекомендуют использовать схемы драйверов в соответствии с ISO 11898.

Встроенные микросхемы драйверов в соответствии с ISO 11898 доступны от нескольких компаний (Bosch, Philips, Siliconix и Texas Instruments). Международная группа пользователей и производителей (CiA) также определяет несколько механических соединений (кабель и разъемы).



6. Physical CAN Connection according to ISO 11898

С уважением, перевод предоставлен коллективом мастерской