Расчет стыковки скоростей (G61/G64) линейных осей и осей вращения.
Добавлено: 04 июл 2024, 13:06
Добрый.
Пишу свою CNC.
Сделал расчет скругления траектории по G64/61 - рассчитал все эти дуги (даже трехмерные) - все стыковки изменения направлений , заходы и выходы из спиралей и прочая математика, матрицы, трансформация и пр....
Вот примерно так: Радиусы скругления на скрине безбожно завышены - чтобы видно было..
Осталось рассчитать подачи - т.е. расчет точек, ускорений, скоростей замедления и разгона.
Думал - да что там сложного - одни умножения и деления.....
И тут я понял что напрочь забыл про стыковку скоростей осей линейных и вращения...
Вот пол года делаю!
В уме пол года одни расчеты.
А это упустил из виду
Вот как так!
Как шоры какие-то.....
И я Впал в ступор - нет понимания как делать эту стыковку.
Пример:
G1 X0 Y0 Z0 A0
G1 X10 A10
G1 X20 A100
На стыке второго и третьего кадра - резкое изменение скорости по оси А.
И получается если траектория идеальная - то надо делать остановку до нуля перед 3 кадром.
На практике - нужно как-то рассчитать плавную стыковку - как и в плоскостях XYZ.
В XYZ - там все понятно - замедление (не до нуля), расчет дуги (пусть даже и в произвольной трехмерной плоскости - а не G17/18/19)- которая бы давала ошибку не более чем указано в G61/64 и далее опять разгон....
А тут как?
Т.е надо ка-то проложить траекторию и ускорения так - чтобы ошибка была не более чем указано в G61/64..
Тогда вопрос - а что есть ошибка на осях вращения?
Как ее рассчитать? (хотя-бы на пальцах - формулы надеюсь сам выведу)
Если Ось "A" допустим ось вращения детали - как я понимаю ошибка - это длина дуги по углу рассогласования...
Слава богу у Меня в CNC можно вычислить расстояние от точки резанья до оси вращения любой оси - для расчета этой дуги.
Но это если по линейным осям не было изменения направления..
А если было...?
Пренебречь?
Или отдельно считать ошибку позиционирования по линейным осям и отдельно по осям вращения?
А если ось А - это ось вращения не детали - а шпинделя?
Тогда вообще не понятно - что тогда в этом случае есть ошибка позиционирования..
Точка реза то не меняется вообще при повороте по A шпинделя...
Меняется только угол инструмента к точке резанья....
Может кто знает как это сделано в других CNC?
В том-же LinuxCNC например...
Или какие другие идеи...
Пишу свою CNC.
Сделал расчет скругления траектории по G64/61 - рассчитал все эти дуги (даже трехмерные) - все стыковки изменения направлений , заходы и выходы из спиралей и прочая математика, матрицы, трансформация и пр....
Вот примерно так: Радиусы скругления на скрине безбожно завышены - чтобы видно было..
Осталось рассчитать подачи - т.е. расчет точек, ускорений, скоростей замедления и разгона.
Думал - да что там сложного - одни умножения и деления.....
И тут я понял что напрочь забыл про стыковку скоростей осей линейных и вращения...
Вот пол года делаю!
В уме пол года одни расчеты.
А это упустил из виду
Вот как так!
Как шоры какие-то.....
И я Впал в ступор - нет понимания как делать эту стыковку.
Пример:
G1 X0 Y0 Z0 A0
G1 X10 A10
G1 X20 A100
На стыке второго и третьего кадра - резкое изменение скорости по оси А.
И получается если траектория идеальная - то надо делать остановку до нуля перед 3 кадром.
На практике - нужно как-то рассчитать плавную стыковку - как и в плоскостях XYZ.
В XYZ - там все понятно - замедление (не до нуля), расчет дуги (пусть даже и в произвольной трехмерной плоскости - а не G17/18/19)- которая бы давала ошибку не более чем указано в G61/64 и далее опять разгон....
А тут как?
Т.е надо ка-то проложить траекторию и ускорения так - чтобы ошибка была не более чем указано в G61/64..
Тогда вопрос - а что есть ошибка на осях вращения?
Как ее рассчитать? (хотя-бы на пальцах - формулы надеюсь сам выведу)
Если Ось "A" допустим ось вращения детали - как я понимаю ошибка - это длина дуги по углу рассогласования...
Слава богу у Меня в CNC можно вычислить расстояние от точки резанья до оси вращения любой оси - для расчета этой дуги.
Но это если по линейным осям не было изменения направления..
А если было...?
Пренебречь?
Или отдельно считать ошибку позиционирования по линейным осям и отдельно по осям вращения?
А если ось А - это ось вращения не детали - а шпинделя?
Тогда вообще не понятно - что тогда в этом случае есть ошибка позиционирования..
Точка реза то не меняется вообще при повороте по A шпинделя...
Меняется только угол инструмента к точке резанья....
Может кто знает как это сделано в других CNC?
В том-же LinuxCNC например...
Или какие другие идеи...