EtherCAT & LinuxCNC

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Impartial
Мастер
Сообщения: 932
Зарегистрирован: 23 фев 2011, 01:50
Репутация: 32
Контактная информация:

EtherCAT & LinuxCNC

Сообщение Impartial »

Есть очень интересное решение для связи LinuxCNC с переферийным оборудованием по шине Ethernet.
http://www.linuxcnc.org/index.php/germa ... mitstart=0
Стандарт не совсем открытый, но, возможно пропустить, используя эту идеологию, свои протоколы. Драйвер мастера для режима реалтайм работает не со всеми чипами. Похоже только с теми, у которых МАС на борту, т.е. с открытой спецификацией.
Физически МАС slave легко реализуется В ФПГА.
Кто нибудь это использует?
Кто что думает по этому поводу?
Аватара пользователя
Serg
Мастер
Сообщения: 21289
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5025
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: EtherCAT & LinuxCNC

Сообщение Serg »

Я пробовал Mesa 7i80 (в виде макетки FPGA) - в принципе оно работало. Но как следует изучить не удалось - макетку пришлось вернуть.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Impartial
Мастер
Сообщения: 932
Зарегистрирован: 23 фев 2011, 01:50
Репутация: 32
Контактная информация:

Re: EtherCAT & LinuxCNC

Сообщение Impartial »

Расскажу всем, чтобы было понятно о чем речь.
В основе лежит красивая и очень простая идея - создать на базе протокола ETHERNET 100мбит высокоскоростную систему обмена информацией в системах управления пром. оборудованием в режиме реального времени. Работает это просто до безобразия.
Вот стандартный пакет езернета
ethercat1.JPG (7386 просмотров) <a class='original' href='./download/file.php?id=24695&sid=2435e834db8d6e0364c4a5e00859c7b6&mode=view' target=_blank>Загрузить оригинал (174.99 КБ)</a>
Серым цветом выделен стандартные заголовки/окончания езернета. А там, где идут обычно заголовки и данные TCP/IP начинается так называемая телеграмма EtherCAT. Для нее есть даже отдельный тип 0х88А4 в поле типа пакета эзернет заголовка. Сеть состоит из одного мастера и кучи слейвов. Мастером выступает обычный комп с езернет картой. Включены все последовательно - передача мастера - прием слейва - передача слейва - .... прием мастера.
Вся хитрость заключается в слейве.
В полях адреса заголовка мастера (DA, SA - МАК адреса приемника и передатчика) стоит один и тот же адрес - мастера.
А вот в поле данных пакета езернет, каждый слейв, на лету, вставляет свои данные поймав свой адрес указанный в каждой датаграмме.
Ключевая фраза всей технологии вот эта фраза "вставка на лету". Т.е. по мере передачи мастером слейвы вставляют свои данные в пакет,который сразу возвращается, а не после получения и анализа всего пакета.
Таким образом после окончания передчи пакета мастер имеет на приеме пакет с данными от переферии. При этом не затрачивается время на ожидание ответа, ведь обмен дуплексный.
Реализовать аппаратно такой фокус на обычном микроконтроллере невозможно. Поэтому применяют специализированные чипы или ПЛИС.
Но сама реализация в ПЛИС довольно простая, особенно если не придерживаться стандарта EtherCat.
Система может за один цикл обмена ~0,3 мс собрать - выдать данные на 12000 дискретных входов-выходов. Минимальній цикл равен приблизительно 6 мкс. За это время можно передать/получить все необходимое для работы сервопривода.
Я сделал простую реализацию этого алгоритма для одного слейва на шесть осей сервоприводов довольно быстро. И, используя наработки по ссылке в первом посте в части драйвера ХАЛ, получил рабочий (пока теоретически, в железе пока не пробовал) сервопривод. Причем быстродействия с лихвой хватает для получение состояний энкодеров и обработки сервопривода шести осей ПИДами ЕМС и еще есть место для 3х-4х сотен дискретных пинов (а может и на порядок больше, не проверял) или, еще, что только можно придумать.
Самое интересное, что драйвер езернета, в UBUNTU, удалось запустить в базовом потоке - 25 мкс и выдать на слейв, как на стандартный ЛПТ, сигналы степ/дир.
В общем технология очень перспективная. Может похоронить все, что до этого применяли в качестве периферии (КФлоп,Меса, плуто и т.д.). Причем как для LinuxCNC, так и для МАЧа. Под виндой драйвера работают ничуть не медленнее, чем в Linux.
Есть, конечно, и неприятные моменты. Работает все это только на контроллерах нескольких производителей. В частности Интел и Реалтек. По видимому внутренняя структура остальных засекречена и написать спец. драйвер для них невозможно.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 32753
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 5870
Откуда: Казахстан. Шымкент
Контактная информация:

Re: EtherCAT & LinuxCNC

Сообщение aftaev »

Impartial писал(а):Похоже только с теми, у которых МАС на борту, т.е. с открытой спецификацией.
МАС адрес вроде покупать нужно? И стоит не совсем дешево?
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
PKM
Почётный участник
Почётный участник
Сообщения: 4261
Зарегистрирован: 31 мар 2011, 18:11
Репутация: 703
Настоящее имя: Андрей
Откуда: Украина
Контактная информация:

Re: EtherCAT & LinuxCNC

Сообщение PKM »

Impartial писал(а):Я сделал простую реализацию этого алгоритма для одного слейва на шесть осей сервоприводов довольно быстро. И, используя наработки по ссылке в первом посте в части драйвера ХАЛ, получил рабочий (пока теоретически, в железе пока не пробовал) сервопривод. Причем быстродействия с лихвой хватает для получение состояний энкодеров и обработки сервопривода шести осей ПИДами ЕМС и еще есть место для 3х-4х сотен дискретных пинов (а может и на порядок больше, не проверял) или, еще, что только можно придумать.
Подключать комп прямо в сервопривод - это хорошо. Но ведь сервоприводы с EtherCAT стоят дорого, а самому их делать смысла мало.
LinuxCNC не будет поддерживать EtherCAT, т.к. это не свободное ПО.
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4339
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1518
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: EtherCAT & LinuxCNC

Сообщение selenur »

Необходимость покупать один или несколько МAC адресов нужно если твое устройство будет работать в сети интернет (в спец конторе которая следит за уникальностью адресов), а при использовании в пределах локальной сети ничего покупать не нужно :-)
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Impartial
Мастер
Сообщения: 932
Зарегистрирован: 23 фев 2011, 01:50
Репутация: 32
Контактная информация:

Re: EtherCAT & LinuxCNC

Сообщение Impartial »

aftaev писал(а):МАС адрес вроде покупать нужно? И стоит не совсем дешево?
МАС уже купленный и находится в сетевухе коппа. Других не нужно.
PKM писал(а):LinuxCNC не будет поддерживать EtherCAT, т.к. это не свободное ПО.
А это тогда что?
https://www.youtube.com/watch?v=yR9rCFavFjU
Не так страшен .....
Просто не нужно следовать сложившимся стереотипам :)
Аватара пользователя
PKM
Почётный участник
Почётный участник
Сообщения: 4261
Зарегистрирован: 31 мар 2011, 18:11
Репутация: 703
Настоящее имя: Андрей
Откуда: Украина
Контактная информация:

Re: EtherCAT & LinuxCNC

Сообщение PKM »

Impartial писал(а):А это тогда что?
Из коробки не будет :) Но это естественно не проблема.
nkp
Мастер
Сообщения: 8277
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1557
Контактная информация:

Re: EtherCAT & LinuxCNC

Сообщение nkp »

PKM писал(а):т.к. это не свободное ПО.
так все таки - как обстоят дела с лицензией??
в вики про это не нашел?
Аватара пользователя
PKM
Почётный участник
Почётный участник
Сообщения: 4261
Зарегистрирован: 31 мар 2011, 18:11
Репутация: 703
Настоящее имя: Андрей
Откуда: Украина
Контактная информация:

Re: EtherCAT & LinuxCNC

Сообщение PKM »

Все у фирмы Beckhoff
Аватара пользователя
Serg
Мастер
Сообщения: 21289
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5025
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: EtherCAT & LinuxCNC

Сообщение Serg »

selenur писал(а):Необходимость покупать один или несколько МAC адресов нужно если твое устройство будет работать в сети интернет (в спец конторе которая следит за уникальностью адресов), а при использовании в пределах локальной сети ничего покупать не нужно :-)
Даже в сети Internet MAC-адреса "ходят" только до ближайшего маршрутизатора.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
aftaev
Зачётный участник
Зачётный участник
Сообщения: 32753
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 5870
Откуда: Казахстан. Шымкент
Контактная информация:

Re: EtherCAT & LinuxCNC

Сообщение aftaev »

UAVpilot писал(а):Даже в сети Internet MAC-адреса "ходят" только до ближайшего маршрутизатора.
MS Office может никуда не ходить но могут прийти и по голове погладить что он не лицензионный, как с правами на МАС адреса?
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
Serg
Мастер
Сообщения: 21289
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5025
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: EtherCAT & LinuxCNC

Сообщение Serg »

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

P.S. С MS Office прийти конечно могут, но для этого должны быть основания посущественней, чем "нелицензионный софт сам настучал правообладателю", а то в лучшем случае правообладатель пройдёт нах в суде, а в худшем сам может "присесть".
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 8989
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2807
Откуда: Тюмень
Контактная информация:

Re: EtherCAT & LinuxCNC

Сообщение Сергей Саныч »

если каждое 48-битное число будет на себя права качать, что это будет? :thinking:
Любой домашний роутер может клонировать на себя MAC-адреса подключенных компьютеров и "прикидываться" ими.
UAVpilot писал(а):С MS Office прийти конечно могут, но для этого должны быть основания посущественней, чем "нелицензионный софт сам настучал правообладателю"
Всё еще впереди, всё еще впереди :idiot:
Чудес не бывает. Бывают фокусы.
Impartial
Мастер
Сообщения: 932
Зарегистрирован: 23 фев 2011, 01:50
Репутация: 32
Контактная информация:

Re: EtherCAT & LinuxCNC

Сообщение Impartial »

Чего вы прицепились к МАС числам? Ничего покупать не нужно! Слейвы не используют никаких левых МАС. Используется только МАС мастера.
nkp писал(а):так все таки - как обстоят дела с лицензией??
в вики про это не нашел?
Никак, сама идея не лицензируется. Она лежит на поверхности, и используется во многих других протоколах. Я, когда еще не разбирался с EtherCat, делал на этом принципе управление по rs232.
Вот тут я немного описывал в начале. Потом забросил из за малой скорости.
Настройка EMC2 на работу с COM(RS-232) портом #54
UAVpilot писал(а):
selenur писал(а):Необходимость покупать один или несколько МAC адресов нужно если твое устройство будет работать в сети интернет (в спец конторе которая следит за уникальностью адресов), а при использовании в пределах локальной сети ничего покупать не нужно :-)
Даже в сети Internet MAC-адреса "ходят" только до ближайшего маршрутизатора.
В вопросе как используются МАС адреса для меня много не понятного. Мне кажется, что место, в которое доходит МАС, определяется типом пакета в заголовке. Если это не IP пакет, то маршрутизация идет по МАС.
Аватара пользователя
Serg
Мастер
Сообщения: 21289
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5025
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: EtherCAT & LinuxCNC

Сообщение Serg »

В сети Internet маршрутизация по MAC не применяется, её потому и назвали Internet, а не Ethernet. :)
Маршрутизация по MAC используется только в комутаторах (свичах) - пакет, адресованный на конкретный MAC направляется только в конкретный порт, на которм был замечен этот MAC. Если он ещё небыл замечен ни на каком, то пакет направляется на все порты. В дешёвых бытовых комутаторах все пакеты всегда направляются на все порты, их правильнее называть не комутаторами, а хабами.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Impartial
Мастер
Сообщения: 932
Зарегистрирован: 23 фев 2011, 01:50
Репутация: 32
Контактная информация:

Re: EtherCAT & LinuxCNC

Сообщение Impartial »

UAVpilot писал(а):В сети Internet маршрутизация по MAC не применяется, её потому и назвали Internet, а не Ethernet. :)
Интуитивно я это понимаю. Раз интернет работает по разным средам передачи значит он от них не зависит.
Задачи управлять через интернет не стоит.
А вот как происходит маршрутизация через коммутаторы интересно.
Допустим коммутатор получил пакет с одинаковым МАС адресом в поле приемника и источника. Что произойдет?
Коммутатор передает пакет ответа только после анализа всего пакета или только увидев мак адрес приемника?
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4339
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1518
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: EtherCAT & LinuxCNC

Сообщение selenur »

Каждый пакет небольшого размера, поэтому коммутатор его вроде целиком получает, потом уменьшает значение TTL на единицу и передает получателю, если TTL равно нулю, то убивает пакет.
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
vmarkiv
Мастер
Сообщения: 503
Зарегистрирован: 21 янв 2012, 00:23
Репутация: 31
Откуда: Ивано-Франковск
Контактная информация:

Re: EtherCAT & LinuxCNC

Сообщение vmarkiv »

Ethercat использует фирма http://infosys.beckhoff.com/index_en.htm в продукте TwinCat , у меня на одном из станков стоит ( Koch ) , привода шустрые , протокол гибкий ,
Аватара пользователя
Serg
Мастер
Сообщения: 21289
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5025
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: EtherCAT & LinuxCNC

Сообщение Serg »

Impartial писал(а):Допустим коммутатор получил пакет с одинаковым МАС адресом в поле приемника и источника. Что произойдет?
То, что и должен - отправит его в тот порт, где есть этот MAC. Бывают ещё случаи, когда один и тот-же MAC виден более, чем на одном порту, но там уже работают чуть другие механизмы, не думаю, что в EtherCat это встретится.
Impartial писал(а):Коммутатор передает пакет ответа только после анализа всего пакета или только увидев мак адрес приемника?
Совсем простые комутаторы начинают передавать получив первый-же байт/бит пакета просто потому, что у них и мозгов-то нет, да и передают они этот пакет тупо на все порты сразу. Это которые хабами правильнее называть. Комутаторы поумней начинают передачу сразу после получения заголовка не дожидаясь приёма всего пакета Современные недорогие одночиповые решения это уже позволяют. (Случай начального поиска адресата тут рассматривать не будем.) Ну а очень умные комутаторы помимо это умеют сначала целиком принимать пакет и только потом передавать его дальше. И это не опечатка. :) Чтобы такое делать особенно в больших объёмах и с большой скоростью требуется много быстрых и дорогих мозгов. Зачем это нужно - тоже отдельная большая тема.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Ответить

Вернуться в «LinuxCNC»