CAN-технологии: для начинающих и принимающих решение

№ 4’2002
В предыдущей статье обсуждались вопросы, где и зачем применяется технология CAN, что представляет собой некоммерческая Международная организация CAN in Automation (CiA) и где можно получить развернутую информацию о применении CAN. Напомним, что в интернете информацию о деятельности и условиях вступления в CiA можно найти по адресам www.can?cia.ru и www.can?cia.de.

В предыдущей статье обсуждались вопросы, где и зачем применяется технология CAN, что представляет собой некоммерческая Международная организация CAN in Automation (CiA) и где можно получить развернутую информацию о применении CAN. Напомним, что в интернете информацию о деятельности и условиях вступления в CiA можно найти по адресам www.can?cia.ru и www.can?cia.de.

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

Какие дополнительные источники информации можно использовать при работе с CAN? В первую очередь, это технические описания на специализированные микросхемы (Data Sheets), руководства по их применению (User Guides) и замечания по применению (Application Notes). Особое внимание следует уделить примерам по программированию. Достаточно полно, включая подробные примеры по программированию, работа с CAN описана для микроконтроллеров фирмы Infineon. Все документы доступны в интернете. Про CAN издано несколько хороших книг на английском языке, в том числе о создании устройств с применением CAN и CANopen [1, 2]. Книги на немецком и английском языках распространяет ассоциация CiA. Их можно также приобрести через российских членов CiA, в частноcти в ООО «Марафон» (can.marathon.ru). К сожалению, сегодня нет ни одного издания по CAN на русском языке, хотя переговоры о переводе книг ведутся.

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

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

CAN-адаптеры персональных компьютеров

В настоящее время в России автору известно два производителя адаптеров сети CAN, которые предлагают их на рынке: фирма «Элкус» из Санкт-Петербурга (www.elcus.ru) и компания «Марафон» из Москвы (can.marathon.ru). Это адаптеры в формате ISA-8, ISA-16, microPC (фактически ISA-8), PC-104 (фактически ISA-16), PCI и VME. Есть и другие российские компании, которые разработали адаптеры сети CAN для промышленных и офисных компьютеров для внутреннего применения.

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

Адаптеры для CAN-сети можно разделить на два типа: устанавливаемые внутрь ПК и подключаемые к внешним интерфейсам ПК. К адаптерам первого типа относятся адаптеры в формате ISA и PCI. К адаптерам второго типа — подключаемые к интерфейсам LPT, RS-232 и USB. Адаптеры для ПК делятся на активные и пассивные. Активные адаптеры характеризуются наличием встроенного микроконтроллера, обеспечивающего предварительную обработку пакетов, поступающих из сети CAN и в сеть CAN из ПК. В комплект поставки входит специализированное программное обеспечение (firmware) в исходных кодах для загрузки в микроконтроллер, встроенный в CAN-адаптер. Пассивные адаптеры представляют собой устройства, преобразующие шину однокристального CAN-контроллера в шину ПК и отображающие внутреннюю память контроллера на область памяти ПК. В этом случае алгоритмы приема и передачи кадров, а также обработки ошибок реализуются пользовательской программой, работающей на ПК.

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

Отдельное место на рынке занимают адаптеры, подключаемые к внешним интерфейсам ПК. Эти адаптеры вряд ли могут быть применены в условиях цеха или полевых условиях. Однако для применения в лабораторных стендах, для тестирования и проектирования CAN-устройств они являются достаточно удобными. Наиболее перспективным является использование адаптеров сети CAN, подключаемых к интерфейсу USB. Шина USB до сих пор не устоялась (по сравнению с внутренними шинами ПК, такими как ISA и PCI) и находится в состоянии непрерывного развития. Это может привести в будущем к проблеме аппаратной и программной совместимости адаптеров USB-CAN, приобретенных сегодня. К сожалению, сегодня на российском рынке можно приобрести адаптеры CAN на USB только импортного производства — фирмы Sys Tec Electronics и IXXAT.

Рассмотрим один из примеров, как ПК с установленным адаптером CAN-сети может быть использован для проектирования сложной распределенной системы управления.

Эмуляция сети CAN на бездисковых станциях под управлением ОС Linux

Сеть персональных компьютеров, объединенных одновременно сетью CAN и локальной сетью Ethernet, может быть эффективно использована для моделирования распределенной системы управления, в которой для обмена между компонентами системы используется сеть CAN-bus. В этом случае каждый из ПК имитирует отдельный узел CAN-сети. Локальная сеть Ethernet позволяет централизованно управлять узлами CAN-сети, модернизировать программы, имитирующие поведение CAN-узлов и осуществлять контроль за состоянием CAN-узлов. Эта методика была опробована в НИИЯФ им. Д. В. Скобельцина МГУ совместно с ООО «Марафон» при разработке распределенной системы диагностики пучка в ускорителе электронов — разрезном микротроне на 70 МэВ [3]. В качестве ПК, имитирующих отдельные узлы системы, используются бездисковые IBM-совместимые компьютеры. В бездисковых станциях устанавливаются только два адаптера — CAN-cети и локальной сети. Видеоадаптер, жесткий диск и другие периферийные устройства в ПК не устанавливаются. В адаптер локальной сети устанавливается ПЗУ для загрузки ПК по сети с использованием протокола BOOTP. Бездисковые станции загружаются с центрального единого сервера. И сервер, и бездисковые станции работают под управлением операционной системы Linux с расширением реального времени RTLinux. После загрузки операционной системы по сети и разворачивания ее в памяти бездисковой станции производится монтирование тома сетевой файловой системы (NFS) на центральном сервере, и станция получает доступ к «своей» прикладной программе, имитирующей определенный узел CAN-сети. Централизованная загрузка позволяет менять образ операционной системы сразу для всех станций и оперативно в одном месте менять прикладное программное обеспечение, имитирующее узел CAN-сети. Прикладная программа, реализующая функциональность CAN-узла, разрабатывается на ANCII С под компилятор gnu, что позволяет потом достаточно быстро портировать исходный код под один из компиляторов для встраиваемых микроконтроллеров. По мере появления готовых компонентов будущей распределенной системы бездисковые ПК могут ими заменяться.

Данная методика может быть рекомендована для имитационного моделирования сложных распределенных систем управления на транспорте, в промышленности, в автоматизации больших экспериментальных установок.

Разработка устройства с CAN для встраиваемых приложений

Следующий шаг в освоении технологии СAN — разработка законченного встроенного или отдельно стоящего устройства на основе микроконтроллера, использующего протокол CAN для связи с другими компонентами системы управления и с управляющим компьютером. Это может быть контроллер технологических параметров, таких как температура, давление и т. п., устройство управления или привод механизма. Для создания такого устройства необходимо выбрать управляющий микроконтроллер и CAN-контроллер. Сегодня на мировом рынке представлено несколько стандартных аппаратных реализаций CAN-контроллеров — микросхем, аппаратно реализующих протокол CAN. Сравнение особенностей построения различных CAN-контроллеров — тема отдельной статьи, отметим только, что на рынке представлены как CAN-контроллеры в виде отдельных микросхем (Intel, Infineon, Microchip, Philips), так и CAN-контроллеры, интегрированные на одном кристалле с микроконтроллерами различной архитектуры (Fujitsu, Hitachi, Motorola, NEC, Infineon, Philips и др.). Отдельное место занимают реализации CAN-контроллеров в виде логических моделей для реализации в составе микросхем программируемой логики типа FPGA или ASIC [4].

Для организации физической среды передачи необходимо выбрать один из имеющихся на рынке CAN-трансиверов, в зависимости от планируемой скорости передачи по CAN-сети, требуемой надежности и напряжения питания системы. Список доступных на сегодня микросхем CAN-контроллеров, микроконтроллеров со встроенным CAN-контроллером и CAN-трансиверов можно найти по адресу www.can-cia.ru в разделе «Продукты». В ежегодном издании CiA «Embedded CAN Directory» опубликован список всех CAN-совместимых компонентов, доступных на рынке. Последний номер журнала (сентябрь 2001 г.) можно получить в ООО «Марафон».

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

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

Исключая специализированные реализации прикладного уровня, такие как CAN-Aerospace, можно порекомендовать только два наиболее широко используемых и доступных на рынке протокола: DeviceNet и CANopen. Обсуждение областей применения прикладных протоколов CAN и их функциональных особенностей — отдельная большая задача и тема будущих публикаций. Некоторые публикации уже появились на русском языке [5, 6]. Дополнительную информацию можно посмотреть по адресу http://www.can-cia.ru, где представлены материалы первой российской школы-семинара по CAN-технологиям.

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

Необходимо отметить, что в силу особенности областей применения CAN (автомобильный, железнодорожный и морской транспорт, машиностроение, аэрокосмические системы и др.) прикладное программное обеспечение, реализующее прикладной протокол CAN, и исходные коды этих программ носят характер стратегического продукта. Поэтому достаточно остро сегодня в нашей стране стоит вопрос появления на рынке лицензионно чистой российской реализации таких прикладных протоколов CAN, как DeviceNet и CANopen. Известно, что российские фирмы занимаются в настоящее время разработкой этих програмных продуктов. Фирма «Текон» (www.tecon.ru) разработала стек протокола CANopen для внутреннего применения. Фирма «Марафон» (can.marathon.ru) разработала стек протокола DeviceNet и ведет в настоящее время работы над созданием портируемого исходного кода протоколов DeviceNet и CANopen при финансовой поддержке Государственного фонда содействия развитию малых форм предприятий в научно-технической сфере (http://www.fasie.ru).

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

Литература

  1. Etschberger K. Controller Area Network. IXXAT Press. 2001.
  2. Farsi M., Barbosa M. CANopen Implementation applications to industrial networks. Research Studies Press. 2000.
  3. http://can.marathon.ru/projects/can-diag.html
  4. http://www.xilinx.com/products/logicore/alliance/sican/canbus.pdf
  5. Грибанов М. В., Калачев Д. П., Третьяков С. А. CAL-CAN протокол прикладного уровня для индустриальных приложений. http://www.datamicro.ru/dm/library/pdf/991124.doc-03.pdf
  6. А. Щербаков. Сеть CAN: популярные прикладные протоколы // ChipNews. 1999. № 5.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *