EtherCAT

products_ethercat_233pxВ этой статье я расскажу о промышленном протоколе 21 века, о способах реализации его в области автоматизации и о возможности применения в собственном проекте на базе ОС Linux и Embedded проекте на базе мощного Cortex A8 ARM процессора.

Протокол EtherCAT был разработан швейцарской фирмой Beckhoff. Фирма специализируется на разработке и производстве средств автоматизации. Этот протокол решает очень важную проблему - обеспечение real-time обмена данными в сетях Ethernet. Под термином Real-time здесь подразумевается период опроса от 1 мкс и выше и слабая зависимость периода опроса от количества элементов в сети. Такой эффект достигается вставкой на лету данных в дейтаграмму пакета. Этот уникальный прием является главным свойством этой разработки. Но эта же особенность предъявляет огромные требования к вычислительному устройству. К слову сказать, обработчик EtherCAT как правило реализуют на ASIC или ПЛИС  и существует только один ARM контроллер, который на данный момент гарантированно может выдержать требование end-end latency 700 ns и стабильно его держать. И только буквально полгода назад разработчики из TI смогли также реализовать технологию синхронизации времени Distributed Clocking, что являлось последним препятствием на пути к реализации EtherCAT подчиненного устройства на контроллере.

В пакете Ethernet протокол EtherCAT недавно получил официальную прописку. Теперь в двух октетном поле пакета, именующимся EtherType,  код 0x88a4 дает понять, что передается пакет протокола EtherCAT. Поэтому он может работать в обычных, даже домашних сетях Ethernet без какой-либо модификации. Этот же код говорит устройству, что в данный пакет надо осуществить байт вставку. При этом работоспособность сети не нарушается, она также может использоваться в обычных целях. (на практике, она все-таки нарушается, по сути все же падает, начинает даже пинг тормозить, пользоваться ей в прежних целях нельзя, она качает огромный поток трафика, исключение составляет асинхронный режим, при нем объем трафика меньше и сеть может будет работать нормально).

Сеть этого протокола - двухранговая(master and slave). Топология может быть замкнутая, с поддержкой вариантов: звезда, кольцо, дерево, то есть почти любой. На практике это уменьшает затраты на прокладку кабелей, возможность кольцевания придает системе однократное резевирование, то есть сеть получается устойчива к обрывам одного из каналов связи между любыми двумя устройствами в кольце. Канал связи физически направленный. На устройствах EtherCAT присутствует от 2х и более портов Ethernet. При этом как я уже сказал различают точку входа IN и точку выхода OUT.

Упрощенно кольцевая топология выглядит так:

ECAT top

Сети EtherCAT могут быть не только локальными. Поддерживается укладка пакетов в IP/UDP или IP/TCP дейтограммы. Соответственно можно построить сеть из подсетей с использованием обычных маршрутизаторов.
Таким образом, упаковка может быть выполнена двумя способами, как представлено ниже:

ECAT tel

 

Если я правильно понял, то в случае использования ПЛИС или специальных ASIC от Beckhoff, они адресуют в своей оперативной памяти пространство, куда пишут и откуда читают текущие состояния регистров устройства. Под регистром понимается тоже, что и в других промышленных протоколах, как modBus, к примеру. Так в демо версии кода для Slave от Ti размер таких регистров может быть только 32 бит. При этом в контроллере или PC очень интенсивно используется механизм DMA и в случае использования кода для Master на базе обычного персонального компьютера под OS Linux инженеры-разработчики предупреждают, что необходимо новое железо. (об open source проекте, где реализован стек для Master мы поговорим позже).

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

Можно адресовать до 65535 устройств с 65535 адресами регистров в каждом. Компания-разработчик проводила эксперимент, в котором было соединено более 10 000 модулей на базе EtherCAT. Тест прошел удачно.

Стандарт поддерживает 3 вида физического уровня:

1. 100BASE-TX copper

2. 100BASE-FX optical fiber

3. E-bus

Первые 2 известны как витая пара и оптоволокно. Что такое E-Bus? Эта шина является развитием K-Bus - шины для местного соединения устройств. Тема довольно тёмная, так как совпадает с названием одного из протоколов вместе с физическим уровнем из другой сферы - солнечной энергетики. Но эти busы вроде как проприетарная технология Beckhoff. Расположена на контактных панелях модулей. Шина местного значения используется для связи различных модулей с ПЛК и куплерами.

 Реализация Slave протокола EtherCAT на контроллере Ti AM335 ARM CortexA8 MPU.

AM335

Протокол не может быть реализован в виде кода, целиком исполняющегося на ядре процессора ARM. Даже несмотря на 720 Mhz частоты (учитывая максимальное время обработки пакета в 700ns) у контроллера всего примерно  1300 операций на весь обработчик. Этого мало. Весь обработчик реализован аппаратно в специальном блоке контроллера ARM, который называется PRU - programmable real-time unit. По сути, это еще один процессор на общем кристалле, куда собран написанный на языке С стек протокола для Slave устройства. Этот дополнительный контроллер работает на частоте 200 МГц  и имеет шину для связи с микросхемой Ethernet PHY и последовательный порт UART, через который судя по описанию можно сменить прошивку PRU. Блоков PRU в контроллере целых два. Также в контроллере присутствует  блок MII - Media Independent Interface. Это интерфейс взаимодействия с микросхемой физического уровня PHY Ethernet. В качестве последней рекомендуется использовать TLK110 - контроллер Ethernet. MII представляет из себя протокол c шиной, который отделяет логический уровень сети от физического - микросхем контроллера Ethernet. Упрощенно аппаратная часть EtherCAT в микроконтроллере выглядит так

eht int

Другим важным элементом является FMMU - fieldbus memory management unit. Это блок, судя по описанию, назначением которого является прямой доступ к разделяемой( shared)  памяти и очень низкоуровневое взаимодействие с периферией Ethernet портов. Как я понял, FMMU реализует адрес одного из устройств. То есть это блок управления памятью, который обновляет состояния регистров устройства в соответствии с адресом, куда отправлена дейтаграмма. Таких блоков в одном контроллере 4 или даже 8! То есть один контроллер необязательно может быть всего одним устройством с заданным адресом на шине EtherCAT. Такой красивый способ превращает этот процессор Sitara в недорогое решение(AM335 стоит всего доллар оптом) в сфере автоматизации. Так как вся работа происходит параллельно ядру контроллера, то туда может быть установлен и быть в исполнении Linux(только в теории, рабочего способа пока нет). При этом частота ядра никак не влияет на работу протокола EtherCAT и может быть уменьшена до 275 МГц, что актуально, так как позволяет снизить потребление до 300 мВт.

Чтобы начать свой проект с использованием EtherCAT вам нужно скачать специальную SDK от TI. Вместе с ней будут идти собранные в бинарник прошивки для PRU, которые и реализуют EtherCAT. Доступ к PRU реализован в виде драйвера. Само SDK использует специальную операционную систему реального времени.  Эта среда разработки позволяет не только добавить в свой проект протокол EterCAT, но также имеет реализации протоколов ProfiBUS и ProfiNET.  Версия среды коррелирует с версией прошивки PRU. Саму прошивку и SDK  можно скачать здесь.

Реализация устройства EtherCAT мастер.

Как правило, мастером в сети является довольно производительное устройство  - ПЛК, либо компьютер. Для последнего существует open source проект SOEM. Ссылки здесь и здесь.

Оценочная плата для Slave. Ti разработала специальную плату для оценки EtherCAT.

evkit Заключение.

На данный момент протокол является наиболее развивающимся. Число устройств, где он используется растет экспоненциально. Используется он и  в роботах тоже. В частности, я видел его в роботе care-o-bot - учебном мобильном роботе для школ и университетов Европы от фирмы Kuka. В среднем, он позволяет сократить на 30% стоимость прокладки сетей для большого объекта автоматизации. Это достигается за счет топологии и за счет отсутствия необходимости использовать специальное коммуникационное оборудование для организации сетей. По сути может работать в уже существующей локальной сети из витой пары и обычных маршрутизаторов.

Обладает выдающимися характеристиками пропускной способности. Может в режиме жесткого реального времени управлять множеством устройств на частотах 1-30 КГц.  К примеру,  применение этого протокола позволило разделить все 3 контура управления сервоприводом (ток, скорость, положение), сервоусилитель сделать очень простым  и замкнуть их уже непосредственно в ПЛК без создания блока управления в сервоусилителе или в самом приводе.

Вкупе с последним приемом этот протокол позволяет поднять надежность на качественно новый уровень.

2 Comments

  1. tiray:

    Привет, на днях игрался с ICE(плата от TI) в роли slave'a и linux с RTAI в роли мастера(IgH). Циклическое чтение 32-битного слова удалось разогнать до 50 мкс, без особых подвисаний ПК(Intel Atom), на 25 мкс уже подтормаживал GUI..
    Пока попробовал только simple slave ethercat example, и удалось организовать обмен только в одну сторону.. Дальше интересуют нормальный обмен в 2 стороны с уходом ограничения в 32 бита данного примера, CANopen over EtherCAT и общение с приводами. Кто-нибудь пытался или планирует освоить EtherCAT и ICE в частности?

  2. Здравствуйте! Расскажите, пожалуйста, в какой задаче вам понадобился Ethercat?

Leave a Reply

You must be logged in to post a comment.