EtherCAT & LinuxCNC
-
- Мастер
- Сообщения: 953
- Зарегистрирован: 23 фев 2011, 01:50
- Репутация: 36
- Контактная информация:
EtherCAT & LinuxCNC
Есть очень интересное решение для связи LinuxCNC с переферийным оборудованием по шине Ethernet.
http://www.linuxcnc.org/index.php/germa ... mitstart=0
Стандарт не совсем открытый, но, возможно пропустить, используя эту идеологию, свои протоколы. Драйвер мастера для режима реалтайм работает не со всеми чипами. Похоже только с теми, у которых МАС на борту, т.е. с открытой спецификацией.
Физически МАС slave легко реализуется В ФПГА.
Кто нибудь это использует?
Кто что думает по этому поводу?
http://www.linuxcnc.org/index.php/germa ... mitstart=0
Стандарт не совсем открытый, но, возможно пропустить, используя эту идеологию, свои протоколы. Драйвер мастера для режима реалтайм работает не со всеми чипами. Похоже только с теми, у которых МАС на борту, т.е. с открытой спецификацией.
Физически МАС slave легко реализуется В ФПГА.
Кто нибудь это использует?
Кто что думает по этому поводу?
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: EtherCAT & LinuxCNC
Я пробовал Mesa 7i80 (в виде макетки FPGA) - в принципе оно работало. Но как следует изучить не удалось - макетку пришлось вернуть.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
- Мастер
- Сообщения: 953
- Зарегистрирован: 23 фев 2011, 01:50
- Репутация: 36
- Контактная информация:
Re: EtherCAT & LinuxCNC
Расскажу всем, чтобы было понятно о чем речь.
В основе лежит красивая и очень простая идея - создать на базе протокола ETHERNET 100мбит высокоскоростную систему обмена информацией в системах управления пром. оборудованием в режиме реального времени. Работает это просто до безобразия.
Вот стандартный пакет езернета Серым цветом выделен стандартные заголовки/окончания езернета. А там, где идут обычно заголовки и данные TCP/IP начинается так называемая телеграмма EtherCAT. Для нее есть даже отдельный тип 0х88А4 в поле типа пакета эзернет заголовка. Сеть состоит из одного мастера и кучи слейвов. Мастером выступает обычный комп с езернет картой. Включены все последовательно - передача мастера - прием слейва - передача слейва - .... прием мастера.
Вся хитрость заключается в слейве.
В полях адреса заголовка мастера (DA, SA - МАК адреса приемника и передатчика) стоит один и тот же адрес - мастера.
А вот в поле данных пакета езернет, каждый слейв, на лету, вставляет свои данные поймав свой адрес указанный в каждой датаграмме.
Ключевая фраза всей технологии вот эта фраза "вставка на лету". Т.е. по мере передачи мастером слейвы вставляют свои данные в пакет,который сразу возвращается, а не после получения и анализа всего пакета.
Таким образом после окончания передчи пакета мастер имеет на приеме пакет с данными от переферии. При этом не затрачивается время на ожидание ответа, ведь обмен дуплексный.
Реализовать аппаратно такой фокус на обычном микроконтроллере невозможно. Поэтому применяют специализированные чипы или ПЛИС.
Но сама реализация в ПЛИС довольно простая, особенно если не придерживаться стандарта EtherCat.
Система может за один цикл обмена ~0,3 мс собрать - выдать данные на 12000 дискретных входов-выходов. Минимальній цикл равен приблизительно 6 мкс. За это время можно передать/получить все необходимое для работы сервопривода.
Я сделал простую реализацию этого алгоритма для одного слейва на шесть осей сервоприводов довольно быстро. И, используя наработки по ссылке в первом посте в части драйвера ХАЛ, получил рабочий (пока теоретически, в железе пока не пробовал) сервопривод. Причем быстродействия с лихвой хватает для получение состояний энкодеров и обработки сервопривода шести осей ПИДами ЕМС и еще есть место для 3х-4х сотен дискретных пинов (а может и на порядок больше, не проверял) или, еще, что только можно придумать.
Самое интересное, что драйвер езернета, в UBUNTU, удалось запустить в базовом потоке - 25 мкс и выдать на слейв, как на стандартный ЛПТ, сигналы степ/дир.
В общем технология очень перспективная. Может похоронить все, что до этого применяли в качестве периферии (КФлоп,Меса, плуто и т.д.). Причем как для LinuxCNC, так и для МАЧа. Под виндой драйвера работают ничуть не медленнее, чем в Linux.
Есть, конечно, и неприятные моменты. Работает все это только на контроллерах нескольких производителей. В частности Интел и Реалтек. По видимому внутренняя структура остальных засекречена и написать спец. драйвер для них невозможно.
В основе лежит красивая и очень простая идея - создать на базе протокола ETHERNET 100мбит высокоскоростную систему обмена информацией в системах управления пром. оборудованием в режиме реального времени. Работает это просто до безобразия.
Вот стандартный пакет езернета Серым цветом выделен стандартные заголовки/окончания езернета. А там, где идут обычно заголовки и данные TCP/IP начинается так называемая телеграмма EtherCAT. Для нее есть даже отдельный тип 0х88А4 в поле типа пакета эзернет заголовка. Сеть состоит из одного мастера и кучи слейвов. Мастером выступает обычный комп с езернет картой. Включены все последовательно - передача мастера - прием слейва - передача слейва - .... прием мастера.
Вся хитрость заключается в слейве.
В полях адреса заголовка мастера (DA, SA - МАК адреса приемника и передатчика) стоит один и тот же адрес - мастера.
А вот в поле данных пакета езернет, каждый слейв, на лету, вставляет свои данные поймав свой адрес указанный в каждой датаграмме.
Ключевая фраза всей технологии вот эта фраза "вставка на лету". Т.е. по мере передачи мастером слейвы вставляют свои данные в пакет,который сразу возвращается, а не после получения и анализа всего пакета.
Таким образом после окончания передчи пакета мастер имеет на приеме пакет с данными от переферии. При этом не затрачивается время на ожидание ответа, ведь обмен дуплексный.
Реализовать аппаратно такой фокус на обычном микроконтроллере невозможно. Поэтому применяют специализированные чипы или ПЛИС.
Но сама реализация в ПЛИС довольно простая, особенно если не придерживаться стандарта EtherCat.
Система может за один цикл обмена ~0,3 мс собрать - выдать данные на 12000 дискретных входов-выходов. Минимальній цикл равен приблизительно 6 мкс. За это время можно передать/получить все необходимое для работы сервопривода.
Я сделал простую реализацию этого алгоритма для одного слейва на шесть осей сервоприводов довольно быстро. И, используя наработки по ссылке в первом посте в части драйвера ХАЛ, получил рабочий (пока теоретически, в железе пока не пробовал) сервопривод. Причем быстродействия с лихвой хватает для получение состояний энкодеров и обработки сервопривода шести осей ПИДами ЕМС и еще есть место для 3х-4х сотен дискретных пинов (а может и на порядок больше, не проверял) или, еще, что только можно придумать.
Самое интересное, что драйвер езернета, в UBUNTU, удалось запустить в базовом потоке - 25 мкс и выдать на слейв, как на стандартный ЛПТ, сигналы степ/дир.
В общем технология очень перспективная. Может похоронить все, что до этого применяли в качестве периферии (КФлоп,Меса, плуто и т.д.). Причем как для LinuxCNC, так и для МАЧа. Под виндой драйвера работают ничуть не медленнее, чем в Linux.
Есть, конечно, и неприятные моменты. Работает все это только на контроллерах нескольких производителей. В частности Интел и Реалтек. По видимому внутренняя структура остальных засекречена и написать спец. драйвер для них невозможно.
-
- Зачётный участник
- Сообщения: 34042
- Зарегистрирован: 04 апр 2010, 19:22
- Репутация: 6192
- Откуда: Казахстан.
- Контактная информация:
Re: EtherCAT & LinuxCNC
МАС адрес вроде покупать нужно? И стоит не совсем дешево?Impartial писал(а):Похоже только с теми, у которых МАС на борту, т.е. с открытой спецификацией.
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
- PKM
- Почётный участник
- Сообщения: 4263
- Зарегистрирован: 31 мар 2011, 18:11
- Репутация: 705
- Настоящее имя: Андрей
- Откуда: Украина
- Контактная информация:
Re: EtherCAT & LinuxCNC
Подключать комп прямо в сервопривод - это хорошо. Но ведь сервоприводы с EtherCAT стоят дорого, а самому их делать смысла мало.Impartial писал(а):Я сделал простую реализацию этого алгоритма для одного слейва на шесть осей сервоприводов довольно быстро. И, используя наработки по ссылке в первом посте в части драйвера ХАЛ, получил рабочий (пока теоретически, в железе пока не пробовал) сервопривод. Причем быстродействия с лихвой хватает для получение состояний энкодеров и обработки сервопривода шести осей ПИДами ЕМС и еще есть место для 3х-4х сотен дискретных пинов (а может и на порядок больше, не проверял) или, еще, что только можно придумать.
LinuxCNC не будет поддерживать EtherCAT, т.к. это не свободное ПО.
- selenur
- Почётный участник
- Сообщения: 4604
- Зарегистрирован: 21 авг 2013, 19:44
- Репутация: 1621
- Настоящее имя: Сергей
- Откуда: Новый Уренгой
- Контактная информация:
Re: EtherCAT & LinuxCNC
Необходимость покупать один или несколько МAC адресов нужно если твое устройство будет работать в сети интернет (в спец конторе которая следит за уникальностью адресов), а при использовании в пределах локальной сети ничего покупать не нужно
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
-
- Мастер
- Сообщения: 953
- Зарегистрирован: 23 фев 2011, 01:50
- Репутация: 36
- Контактная информация:
Re: EtherCAT & LinuxCNC
МАС уже купленный и находится в сетевухе коппа. Других не нужно.aftaev писал(а):МАС адрес вроде покупать нужно? И стоит не совсем дешево?
А это тогда что?PKM писал(а):LinuxCNC не будет поддерживать EtherCAT, т.к. это не свободное ПО.
https://www.youtube.com/watch?v=yR9rCFavFjU
Не так страшен .....
Просто не нужно следовать сложившимся стереотипам
- PKM
- Почётный участник
- Сообщения: 4263
- Зарегистрирован: 31 мар 2011, 18:11
- Репутация: 705
- Настоящее имя: Андрей
- Откуда: Украина
- Контактная информация:
Re: EtherCAT & LinuxCNC
Из коробки не будет Но это естественно не проблема.Impartial писал(а):А это тогда что?
-
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: EtherCAT & LinuxCNC
так все таки - как обстоят дела с лицензией??PKM писал(а):т.к. это не свободное ПО.
в вики про это не нашел?
- PKM
- Почётный участник
- Сообщения: 4263
- Зарегистрирован: 31 мар 2011, 18:11
- Репутация: 705
- Настоящее имя: Андрей
- Откуда: Украина
- Контактная информация:
Re: EtherCAT & LinuxCNC
Все у фирмы Beckhoff
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: EtherCAT & LinuxCNC
Даже в сети Internet MAC-адреса "ходят" только до ближайшего маршрутизатора.selenur писал(а):Необходимость покупать один или несколько МAC адресов нужно если твое устройство будет работать в сети интернет (в спец конторе которая следит за уникальностью адресов), а при использовании в пределах локальной сети ничего покупать не нужно
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
- Зачётный участник
- Сообщения: 34042
- Зарегистрирован: 04 апр 2010, 19:22
- Репутация: 6192
- Откуда: Казахстан.
- Контактная информация:
Re: EtherCAT & LinuxCNC
MS Office может никуда не ходить но могут прийти и по голове погладить что он не лицензионный, как с правами на МАС адреса?UAVpilot писал(а):Даже в сети Internet MAC-адреса "ходят" только до ближайшего маршрутизатора.
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: EtherCAT & LinuxCNC
Если ты потребитель сетевых карт, то никак. В драйверах нынче даже штатная фича есть - смена MAC-адреса на любой, какой тебе нравится, ибо всяких сетевых устройств уже давно напроизводили столько, что MAC-адресов на всех не хватает.
P.S. С MS Office прийти конечно могут, но для этого должны быть основания посущественней, чем "нелицензионный софт сам настучал правообладателю", а то в лучшем случае правообладатель пройдёт нах в суде, а в худшем сам может "присесть".
P.S. С MS Office прийти конечно могут, но для этого должны быть основания посущественней, чем "нелицензионный софт сам настучал правообладателю", а то в лучшем случае правообладатель пройдёт нах в суде, а в худшем сам может "присесть".
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2858
- Откуда: Тюмень
- Контактная информация:
Re: EtherCAT & LinuxCNC
если каждое 48-битное число будет на себя права качать, что это будет?
Любой домашний роутер может клонировать на себя MAC-адреса подключенных компьютеров и "прикидываться" ими.
Любой домашний роутер может клонировать на себя MAC-адреса подключенных компьютеров и "прикидываться" ими.
Всё еще впереди, всё еще впередиUAVpilot писал(а):С MS Office прийти конечно могут, но для этого должны быть основания посущественней, чем "нелицензионный софт сам настучал правообладателю"
Чудес не бывает. Бывают фокусы.
-
- Мастер
- Сообщения: 953
- Зарегистрирован: 23 фев 2011, 01:50
- Репутация: 36
- Контактная информация:
Re: EtherCAT & LinuxCNC
Чего вы прицепились к МАС числам? Ничего покупать не нужно! Слейвы не используют никаких левых МАС. Используется только МАС мастера.
Вот тут я немного описывал в начале. Потом забросил из за малой скорости.
Настройка EMC2 на работу с COM(RS-232) портом #54
Никак, сама идея не лицензируется. Она лежит на поверхности, и используется во многих других протоколах. Я, когда еще не разбирался с EtherCat, делал на этом принципе управление по rs232.nkp писал(а):так все таки - как обстоят дела с лицензией??
в вики про это не нашел?
Вот тут я немного описывал в начале. Потом забросил из за малой скорости.
Настройка EMC2 на работу с COM(RS-232) портом #54
В вопросе как используются МАС адреса для меня много не понятного. Мне кажется, что место, в которое доходит МАС, определяется типом пакета в заголовке. Если это не IP пакет, то маршрутизация идет по МАС.UAVpilot писал(а):Даже в сети Internet MAC-адреса "ходят" только до ближайшего маршрутизатора.selenur писал(а):Необходимость покупать один или несколько МAC адресов нужно если твое устройство будет работать в сети интернет (в спец конторе которая следит за уникальностью адресов), а при использовании в пределах локальной сети ничего покупать не нужно
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: EtherCAT & LinuxCNC
В сети Internet маршрутизация по MAC не применяется, её потому и назвали Internet, а не Ethernet.
Маршрутизация по MAC используется только в комутаторах (свичах) - пакет, адресованный на конкретный MAC направляется только в конкретный порт, на которм был замечен этот MAC. Если он ещё небыл замечен ни на каком, то пакет направляется на все порты. В дешёвых бытовых комутаторах все пакеты всегда направляются на все порты, их правильнее называть не комутаторами, а хабами.
Маршрутизация по MAC используется только в комутаторах (свичах) - пакет, адресованный на конкретный MAC направляется только в конкретный порт, на которм был замечен этот MAC. Если он ещё небыл замечен ни на каком, то пакет направляется на все порты. В дешёвых бытовых комутаторах все пакеты всегда направляются на все порты, их правильнее называть не комутаторами, а хабами.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
- Мастер
- Сообщения: 953
- Зарегистрирован: 23 фев 2011, 01:50
- Репутация: 36
- Контактная информация:
Re: EtherCAT & LinuxCNC
Интуитивно я это понимаю. Раз интернет работает по разным средам передачи значит он от них не зависит.UAVpilot писал(а):В сети Internet маршрутизация по MAC не применяется, её потому и назвали Internet, а не Ethernet.
Задачи управлять через интернет не стоит.
А вот как происходит маршрутизация через коммутаторы интересно.
Допустим коммутатор получил пакет с одинаковым МАС адресом в поле приемника и источника. Что произойдет?
Коммутатор передает пакет ответа только после анализа всего пакета или только увидев мак адрес приемника?
- selenur
- Почётный участник
- Сообщения: 4604
- Зарегистрирован: 21 авг 2013, 19:44
- Репутация: 1621
- Настоящее имя: Сергей
- Откуда: Новый Уренгой
- Контактная информация:
Re: EtherCAT & LinuxCNC
Каждый пакет небольшого размера, поэтому коммутатор его вроде целиком получает, потом уменьшает значение TTL на единицу и передает получателю, если TTL равно нулю, то убивает пакет.
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
-
- Мастер
- Сообщения: 516
- Зарегистрирован: 21 янв 2012, 00:23
- Репутация: 32
- Откуда: Ивано-Франковск
- Контактная информация:
Re: EtherCAT & LinuxCNC
Ethercat использует фирма http://infosys.beckhoff.com/index_en.htm в продукте TwinCat , у меня на одном из станков стоит ( Koch ) , привода шустрые , протокол гибкий ,
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: EtherCAT & LinuxCNC
То, что и должен - отправит его в тот порт, где есть этот MAC. Бывают ещё случаи, когда один и тот-же MAC виден более, чем на одном порту, но там уже работают чуть другие механизмы, не думаю, что в EtherCat это встретится.Impartial писал(а):Допустим коммутатор получил пакет с одинаковым МАС адресом в поле приемника и источника. Что произойдет?
Совсем простые комутаторы начинают передавать получив первый-же байт/бит пакета просто потому, что у них и мозгов-то нет, да и передают они этот пакет тупо на все порты сразу. Это которые хабами правильнее называть. Комутаторы поумней начинают передачу сразу после получения заголовка не дожидаясь приёма всего пакета Современные недорогие одночиповые решения это уже позволяют. (Случай начального поиска адресата тут рассматривать не будем.) Ну а очень умные комутаторы помимо это умеют сначала целиком принимать пакет и только потом передавать его дальше. И это не опечатка. Чтобы такое делать особенно в больших объёмах и с большой скоростью требуется много быстрых и дорогих мозгов. Зачем это нужно - тоже отдельная большая тема.Impartial писал(а):Коммутатор передает пакет ответа только после анализа всего пакета или только увидев мак адрес приемника?
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...