LinuxCNC - Альтернативная кинематика.

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

LinuxCNC - Альтернативная кинематика.

Сообщение Serg »

Эта тема предлагается для обсуждения моих решений некоторых вопросов кинематики в LinuxCNC и других, связанных с ними.

На сегодня стоит задача получить рабочее решение для вот этого монстрика: Многосевой станок лазерной резки листа и профиля #1 - нужно управлять количеством моторов (joints), которое пока не под силу штатным средствам LinuxCNC. Ну и скорее всего и для других проектов, которым окажутся тесными возможности штатной кинематики LinuxCNC.

Если появятся желающие присоединиться к работам по этой тематике, то добро пожаловать в тему.
Оставляю за собой узурпаторское право "отселять" обсуждения, выходящие за рамки этой темы. :tongue:

ВНИМАНИЕ!
Все опубликованные ниже разработки предлагаются "AS IS" (как есть), без каких-либо гарантий, в том числе и по сопровождению
Имеющиеся описания ориентированы на тех, кто более-менее разбирается в LinuxCNC и в его HAL в частности, или хотя-бы прочитал и понял документацию.
Считайте это своеобразным порогом вхождения. Если сделать подробное описание "для чайников", то оные не преминут этим воспользоваться и в случае любых непоняток будут задавать вопросы, которые как правило так или иначе освещены в документации. Отвечать на них я не желаю, не из вредности, а из-за отсутствия у меня на это времени....

Extended Gantry Axis Component for LinuxCNC HAL (egantry)

Описание: https://cncdevice.com/devel/eaxis/egantry.txt
Архив: https://cncdevice.com/devel/eaxis/egant ... re3.tar.gz предыдущая версия: https://cncdevice.com/devel/eaxis/egant ... re2.tar.gz
Устанавливается командой

Код: Выделить всё

sudo halcompile --install egantry.c
Совместим с LinuxCNC версий 2.6.x и выше. Для уточнения проверяйте у компонента axis.N наличие пинов home-state и homed.

BlackBox userspace component for LinuxCNC HAL

Описание: Re: LinuxCNC - Альтернативная кинематика. #76
Компонент: https://cncdevice.com/devel/misc/BlackBox.py

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Начало темы было такое: :)
PKM писал(а):А что за кинематика? Для твоего мега-станка?
gantry кинематика, которая которая использует только одну axis.N для любого количества приводов оси, ну и решает можество других проблем, сопутствующих штатной gantrykins.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
umerov
Кандидат
Сообщения: 79
Зарегистрирован: 18 янв 2012, 21:22
Репутация: 21
Откуда: Украина
Контактная информация:

Re: LinuxCNC - Альтернативная кинематика.

Сообщение umerov »

да, дествительно
gantry.comp
не доделаный, не работает с HOME_USE_INDEX = YES
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: LinuxCNC - Альтернативная кинематика.

Сообщение Serg »

Кстати при HOME_USE_INDEX = YES есть ещё один глюк, связанный с работой этого самого индекса: При уточнении по индексу одновременно происходит обнуление показаний энкодера, axis.N видит это обнуление и, как и положено, обнуляет своё задание. Но "видит" оно в одном сервоцикле, а обнуление задания до pid.N доходит только в следующем - если система PID+привод быстрая, то она успевает заметить эту милисекундную разницу и отреагировать на это ощутимым "ударом". :(
Как это победить пока не понятно...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: LinuxCNC - Альтернативная кинематика.

Сообщение Nick »

А если поменять порядок addf не поможет?
Не совсем понимаю откуда получается удар? ПИД рассчитывается со старым звданием и новым показанием encoder?
PID по положению?
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: LinuxCNC - Альтернативная кинематика.

Сообщение Serg »

порядок addf не важен, сигналы между компонентами передаются "между" сервоциклами.
По любому функция сервоцикла компонента axis работает примерно так:

Код: Выделить всё

Начало
  прочитать данные с входов
  сделать свои вычисления
  выставить новые данные на выходах
Завершение
Т.е. данные на выходе появятся "в конце сервоцикла", а до pid они дойдут только в начале следующего - т.е. по любому в течении одного сервоцикла у него будет разница между command и feedback с которой он обязан что-то сделать.

Да, PID по положению.

В принципе такая фигня будет при любых конфигурациях (теоретически), где используется обратная связь по положению и обнуление по индексу.

P.S. Может всё это в свою тему отделить и в ней-же поселить мои "усилия" в направлении "альтернативной кинематики" (зависимые оси, вспомогательные оси, т.п.)?..
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
PKM
Почётный участник
Почётный участник
Сообщения: 4263
Зарегистрирован: 31 мар 2011, 18:11
Репутация: 705
Настоящее имя: Андрей
Откуда: Украина
Контактная информация:

Re: LinuxCNC - Альтернативная кинематика.

Сообщение PKM »

А если в момент завершения хоуминга снижать чувствительность пид?

Тему надо бы отделить...
umerov
Кандидат
Сообщения: 79
Зарегистрирован: 18 янв 2012, 21:22
Репутация: 21
Откуда: Украина
Контактная информация:

Re: LinuxCNC - Альтернативная кинематика.

Сообщение umerov »

А что если делать обнуление показаний энкодера, когда Axis в режиме “machine off.” только потом включать linuxcnc в режим “machine on”?

например как здесь.
http://wiki.linuxcnc.org/cgi-bin/wiki.p ... smaMachine
homing sequence begins:

Enable the Granite drives. Normally, in machine-off state, the Granite drives are disabled. We force them to be enabled so they can do the homing sequence.
Turn the Axis mode to “machine off.” Since the Granite drives will be moving the X and Y axes independent of linuxcnc control, we put linuxcnc into the “off” state so it will not generate a following error fault or try to send corrective step/direction pulses to the drives.
Toggle the GPIO that tells the Granite drives to do the homing sequence (hardware controlled).
Wait for the GPIO signal from the Granite drives that the homing sequence is complete
Reset the X and Y axes encoders –this eliminates the following error from the drives moving without linuxcnc control.
Turn the linuxcnc state to “machine on”
Do the normal linuxcnc homing sequence, including the Z axis homing to limit switch.
return to the “ready on” state
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: LinuxCNC - Альтернативная кинематика.

Сообщение Serg »

PKM писал(а):А если в момент завершения хоуминга снижать чувствительность пид?
У этого решения есть неопределённости:
На какое время снижать чувствительность? Если времени окажется мало, то рискуем не успеть выровняться, если много, то рискуем не успеть вернуть чувствительность до начала рабочего движения. Если не на время, а до тех пор пока есть разница, то риск тот-же самый...
umerov писал(а):А что если делать обнуление показаний энкодера, когда Axis в режиме “machine off.” только потом включать linuxcnc в режим “machine on”?
В режиме "machine off" вообще нельзя ничем двигать просто по соображениям безопасности, всё, что может двигаться должно быть отключено безусловно.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
PKM
Почётный участник
Почётный участник
Сообщения: 4263
Зарегистрирован: 31 мар 2011, 18:11
Репутация: 705
Настоящее имя: Андрей
Откуда: Украина
Контактная информация:

Re: LinuxCNC - Альтернативная кинематика.

Сообщение PKM »

Хорошо, а при обычном хоуминге такое тоже происходит? Вроде не замечал.
ПИД вообще не любит скачков...
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: LinuxCNC - Альтернативная кинематика.

Сообщение Nick »

Если будешь переносить - они всеравно будут вверху, они по времени сортируются.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6192
Откуда: Казахстан.
Контактная информация:

Re: LinuxCNC - Альтернативная кинематика.

Сообщение aftaev »

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

Re: LinuxCNC - Альтернативная кинематика.

Сообщение Serg »

aftaev писал(а):А здесь можно обсуждать как на токарном можно нарезать зубчатые шкивы/шестеренки если рядом с резцедержкой поставить серву которая будет вращать резец в нужный момент :)
При условии, если окажется, что штатным набором средств LinuxCNC эту проблему не решить. Супер-пупер многомудрый конфиг считается решением штатным набором средств.
Ну и при наличии добровольца способного реализовать решение. Просто теоретических изысканий без практического результата и так хватает. :)

Хочется собрать тут только те решения по кинематике, на которые штатная LinuxCNC не способна.
Полагаю, что в какой-то теме обсуждаются варианты решения какой-то проблемы/задачи, связаной с кинематикой. В какой-то момент становится понятным, что штатными средствами её не решить, но можно, скажем, написать новый HAL-компонент или ещё что. С этого момента можно говорить о включении этого решения сюда, в виде переноса каких-то сообщений или просто добавления ссылки на первой странице.
В любом случае для публикации готовых решений имеет смысл создать соотвю раздел в Wiki.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: LinuxCNC - Альтернативная кинематика.

Сообщение Serg »

PKM писал(а):Хорошо, а при обычном хоуминге такое тоже происходит? Вроде не замечал.
ПИД вообще не любит скачков...
Происходит всегда при уточнении по индексу. Хорошо заметно если индекс "далеко" от места размыкания концевика. Причем заметно только при первом хомлении после включения питания станка с сервоприводов. Гарантированный способ получить удар: запустить станок и выполнить поиск начал с уточнением по индексу, выключить станок и сервы, повернуть вал сервы примерно на полоборота в сторону от датчика, включить станок и сервы, выполнить поиск начал с уточнением по индексу.
А вот при повторных хомлениях без выключения этого эффекта уже не будет, ибо ноль сервы будет совпадать с нулём axis.N по результатам предыдущих попыток.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: LinuxCNC - Альтернативная кинематика.

Сообщение Serg »

UAVpilot писал(а):Как правило в портале всегда есть внутренние напряжения, от колебаний температуры, от выравнивания при хомлении и т.п.
Тут описано решение штатными средствами: Re: Плазморез со смарт-вентиляцией #40
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Dmaster
Мастер
Сообщения: 1271
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

Re: LinuxCNC - Альтернативная кинематика.

Сообщение Dmaster »

UAVpilot писал(а):У этого решения есть неопределённости:
На какое время снижать чувствительность? Если времени окажется мало, то рискуем не успеть выровняться, если много, то рискуем не успеть вернуть чувствительность до начала рабочего движения. Если не на время, а до тех пор пока есть разница, то риск тот-же самый...
pid.N.maxoutput
Можно использовать этот параметр на время хоуминга.
Я его использовал при ориентации инструмента перед сменой, что-б шпиндель не рвал со всей дури , но при этом следил жестко.

PS. пошу прощения. перепутал.
pid.N.maxerror
" Linux CNC - наше всё"
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: LinuxCNC - Альтернативная кинематика.

Сообщение Serg »

Dmaster писал(а):pid.N.maxerror
Смотрел в ту сторону, но даже не рискнул попробовать - оно ограничивает все три коэфициента, а на "резвых" сервах, как на этом станке, это чревато, т.к. на некоторых значениях I,D меньше заданных случается нехилый "расколбас"...
И жёстко он следить не сможет - остановиться быстро ему не даст это ограничение.

Вобщем в рамках этой темы проблему можно считать решённой (бонусом к egantry), а рабочее "штатное" решение "без оговорок" описано в плазморезе.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: LinuxCNC - Альтернативная кинематика.

Сообщение Nick »

Кстати, а почему pid.N.maxoutput не поможет?
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: LinuxCNC - Альтернативная кинематика.

Сообщение Serg »

Вопервых pid.N.maxerror и pid.N.maxoutput (и некоторые другие) заметно меняют поведение настроенного PID, например ограничение pid.N.maxoutput может помешать вовремя подавить возможную раскачку.
Вовторых ограничение pid.N.maxoutput мало чем поможет - этим можно ограничить в лучшем случае скорость, а нужно ограничивать ускорение.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: LinuxCNC - Альтернативная кинематика.

Сообщение Nick »

Тогда pid.N.maxoutput через mux либо в limit либо сразу в аналог :)
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: LinuxCNC - Альтернативная кинематика.

Сообщение Serg »

Какая разница каким способом его менять? Суть в том, что при этом меняются параметры системы PID-привод, а это чревато...
Собственно вопрос с gantry можно считать решённым - первая версия компонента egantry готова, работают все запланированные функции.
Чуть позже опубликую, а сейчас на работу надо сходить... :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
umerov
Кандидат
Сообщения: 79
Зарегистрирован: 18 янв 2012, 21:22
Репутация: 21
Откуда: Украина
Контактная информация:

Re: LinuxCNC - Альтернативная кинематика.

Сообщение umerov »

первая версия компонента egantry готова
очень интересно
Ответить

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