Интерфейс и протокол CAN

Интерфейс CAN (Controller Area Network, локальная сеть контроллеров) предназначен для организации высоконадежных и недорогих каналов связи в распределенных системах управления. Он позволяет строить как дешевые мультиплексные каналы, так и высокоскоростные сети.

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

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

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

конфигурационная гибкость;

получение сообщений всеми узлами с синхронизацией по времени;

неразрушающий арбитраж доступа к шине;

режим мультимастер;

обнаружение ошибок и передача сигналов об ошибках;

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

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

работает по витой паре на расстоянии до 1 км.

Типичными примерами применения CAN-сети являются системы контроля и управления текстильным оборудованием, производимого компаниями Cezoma, Lindauer Dornier, Rieter,
Schlafhorst, Sulzer.

Среди других важных областей применения сети нужно отметить промышленную автоматизацию и системы управление роботами. ABB, Bosch, Engel и другие компании уже применяют CAN в своем оборудовании. Edeka использует CAN в своем центре логистики Не обходятся без применения CAN-технологий системы автоматизации и жизнеобеспечения зданий, где они используются в управлении кондиционированием (Colt
International), поддержания температуры (Buderus), интегрированного контроля состояния помещений и освещения.

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

Устройства в CAN-системе соединяются по шине, состоящей из трех проводов (2 сигнальных и одни общий).

Сообщения данных, передаваемые из любого узла по
CAN-шине, могут содержать от 1 до 8 байт. Каждое сообщение помечено идентификатором, который в сети является уникальным (например, «Нагрев до 240», «Отказ нагрева», «Бункер загружен» и т. д.). При передаче другие узлы сети получают сообщение, и каждый из них проверяет идентификатор. Если сообщение имеет отношение к данному узлу, то оно обрабатывается, в противном случае – игнорируется. CAN-контроллер каждого из устройств может обрабатывать одновременно несколько идентификаторов (например, контроллеры Siemens и Intel могут обрабатывать до 15 идентификаторов). Таким образом, в каждом из устройств можно легко организовать несколько виртуальных каналов обмена информацией с различными устройствами, включая каналы одновременного получения сообщении.

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

CAN содержит 5-ступепчатый механизм обнаружения ошибок:

циклический контроль по избыточности (CRC);

контроль передаваемого поля битов;

контроль сигнала «Подтверждение приема»;

текущий контроль логического уровня битов;

контроль заполнения битов.

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

Физический уровень CAN-интерфейса определяется стандартом ISO 11898 и характеризуется следующими возможностями: дифференциальное включение приемопередатчиков обеспечивает подавление синфазной помехи, при этом уровень сигналов составляет 1/3 от значения напряжения питания, причем, само напряжение питания не определяется жестко.

Например, типичные значения при напряжении питания +5 В приведены на рис. 5.18, причем доминирующим уровнем является нижний уровень, а рецессивным, соответственно, верхний;

максимальное расстояние между узлами – до 1 км;

скорость обмена до 1 Мбит/с при длине линии 60 м;

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


функции CAN, либо между микросхемой и остальной системой (рис. 5.19).

В CAN-протоколе определены следующие типы фреймов:

фрейм данных перемещает данные с передатчика на приемник (приемники);

удаленный фрейм запрашивает передачу фрейма данных, связанного с определенным идентификатором;

фрейм ошибки выражает, какой узел обнаружил ошибку шины/сети;

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

Рис. 5.18. Сигнальные уровни на CAN-шине

Рис. 5.19. Два типа гальванической развязки

Рассмотрим подробнее фрейм данных (рис. 5.20).

Рис. 5.20. Управляющее поле фрейма данных (окончание)

Он состоит из стартового поля SOF, поля арбитража Arbitration Field, управляющего поля Control Field, поля данных Data Field, поля контрольной суммы CRC, поля подтверждения ACK Field, поля конца фрейма EOF.

Поле SOF (Start of Frame) находится в начале фрейма данных и удаленного фрейма и содержит один доминирующий бит.

Поле арбитража Arbitration Field содержит 11-битовый идентификатор и RTR-бит, показывающий, является ли данный фрейм фреймом данных или удаленным фреймом. Идентификатор предназначен для адресации сообщений и используется механизмом арбитража.

Управляющее поле Control Field (см. рис. 5.20) содержит
6 битов, из которых 4 бита (DLC0-DLC4) составляют поле Data Length Code, показывающее количество байтов данных, которое будет передаваться в поле данных; два других бита зарезервированы для следующих редакций протокола.

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

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

Поле подтверждения ACK Field (см. рис. 5.21) содержит участки ACK Slot и ACK Delimiter и выполняет следующую функцию: передающий узел посылает по одному рецессивному биту на каждом из участков, а приемник, если он принял сообщение без сбоев, устанавливает на линии доминирующий бит в поле ACK Slot. При наложении рецессивного и доминирующего уровней на линии устанавливается доминирующий, и это событие сигнализирует передающему узлу о том, что передача прошла нормально и повтор не требуется.

Поле конца фрейма EOF содержится в фрейме данных и удаленном фрейме и состоит из семи рецессивных битов.

Рис. 5.21. Поле подтверждения фрейма данных

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

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

Поле арбитража, включенное во все фреймы данных, состоит из: 11-битового поля идентификатора; RTR-бита.

RTR-бит указывает, является ли фрейм фреймом данных или удаленным фреймом.

11-битовое поле идентификатора передается от старшего к младшему значащему биту. Доминирующий уровень – логический 0. Одновременная передача бита с доминирующим уровнем (логический 0) и бита с рецессивным уровнем (логическая 1) дает в результате уровень логического 0.

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

Важно следующее: идентификатор с самым низким значением выигрывает арбитраж.

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

При этом адрес приемника устанавливается в самом приемнике путем настройки входных фильтров соответствующих микросхем.

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

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

фиксированные – фильтры, которые требуют, чтобы биты соответствовали точно один к одному (one-for-one);

Mask-and-Match (маскируемые) – фильтры, которые применяют маску к полю идентификатора, прежде чем он сравнивается с приемным регистром кода.

В настоящее время СAN-протокол активно используется в индустриальных сетях. Такие известные фирмы, как Hoheywell и Allan_Bradley, разработали и поддерживают сетевые протоколы верхнего уровня SDS и DeviceNet, причем последний является открытым и на данный момент более 200 фирм выпускают и разрабатывают свои изделия в этом стандарте. Кроме того, достаточно известными в Европе являются стандарты сети верхнего уровня CanOpen, CAL (Германия) и CanKingdom (Швеция). Все эти сети используют CAN-протокол на физическом и транспортном уровнях. Ряд отечественных фирм также выпускает изделия с CAN-протоколом, в том числе в популярном формате MicroPC.



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  




Подборка статей по вашей теме: