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

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5179
Заслуга: 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.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
PKM
Почётный участник
Почётный участник
Сообщения: 4263
Зарегистрирован: 31 мар 2011, 18:11
Репутация: 704
Настоящее имя: Андрей
Откуда: Украина
Контактная информация:

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

Сообщение PKM »

Над gantry лучшие умы бились безрезультатно :)
Поэтому в сто раз интереснее
Последний раз редактировалось PKM 16 янв 2015, 18:52, всего редактировалось 1 раз.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5179
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

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

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

Сообщение PKM »

Очень любопытно, как сделано.

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

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

Сообщение Serg »

PKM писал(а):Разработчики все никак не могут сделать HOME_SYNCHRONISE, это бы много вопросов сняло.
Да вроде ничего сложного, задействовал пин axis.N.home-state. По home-sw работает во всех вариантах.
PKM писал(а):Не могу, объясняй :)
там в начале написано:

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

#define joint_offset(i) (*(__comp_inst->joint_offset[i]))
просто надоело каждый раз по столько много букв писать. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5179
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

PKM писал(а):Хорошо, но какой тогда смысл в i? Я предположил, что эта строка внутри цикла находится.
Например если где-то в коде написать
joint_offset(25)
то препроцессор заменит это на
(*(__comp_inst->joint_offset[25]))
Это у define синтаксис такой, в книжках по С это описывается. :hehehe:
PKM писал(а):Меня это и сбило с толку, думаю почему писать кинематику в формате comp? :)
Ну оно и сделано как HAL-компонент, вставляется между axis.N и pid.N/stepgen.N.
Формат comp довольно ограничен по возможностям, поэтому написано на настоящем C.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
PKM
Почётный участник
Почётный участник
Сообщения: 4263
Зарегистрирован: 31 мар 2011, 18:11
Репутация: 704
Настоящее имя: Андрей
Откуда: Украина
Контактная информация:

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

Сообщение PKM »

UAVpilot писал(а):Ну оно и сделано как HAL-компонент, вставляется между axis.N и pid.N/stepgen.N.
Ага, так это и не кинематика.
UAVpilot писал(а):gantry кинематика, которая которая использует только одну axis.N для любого количества приводов оси, ну и решает можество других проблем, сопутствующих штатной gantykins.
Поначалу подумал, что вместо gantrykins будет.
Теперь начинает проясняться.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5179
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

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

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

Сообщение Serg »

UAVpilot писал(а):В принципе оно уже работает, осталось победить только хоминг с уточнением по индексу - где-то я там что-то напутал... Взял таймаут, позанимаюсь другими делами, а эта проблема пусть "в фоне" решается... :)
В общем победил я индексы - всё красиво работает, хомится во всевозможных вариантах. Осталось ещё одну полезную фичу приделать и "марафет навести"...
Выглядит как HAL-компонент, который включается между axis.N и несколькими pid.N или stepgen.N.
Компонент поддерживает до 16 осей по 8 моторов в каждой. В принципе это всего-лишь два дефайна в исходниках.
Кино снимать лень, да и не раскроет оно сути, лучше покажу графики процессов хомления:
home.zip
(31.86 КБ) 685 скачиваний
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
PKM
Почётный участник
Почётный участник
Сообщения: 4263
Зарегистрирован: 31 мар 2011, 18:11
Репутация: 704
Настоящее имя: Андрей
Откуда: Украина
Контактная информация:

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

Сообщение PKM »

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

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

Сообщение Serg »

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

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

Сообщение PKM »

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

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

Сообщение Serg »

Забавно... :idiot:

Тогда вот так:

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

HOME = 5.0
HOME_OFFSET = 1.0
HOME_SEARCH_VEL = -50
HOME_LATCH_VEL = 3
HOME_FINAL_VEL = 10
HOME_USE_INDEX = NO
egantry.home.png (12583 просмотра) <a class='original' href='./download/file.php?id=40565&sid=5a3b007d36346a2b6bc12ee67cc4f43a&mode=view' target=_blank>Загрузить оригинал (131.36 КБ)</a>

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

HOME = 5.0
HOME_OFFSET = 1.0
HOME_SEARCH_VEL = -50
HOME_LATCH_VEL = 3
HOME_FINAL_VEL = 10
HOME_USE_INDEX = YES
egantry.home-index.png (12583 просмотра) <a class='original' href='./download/file.php?id=40566&sid=5a3b007d36346a2b6bc12ee67cc4f43a&mode=view' target=_blank>Загрузить оригинал (126.38 КБ)</a>
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
PKM
Почётный участник
Почётный участник
Сообщения: 4263
Зарегистрирован: 31 мар 2011, 18:11
Репутация: 704
Настоящее имя: Андрей
Откуда: Украина
Контактная информация:

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

Сообщение PKM »

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

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

Сообщение Serg »

Да, именно так.
Исходники выложу, но там ещё надо доделать коррекцию, чтоб не попадать датчиками/индексами в одинаковое место на осях и выравнивание моторов при активации приводов.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
umerov
Кандидат
Сообщения: 79
Зарегистрирован: 18 янв 2012, 21:22
Репутация: 21
Откуда: Украина
Контактная информация:

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

Сообщение umerov »

У меня похожая задача - не стандартная кинематика с серво с обратной связью.
две сервы на оси Y.

https://github.com/gmoccapy/machinekit/ ... antry.comp
вот компонент как его импользовать? он будет выполняться в реалтайме?
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5179
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

Только вот он правильно хомиться не умеет, а при
HOME_USE_INDEX = YES
у него вообще крыша съезжает и утаскивает за собой LinuxCNC.

Собственно я тоже с этого начинал, можно было догадаться по названию пинов на скриншотах. ;) Но в итоге полностью переписал.
Взяться за это пришлось именно из-за сдвоенной оси на сервах. На шаговиках в принципе и штатная gantrykins работает неплохо. Но вот с сервами возникают жестокие засады.
Самая гадкая:
Как правило в портале всегда есть внутренние напряжения, от колебаний температуры, от выравнивания при хомлении и т.п.
Если после хомления (и работы) понадобится выключить станок (по F2) или пришлось нажать E-STOP, то сервы выходят из режима удержания позиции и внутренние напряжения портала приводят к тому, что его края немного сдвигаются друг относительно друга. Т.к. для получения положения обратной связи для всей оси используется фидбэк только одного мотора, то возникает разница между положениями двух моторов. Теперь если попробовать снова включить станок в режиме world, или после включения переключится в world, gantrykins за первый-же сервоцикл изменит заданную позицию второго мотора на текущую позицию первого (согласно его фидбэка) и PID второго мотора отреагирует на это согласно своему предназначению - с фактически максимальными скоростю и ускорением постарается повернуть мотор в заданную позицию... На практике портал улетает куда попало с жутким грохотом. :shock:
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
umerov
Кандидат
Сообщения: 79
Зарегистрирован: 18 янв 2012, 21:22
Репутация: 21
Откуда: Украина
Контактная информация:

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

Сообщение umerov »

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

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

Сообщение Serg »

Да, стандартно в сервоцикле.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
PKM
Почётный участник
Почётный участник
Сообщения: 4263
Зарегистрирован: 31 мар 2011, 18:11
Репутация: 704
Настоящее имя: Андрей
Откуда: Украина
Контактная информация:

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

Сообщение PKM »

Мне бы такое нужно для всех осей. То есть синхронизированный хоуминг. Посмотрю как у тебя сделано, может идеи придут :) Основа уже есть http://timeguy.com/gitweb?p=linuxcnc.gi ... zed-homing
Ответить

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