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 »

VitalikD писал(а):Такое сложно добавить, если понадобится?
Такого не будет. Этот компонент только для объединения нескольких приводов в одну ось. Шаговики, энкодеры, сервы - всё это за пределами его компетенции.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
MGG
Мастер
Сообщения: 3673
Зарегистрирован: 08 фев 2016, 16:33
Репутация: 1010
Настоящее имя: Манн Геннадий Геннадьевич
Откуда: Москва
Контактная информация:

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

Сообщение MGG »

Подскажите, есть 2 сервы по Х, только с одной стороны есть датчик HOME, реально ли реализовать, чтоб оба мотора ехали пока первый не наскочит на датчик, после этого оба выставляются по Z индексу, далее один двигатель съезжает на определенный оборот, чтобы они между собой выравнились?
http://www.cnc-club.ru/forum/viewtopic. ... 76#p304076 Поставки оборудования для ваших станков
https://www.instagram.com/dtw.moscow/
dtw.moscow@gmail.com
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

Теоретически именно так и будет работать, если датчик HOME подключить к обоим joint.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Nikomas
Мастер
Сообщения: 721
Зарегистрирован: 07 янв 2012, 14:31
Репутация: 64
Откуда: Беларусь
Контактная информация:

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

Сообщение Nikomas »

MGG писал(а):Подскажите, есть 2 сервы по Х, только с одной стороны есть датчик HOME, реально ли реализовать, чтоб оба мотора ехали пока первый не наскочит на датчик, после этого оба выставляются по Z индексу, далее один двигатель съезжает на определенный оборот, чтобы они между собой выравнились?
Подскажите как вы реализовали свою задумку. Получилось?
MGG
Мастер
Сообщения: 3673
Зарегистрирован: 08 фев 2016, 16:33
Репутация: 1010
Настоящее имя: Манн Геннадий Геннадьевич
Откуда: Москва
Контактная информация:

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

Сообщение MGG »

Nikomas писал(а):Подскажите как вы реализовали свою задумку. Получилось?
Пока нет, валюсь с джоин еррор, стараюсь :)
http://www.cnc-club.ru/forum/viewtopic. ... 76#p304076 Поставки оборудования для ваших станков
https://www.instagram.com/dtw.moscow/
dtw.moscow@gmail.com
a321
Мастер
Сообщения: 567
Зарегистрирован: 03 дек 2016, 00:30
Репутация: 66
Контактная информация:

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

Сообщение a321 »

А можно попросить топикстартера в первом сообщении дать более развернутое описание темы, а также инструкцию по установке, реализации, активации? Например лишь среди прочего между строк читается, я могу ошибаться, что в реализации выравниавания портала вторым двигателем нужен второй драйвер двигателя и нужно задействовать на контроллере еще одну "ось"? Хорошей новостью читается, что датчик (условно) Хоме второй половины портала может быть (условно) где угодно, поскольку его положение явно прописывается в настройках против http://www.cnc-club.ru/forum/viewtopic. ... 7&start=80, требующего одинакового положения датчиков.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

Попросить можно, но он, увы, откажет.
Имеющееся описание ориентировано на тех, кто более-менее разбирается в LinuxCNC и в его HAL в частности, или хотя-бы прочитал и понял документацию.
Считайте это своеобразным порогом вхождения. Если сделать подробное описание "для чайников", то оные не преминут этим воспользоваться и в случае любых непоняток будут задавать вопросы, которые как правило так или иначе освещены в документации. Отвечать на них я не желаю, не из вредности, а из-за отсутствия у меня на это времени...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
MGG
Мастер
Сообщения: 3673
Зарегистрирован: 08 фев 2016, 16:33
Репутация: 1010
Настоящее имя: Манн Геннадий Геннадьевич
Откуда: Москва
Контактная информация:

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

Сообщение MGG »

Вопрос такой:
Ситуация отхумился, корректировка отработала, далее если я выключаю енейбл на сервах и снова включаю, то оси встают на место с максимальной скоростью, и надо или прехомячиваться, а по большому счету, чтобы лишней нагрузки на портал не было, перегружать линуху. Это фича, баг, или косяк в моем конфиге?
All_hys, acc и все что с этим связано со значением 10
http://www.cnc-club.ru/forum/viewtopic. ... 76#p304076 Поставки оборудования для ваших станков
https://www.instagram.com/dtw.moscow/
dtw.moscow@gmail.com
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

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

Re: spindle-index-enable ?

Сообщение nkp »

UAVpilot,
вот такое заметил в твоей теме:
Все опубликованные ниже разработки предлагаются "AS IS" (как есть), без каких-либо гарантий, в том числе и по сопровождению.

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

Re: spindle-index-enable ?

Сообщение Serg »

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

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

Сообщение aftaev »

UAVpilot писал(а):Несколько раз пользователи моих бесплатных "продуктов" пытались потребовать реальную компенсацию за реальные и мнимые глюки...
Да бывают странные :) Некоторым бесплатно советы даешь где, что купить, они потом на тебя еще бочку катят что не то посоветовал, а нужно было за них все расчеты сделать и посоветовать :idiot:
UAVpilot писал(а):Я по основной работе уже давно заметил, что обычно чем меньше клиент платит за услуги, тем большего внимания и ништяков он требует...
У нас так же.
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Nikomas
Мастер
Сообщения: 721
Зарегистрирован: 07 янв 2012, 14:31
Репутация: 64
Откуда: Беларусь
Контактная информация:

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

Сообщение Nikomas »

UAVpilot, по такому алгоритму egantry сможет отхоумиться?
2018-05-21_142323.jpg (4483 просмотра) <a class='original' href='./download/file.php?id=139460&sid=5362c8d1f64c2e66bff5924c60801c30&mode=view' target=_blank>Загрузить оригинал (27.19 КБ)</a>

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

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

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

Сообщение Serg »

Если я правильно понял картинку, то да. У MGG было аналогично сделано.

P.S. В *.correct на значения ругнётся. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Nikomas
Мастер
Сообщения: 721
Зарегистрирован: 07 янв 2012, 14:31
Репутация: 64
Откуда: Беларусь
Контактная информация:

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

Сообщение Nikomas »

UAVpilot писал(а): В *.correct на значения ругнётся.
Понял)))
Nikomas
Мастер
Сообщения: 721
Зарегистрирован: 07 янв 2012, 14:31
Репутация: 64
Откуда: Беларусь
Контактная информация:

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

Сообщение Nikomas »

UAVpilot писал(а):Если я правильно понял картинку, то да.
А чем хуже?

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

{AXIS=0}
HOME = 2.35 
HOME_OFFSET = 0.0
...
{AXIS=3}
HOME = 1.16 
HOME_OFFSET = x.x - величина смещения индексной метки относительно ведущей оси.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

попробуй - расскажешь... :)
Ещё можно вот тут почитать:
Re: Плазморез со смарт-вентиляцией #35
Re: Плазморез со смарт-вентиляцией #40
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Nikomas
Мастер
Сообщения: 721
Зарегистрирован: 07 янв 2012, 14:31
Репутация: 64
Откуда: Беларусь
Контактная информация:

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

Сообщение Nikomas »

Включаем станок:
1.png (4249 просмотров) <a class='original' href='./download/file.php?id=141025&sid=5362c8d1f64c2e66bff5924c60801c30&mode=view' target=_blank>Загрузить оригинал (185.39 КБ)</a>
Выключаем ENABLE станка в программе (но усилки работают и честно читают энкодеры) и видим как напряжения в портале тянут одну сторону:
2.png (4249 просмотров) <a class='original' href='./download/file.php?id=141026&sid=5362c8d1f64c2e66bff5924c60801c30&mode=view' target=_blank>Загрузить оригинал (184.67 КБ)</a>
Теперь оператор, проходя мимо, случайно задел одну из сторон портала и сместил на 1мм:
3.png (4249 просмотров) <a class='original' href='./download/file.php?id=141027&sid=5362c8d1f64c2e66bff5924c60801c30&mode=view' target=_blank>Загрузить оригинал (185.03 КБ)</a>
И при следующем включении получаем
В результате получим резкий скачёк половины портала с феерическим грохотом и прочими спецэффектами.
Как этого избежать?
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

Мало информации.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Nikomas
Мастер
Сообщения: 721
Зарегистрирован: 07 янв 2012, 14:31
Репутация: 64
Откуда: Беларусь
Контактная информация:

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

Сообщение 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
Ответить

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