Тормоз направляющих каждой оси

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
Dmaster
Мастер
Сообщения: 1271
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

Тормоз направляющих каждой оси

Сообщение Dmaster »

День добрый)
В очередной раз требуется помощь форума.
Есть станок, который имеет автоматический зажим направляющих, а так-же одну серву и 3 муфты. Уже несколько недель пытаюсь найти решение задачи.
Планируется работа с полным остановом и зажатием всех незадействованных осей.
Есть ли такой пин, из которого можно найти данные, какая ось будет двигаться в данном кадре?
Я не нашел ни в переменных, ни в пинах ни чего подобного.
В linuxcnc есть вкладка status, а там есть dtg для каждой оси в данном кадре, но как получить пин?
Можно конечно на костылях через м64 м65, но это на костылях. Хочется видеть стандартный g код.
Ремап g0 и g1. Это наверное перебор.
Пните пожалуйста в какую сторону копать.
" Linux CNC - наше всё"
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Тормоз направляющих каждой оси

Сообщение MX_Master »

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

Re: Тормоз направляющих каждой оси

Сообщение Serg »

Dmaster писал(а): Есть ли такой пин, из которого можно найти данные, какая ось будет двигаться в данном кадре?
Есть пины управления тормозами осей, но только для поворотных A, B, C. Как-то была мысль залезть в исходники и попробовать сделать и для остальных, но надобность сама отпала.
Dmaster писал(а): В linuxcnc есть вкладка status, а там есть dtg для каждой оси в данном кадре, но как получить пин?
Свой компонент написать.
Dmaster писал(а): Есть ли такой пин, из которого можно найти данные, какая ось будет двигаться в данном кадре?
Найти-то данные можно, но это будет уже поздно - освобождать тормоз нужно строго до того, как ось начнёт движение. Если делать это одновременно с началом движения, то пока переключится привод, тормоз освободит ось уже случится "following error". Самое простое - обнулять подачу в момент переключений, но это всё равно надо делать до начала движения. Похоже без правки исходников не прокатит, надо пробовать.
Dmaster писал(а): Хочется видеть стандартный g код.
Всё равно потребуется поддержка в CAM/постпроцессоре.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
alex_sar
Мастер
Сообщения: 1672
Зарегистрирован: 28 авг 2018, 17:13
Репутация: 278
Настоящее имя: Алексей
Контактная информация:

Re: Тормоз направляющих каждой оси

Сообщение alex_sar »

Serg писал(а): Всё равно потребуется поддержка в CAM/постпроцессоре.
Ага. Иначе не понятно как должен отрабатывать вот такой стандартный g-code
G1 X10 Y20

А раз всё равно туда лезть, то проще сразу всё и сделать через M-коды.
Аватара пользователя
Dmaster
Мастер
Сообщения: 1271
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

Re: Тормоз направляющих каждой оси

Сообщение Dmaster »

alex_sar писал(а): Ага. Иначе не понятно как должен отрабатывать вот такой стандартный g-code
G1 X10 Y20
Ну вот это не сложно. При малейшей попытке двинуться по 2-м осям - стопнуть программу с ошибкой. , мол требуешь от станка больше, чем надо.
Serg писал(а): Есть пины управления тормозами осей, но только для поворотных A, B, C. Как-то была мысль залезть в исходники и попробовать сделать и для остальных, но надобность сама отпала
Я, по наивности, подумал, что тормоз будет работать и на линейной оси, но нет. выходит только ошибка, что ось будет неподвижна, пока не разожмется, а пина "ось разжата" не будет, если ось линейная.
" Linux CNC - наше всё"
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Тормоз направляющих каждой оси

Сообщение Serg »

Dmaster писал(а): Я, по наивности, подумал, что тормоз будет работать и на линейной оси, но нет.
Я думаю делали под поворотные столы с тормозом - их гораздо больше, чем станков с одним приводом на несколько осей.
Я смотрел исходники про это - там не должно быть ничего сложного для добавления этой функции и для остальных осей, но попытки интерполяции по двум и более осям нужно на этапе загрузки УП проверять.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Dmaster
Мастер
Сообщения: 1271
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

Re: Тормоз направляющих каждой оси

Сообщение Dmaster »

Serg писал(а): попытки интерполяции по двум и более осям нужно на этапе загрузки УП проверять.
Это ясно . и этот вопрос я уже задавал. viewtopic.php?f=15&t=27110&p=547436#p547436
и ответ на него есть)
Serg писал(а): Я смотрел исходники про это - там не должно быть ничего сложного для добавления этой функции
Боюсь, что если исходники посмотрю я, то для меня это будет не "так очевидно".

По сути, я даже не знаю, как посмотреть исходники.
- Ты сильный
- Я сильный!
- Ты матёрый
- Я матёрый!
- Ты даже не знаешь, что такое сдаваться!
- Я даже не знаю, что такое матёрый!
Может проще DTG Вытянуть? остальную логику можно завязать на Feed inhibit.
" Linux CNC - наше всё"
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Тормоз направляющих каждой оси

Сообщение Serg »

Dmaster писал(а): Может проще DTG Вытянуть? остальную логику можно завязать на Feed inhibit.
Попробовать можно, но что-то у меня нет уверенности в стабильности такой схемы...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Dmaster
Мастер
Сообщения: 1271
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

Re: Тормоз направляющих каждой оси

Сообщение Dmaster »

Serg писал(а): Попробовать можно, но что-то у меня нет уверенности в стабильности такой схемы...
Хал файл будет конечно сильно громоздкий.
Что-ж . Направьте тогда меня на путь "просмотра" исходников. может что и пойму. просто ни когда это не делал. Как я понять мне надо смотреть исходник компонента motmod. ?
https://github.com/LinuxCNC/linuxcnc/bl ... n/motion.c
" Linux CNC - наше всё"
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Тормоз направляющих каждой оси

Сообщение Serg »

Смотреть как сделано управление тормозом для поворотных осей.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Dmaster
Мастер
Сообщения: 1271
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

Re: Тормоз направляющих каждой оси

Сообщение Dmaster »

Тормоз поворотных осей, оказывается, исключает движение в ручном режиме( надо искать dtg или inposition для каждой оси.
" Linux CNC - наше всё"
Аватара пользователя
Dmaster
Мастер
Сообщения: 1271
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

Re: Тормоз направляющих каждой оси

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

Re: Тормоз направляющих каждой оси

Сообщение 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.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Dmaster
Мастер
Сообщения: 1271
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

Re: Тормоз направляющих каждой оси

Сообщение Dmaster »

Что-ж., посмотрел я портянки на гитхабе и ничего не понял. Буду делать на костылях м64 м65 . Может быть, когда нибудь доделаю)
" Linux CNC - наше всё"
Аватара пользователя
Bioraptor
Мастер
Сообщения: 532
Зарегистрирован: 05 ноя 2018, 22:17
Репутация: 68
Настоящее имя: Дима
Контактная информация:

Сообщение Bioraptor »

Тормоза пневмо?
Аватара пользователя
Dmaster
Мастер
Сообщения: 1271
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

Re: Тормоз направляющих каждой оси

Сообщение Dmaster »

Гидравлика. 90 атмосфер, поддержка гидроаккумулятором. Я похоже победил вопрос, но отчёт напишу как проверю станок в бою.
" Linux CNC - наше всё"
Аватара пользователя
Bioraptor
Мастер
Сообщения: 532
Зарегистрирован: 05 ноя 2018, 22:17
Репутация: 68
Настоящее имя: Дима
Контактная информация:

Re: Тормоз направляющих каждой оси

Сообщение Bioraptor »

Т.Е. работает за счёт давления именно гидравлики?!
встречал тормоза обратного типа, т.е. в зажатом состоянии держат за счёт пружин, а вот разжимаются за счёт пневмо давления, работают достаточно быстро, но там привод осей тоже пневмо, по этому тормоза там нужны для позиционирования оси на нужном месте.
steals_y2k
Мастер
Сообщения: 938
Зарегистрирован: 29 окт 2017, 14:08
Репутация: 60
Настоящее имя: Makc
Откуда: Ярославль
Контактная информация:

Re: Тормоз направляющих каждой оси

Сообщение steals_y2k »

можно motion.feed-hold в 1 ставить на время, пока тормоз отпустится.
пока "давление в тормозе х" И "давление в тормозе У" >0 ...
ex71
Мастер
Сообщения: 697
Зарегистрирован: 18 май 2019, 13:23
Репутация: 96
Настоящее имя: Андрей
Контактная информация:

Re: Тормоз направляющих каждой оси

Сообщение ex71 »

В принципе у меня есть аналогичный станок с 1 мотором на 3 оси. И человек его очень хочет запустить в работу. Потребности там простые - движения чаще всего в ручную с кнопок. По факту он просто плоскости ГБЦ на нем фрезерует. А остальное его не интересует.
посему очень интересна хоть какая-то реализация HAL.
steals_y2k писал(а): можно motion.feed-hold в 1 ставить на время, пока тормоз отпустится.
так тут вопрос то: как автоматически ставить на паузу во время отработки кода?
И как автоматически выбирать какой тормоз и через какое время включать/отключать.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Тормоз направляющих каждой оси

Сообщение MX_Master »

Между планировщиком и степгеном нужно вставить свой компонент, который будет сравнивать текущие позиции и новые задания для осей. На основе этого сравнения, он будет дергать какой-то пин, типа motion.feed-hold и другие пины, отвечающие за включение физических тормозов. Паузу на вкл/выкл физ. тормоза нужно рассчитать опытным путем. Или иметь какую-то обратную связь от физ. тормоза.

Это один из вариантов. Могут быть и другие
Ответить

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