Ось по модулю 360 (не про wrapped_rotary)
Добавлено: 29 май 2023, 09:49
Здравствуйте все!
Нуждаюсь в вашей помощи господа!
Есть сервопривод и мотор Leadshine с абсолютным многооборотным энкодером. Они работают на оси вращения A, и ось должна быть в координатах по модулю 360 градусов.
Сейчас для упрощения соотношение оборотов мотора и оси один к одному - за один оборот мотора координата оси изменяется до 359,999 градусов . При этом в приводе значение инкрементов на один оборот мотора стоит по умолчанию 10000, в файле hal лдя linuxcnc установлен параметр position-scale 27.7751 тогда максимальная координата пересчитывается из 10000 в 359,999.
Затем параметр wrapped_rotary в ini файле устанавливаю на 1 и когда ось проходит через 0 градусов возникает ошибка "joint 3 following error". На малых скоростях эта ошибка возникает ещё на координате 359,2 и пересечения нуля не происходит ещё но дальше ось не вращается.
Если энкодер настраивать как абсолютный линейный и ось делать wrapped, то можно увидеть как ось будет без ошибок вращаться в одном направлении по модулю в 360 градусов, но только до переполнения значения буфера энкодера (при 10000 инкрементов на оборот мотора это будет 214748 оборота) и после этого снова перескок координаты приводит к ошибке "joint 3 following error". Если же применить коэффициент редукции, то количество оборотов оси без ошибки в одном направлении станет гораздо меньше.
Файлы настроек прилагаю. Укажите пожалуйста в каком направлении копать.
Нуждаюсь в вашей помощи господа!
Есть сервопривод и мотор Leadshine с абсолютным многооборотным энкодером. Они работают на оси вращения A, и ось должна быть в координатах по модулю 360 градусов.
Сейчас для упрощения соотношение оборотов мотора и оси один к одному - за один оборот мотора координата оси изменяется до 359,999 градусов . При этом в приводе значение инкрементов на один оборот мотора стоит по умолчанию 10000, в файле hal лдя linuxcnc установлен параметр position-scale 27.7751 тогда максимальная координата пересчитывается из 10000 в 359,999.
Затем параметр wrapped_rotary в ini файле устанавливаю на 1 и когда ось проходит через 0 градусов возникает ошибка "joint 3 following error". На малых скоростях эта ошибка возникает ещё на координате 359,2 и пересечения нуля не происходит ещё но дальше ось не вращается.
Если энкодер настраивать как абсолютный линейный и ось делать wrapped, то можно увидеть как ось будет без ошибок вращаться в одном направлении по модулю в 360 градусов, но только до переполнения значения буфера энкодера (при 10000 инкрементов на оборот мотора это будет 214748 оборота) и после этого снова перескок координаты приводит к ошибке "joint 3 following error". Если же применить коэффициент редукции, то количество оборотов оси без ошибки в одном направлении станет гораздо меньше.
Файлы настроек прилагаю. Укажите пожалуйста в каком направлении копать.