Страница 5 из 9
LinuxCNC - Альтернативная кинематика.
Добавлено: 10 май 2012, 13:54
Serg
Эта тема предлагается для обсуждения моих решений некоторых вопросов кинематики в LinuxCNC и других, связанных с ними.
На сегодня стоит задача получить рабочее решение для вот этого монстрика:
Многосевой станок лазерной резки листа и профиля #1 - нужно управлять количеством моторов (joints), которое пока не под силу штатным средствам LinuxCNC. Ну и скорее всего и для других проектов, которым окажутся тесными возможности штатной кинематики LinuxCNC.
Если появятся желающие присоединиться к работам по этой тематике, то добро пожаловать в тему.
Оставляю за собой узурпаторское право "отселять" обсуждения, выходящие за рамки этой темы.
ВНИМАНИЕ!
Все опубликованные ниже разработки предлагаются "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
Устанавливается командой
Совместим с 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.
Re: LinuxCNC - Альтернативная кинематика.
Добавлено: 11 мар 2016, 01:00
Serg
VitalikD писал(а):Такое сложно добавить, если понадобится?
Такого не будет. Этот компонент только для объединения нескольких приводов в одну ось. Шаговики, энкодеры, сервы - всё это за пределами его компетенции.
Re: LinuxCNC - Альтернативная кинематика.
Добавлено: 09 ноя 2016, 14:59
MGG
Подскажите, есть 2 сервы по Х, только с одной стороны есть датчик HOME, реально ли реализовать, чтоб оба мотора ехали пока первый не наскочит на датчик, после этого оба выставляются по Z индексу, далее один двигатель съезжает на определенный оборот, чтобы они между собой выравнились?
Re: LinuxCNC - Альтернативная кинематика.
Добавлено: 09 ноя 2016, 17:06
Serg
Теоретически именно так и будет работать, если датчик HOME подключить к обоим joint.
Re: LinuxCNC - Альтернативная кинематика.
Добавлено: 14 янв 2017, 00:26
Nikomas
MGG писал(а):Подскажите, есть 2 сервы по Х, только с одной стороны есть датчик HOME, реально ли реализовать, чтоб оба мотора ехали пока первый не наскочит на датчик, после этого оба выставляются по Z индексу, далее один двигатель съезжает на определенный оборот, чтобы они между собой выравнились?
Подскажите как вы реализовали свою задумку. Получилось?
Re: LinuxCNC - Альтернативная кинематика.
Добавлено: 21 янв 2017, 18:43
MGG
Nikomas писал(а):Подскажите как вы реализовали свою задумку. Получилось?
Пока нет, валюсь с джоин еррор, стараюсь
Re: LinuxCNC - Альтернативная кинематика.
Добавлено: 24 июл 2017, 00:15
a321
А можно попросить топикстартера в первом сообщении дать более развернутое описание темы, а также инструкцию по установке, реализации, активации? Например лишь среди прочего между строк читается, я могу ошибаться, что в реализации выравниавания портала вторым двигателем нужен второй драйвер двигателя и нужно задействовать на контроллере еще одну "ось"? Хорошей новостью читается, что датчик (условно) Хоме второй половины портала может быть (условно) где угодно, поскольку его положение явно прописывается в настройках против
http://www.cnc-club.ru/forum/viewtopic. ... 7&start=80, требующего одинакового положения датчиков.
Re: LinuxCNC - Альтернативная кинематика.
Добавлено: 24 июл 2017, 01:51
Serg
Попросить можно, но он, увы, откажет.
Имеющееся описание ориентировано на тех, кто более-менее разбирается в LinuxCNC и в его HAL в частности, или хотя-бы прочитал и понял документацию.
Считайте это своеобразным порогом вхождения. Если сделать подробное описание "для чайников", то оные не преминут этим воспользоваться и в случае любых непоняток будут задавать вопросы, которые как правило так или иначе освещены в документации. Отвечать на них я не желаю, не из вредности, а из-за отсутствия у меня на это времени...
Re: LinuxCNC - Альтернативная кинематика.
Добавлено: 02 ноя 2017, 19:48
MGG
Вопрос такой:
Ситуация отхумился, корректировка отработала, далее если я выключаю енейбл на сервах и снова включаю, то оси встают на место с максимальной скоростью, и надо или прехомячиваться, а по большому счету, чтобы лишней нагрузки на портал не было, перегружать линуху. Это фича, баг, или косяк в моем конфиге?
All_hys, acc и все что с этим связано со значением 10
Re: LinuxCNC - Альтернативная кинематика.
Добавлено: 03 ноя 2017, 00:35
Serg
Скорее всего не все пины компонента подключены.
Re: spindle-index-enable ?
Добавлено: 16 янв 2018, 15:55
nkp
UAVpilot,
вот такое заметил в твоей теме:
Все опубликованные ниже разработки предлагаются "AS IS" (как есть), без каких-либо гарантий, в том числе и по сопровождению.
а разве с форумного решения может быть какой то спрос?))
или были прецеденты?
Re: spindle-index-enable ?
Добавлено: 16 янв 2018, 16:00
Serg
nkp писал(а):а разве с форумного решения может быть какой то спрос?))
или были прецеденты?
Ну люди разные попадаются... Несколько раз пользователи моих бесплатных "продуктов" пытались потребовать реальную компенсацию за реальные и мнимые глюки...
А по сопровождению - не факт, что какой-то конкретный момент времени у меня будет возможность оказывать помощь.
Я по основной работе уже давно заметил, что обычно чем меньше клиент платит за услуги, тем большего внимания и ништяков он требует...
Re: LinuxCNC - Альтернативная кинематика.
Добавлено: 16 янв 2018, 17:29
aftaev
UAVpilot писал(а):Несколько раз пользователи моих бесплатных "продуктов" пытались потребовать реальную компенсацию за реальные и мнимые глюки...
Да бывают странные
Некоторым бесплатно советы даешь где, что купить, они потом на тебя еще бочку катят что не то посоветовал, а нужно было за них все расчеты сделать и посоветовать
UAVpilot писал(а):Я по основной работе уже давно заметил, что обычно чем меньше клиент платит за услуги, тем большего внимания и ништяков он требует...
У нас так же.
Re: LinuxCNC - Альтернативная кинематика.
Добавлено: 21 май 2018, 14:16
Nikomas
UAVpilot, по такому алгоритму egantry сможет отхоумиться?
Код: Выделить всё
loadrt egantry count=1 personality=2
addf egantry.0 servo-thread
setp egantry.0.align-vel 0.5
setp egantry.0.align-acc 1
setp egantry.0.align-hyst 0.01
setp egantry.0.joint.00.correct 2,35
setp egantry.0.joint.01.correct 1,16
setp egantry.0.joint.00.max_acceleration [AXIS_0]MAX_ACCELERATION
setp egantry.0.joint.00.max_velocity [AXIS_0]MAX_VELOCITY
setp egantry.0.joint.01.max_acceleration [AXIS_0]MAX_ACCELERATION
setp egantry.0.joint.01.max_velocity [AXIS_0]MAX_VELOCITY
# position & feedback
net x-pos-cmd egantry.0.axis.motor-pos-cmd => axis.0.motor-pos-cmd
net x-pos-fb egantry.0.axis.motor-pos-fb => axis.0.motor-pos-fb
net x1-pos-cmd egantry.0.joint.00.pos-cmd => pid.x.command
net x1-pos-fb egantry.0.joint.00.pos-fb <= pid.x.feedback
net x2-pos-cmd egantry.0.joint.01.pos-cmd => pid.a.command
net x2-pos-fb egantry.0.joint.01.pos-fb <= pid.a.feedback
# enables
net x-enable egantry.0.axis.amp-enable <= axis.0.amp-enable-out
net x1-enable egantry.0.joint.00.enable => pid.x.enable
net x2-enable egantry.0.joint.01.enable => pid.a.enable
# index_ENCODER
net x-index-enable egantry.0.axis.index-enable <= axis.0.index-enable
net x1-index-enable egantry.0.joint.00.index-enable => pid.x.index-enable
net x2-index-enable egantry.0.joint.01.index-enable => pid.a.index-enable
# home switches & others
net x-home-sw egantry.0.axis.home-sw => axis.0.home-sw-in
net x-joint-home-sw egantry.0.joint.00.home-sw egantry.0.joint.01.home-sw <= to_pci.1.pins.pin-24-in
net x-home-state axis.0.home-state => egantry.0.axis.home-state
net x-homed axis.0.homed => egantry.0.axis.homed
Re: LinuxCNC - Альтернативная кинематика.
Добавлено: 21 май 2018, 16:50
Serg
Если я правильно понял картинку, то да. У MGG было аналогично сделано.
P.S. В *.correct на значения ругнётся.
Re: LinuxCNC - Альтернативная кинематика.
Добавлено: 21 май 2018, 16:53
Nikomas
UAVpilot писал(а): В *.correct на значения ругнётся.
Понял)))
Re: LinuxCNC - Альтернативная кинематика.
Добавлено: 22 май 2018, 13:47
Nikomas
UAVpilot писал(а):Если я правильно понял картинку, то да.
А чем хуже?
Код: Выделить всё
{AXIS=0}
HOME = 2.35
HOME_OFFSET = 0.0
...
{AXIS=3}
HOME = 1.16
HOME_OFFSET = x.x - величина смещения индексной метки относительно ведущей оси.
Re: LinuxCNC - Альтернативная кинематика.
Добавлено: 22 май 2018, 14:24
Serg
Re: LinuxCNC - Альтернативная кинематика.
Добавлено: 10 июн 2018, 20:22
Nikomas
Включаем станок:
Выключаем ENABLE станка в программе (но усилки работают и честно читают энкодеры) и видим как напряжения в портале тянут одну сторону:
Теперь оператор, проходя мимо, случайно задел одну из сторон портала и сместил на 1мм:
И при следующем включении получаем
В результате получим резкий скачёк половины портала с феерическим грохотом и прочими спецэффектами.
Как этого избежать?
Re: LinuxCNC - Альтернативная кинематика.
Добавлено: 11 июн 2018, 00:10
Serg
Мало информации.
Re: LinuxCNC - Альтернативная кинематика.
Добавлено: 04 июл 2018, 18:29
Nikomas
UAVpilot писал(а):Мало информации.
Еще раз понаблюдал за работой. Вывод: надо как-то подключать offset.
- Включаю станок.
- Энкодеры по нулям.
Код: Выделить всё
egantry.0.joint.00.pos-fb 0.000
egantry.0.joint.01.pos-fb 0.000
- Ищу начала оси по индексным меткам и одному датчику.
- После поиска начальных точек опытным путем пришел к тому, что ось joint.01 надо "вернуть" на 4мм. Соотв. ввожу egantry.0.joint.01.correct -4 и ось становится там, где мне и необходимо.
Код: Выделить всё
egantry.0.joint.00.pos-fb 0.000
egantry.0.joint.01.pos-fb -4.000
- Перезапускаю программу.
- egantry видит что показания энкодера расходятся на 4мм рвет joint.01 со всех сил в позицию 0. Грохот стоит тот еще.
Что-то не подключено?
(для просмотра содержимого нажмите на ссылку)Код: Выделить всё
14 float IN 300 egantry.0.align-acc
14 float IN 0.01 egantry.0.align-hyst
14 float IN 200 egantry.0.align-vel
14 bit IN FALSE egantry.0.axis.amp-enable <== x-enable
14 bit OUT FALSE egantry.0.axis.amp-fault-out
14 s32 OUT 0 egantry.0.axis.fb-joint
14 s32 IN 0 egantry.0.axis.home-state <== x-home-state
14 bit OUT FALSE egantry.0.axis.home-sw ==> x-home-sw
14 bit IN FALSE egantry.0.axis.homed <== x-homed
14 bit I/O FALSE egantry.0.axis.index-enable <=> x-index-enable
14 float IN 0 egantry.0.axis.motor-pos-cmd <== x-pos-cmd
14 float OUT 0 egantry.0.axis.motor-pos-fb ==> x-pos-fb
14 bit OUT FALSE egantry.0.axis.neg-lim-sw
14 bit OUT FALSE egantry.0.axis.pos-lim-sw
14 bit IN FALSE egantry.0.joint.00.amp-fault-in
14 float IN 0 egantry.0.joint.00.correct
14 bit OUT FALSE egantry.0.joint.00.enable ==> x1-enable
14 float OUT 0 egantry.0.joint.00.f-error
14 bit IN FALSE egantry.0.joint.00.home-sw <== x-joint-home-sw
14 bit I/O FALSE egantry.0.joint.00.index-enable <=> x1-index-enable
14 float IN 300 egantry.0.joint.00.max_acceleration
14 float IN 200 egantry.0.joint.00.max_velocity
14 bit IN FALSE egantry.0.joint.00.neg-lim-sw
14 float OUT 0 egantry.0.joint.00.offset
14 float OUT 0 egantry.0.joint.00.pos-cmd ==> x1-pos-cmd
14 float IN -0 egantry.0.joint.00.pos-fb <== x1-pos-fb
14 bit IN FALSE egantry.0.joint.00.pos-lim-sw
14 bit IN FALSE egantry.0.joint.01.amp-fault-in
14 float IN 0 egantry.0.joint.01.correct
14 bit OUT FALSE egantry.0.joint.01.enable ==> x2-enable
14 float OUT 0 egantry.0.joint.01.f-error
14 bit IN FALSE egantry.0.joint.01.home-sw <== x-joint-home-sw
14 bit I/O FALSE egantry.0.joint.01.index-enable <=> x2-index-enable
14 float IN 300 egantry.0.joint.01.max_acceleration
14 float IN 200 egantry.0.joint.01.max_velocity
14 bit IN FALSE egantry.0.joint.01.neg-lim-sw
14 float OUT 0 egantry.0.joint.01.offset
14 float OUT 0 egantry.0.joint.01.pos-cmd ==> x2-pos-cmd
14 float IN 0.0004 egantry.0.joint.01.pos-fb <== x2-pos-fb
14 bit IN FALSE egantry.0.joint.01.pos-lim-sw
14 s32 OUT 1170 egantry.0.time