Предложенная Робертом Бошем в 1987 году система CAN оперировала короткими, длиной до 8 байт, сообщениями, поддерживала доступ в сеть многочисленных устройств (конфликты разрешались с помощью приоритетов) и отличалась высокой надежностью: каждое сообщение контролировалось 15-бит циклическим избыточным кодом. Уже в середине 1987 года фирма Intel выпустила первую CAN-микросхему модели 82526, выполнявшую все функции, необходимые для поддержки последовательной связи (передачу и прием сообщений, их фильтрацию, поиск передающего объекта и прерывания) при минимальном взаимодействии с хост-микроконтроллером или процессором. Вскоре микросхему CAN-контроллера 82С200 выпустила и компания Philips Semiconductor. Европейское отделение ISO приняло CAN в качестве сетевого протокола высокоскоростной передачи, и в 1991 году CAN-интерфейс был реализован в электронных системах автомобилей марки Mercedes Benz класса S. Сегодня микросхемы с CAN-интерфейсом выпускают более 20 фирм, и почти каждый легковой автомобиль, производимый в Европе, имеет по крайней мере одну CAN-сеть.
Хотя протокол CAN первоначально предназначался для применения в легковых автомобилях, он получил широкий спрос в самых разнообразных секторах рынка, особенно европейского. Уже в начале 90-х потребовалась стандартизация различных появившихся к тому времени решений по его реализации. В 1992 году была сформирована международная Ассоциация пользователей и производителей CAN-систем – CAN in Automation (CiA). Одной из первых задач CiA стала разработка стандарта прикладного уровня CAN (CAL), поскольку CAN-протокол, касающийся реализации уровня канала передачи данных, не содержал стандартов, описывающих процессы обмена объектами данных на прикладном уровне. Но, хотя протокол CAL и нашел применение в промышленных системах, каждому пользователю приходилось разрабатывать свой коммуникационный профиль в соответствии с конкретным приложением.
С 1993 года в рамках программы Европейского Сообщества Esprit, направленной на расширение исследований и ускорение внедрения информационных технологий, был образован консорциум во главе с компанией Bosh, целью которого стала разработка сетевого протокола на основе CAL, предназначенного для построения сетей производственных участков. Протокол получил название CANopen. После завершения проекта спецификация CANopen была передана CiA для дальнейшей доработки и технического обслуживания, и в 1995 году был выпущен полностью отредактированый и дополненный протокол CANopen. Окончательный вариант CANopen определял не только прикладной уровень и коммуникационный профиль (CiA DS 301), но и структуру программируемых систем и приборов (CiA 302 – структуру приборов и CiA 303-1 – рекомендации по выбору кабелей и соединителей), интерфейсные и прикладные профили (CiA 303-2). Благодаря этому всего за пять лет протокол CANopen стал ведущей стандартизированной сетью в Европе, а в конце 90-х годов его начали использовать во многих отраслях промышленности (производители печатающих устройств, корабельного, медицинского оборудования и другие).
Параллельно стандарту ЕС разработка CAN-протоколов высокого уровня велась и в США. Эти работы закончились появлением двух похожих, по крайне мере нижними коммуникационными уровнями, протоколов – DeviceNet и Smart Distributed System (SDS). Протокол DeviceNet, продвигаемый компанией Allen-Bradley (теперь входит в фирму Rockwell Automation), стал основным протоколом шинных систем средств промышленного производства в США, тогда как SDS практически остался внутренним протоколом компании-разработчика – Honeywell Microswitch. В результате сейчас существуют два стандартизованных, описываемых международным стандартом EN 50325-4 (на базе CiA DS 301) прикладных уровня – DeviceNet, оптимизированный для заводских систем автоматизации, и CANopen, предназначенный в основном для встроенных сетей управления машинами и механизмами всех видов.
CANopen – механизмы связи и протоколы
CANopen – сетевая технология, оптимизированная для применения в промышленных системах управления, и встроенных системах и сетях. Основа нижнего уровня CANopen – протокол CAN, реализуемый многими представленными на рынке дешевыми устройствами с низкой и средней производительностью. Поэтому CANopen удовлетворяет требованиям, предъявляемым к сетевым средствам связи оборудованием на основе 8- и 16-бит микроконтроллеров и системами с низкими энергозатратами.
Функциональные возможности протокола CANopen позволяют ведущему сетевому устройству конфигурировать каждый узел сети. При этом конфигурационные параметры задают режим работы прибора и определяют область записи данных сообщения (поле данных), конкретное сообщение (идентификатор сообщения) и время его запуска.
CANopen-устройство – устройство широкого применения, соединяющее CAN-интерфейс со специализированным портом ввода-вывода с помощью словаря объектов (Object Directory, OD). Каждое CANopen-устройство имеет свой OD, определяющий средства реализации приложения в терминах данных и конфигурации. Словарь разделен на две секции. Первая содержит информацию об устройстве (идентификатор устройства, имя изготовителя, параметры связи и т.п.), вторая описывает функциональные возможности устройств (рис.1). Сетевой доступ к прикладным объектам устройства (входным и выходным сигналам, его параметрам и функциям, переменным сети) предоставляют точки входа ("объект") в словаре объектов через так называемые объекты данных обслуживания (Service Data Objects, SDO). Точку входа ко всем коммуникационным объектам идентифицирует 16-бит индекс и 8-бит субиндекс (для матричных и структурных объектов). SDO используются прежде всего для передачи параметров в процессе конфигурирования устройства, а также для передачи сообщений. Протокол передачи SDO допускает любой размер объекта. Первый байт первого сегмента содержит необходимую информацию об управлении потоком данных, следующие три байта первого сегмента данных – индекс и субиндекс считываемого или записываемого входа словаря объектов. Последние четыре байта первого сегмента предназначены для данных пользователя. Второй и последующие сегменты (с тем же CAN-идентификатором) содержат управляющий байт и до семи байтов данных пользователя.
Помимо механизма передачи данных большой длины через SDO, протокол CANopen, подобно другим полевым шинам, определяет второй основной механизм передачи – высокоскоростной обмен сообщениями малой длины (максимум 8 байт) в реальном времени через так называемые объекты данных процесса (Process Data Objects, PDO), имеющих свой уникальный CAN-идентификатор (заголовок) сообщения. Идентификатор определяет приоритет сообщения, что гарантирует малое время отклика сетевых устройств (1,16–1,48 мс для одного ведомого устройства и сообщения длиной 1 байт). Передавать PDO может только один узел сети, принимать – несколько узлов (изготовителя/потребителя). Как правило, запуск передачи вызывает изменение состояния данных процесса, регулярно повторяющаяся команда таймера (например, передавать каждые 100 мс), запрос удаленного устройства или поступившее синхронизационное сообщение. Передача через PDO выполняется широковещательно без дополнительных издержек протокола.
Для сообщения о сбоях устройства стандарт CANopen резервирует инициируемые событиями высокоприоритетные аварийные сообщения (CAN-фрейм с 8-байт полем данных), способные вызвать прерывание. Аварийное сообщение пересылается только один раз при выявлении "факта ошибки". Если дальнейших сбоев прибора не фиксируется, дополнительные аварийные сообщения не передаются.
Центральное сообщение установки времени определяет общесистемное для прикладных устройств время вида "время-дата". Размер поля данных этого сообщения 6 байт. Функциональные возможности, требуемые для подготовки и старта распределенной системы автоматизации, задаются определенным в протоколе СAL механизмом управления сетью (Network Management, NMT). В NMT входят протоколы начальной загрузки, циклической защиты узлов и готовности связи (Node/Life-guarding и Heartbeat protocols), а также собственно протокол NMT. Ведомая NMT машина состояний системы CANopen задает исходное состояние, предпусковой, рабочий статусы и статус останова. При включении питания каждое устройство CANopen-системы находится в исходном состоянии и автоматически переходит в предпусковое состояние, в котором разрешается передача SDO. Если для одного или более узлов ведущим NMT-узлом устанавливается рабочее состояние, они могут передавать и получать PDO. В состоянии останова могут передаваться только NMT-сообщения.
Скорость передачи задается протоколом CANopen в диапазоне от 10 Кбод до 1 Мбод при максимальной дальности от 5000 до 40 м, соответственно. Технические условия CiA DS 301 определяют специальные функции передачи для 2048 возможных CAN-сообщений. Схема установления связи основана на принципе ведущего/ведомого и позволяет устанавливать соединение типа точка-точка между одним ведущим и 127 устройствами узла. Поддерживается и синхронизированная передача данных типа ведомый-ведомый.
Развитие протокола CANopen
CANopen-сети находят самое широкое применение: встраиваемые системы управления станками, транспортные средства, медицинская аппаратура, информационные табло и даже игровые автоматы и профессиональные кофеварки. Сети CANopen можно найти в системах управления лифтами и эскалаторами, в морозильных установках, тепло- и электростанциях. Популярность стандарта CANopen объясняется простотой интеграции совместимых с ним устройств, а также возможностью включения CANopen-устройств в уже существующие CAN-сети. К тому же, на рынке широко представлены готовые средства проектирования, тестирования, конфигурирования и технического обслуживания CANopen-систем. CiA постоянно совершенствует протокол CANopen, выпуская новые спецификации для конкретных приложений: CiA 400 для систем многоуровневых сетей, CiA 415 для систем датчиков управляемых механизмов, используемых при дорожном строительстве. Но не только CiA продвигает этот стандарт.
Большое внимание развитию CANopen уделяет Академия встроенных систем (Embedded Systems Academy, ESAcademy) – организация, изучающая микроконтроллерные архитектуры и средства их проектирования, а также такие вопросы, как своевременный выход на рынок, улучшение качества и реализация CAN, CANopen и построение встроенных Интернет-сетей. С целью минимизации сроков проектирования при включении в CANopen-сеть новых, а также существующих датчиков или исполнительных механизмов ESAcademy предложена концепция реализации CANopenIA, обеспечивающая мгновенный доступ ("Instant Access") к CANopen-сети благодаря упрощению процесса построения ее узлов. Предусмотрены два решения CANopenIA: автономный, непосредственно реализующий полный CANopen приборный профиль без применения дополнительного контроллера (рис.2), и сопроцессорный, реализующий приборный профиль для конкретного приложения и предусматривающий применение хост-контроллера с доступом ко всем переменным, передаваемым в сети (рис.3а,б). Автономное решение CANopenIA обеспечивает самый короткий цикл разработки, поскольку узлы сети непосредственно реализуют модули или чипы. Цифровые и аналоговые входы-выходы выполнены в используемом микроконтроллере. SPI- и I2C-интерфейсы обеспечивают доступ к дополнительным аналоговым компонентам, характеризуемым высоким разрешением. ЭСРПЗУ или другая энергонезависимая память содержит информацию о компоновке хранимых в ОЗУ данных отображения процесса и конфигурации системы, а также порядок доступа к данным процесса через SDO и PDO.
В сопроцессорном режиме модуль или чип CANopenIA представляет собой сопроцессор хост-процессора или микроконтроллера. Связь между CANopenIA модулем/чипом и хостом обеспечивают последовательные каналы (через UART, I2C или SPI-интерфейс). В случае большого объема данных или необходимости обновления данных с высокой частотой в сопроцессорном режиме можно применять совместно используемое двухпортовое ОЗУ (рис.3б).
Для многих встроенных сетевых приложений CANopen является предпочтительным решением. Однако для приложений, в которых используется лишь несколько узлов и сообщений, зачастую приходится разрабатывать собственный протокол высокого уровня, и полный стек протоколов CANopen в таких случаях избыточен. Это побудило ESAcademy предложить спецификацию MicroCANopen, позволяющую минимизировать набор стандартизированных средств, необходимых для обеспечения связи, а также существующих средств проектирования устройств сети CANopen, таких как конфигураторы и анализаторы. Возможно наращивание системы MicroCANopen до "полного" CANopen без изменения каналов связи. Для реализации протокола MicroCANopen микросхема на базе контроллера 8051 должна располагать 4-Кбит памятью кода и 170-байт ОЗУ (в полноформатных CANopen системах объем памяти программ составляет 40–60 Кбит, ОЗУ – более 600 байт). Система MicroCANopen требует два интерфейса: с аппаратными средствами (CAN-контроллером) и прикладными программами.
Элементная база
Одни из новейших микросхем с расширенными CAN возможностями – выпущенные в конце 2005 года компанией Atmel маломощные 8-бит КМОП-микроконтроллеры на основе усовершенствованной AVR RISC-архитектуры типа AT90CAN32 и AT90CAN64. Благодаря выполнению команд за один тактовый цикл производительность AT90CAN32/64 достигает 1 Mips/МГц, составляя 16 Mips на частоте 16 МГц. Таким образом разработчик может оптимизировать потребляемую мощность системы за счет выбора скорости обработки. AVR-ядро сочетает богатый набор команд с 32 универсальными регистрами, которые непосредственно подключены к АЛУ, что позволяет при выполнении одной команды получать доступ к двум независимым регистрам. Особенностью новых микросхем является возможность программирования в ходе выполнения прикладной задачи (In-Application Programming, IAP). Благодаря этому любой CAN-узел можно перепрограммировать через CAN-шину, не нарушая операции обмена или без прерывания выполняемых операций. В состав микросхем входят: 32-/64-Кбайт программируемая в системе флэш-память; 1-/2-Кбайт ЭСРПЗУ; 2-/4- Кбайт СОЗУ; 53 общих линий ввода-вывода; 32 универсальных регистра; CAN-контроллер, отвечающий требованиям стандарта CAN v2.0A/v.2.0B; часы реального времени; четыре гибких таймера/счетчика с возможностью сравнения и ШИМ; два USART; двухпроводной последовательный интерфейс; восьмиканальный 10-бит АЦП; программируемый сторожевой таймер; SPI-порт; JTAG-интерфейс. Предусмотрена возможность выбора пяти энергосберегающих режимов работы.
По производительности микросхемы AT90CAN32/64 на основе AVR RISC-процессора сопоставимы с 16-бит микроконтроллером, а по цене – со стандартными 8-бит устройствами. Расположенный на кристалле CAN-контроллер может принять до 15 независимых объектов сообщений, перепрограммироваться "на ходу" и динамически назначить прием, передачу или запись в буферы (при приеме нескольких CAN-фреймах). Его максимальная скорость передачи на частоте 8 МГц составляет 1 Мбит/с. Маскирование, фильтрация и буферизация CAN-фреймов снижает нагрузку хост-процессора. При выполнении протоколов высокого уровня (CANopen, DeviceNet) производительность и объем памяти микросхем большей частью доступны для приложения. Ускоритель прерываний оповещает процессор о критических сообщениях без выполнения подпрограммы сканирования программных средств, что минимизирует непроизводительные затраты приложений реального времени.
Напряжение питания микросхем 2,7–5,5 В, максимальная частота 8 МГц при напряжении 2,7 В и 16 МГц при 4,5 В. Поставляются в 64-выводных корпусах TQFP- и QFN-типов. Основное назначение микросхем – CAN-сети, в том числе системы управления лифтами, эскалаторами, дверными модулями транспортных средств, системы промышленной автоматизации.
В качестве узла ввода-вывода цифровых и аналоговых данных, отвечающего требованиям спецификации CiA DS401, можно отметить микросхему семейства ХА-С3 компании Philips Semiconductor (рис.4). Микросхема относится к семейству микроконтроллеров с расширенной архитектурой, объединяя стандартные периферийные устройства с PeliCAN 2.0В машиной (Philips' Extended Library стандарта CAN 2.0В), поддерживающей 11- и 29-бит идентификаторы, производительность до 1 Mips и CAN-диагностику. Микросхема поддерживает протоколы DeviceNet и CANopen аппаратными средствами, а не отдает их на откуп разработчику для реализации программными средствами. Это позволяет существенно (до 90%) сократить непроизводительные издержки процессора и использовать менее 2% его ресурсов для обработки сообщений, оставляя почти 100% ресурсов процессорного ядра для прогона прикладных программ. При этом используются 32 объекта сообщений CAN транспортного уровня (CTL), которые можно конфигурировать для передачи или приема, а также 32 отдельных фильтра, каждый из которых способен выполнить распознавание 30-бит идентификатора и полное 29-бит маскирование для представления уникальной адресной группы. Для каждого объекта сообщения имеется 512-байт буфер сообщений, не зависящий от внутрисхемного ОЗУ данных. Объем буфера за счет внешней памяти может быть увеличен до 8 Кбайт. В состав микросхемы также входят 16-бит процессорное ядро с 24-бит адресуемыми пространствами программ и данных; 21 16-бит регистр ядра, каждый из которых способен выполнять арифметические и логические операции, будучи при этом регистром указателя памяти; три стандартные счетчика/таймера с возможностями автоматической перезагрузки и ШИМ-выходами; сторожевой таймер; 32-Кбайт однократно программируемое ЭСРПЗУ программ и 1-Кбайт СОЗУ данных, UART и SPI-порт, обеспечивающие интеграцию различных последовательных интерфейсов в CAN-сеть; четыре 8-бит порта ввода-вывода с четырьмя программируемыми выходными конфигурациями на вывод.
Микросхема работает на частоте 32 МГц при напряжении питания 4,5–5,5 В. Монтируется в 44-выводной корпус типа PLCC или LQFP.