EtherCAT & LinuxCNC

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
donvictorio
Мастер
Сообщения: 2399
Зарегистрирован: 11 окт 2012, 16:26
Репутация: 664
Настоящее имя: Виктор
Откуда: Санкт-Петербург
Контактная информация:

Re: EtherCAT & LinuxCNC

Сообщение donvictorio »

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

Re: EtherCAT & LinuxCNC

Сообщение Serg »

donvictorio писал(а):сервы с ethercat на 20 баксов дороже обычных, со степдир.
+ стоимость как минимум ещё одной сетевой карты...

7i92 или 5i25 стоят $100 с доставкой. Разница в цене составляет $100 - $20x3 = $40. Готовы-ли вы ради экономии $40 потратить время на самостоятельную сборку нестандартной версии LinuxCNC?..
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
terminalserver
Кандидат
Сообщения: 64
Зарегистрирован: 25 фев 2015, 20:40
Репутация: 6
Контактная информация:

Re: EtherCAT & LinuxCNC

Сообщение terminalserver »

тут всё дело в RT. меса, насколько я помню, его требует, буфера в ПЛИС там нет (если сравнить, к примеру, с КФЛОП).
Если бы можно было в месу загружать кусками траекторию и некий конфиг реагирования на события, чтобы все RT дальше ПЛИС не ходили, то цены бы контроллеру не было. и нафиг ethercat.
мож я ошибаюсь, и так можно, но это неявно. я не нашёл howto это готовить.
Аватара пользователя
Serg
Мастер
Сообщения: 21289
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5025
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: EtherCAT & LinuxCNC

Сообщение Serg »

Mesa - это лишь аппаратный "генератора шагов".
Буфера в контроллере недостаточно, ведь нужно ещё взаимодействовать со всякими датчиками и прочими событиями в реальном времени. В LinuxCNC это сделано в виде аппаратно независимого HAL на компе, а в KFLOP в виде аппаратно зависимых программ на С, загружаемых в контроллер.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
PKM
Почётный участник
Почётный участник
Сообщения: 4261
Зарегистрирован: 31 мар 2011, 18:11
Репутация: 703
Настоящее имя: Андрей
Откуда: Украина
Контактная информация:

Re: EtherCAT & LinuxCNC

Сообщение PKM »

Аватара пользователя
donvictorio
Мастер
Сообщения: 2399
Зарегистрирован: 11 окт 2012, 16:26
Репутация: 664
Настоящее имя: Виктор
Откуда: Санкт-Петербург
Контактная информация:

Re: EtherCAT & LinuxCNC

Сообщение donvictorio »

интересно, можно ли запустить одновременно связку ethercat сервоприводов и ethernet месу для general io? 3 сетевых карточки типа и всё такое?
Аватара пользователя
Serg
Мастер
Сообщения: 21289
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5025
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: EtherCAT & LinuxCNC

Сообщение Serg »

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

Re: EtherCAT & LinuxCNC

Сообщение Impartial »

Пару лет назад микрочип выпустил микросхему EtherCAT
https://www.microchip.com/wwwproducts/en/LAN9252
Подходит к LinuxCNC для управления ШД с частотой приблизительно равной LPT порту.
Есть пример использования с RasberyPi. Если драйвер EtherCAT запустится на OrangePI то будет работать и с ней.
Работает с любым компьютером если Ethernet контролер соответствует требованиям драйвера EtherCAT для LinuxCNC.
Выпускаются готовые шилды для Arduino.
https://www.bausano.net/en/hardware/eth ... sycat.html
Vasia_Pupkin
Кандидат
Сообщения: 66
Зарегистрирован: 23 авг 2017, 19:57
Репутация: 9
Настоящее имя: Антон
Откуда: Екатеринбург
Контактная информация:

Re: EtherCAT & LinuxCNC

Сообщение Vasia_Pupkin »

Люди добрые, объясните пожалуйста на пальцах, как это работает.
По ссылке в первом посте темы, написан драйвер, вроде как работает и в сети есть рабочие решения.
С шаговиками, если я все понимаю, то это так работает:
Linuxcnc читает GCODE, и потом на основании заранее известных данных о максимальной скорости и ускорениях двигателя, рассчитывает и передает импульсы в LPT порт, тем самым заставляя крутиться шаговики туда куда нам надо и с той с какой надо скоростью и ускорениями.

А вот как с EtherCat это работает? Что Linuxcnc шлет в пакете который уходит к двигателям? Я так понимаю там должна быть информация типа повернуться на такой-то угол, с таким-то ускорением, и с такой-то скоростью?

Leadshine выпустили сервы с поддержкой эзеркат, вроде как за разумные деньги.
И хотелось бы понять, если ли во всем этом смысл?
С одной стороны мы избавляемся от требований по железу к LPT порту и ничего нам кроме самих сервов и компьютера с LCNC не нужно(ну может еще бегхофовский контроллер, дабы датчики и прочее туда вывести), но с другой стороны используя классическую схему мы управляем осями СИНХРОННО, при использовании же EtherCat, время цикла, пока пакет пройдет по всем двигателям это сколько-то мкс...
Вобщем я чего-то не понимаю... помогите разобраться и понять, есть ли смысл EtherCat в ЧПУ или не очень?

З.Ы: и еще вопрос и как в EtherCat будет работать обратная связь с сервами? Подали мы пакет повернуться туда-то, серва не смогла повернуться, мы получаем пакет, где серва говорит, что не повернулась на столько на сколько надо, а что дальше будет происходить? Можно как-то LCNC заставить понимать и обрабатывать эти данные и доворачивать двигатель? Или в идеале как-то оптическую линейку к EtherCat прикрутить....
Duhas
Мастер
Сообщения: 1649
Зарегистрирован: 10 окт 2015, 23:25
Репутация: 246
Настоящее имя: Андрей
Контактная информация:

Re: EtherCAT & LinuxCNC

Сообщение Duhas »

если хотите разобраться - в гугл и читать всякое, в том числе мануалы на сервы с езеркатом.

в двух словах: за один акт обмена мастер пересылает слейвам данные и читает из них, и все это дело в районе миллисекунд. мастер знает задержки до слейвов, а также есть такая тема как distributed clock.
Vasia_Pupkin
Кандидат
Сообщения: 66
Зарегистрирован: 23 авг 2017, 19:57
Репутация: 9
Настоящее имя: Антон
Откуда: Екатеринбург
Контактная информация:

Re: EtherCAT & LinuxCNC

Сообщение Vasia_Pupkin »

если хотите разобраться - в гугл и читать всякое, в том числе мануалы на сервы с езеркатом.
Так вот и возникли все эти вопросы после прочтения форума и гугла)))
в двух словах: за один акт обмена мастер пересылает слейвам данные и читает из них, и все это дело в районе миллисекунд. мастер знает задержки до слейвов, а также есть такая тема как distributed clock.
За пояснение по distributed clock - спасибо, поверхностно глянул, на счет задержек и синхронизации вопрос прояснил.
Impartial
Мастер
Сообщения: 932
Зарегистрирован: 23 фев 2011, 01:50
Репутация: 32
Контактная информация:

Re: EtherCAT & LinuxCNC

Сообщение Impartial »

LinuxCNC состоит из двух частей - интерпретатора G кода и HAL.
Первый работает в обычном потоке ОС а компоненты второго в потоке реалтайма.
Никаких обратных связей для первой части не существует. Обратные связи возможны только в HAL который по сути является аналогом
ПЛК.
Есть три главных параметра по которым происходит расчет любой траектории - период сервоцикла, максимально допустимые скорость и ускорение.
Интерпретатор асинхронно генерирует поток координат и заполняет ими буфер ФИФО. Компоненты HAL синхронно с сервоциклом читают координаты из потока и ,в случае управления шаговым двигателем, далее работает генератор шагов который по сути тоже является сервосистемой.
Количество шагов считается внутренним счетчиком компонента HAL stepgen и этот счетчик является неким аналогом энкодера и используется для обратной связи по положению. Пропуск шагов ,в этом случае, никак не обнаруживается.
При использовании сервопривода возможны два варианта построения системы.
1. С использованием компонентов HAL.
2. Внешний сервопривод.
Любой сервопривод может управляться тремя способами - по моменту (току) - по сути ускорению , по скорости и по положению.
Для контура тока - обратная связь датчик тока.
Для контура скорости - датчик скорости.
Для контура положения - датчик положения.
Все три контура могут быть как внутри сервопривода так и в HALe LinnuxCNC.
Каждый контур управления представляет собой ПИД регулятор.
Как будут распределены эти регуляторы - внутри LinuxCNC или в приводе выбирать вам.

Для управления первыми двумя контурами нужна система со строго определенным временем отклика.
EtherCAT позволяет произвести обмен в точно определенный промежуток времени.

При проектировании системы движения нужно определить как вы собираетесь управлять приводом.
Вариантов доставить данные в привод всего три.
1. по интерфейсу степ/дир
2. по аналогу (напряжение/ток).
3. цифровым кодом по какому нибудь интерфейсу (EtherCAT,CAN,PROFIBUS,EthernetIP...)

В первых двух вариантах нужно еще собирать отдельно датчики и управлять.

Однако в любой реализации (шаговый или серво) вы должны спроектировать привод работающий с заданной точностью без ошибок.
Ошибки привода скорректировать НЕВОЗМОЖНО.
Duhas
Мастер
Сообщения: 1649
Зарегистрирован: 10 окт 2015, 23:25
Репутация: 246
Настоящее имя: Андрей
Контактная информация:

Re: EtherCAT & LinuxCNC

Сообщение Duhas »

Impartial писал(а): Для управления первыми двумя контурами нужна система со строго определенным временем отклика.
EtherCAT позволяет произвести обмен в точно определенный промежуток времени.
для контура положения все также, только сервопериод побольше
Аватара пользователя
Nick
Мастер
Сообщения: 22756
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1713
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: EtherCAT & LinuxCNC

Сообщение Nick »

Почему больше? Обычно такой же.
Duhas
Мастер
Сообщения: 1649
Зарегистрирован: 10 окт 2015, 23:25
Репутация: 246
Настоящее имя: Андрей
Контактная информация:

Re: EtherCAT & LinuxCNC

Сообщение Duhas »

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

просто если мы передаем на привод положение - это можно делать, например, с периодом 10мс, в это время контур положения сервопривода обрабатывает это задание, в частности интерполируя его внутри интервала в 10мс, при этом сам сервопериод контура положения внутри сервопривода может быть, например, 0.1мс. и задание контуру скорости он отдает каждую 0.1 мс, а сервопериод последнего, например, 0.01мс.
если мы захотим считать контур положения у себя и управлять приводов уже по скорости, то для равных условий и потенциально возможного качества управления мы должны передавать задание по скорости уже каждую 0.1мс.
Аватара пользователя
Nick
Мастер
Сообщения: 22756
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1713
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: EtherCAT & LinuxCNC

Сообщение Nick »

При всем этом при управлении по положению если внешний сервопериод будет в 100 раз медленнее внутреннего (10мс и 0,1мс) можно получить неравномерное перемещение или эффективная частота управления также упадет до 10мс.
Impartial
Мастер
Сообщения: 932
Зарегистрирован: 23 фев 2011, 01:50
Репутация: 32
Контактная информация:

Re: EtherCAT & LinuxCNC

Сообщение Impartial »

Речь идет не о периоде а о его стабильности.
При управлении по положению стабильность периода не обязательна .
Я поясню.
Позиция это конечный параметр который необходимо выдержать.
Но двигатель не управляется по позиции. Можно управлять только током. Ток определяет момент на валу, т.е. силу, а если есть сила то есть ускорение.
От позиции до ускорения две производные. И обе с параметром - время (t и t^2). В позиции времени нет.
Обычно делают последовательно контур момента и скорости чтобы убрать квадратичную зависимость при преобразовании позиции в момент.
Т.е. преобразуем позицию сначала в скорость, а потом скорость в момент. Таким образом звенья получаются линейными.
Внутри каждого привода есть свои стабильные сервоциклы и , при управлении по позиции, стабильность внешнего сервоцикла не важна.
Duhas
Мастер
Сообщения: 1649
Зарегистрирован: 10 окт 2015, 23:25
Репутация: 246
Настоящее имя: Андрей
Контактная информация:

Re: EtherCAT & LinuxCNC

Сообщение Duhas »

Nick писал(а):При всем этом при управлении по положению если внешний сервопериод будет в 100 раз медленнее внутреннего (10мс и 0,1мс) можно получить неравномерное перемещение или эффективная частота управления также упадет до 10мс.
"частота управления" которая "полоса пропускания" - да, упадет, но я слабо представляю себе не спец задачу с частотой даже в 100Гц. а вот неравномерное перемещение - в общем случае нет, т.к. внутри 10 мс сигнал интерполируется и все будет плавно. ну а срез полосы пропускания несколько ограничит динамику, естественно.
Impartial писал(а):Речь идет не о периоде а о его стабильности.
При управлении по положению стабильность периода не обязательна .
Impartial писал(а): Внутри каждого привода есть свои стабильные сервоциклы и , при управлении по позиции, стабильность внешнего сервоцикла не важна.
в корне не соглашусь в контексте станков, роботов и т.д. сама по себе позиция текущая в большинстве случаев не нужна, важно перемещение, синхронное по осям и плавное.
Impartial писал(а): Позиция это конечный параметр который необходимо выдержать.
Но двигатель не управляется по позиции. Можно управлять только током. Ток определяет момент на валу, т.е. силу, а если есть сила то есть ускорение.
От позиции до ускорения две производные. И обе с параметром - время (t и t^2). В позиции времени нет.
Обычно делают последовательно контур момента и скорости чтобы убрать квадратичную зависимость при преобразовании позиции в момент.
Т.е. преобразуем позицию сначала в скорость, а потом скорость в момент. Таким образом звенья получаются линейными.
подчиненное регулирование (то что вы называете последовательными контурами положение-скорость-ток) нужно не для линеаризации, а для управления контролируемыми параметрами и упрощения регуляторов.

можно навернуть регулятор чтобы он и без подчиненного управления нормально справлялся, но это сложно и не гибко, куда логичнее управлять производной от регулируемой величины используя простой регулятор.
Vasia_Pupkin
Кандидат
Сообщения: 66
Зарегистрирован: 23 авг 2017, 19:57
Репутация: 9
Настоящее имя: Антон
Откуда: Екатеринбург
Контактная информация:

Re: EtherCAT & LinuxCNC

Сообщение Vasia_Pupkin »

Почитал матчасть по постам выше и попробую зайти с другой стороны еще раз))

К чему я начал изучать тему EtherCAT - это желание получить ЧПУ станок без лишней периферии в виде плат типа Mesa, при этом получив высокую точность за разумные деньги.

Как я это вижу:
Мы имеем LCNC с драйвером EtherCAT, подключаем последовательно сервоусилители и радуемся жизни.
Датчики и периферию мы подключаем либо через контроллер Beckhoff, либо же, если быстродействие не столь критично, можно сделать бюджетно на Ардуине или чем-то подобном.

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

И вот исходя из этого вопрос:
Есть ли такие примеры, где оптические линейки подключаются напрямую к сервоусилителю? Дабы испльзовать ПИД самого сервоусилителя а не на LCNC.

В идеале это должно выглядеть как-то так:
В LCNC отрабатывает интерпретатор G кода, потом LCNC по EtherCAT отправляет цифровой пакет на сервоусилитель(на сколько я понимаю, в этом пакете должно быть указано положение)
Далее сервоусилитель крутит двигатель и корректирует сам его положение по обратной связи от оптической линейки.
Такая схема имеет место быть? Или это все магия и шаманизм и пустая трата денег и сил?
Последний раз редактировалось Vasia_Pupkin 24 фев 2019, 01:31, всего редактировалось 2 раза.
Duhas
Мастер
Сообщения: 1649
Зарегистрирован: 10 окт 2015, 23:25
Репутация: 246
Настоящее имя: Андрей
Контактная информация:

Re: EtherCAT & LinuxCNC

Сообщение Duhas »

да есть сервоусилители позволяющие подключение доп. энкодеров/линеек мне кажется ASDA A2E могли
Ответить

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