Первая версия интерфейса CAN была разработана крупным игроком на рынке автомобильной электроники – фирмой Bosch – для бортовых систем автомобилей. В середине 80-х годов прошлого столетия начала интенсивно развиваться автомобильная электроника, появились противоблокировочные тормозные системы, системы управления двигателем, средства регулирования тягового усилия, кондиционирования и пр. Все это требовало организации обмена данными между распределёнными по машине приборами, датчиками и исполнительными механизмами. Применявшиеся до этого не объединенные в единый цифровой интерфейс аналоговые и цифровые линии связи (доставляющие сигналы "как есть" со скоростью, не превышающей 10 байт/с) не справлялись с резко возросшим потоком данных, объем которых превысил разумный предел (рис.1). Специфика автомобильных кабельных сетей (ограничения на толщину кабелей и на механические воздействия на них) еще больше усугубляла эту проблему. Помимо увеличения стоимости кабельного хозяйства автомобиля, все возрастающее число линий связи вызвали серьезные проблемы снижения надежности, затруднения диагностики и ремонта.
Более десяти лет в промышленности используется протокол CANopen, основанный на CAN-протоколе прикладного уровня. Он получил широкое распространение в самых разнообразных системах: от бортовых корабельных систем навигации и управления, больших оптических телескопов до медицинской аппаратуры, оборудования бумажной и текстильной отраслей промышленности и даже детских игрушек. Объединяя с помощью CAN-технологии исполнительные механизмы, датчики и преобразователи, поставщики оборудования с компьютерным управлением смогли сократить сроки проектирования (поскольку на рынке имеются необходимые компоненты многих производителей), снизить затраты на соединения (благодаря наличию легких кабелей и соединителей) и улучшить надежность (в результате уменьшения числа соединений).
Сегодня продажи продукции с CAN-технологией растут (продажи CANopen-устройств в 2004 году возросли по сравнению с 2003-м на 8,7%. Ожидается, что в 2005-м они увеличатся уже на 29,5%). Последняя версия протокола CAN 2.0 В позволяет увеличить скорость связи в восемь раз, по сравнению с первой версией. Ведутся работы по стандартизации изделий, совместимых с CAN и IEEE 1394. Регулярно проводятся международные конференции разработчиков (последняя прошла с 8 по 10 марта этого года в Риме).
Рассмотрим слагаемые успеха этого популярного интерфейса.
ПОСЛЕДОВАТЕЛЬНЫЙ ИНТЕРФЕЙС
Основополагающие решения формирования CAN-интерфейса определила специфика автомобилестроения. Выбор последовательного метода передачи информации в этом протоколе (рис.2) обусловлен необходимостью минимизации кабельного хозяйства автомобиля. Автомобильный кабель должен быть стойким к истиранию, а разъём – устойчивым к вибрации и прочным, оба компонента должны быть малогабаритными и недорогими. Параллельный интерфейс, с его громоздким хозяйством, здесь практически неприменим (см. рис.1).
ПОМЕХОЗАЩИТА
Высокий уровень помех автомобильных систем обусловил выбор низкоомной линии обмена данными. В шинных формирователях CAN-интерфейса один из логических уровней представлен высоким напряжением и малым током линии, а также высоким сопротивлением его выходного каскада. Он назван "recessive" (рецессивным, отступающим, удаляющимся). Другому уровню соответствует низкое напряжение и высокий ток линии, низкое сопротивление выходного каскада. Он назван "dominant" (основным, доминирующим, преобладающим) уровнем. Будем считать "recessive" – уровнем логической "1", а "dominant" – уровнем логического "0".
Следует отметить, что помехозащита линии с шинными формирователями на двухтактных каскадах выше, чем в предложенной схеме. Но низкоомные резисторы на концах линии в значительной степени снижают эту разницу. Преимущество выбранной реализации интерфейса (см. рис.2), где все порты равноправны (а таковым является CAN),– в принципиальной невозможности возникновения опасных сквозных токов при одновременной работе двух передатчиков. Разработчики стандарта смогли "выжать" из этого преимущества значительную экономию шинного времени и числа линий.
УПРАВЛЕНИЕ ДОСТУПОМ К ШИНЕ: СХЕМА АРБИТРАЖА
Упрощённая схема выходных каскадов двух узлов и линии обмена данными CAN показана на рис.3. Выбор "токовой петли" для объединения узлов сети, двухтактной схемы или применение фазоманипулированного кода (как в стандарте Манчестер-II) привел бы к увеличению стоимости реализации. В то же время, достоинства CAN можно эффективно реализовать, выполнив выходные каскады по схеме с открытым коллектором и используя согласующие сопротивления линии в качестве нагрузки. (На самом деле всё несколько сложнее, как видно из рис.2, но здесь удобно рассмотреть упрощённую модель линии.)
Линия представляет собой логический элемент "монтажное И". Из таблицы истинности рис.3 видно, что уровень "логической 1" формируется на линии Uвых только тогда, когда уровни "логической 1" присутствуют на всех входах. А уровень "логический 0" на выходе формируется из уровня "логического 0" на любом из входов, т.е. "логический 0" на любом входе имеет однозначный приоритет (не зря он называется "dominant"). В любой момент времени любой узел может выставить на линии уровень "логического 0", что не приводит к образованию опасных сквозных токов и других конфликтов линии.
Все узлы CAN, в том числе ведущий передачу, анализируют логический уровень на линии. На основе этого анализа передатчик делает выводы об "отношении" к информации, поступающей от других узлов. Этот механизм широко применяется в CAN-интерфейсе для арбитража шины и обнаружения ошибок передачи. А поскольку он работает в ходе передачи сообщения, то является очень экономичным по времени: отдельная линия и отдельные приемники и передатчики в узлах не нужны.
Рассмотрим арбитраж шины (рис.4). В CAN протоколе сообщения не являются адресными. В них предусмотрен “идентификатор”, содержащий адрес регистра передачи. Наиболее приоритетным считается сообщение с численно меньшим идентификатором. Все узлы синхронизируют работу своих тактовых генераторов по отношению к перепадам сигналов на линии. Перед передачей сообщения узел проверяет линию на свободность. Таким образом, несколько узлов могут одновременно начать выдачу сообщений, передав стартовый бит с уровнем "логического 0", после чего линия уже не считается свободной. Заняв линию, узлы приступают к передаче идентификатора, начиная со старшего бита. Для случая, представленного на рис.4, это делают одновременно два узла. Пока идентификаторы побитно совпадают, одновременная передача сообщений остаётся незамеченной для всех узлов сети, в том числе и передающих. Когда же один из узлов передаёт уровень "логической 1", а другой – уровень "логического 0" на линии, как рассматривалось выше, формируется уровень "логического 0". Узел, передавший уровень "логического 1", а зафиксировавший уровень "логического 0", прекращает передачу. Идентификатор его сообщения численно больше идентификатора, передаваемого другим узлом, который продолжает передачу более приоритетного сообщения. Таким образом, приоритетный узел был выявлен без потери времени на арбитраж простым побитным сравнением идентификаторов (т.е. приоритетов) непосредственно в ходе передачи.
СИГНАЛИЗАЦИЯ ОБ ОШИБКАХ ПРИЕМА
Похожий механизм используется при сигнализации об ошибках приёма. При одновременной передаче бита узел, обнаружив ошибку, выставляет на линии доминирующий уровень "логического 0". Передатчик, задающий уровень "логической 1", фиксирует несоответствие передаваемого сигнала сигналу на линии и прекращает передачу. Это обеспечивает непротиворечивость данных в сети: сообщение либо принято всеми узлами, либо не принято ни одним. Тот же или другой передатчик начинает новую попытку передачи сообщения в освободившуюся линию. В зависимости от числа попыток передатчик делает вывод о своей исправности. Для гарантии возможности сигнализации об ошибках в структуре передаваемого сообщения предусмотрены биты, которые передатчик всегда устанавливает равными уровню "логической 1" (например, бит после поля контрольной суммы). Эта удачная находка значительно увеличила шансы на выживание протокола CAN в динамично развивающейся автомобильной отрасли.
ОРГАНИЗАЦИЯ ОБМЕНА ДАННЫМИ
По логике организации обмена данными CAN отличается от традиционных интерфейсов. Организация обмена – событийно-ориентированна. Это означает, что как только узел получает сообщение о событии, о котором необходимо информировать другие узлы системы (с учетом описанной выше процедуры арбитража), он начинает широковещательную передачу сообщения (рис.5). Такая процедура выполняется без программного опроса, прерываний и без контроллера, управляющего обменом. В результате возрастает живучесть системы: даже будучи разделенной на две части, она сохраняет жизнеспособность каждой из них ("принцип дождевого червя"). При этом обе подсистемы смогут функционировать независимо. Другое следствие равноправности всех узлов – экономия времени на доставку сообщения до адресата за счёт децентрализации системы.
Как уже отмечалось, в CAN-протоколе понятие "адрес" отсутствует, а имеется понятие "идентификатор", который фактически является адресом регистра передачи (в узлах CAN-интерфейса нет программно-доступных по записи регистров приёма). Каждый идентификатор жёстко связан с массивом данных, который может быть передан в линию при инициации передачи соответствующим узлом. Остальные узлы "прослушивают" линию и анализируют идентификаторы передаваемых сообщений, принимая только "свои" данные и игнорируя остальные. Данные могут одновременно принимать несколько узлов. Это значительно ускоряет работу интерфейса благодаря отсутствию дублирования передачи одинаковых данных разным узлам.
В событийно-ориентированную логику работы интерфейса органично включена процедура запроса данных. Если узлу потребовались данные, формируемые другим узлом, он посылает сообщение с запросом этих данных, указывая в нём идентификатор. В ответ узел-держатель данных передаёт соответствующее сообщение. Событие, вызвавшее необходимость в данных, инициирует их доставку.
ЭЛЕМЕНТНАЯ БАЗА
И, наконец, успеху внедрения CAN-протокола способствовало наличие на рынке достаточно дешевой элементной базы. Многие мировые производители полупроводниковых приборов, в том числе Actel, Altera, Bosh, Dallas Semiconductor/Maxim, Fujitsu, Hitachi, Infineon, Intel, Texas Instruments, выпускают широкую номенклатуру микросхем контроллеров и интерфейсов, реализующих этот протокол. Так, компания Infineon предлагает микросхему низкоскоростного трансивера типа TLE 6255, специально спроектированную для несимметричных CAN-систем. Скорость передачи данных, обеспечиваемая трансивером, составляет 33 Кбит/с. Для загрузки программного обеспечения или диагностических данных возможна работа со скоростью передачи до 100 Кбит/с. В микросхеме предусмотрены такие функции, как управляемая скорость нарастания выходного сигнала, входные двухуровневые режимы запуска и ожидания, обеспечивающие низкие энергозатраты в режиме ожидания (30 мкА), защита от короткого замыкания, перегрева и воздействия электростатического разряда напряжением до 4 кВ (рис.6). Напряжение питания микросхемы 5,5–28 В, диапазон рабочих температур -40–125°С.
Пример процессора с возможностями реализации CAN-протокола – микросхема C167CR компании Infineon. В микросхеме 16-разрядного микропроцессора объединены достоинства RISC-, CISC-процессоров, перспективных периферийных систем и CAN-модуль (версия 2.0 В), поддерживающий до 15 объектов сообщений и пригодный для применения в автомобильных и промышленных системах. В микросхему, работающую на тактовой частоте 33 МГц, входят СОЗУ емкостью 4 Кбайт, ПЗУ емкостью до 128 Кбайт, многофункциональные и специализированные периферийные устройства (рис.7). Напряжение питания микросхемы 5 В, диапазон рабочих температур -40–125°С.
ЗАКЛЮЧЕНИЕ
Спецификация CAN охватывает нижние, физический и канальный уровни обмена данными. На верхних уровнях в пределах одной сети могут действовать различные протоколы. Часть узлов может поддерживать один протокол, другая часть – другой, не мешая друг другу. В CAN-интерфейсе предусмотрена возможность использования идентификаторов двух стандартных длин. Оба идентифатора могут использоваться в одной сети. В сеть можно включать новые узлы, пока не наступит перегрузка сети по нагрузочной способности выходных каскадов и информационной пропускной способности. Они не будут мешать работе старых узлов, не потребуется даже их перепрограммирование. Эти свойства CAN-интерфейса особенно важны для приложений промышленной автоматизации, где возможности модификации системы высоко ценятся потребителями и активно продвигаются производителями оборудования.
Автор попытался объяснить причины успеха CAN-интерфейса на рынке и надеется, что каждый инженер, имеющий отношение к разработке и эксплуатации оборудования с таким интерфейсом, внимательно ознакомится с оригинальной документацией на него, с тем чтобы эффективнее и с меньшими усилиями выполнять свою работу.
Bosch. CAN specification. Version 2.
Сайт фирмы Bosch. www.bosch.com.
Сайт "Рынок микроэлектроники". Спецификации CAN www.gaw.ru/html.cgi/txt/interface/can/start.htm.
Эрглис К.Э. Интерфейсы открытых систем. Учебный курс. "Горячая линия – телеком".– Москва, 2000.
Новинки элементной базы.
www.vbnti.narod.ru.
Сайт компании Infineon. www.infineom.com