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.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

umerov писал(а):И еще один вопрос - если установить частоту servo-thread вместо 1 мс. => в 0.1 мс. если в этом смысл, сомжет ли пид двигателей отрабатывать траекторию точнее?
Теоретически - да, но на практике сложно найти двигатель, который хоть как-то сможет среагировать на управляющее воздействие даже за 1 мс.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Predator
Мастер
Сообщения: 9583
Зарегистрирован: 18 июл 2013, 18:26
Репутация: 2531
Контактная информация:

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

Сообщение Predator »

UAVpilot, Сергей решил ответить, не прошло и трёх лет :hehehe:
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

Predator писал(а):не прошло и трёх лет
это шапка((
Аватара пользователя
Predator
Мастер
Сообщения: 9583
Зарегистрирован: 18 июл 2013, 18:26
Репутация: 2531
Контактная информация:

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

Сообщение Predator »

nkp писал(а):это шапка
А блин, прикреплённый первый пост чтоли, я и не заметил :)
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

пляски с gantrykins начинаются с переключения режимов ...
egantry ,я так понял, не требует никаких переключений ,емс в данном случае вообще не видит спареных осей...
это плюс...
а какие минусы будут при самом простом использовании: два шаговика на ось,никакого пид и энкодеров???
достаточен ли будет такой минимум:

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

setp stepgen.0.position-scale [AXIS_0]SCALE
setp stepgen.0.steplen 1
setp stepgen.0.stepspace 0
setp stepgen.0.dirhold 40000
setp stepgen.0.dirsetup 40000
setp stepgen.0.maxaccel [AXIS_0]STEPGEN_MAXACCEL

setp stepgen.3.position-scale [AXIS_0]SCALE
setp stepgen.3.steplen 1
setp stepgen.3.stepspace 0
setp stepgen.3.dirhold 40000
setp stepgen.3.dirsetup 40000
setp stepgen.3.maxaccel [AXIS_0]STEPGEN_MAXACCEL

net  Xpos-cmd  axis.0.motor-pos-cmd       => egantry.0.axis.motor-pos-cmd
net  X0pos     egantry.0.joint.00.pos-cmd => stepgen.0.position-cmd
net  X1pos     egantry.0.joint.01.pos-cmd => stepgen.3.position-cmd

net  X0pos-fb  stepgen.0.position-fb        => egantry.0.joint.00.pos-fb
net  X1pos-fb  stepgen.3.position-fb        => egantry.0.joint.01.pos-fb 
net  Xpos-fb   egantry.0.axis.motor-pos-fb  => axis.0.motor-pos-fb

net  Xenable   axis.0.amp-enable-out     => egantry.0.axis.amp-enable  
net  X0enable  egantry.0.joint.00.enable => stepgen.0.enable
net  X1enable  egantry.0.joint.01.enable => stepgen.3.enable

net  x0step <= stepgen.0.step
net  x0dir  <= stepgen.0.dir
net  x1step <= stepgen.3.step
net  x1dir  <= stepgen.3.dir
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

nkp писал(а):egantry ,я так понял, не требует никаких переключений ,емс в данном случае вообще не видит спареных осей...
Да.
nkp писал(а):а какие минусы будут при самом простом использовании: два шаговика на ось,никакого пид и энкодеров???
Да вроде никаких, хотя в реале не пробовал. Нужно просто построить цепочку: axis -> egantry -> stepgen и соединить все одноимённые пины между axis и egantry.

P.S. С egantry разве что нельзя будет приводы поотдельности подвигать.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

UAVpilot писал(а): P.S. С egantry разве что нельзя будет приводы поотдельности подвигать.
как по мне , так это можно записать только в плюс...
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

ноль по концевикам не получается искать:
(в роли концевиков - кнопки на панели)

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

net homeY pyvcp.home1  axis.1.home-sw-in
net homeZ pyvcp.home2  axis.2.home-sw-in

net homeX0 egantry.0.joint.00.home-sw  pyvcp.home0
net homeX1 egantry.0.joint.01.home-sw  pyvcp.home3
net homeX  egantry.0.axis.home-sw      axis.0.home-sw-in
в ини:

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

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

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

Сообщение Serg »

Этого явно мало. Нужно соединить все пины egantry.0.axis.* с axis.0
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

после добавления:

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

net index-enable egantry.0.axis.index-enable   axis.0.index-enable
net amp-fault    egantry.0.axis.amp-fault-out  axis.0.amp-fault-in
net homed        egantry.0.axis.homed          axis.0.homed
net neg-lim      egantry.0.axis.neg-lim-sw     axis.0.neg-lim-sw-in
net pos-lim      egantry.0.axis.pos-lim-sw     axis.0.pos-lim-sw-in
net home-state   egantry.0.axis.home-state     axis.0.home-state 
home работает...
но процедура происходит не так как с gantry...
в gantry каждая ось (из спаренных) ищет дом "самостоятельно" - то есть : поиск
концевика,съезд с него в обратную сторону , и уточнение одна из спаренных осей делает не глядя,что
в это время происходит со второй из осей...
теоретически - при очень большом начальном перекосе такая особенность может вызывать неточность в процедуре HOME...
-----------
тут же вроде это происходит логичней:
ось ,первая доехавшая до концевика , "ждет остальных" , потом только начинает уточнение ...
==========
может в чем то ошибаюсь - ведь выводы сделаны без железа - кнопки pyvcp вместо концевиков...
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

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

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

Сообщение Serg »

egantry версия 1.0pre3:

Добавлена возможность ограничить максимальные скорость и ускорение для каждого привода: добавлены пины egantry.N.joint.MM.max_velocity и egantry.N.joint.MM.max_acceleration, по дефолту - без ограничений.

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

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

Сообщение Nick »

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

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

Сообщение Serg »

Nick писал(а):А на планировщик траектории это как-то повлияет?
Если скорость и ускорение поставить меньше, чем задано для самой оси в ini, то плохо повлияет - following error будет случаться. :)

Эти нововведения задумано использовать вот так:

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

setp x.joint.00.max_acceleration [AXIS_0]MAX_ACCELERATION
setp x.joint.00.max_velocity [AXIS_0]MAX_VELOCITY
setp x.joint.01.max_acceleration [AXIS_0]MAX_ACCELERATION
setp x.joint.01.max_velocity [AXIS_0]MAX_VELOCITY
больше как дополнительную защиту от каких-нибудь глюков в самом egantry или при подаче задания напрямую на компонент.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

Попутно другим разработкам родился ещё один компонент с говорящим названием: BlackBox.
Компонент записывает состояние всех HAL компонентов и сигналов в файл blackbox.log или с указанным именем.
Запись производится любым из сигналов in0..in7 положительным фронтом, in0-not..in7-not отрицательным фронтом.
Входной сигнал дублируется на соотв. пинах out0..out7-not ПОСЛЕ ЗАПИСИ состояния HAL.
enable - разрешает работу компонента.

Может быть полезен при "разборе полётов", когда что-то произошло и надо найти причину. Например можно активировать при нажатии кнопки E-STOP или по сигналу ошибки приводов.
Сам компонент в начале темы, запускается так:

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

loadusr -W ./BlackBox.py
или так

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

loadusr -W ./BlackBox.py blackbox.txt
сам файл BlackBox.py должен находится в каталоге с конфигурацией станка и иметь права на запуск.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

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

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

Сообщение Serg »

там просто вывод halcmd show, ну и в начале строчка с датой и временем, ибо новые записи туда добавляются.
Наверно надо будет ещё указать по какому пину запись случилась...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
VitalikD
Мастер
Сообщения: 305
Зарегистрирован: 29 авг 2013, 20:17
Репутация: 41
Контактная информация:

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

Сообщение VitalikD »

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

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

Сообщение Serg »

Датчик лимита? Произойдёт то-же самое, что в случае обычной оси - будет перекашивать портал или упираться в мех. ограничитель до отключения сервы по перегрузке.
В принципе можно сделать пин для задания макс. рассогласования. Подумаю на досуге, надо будет повнимательней просчитать поведение до хоминга...
Если надо прямо сейчас, то можно внешнюю логику "навесить", все нужные параметры наружу "светят".
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
VitalikD
Мастер
Сообщения: 305
Зарегистрирован: 29 авг 2013, 20:17
Репутация: 41
Контактная информация:

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

Сообщение VitalikD »

UAVpilot писал(а):В принципе можно сделать пин для задания макс. рассогласования.
Да, я это и имел в виду. Иначе можно сломать что-нибудь.
UAVpilot писал(а):Если надо прямо сейчас
Нет, спасибо. Есть большой плазморез, но хозяйва еще не решили, стоит ли тратиться на нормальное управление, ибо к механике тоже надо приложить руки, а они там у всех не оттуда. Я на всякий случай решение прикидываю.
Вот еще такой вопрос. На приводах стоят шаговики. Хочу поставить энкодеры на тысячу-две меток, но управлять через них по скорости разрешения маловато - двигатели без редуктора, около 120мм перемещения на оборот. По энкодерам просто останавливаться в случае превышения ошибки. Но хотелось бы иметь возможность выровнять портал нажатием кнопки без езды на датчики и перепривязаться к нулям через счетчики энкодеров. Такое сложно добавить, если понадобится?
Ответить

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