Страница 1 из 2
Тормоз направляющих каждой оси
Добавлено: 18 дек 2020, 06:53
Dmaster
День добрый)
В очередной раз требуется помощь форума.
Есть станок, который имеет автоматический зажим направляющих, а так-же одну серву и 3 муфты. Уже несколько недель пытаюсь найти решение задачи.
Планируется работа с полным остановом и зажатием всех незадействованных осей.
Есть ли такой пин, из которого можно найти данные, какая ось будет двигаться в данном кадре?
Я не нашел ни в переменных, ни в пинах ни чего подобного.
В linuxcnc есть вкладка status, а там есть dtg для каждой оси в данном кадре, но как получить пин?
Можно конечно на костылях через м64 м65, но это на костылях. Хочется видеть стандартный g код.
Ремап g0 и g1. Это наверное перебор.
Пните пожалуйста в какую сторону копать.
Re: Тормоз направляющих каждой оси
Добавлено: 18 дек 2020, 13:22
MX_Master
Зажим/разжим механики происходит не мгновенно. Нужен какой-то компонент, который будет в реальном времени (в сервопериоде) следить за текущей позицией и новым заданием для каждой оси. Попутно ставя программу на паузу и включая/выключая торомоза. Возможно, такое можно слепить и со стандартных компонентов.
Re: Тормоз направляющих каждой оси
Добавлено: 18 дек 2020, 15:40
Serg
Dmaster писал(а): ↑
Есть ли такой пин, из которого можно найти данные, какая ось будет двигаться в данном кадре?
Есть пины управления тормозами осей, но только для поворотных A, B, C. Как-то была мысль залезть в исходники и попробовать сделать и для остальных, но надобность сама отпала.
Dmaster писал(а): ↑
В linuxcnc есть вкладка status, а там есть dtg для каждой оси в данном кадре, но как получить пин?
Свой компонент написать.
Dmaster писал(а): ↑
Есть ли такой пин, из которого можно найти данные, какая ось будет двигаться в данном кадре?
Найти-то данные можно, но это будет уже поздно - освобождать тормоз нужно строго до того, как ось начнёт движение. Если делать это одновременно с началом движения, то пока переключится привод, тормоз освободит ось уже случится "following error". Самое простое - обнулять подачу в момент переключений, но это всё равно надо делать до начала движения. Похоже без правки исходников не прокатит, надо пробовать.
Dmaster писал(а): ↑
Хочется видеть стандартный g код.
Всё равно потребуется поддержка в CAM/постпроцессоре.
Re: Тормоз направляющих каждой оси
Добавлено: 18 дек 2020, 15:44
alex_sar
Serg писал(а): ↑
Всё равно потребуется поддержка в CAM/постпроцессоре.
Ага. Иначе не понятно как должен отрабатывать вот такой стандартный g-code
G1 X10 Y20
А раз всё равно туда лезть, то проще сразу всё и сделать через M-коды.
Re: Тормоз направляющих каждой оси
Добавлено: 19 дек 2020, 08:44
Dmaster
alex_sar писал(а): ↑
Ага. Иначе не понятно как должен отрабатывать вот такой стандартный g-code
G1 X10 Y20
Ну вот это не сложно. При малейшей попытке двинуться по 2-м осям - стопнуть программу с ошибкой. , мол требуешь от станка больше, чем надо.
Serg писал(а): ↑
Есть пины управления тормозами осей, но только для поворотных A, B, C. Как-то была мысль залезть в исходники и попробовать сделать и для остальных, но надобность сама отпала
Я, по наивности, подумал, что тормоз будет работать и на линейной оси, но нет. выходит только ошибка, что ось будет неподвижна, пока не разожмется, а пина "ось разжата" не будет, если ось линейная.
Re: Тормоз направляющих каждой оси
Добавлено: 19 дек 2020, 12:56
Serg
Dmaster писал(а): ↑
Я, по наивности, подумал, что тормоз будет работать и на линейной оси, но нет.
Я думаю делали под поворотные столы с тормозом - их гораздо больше, чем станков с одним приводом на несколько осей.
Я смотрел исходники про это - там не должно быть ничего сложного для добавления этой функции и для остальных осей, но попытки интерполяции по двум и более осям нужно на этапе загрузки УП проверять.
Re: Тормоз направляющих каждой оси
Добавлено: 19 дек 2020, 13:31
Dmaster
Serg писал(а): ↑
попытки интерполяции по двум и более осям нужно на этапе загрузки УП проверять.
Это ясно . и этот вопрос я уже задавал.
viewtopic.php?f=15&t=27110&p=547436#p547436
и ответ на него есть)
Serg писал(а): ↑
Я смотрел исходники про это - там не должно быть ничего сложного для добавления этой функции
Боюсь, что если исходники посмотрю я, то для меня это будет не "так очевидно".
По сути, я даже не знаю, как посмотреть исходники.
- Ты сильный
- Я сильный!
- Ты матёрый
- Я матёрый!
- Ты даже не знаешь, что такое сдаваться!
- Я даже не знаю, что такое матёрый!
Может проще DTG Вытянуть? остальную логику можно завязать на Feed inhibit.
Re: Тормоз направляющих каждой оси
Добавлено: 19 дек 2020, 13:42
Serg
Dmaster писал(а): ↑
Может проще DTG Вытянуть? остальную логику можно завязать на Feed inhibit.
Попробовать можно, но что-то у меня нет уверенности в стабильности такой схемы...
Re: Тормоз направляющих каждой оси
Добавлено: 19 дек 2020, 14:14
Dmaster
Serg писал(а): ↑
Попробовать можно, но что-то у меня нет уверенности в стабильности такой схемы...
Хал файл будет конечно сильно громоздкий.
Что-ж . Направьте тогда меня на путь "просмотра" исходников. может что и пойму. просто ни когда это не делал. Как я понять мне надо смотреть исходник компонента motmod. ?
https://github.com/LinuxCNC/linuxcnc/bl ... n/motion.c
Re: Тормоз направляющих каждой оси
Добавлено: 19 дек 2020, 15:59
Serg
Смотреть как сделано управление тормозом для поворотных осей.
Re: Тормоз направляющих каждой оси
Добавлено: 19 дек 2020, 17:07
Dmaster
Тормоз поворотных осей, оказывается, исключает движение в ручном режиме( надо искать dtg или inposition для каждой оси.
Re: Тормоз направляющих каждой оси
Добавлено: 19 дек 2020, 21:04
Dmaster
А можно ли из питона получить задействованную в коде ось?
http://linuxcnc.org/lucid/docs/2.6/html ... rface.html
command
(returns string) - currently executing command.
получить код и если там есть X Y или Z , то дернуть соответсвующий пин?.
Ps и делать это лучше, когда
current_line
(returns integer) - currently executing line, int.
увеличивается на 1
Re: Тормоз направляющих каждой оси
Добавлено: 19 дек 2020, 23:21
Serg
Dmaster писал(а): ↑
Тормоз поворотных осей, оказывается, исключает движение в ручном режиме
В оригинале работает только для G0:
LOCKING_INDEXER = 1 - When this is set to 1, a G0 move for this axis will initiate an unlock with axis.N.unlock pin then wait for the axis.N.is-unlocked pin then move the axis at the rapid rate for that axis. After the move, the axis.N.unlock will be false and motion will wait for axis.N.is-unlocked to go false. Moving with other axes is not allowed when moving a locked rotary axis. If motion is disabled (estop for instance), while the axis.N.unlock pin is set, the axis.N.unlock pin is reset to false.
я ж говорил - надо в исходники лезть.
Dmaster писал(а): ↑
А можно ли из питона получить задействованную в коде ось?
Нет, какой привод будет задействан решает планировщик, ибо ось и привод - разные понятия.
Оптимальным решением "из готовых деталей" будет управлением feed-hold'ом, но для работы ручных перемещений нужно будет искать "обходной путь".
Если б мне это понадобилось бы сейчас, я б пробовал сделать компонент-посредник, по аналогии с egantry.
Re: Тормоз направляющих каждой оси
Добавлено: 20 дек 2020, 12:42
Dmaster
Что-ж., посмотрел я портянки на гитхабе и ничего не понял. Буду делать на костылях м64 м65 . Может быть, когда нибудь доделаю)
Добавлено: 22 дек 2020, 11:11
Bioraptor
Тормоза пневмо?
Re: Тормоз направляющих каждой оси
Добавлено: 23 дек 2020, 20:52
Dmaster
Гидравлика. 90 атмосфер, поддержка гидроаккумулятором. Я похоже победил вопрос, но отчёт напишу как проверю станок в бою.
Re: Тормоз направляющих каждой оси
Добавлено: 23 дек 2020, 23:49
Bioraptor
Т.Е. работает за счёт давления именно гидравлики?!
встречал тормоза обратного типа, т.е. в зажатом состоянии держат за счёт пружин, а вот разжимаются за счёт пневмо давления, работают достаточно быстро, но там привод осей тоже пневмо, по этому тормоза там нужны для позиционирования оси на нужном месте.
Re: Тормоз направляющих каждой оси
Добавлено: 24 дек 2020, 10:16
steals_y2k
можно motion.feed-hold в 1 ставить на время, пока тормоз отпустится.
пока "давление в тормозе х" И "давление в тормозе У" >0 ...
Re: Тормоз направляющих каждой оси
Добавлено: 24 дек 2020, 10:18
ex71
В принципе у меня есть аналогичный станок с 1 мотором на 3 оси. И человек его очень хочет запустить в работу. Потребности там простые - движения чаще всего в ручную с кнопок. По факту он просто плоскости ГБЦ на нем фрезерует. А остальное его не интересует.
посему очень интересна хоть какая-то реализация HAL.
steals_y2k писал(а): ↑
можно motion.feed-hold в 1 ставить на время, пока тормоз отпустится.
так тут вопрос то: как автоматически ставить на паузу во время отработки кода?
И как автоматически выбирать какой тормоз и через какое время включать/отключать.
Re: Тормоз направляющих каждой оси
Добавлено: 24 дек 2020, 10:54
MX_Master
Между планировщиком и степгеном нужно вставить свой компонент, который будет сравнивать текущие позиции и новые задания для осей. На основе этого сравнения, он будет дергать какой-то пин, типа motion.feed-hold и другие пины, отвечающие за включение физических тормозов. Паузу на вкл/выкл физ. тормоза нужно рассчитать опытным путем. Или иметь какую-то обратную связь от физ. тормоза.
Это один из вариантов. Могут быть и другие