4-я ось: настройка поворотной оси (мини FAQ)

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.

4-я ось: настройка поворотной оси (мини FAQ)

Сообщение verser » 05 май 2014, 19:28

Проблема #1: переход через 360°
Добавил в свой станок 4-ю поворотную ось, делаю фрезерную операцию, ось накручивает обороты, при появлении команды G0 B0 linuxcnc начинает все эти обороты отматывать обратно. Симулятор g-code Cimco Edit имеет "галочку" Use shortest angle moves - она убирает эту отмотку. А есть ли в linuxcnc возможность задавать для поворотных осей переходы по кратчайшему угловому расстоянию?
Решение (для просмотра содержимого нажмите на ссылку)
Благодаря подсказке Nicka про параметр wrapped_rotary (post #33) решение такое:
1. В мой-станок.ini в секции [AXIS_4] добавляем строчку
WRAPPED_ROTARY = 1
2. В CAM программе делаем настройку для оси вращения 0-359.999.
Вот SolidCAM настройки на примере операции торцевания детали согласно шаблона:
cut4axis.rar
(4.06 Кб) Скачиваний: 371
(я адаптировал под linuxcnc один из стандартных постпроцессоров SolidCAM, ссылка ниже)
При выполнении фрезеровки получается что в g-code позиция оси B идет между 0-359.999 а на экране linuxcnc позиция оси B нарастает до +99999, и никакой обратной отмотки :good:
Так выглядит в InventorCAM :
4-я ось: настройка поворотной оси (мини FAQ) Снимок.PNG

Проблема #2: согласование угловых и линейных скоростей
В LinuxCNC при наличии поворотной оси существует проблема согласования линейных и угловых скоростей.
G1 X10 F600 - перемещает со скоростью 600мм/мин
G1 B10 F600 - перемещает со скоростью 600градусов/мин
G1 X10 B10 F600 - перемещает со скоростью 600мм/мин по линейным координатам, а по угловой - проворачивает с такой скоростью, чтобы стартовать и финишировать одновременно с линейными координатами.
В итоге при такой команде:
G1 X1 B360 F200 - считайте фреза сломана, т.к. расстояние 1мм по X на скорости F200 проходится быстро, а ось B, пытаясь догнать, прокручивается на максимально возможной скорости, и чик...
Решение (для просмотра содержимого нажмите на ссылку)
Получилось решить эту проблему с помощью постпроцессора, установив режим скоростей на Inverse Time FeedRate:
Код: Выделить всёРазвернуть
...
i4xFeedMode           = 1         ;4x-Simultanious control (0=Programed feedRate, 1=Inverse Time FeedRate, 2=Deg. per Minute)
...

В результате формируется такой G-code для той картинки, что в первой проблеме:
Код: Выделить всёРазвернуть
G00 G90 X0.02 Y-13.59 A0. B359.07 S18000 M03 Z6 
G01 X0 Y-13.59 Z5.2 F1080
G93 B90.38 F145
B180.93 F146
B269.62 F149
B359.07 F148
G94 Z4.2 F1080
G93 B90.38 F180
B180.93 F181
B269.62 F184
B359.07 F183
G94 Z3.2 F1080
G93 Z3.2 B90.38 F236
Z3.2 B180.93 F237
Z3.2 B269.62 F241
Z3.2 B359.07 F240
G94 Z2.2 F1080
G93 Z2.2 B90.38 F343
Z2.2 B180.93 F345
Z2.2 B269.62 F351
Z2.2 B359.07 F349
G94 Z1.2 F1080
G93 Z1.2 B90.38 F629
Z1.2 B180.93 F633
Z1.2 B269.62 F644
Z1.2 B359.07 F639
G94 Z0.2 F1080
G93 Z0.2 B90.38 F3769
Z0.2 B180.93 F3794
Z0.2 B269.62 F3856
Z0.2 B359.07 F3830
G00 Z6
M05
M2
%
Видим появление команд G93 и G94. Теперь со скоростями нет проблем, постпроцессор сам всё грамотно рассчитывает :)
Здесь постпроцессор для SolidCAM(адаптировал под linuxcnc один из стандартных):
gMill_Fadal_5x_eval.rar
(18.11 Кб) Скачиваний: 377
Вот на симуляторе:
4-я ось: настройка поворотной оси (мини FAQ) AngleSpeed.PNG

Проблема #3: ориентация поворотной оси параллельно Y
Обычно в шаблонах конфигураций 4х-осных станков с одной осью вращения заложен набор осей AXYZ, при этом ось A описывается в .ini файле в разделе [AXIS_3]. Отображение траектории оси A в Gremline осуществляется вокруг оси X. А как изменить её ориентацию на вокруг Y ?
Решение (для просмотра содержимого нажмите на ссылку)
Для настройки отображения вращения поворотной оси вокруг оси Y настройки должны быть по аналогии со следующими:
Для .ini файла такие изменения:
Код: Выделить всёРазвернуть
...
[DISPLAY]
...
GEOMETRY = BXYZ
...
[TRAJ]
AXES = 5
COORDINATES = X Y Z B
...
# Third axis = Z
[AXIS_2]
TYPE =                          LINEAR
#HOME =                          0.0
MAX_VELOCITY =                  18
MAX_ACCELERATION = 180
STEPGEN_MAXACCEL = 200
BACKLASH = 0.000
INPUT_SCALE =                   1280
OUTPUT_SCALE = 1.000
MIN_LIMIT =                     0.0
MAX_LIMIT =                     62
FERROR = 0.050
MIN_FERROR = 0.010
HOME_OFFSET =                    1.0
HOME =                           30
HOME_SEARCH_VEL =                -10.0
HOME_LATCH_VEL =                 0.390625
HOME_USE_INDEX =                 NO
HOME_IGNORE_LIMITS =             YES
HOME_SEQUENCE = 0
HOME_IS_SHARED = 1

# Fourth axis = B
[AXIS_4]
TYPE =                          ANGULAR
WRAPPED_ROTARY = 1
HOME =                          0.0
MAX_VELOCITY = 356.25
MAX_ACCELERATION = 4800.0
STEPGEN_MAXACCEL = 6000.0
INPUT_SCALE = -26.6666666667
FERROR = 1
MIN_FERROR = .25
BACKLASH = 0.000
OUTPUT_SCALE = 1.000
HOME_OFFSET =                    0.0
HOME_SEARCH_VEL =                0.0
HOME_LATCH_VEL =                 0.0
HOME_USE_INDEX =                 NO
HOME_IGNORE_LIMITS =             YES
HOME_SEQUENCE = 0
...
обратите внимание что секция [AXIS_3] отсутствует, ось называется "B", AXES = 5.
Важно! Для отображения траектории поворотной оси на экране имеет значение очередность букв, букву поворотной оси лучше писать впереди остальных
Код: Выделить всёРазвернуть
[DISPLAY]
...
GEOMETRY = BXYZ

+для .hal файла такие изменения:
Код: Выделить всёРазвернуть
...
loadrt stepgen step_type=0,0,0,0,0
...
setp stepgen.2.position-scale [AXIS_2]INPUT_SCALE
setp stepgen.2.steplen 1
setp stepgen.2.stepspace 1
setp stepgen.2.dirhold 18000
setp stepgen.2.dirsetup 18000
setp stepgen.2.maxaccel [AXIS_2]STEPGEN_MAXACCEL
net zpos-cmd axis.2.motor-pos-cmd => stepgen.2.position-cmd
net zpos-fb stepgen.2.position-fb => axis.2.motor-pos-fb
net zstep <= stepgen.2.step
net zdir <= stepgen.2.dir
net zenable axis.2.amp-enable-out => stepgen.2.enable
net both-home-z => axis.2.home-sw-in
net both-home-z => axis.2.neg-lim-sw-in
net both-home-z => axis.2.pos-lim-sw-in

setp stepgen.4.position-scale [AXIS_4]INPUT_SCALE
setp stepgen.4.steplen 1
setp stepgen.4.stepspace 1
setp stepgen.4.dirhold 18000
setp stepgen.4.dirsetup 18000
setp stepgen.4.maxaccel [AXIS_4]STEPGEN_MAXACCEL
net bpos-cmd axis.4.motor-pos-cmd => stepgen.4.position-cmd
net bpos-fb stepgen.4.position-fb => axis.4.motor-pos-fb
net bstep <= stepgen.4.step
net bdir <= stepgen.4.dir
net benable axis.4.amp-enable-out => stepgen.4.enable
...
обратите внимание что секция [AXIS_3] также отсутствует.

Проблема #4: отступы по G92 (G54) для Z приводят к искажению отображения траектории поворотной оси
Отступы по оси X (для станков BXYZ) и по оси Y (для станков AXYZ) также приводят к искажению отображения траектории поворотной оси.
Как быть, если G92 (G54) использовалась для задания отступов при смене инструмента? или если требуется отступ для других целей?
Решение (для просмотра содержимого нажмите на ссылку)
Придется перейти на использование встроенной в linuxcnc таблицы инструментов, заполнить ее, и делать отступ путем пересохранения состояния текущего инструмента вот таким g-code :
Код: Выделить всёРазвернуть
G0 X20 Y20 Z20 (здесь перемещаемся в какую-либо точку, которую хотим сделать нулем)
G10 L10 P1 X0 Y0 Z0
G43 H1
Где G10 L10 - записывает в таблицу инструментов значение отступов для инструмента P1 (он же T1), при этом текущая координата переназначится (без переезда) на X0 Y0 Z0, а после выполнения G43 отразиться в Gremline скачком траектории.
G43 - применить записанное значение к текущему отступу.
В итоге получим и отступ, и Gremlin корректно отрисует траекторию поворотной оси.
Если действия, описанные выше, уже один раз выполнились для инструмента T1, то повторную их "активацию" можно делать
Код: Выделить всёРазвернуть
M61 Q1 
G43 H1

Проблема #5: Ненужные паузы в движении после каждого полного оборота
Параметр WRAPPED_ROTARY = 1 позволяет задавать максимальную угловую координату 359.9999°, но не 360°(на 360°linuxcnc выдает ошибку превышения абсолютной координаты для WRAPPED оси)
При выполнении финишной фрезеровки поверхности прутка(цилиндра), чтобы все правильно проворачивалось по спирали, приходится применять в цикле, например, такую пару команд
Код: Выделить всёРазвернуть
G1 Y#<new_y> B359.999 F#<calculated_feed>
G1 B0 (доворот до полного оборота)
При таком подходе после каждого полного оборота происходит ненужная пауза движения.
Решение (для просмотра содержимого нажмите на ссылку)
Решение подсказал Nick:
Код: Выделить всёРазвернуть
G1 Y[#<new_y>-#<half_step>] B180 F#<calculated_feed>
G1 Y#<new_y> B0 F<#calculated_feed>
нужно полный оборот оси B (или оси A) разбить на два одинаковых по 180°, тогда будет переход через ноль без приостановки
logo_micro_vers_dark.png
logo_micro_vers_dark.png (2.41 Кб) Просмотров: 6572
Последний раз редактировалось verser 28 ноя 2017, 21:21, всего редактировалось 41 раз(а).
Изображение- центроискатели
Аватара пользователя
verser
Мастер
 
Сообщения: 1735
Зарегистрирован: 21 июл 2013, 22:28
Откуда: Минск
Репутация: 1144
Медальки:
Настоящее имя: Сергей

Re: 4-я ось: как сбросить намотанные обороты

Сообщение aftaev » 05 май 2014, 19:39

verser писал(а): ось накручивает обороты, при появлении команды G0 B0 linuxcnc начинает все эти обороты отматывать обратно.

а на экране что ось перед этим показывает 23894 градусов?
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
aftaev
Зачётный участник
Зачётный участник
 
Сообщения: 30637
Зарегистрирован: 04 апр 2010, 19:22
Откуда: Казахстан. Шымкент
Репутация: 5448
Медальки:

Re: 4-я ось: как сбросить намотанные обороты

Сообщение verser » 05 май 2014, 19:42

Совершенно верно.
Изображение- центроискатели
Аватара пользователя
verser
Мастер
 
Сообщения: 1735
Зарегистрирован: 21 июл 2013, 22:28
Откуда: Минск
Репутация: 1144
Медальки:
Настоящее имя: Сергей

Re: 4-я ось: как сбросить намотанные обороты

Сообщение nkp » 05 май 2014, 19:52

пытался когда то дописать в кинематику для поворотного ножа - так и не закончил...
но там именно при работе необходимо было...
а здесь мне кажеться можно написать свой код (если нужен код),
или кнопку (если нужна кнопка)
вычиляем - сколько осталось до "ближайшего" нуля , и говорим емс - здесь теперь ноль...
или задача в чем то другом?
nkp
Мастер
 
Сообщения: 7796
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1421
Медальки:

Re: 4-я ось: как сбросить намотанные обороты

Сообщение verser » 05 май 2014, 20:05

nkp писал(а):вычиляем - сколько осталось до "ближайшего" нуля , и говорим емс - здесь теперь ноль...

Типа того, только хотелось бы ничего не вычислять по возможности. Неужели в нашей суперсистеме linuxcnc нет "включалки" функции перехода с 359° на 1° через поворот на +2°, а не на -358° ?
Изображение- центроискатели
Аватара пользователя
verser
Мастер
 
Сообщения: 1735
Зарегистрирован: 21 июл 2013, 22:28
Откуда: Минск
Репутация: 1144
Медальки:
Настоящее имя: Сергей

Re: 4-я ось: как сбросить намотанные обороты

Сообщение at90 » 05 май 2014, 20:12

если просто сбросить то поможет G92 A0
Фрезы для чпу www.carbidetools.ru
Аватара пользователя
at90
Мастер
 
Сообщения: 539
Зарегистрирован: 08 окт 2011, 23:22
Репутация: 148

Re: 4-я ось: как сбросить намотанные обороты

Сообщение nkp » 05 май 2014, 20:15

verser писал(а):только хотелось бы ничего не вычислять по возможности.

может я не точно выразился - имелось в виду написать две строки выражения для вычисления...
то есть ,естественно - все будет происходить автоматом...
========
все же - как это должно выглядеть-работать:
кнопка в ручном режиме ?
nkp
Мастер
 
Сообщения: 7796
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1421
Медальки:

Re: 4-я ось: как сбросить намотанные обороты

Сообщение nkp » 05 май 2014, 20:16

at90 писал(а):если просто сбросить то поможет G92 A0

да - но сперва же необходимо "довернуть " ось...
если сразу G92 A0 - то где стоим - там теперь ноль
nkp
Мастер
 
Сообщения: 7796
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1421
Медальки:

Re: 4-я ось: как сбросить намотанные обороты

Сообщение at90 » 05 май 2014, 20:24

еще можно прилепить концевик и лепесток к патрону. И по концевику гнать в 0.
Фрезы для чпу www.carbidetools.ru
Аватара пользователя
at90
Мастер
 
Сообщения: 539
Зарегистрирован: 08 окт 2011, 23:22
Репутация: 148

Re: 4-я ось: как сбросить намотанные обороты

Сообщение verser » 05 май 2014, 20:24

nkp писал(а):..имелось в виду написать две строки выражения для вычисления...

куда, в постпроцессор?
Изображение- центроискатели
Аватара пользователя
verser
Мастер
 
Сообщения: 1735
Зарегистрирован: 21 июл 2013, 22:28
Откуда: Минск
Репутация: 1144
Медальки:
Настоящее имя: Сергей

Re: 4-я ось: как сбросить намотанные обороты

Сообщение nkp » 05 май 2014, 20:30

at90 писал(а):еще можно прилепить концевик и лепесток к патрону. И по концевику гнать в 0

да ,а как ось обнуляется(Home)?
в нашем случае это не подойдет??
verser писал(а):куда, в постпроцессор?

нет - я думал маленькую подпрограмку написать,кнопкой ее вызывать...
nkp
Мастер
 
Сообщения: 7796
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1421
Медальки:

Re: 4-я ось: как сбросить намотанные обороты

Сообщение verser » 05 май 2014, 20:36

at90 писал(а):еще можно прилепить концевик и лепесток к патрону. И по концевику гнать в 0.

В постпроцессоре заложена такая возможность (концевик не нужен), вот пример перехода через 360°одного постпроцессора из SolidCAM:
Код: Выделить всёРазвернуть
...
A-1.398
A359.114
Z3.81
A-357.013
A-354.912
...

Проблема в том, что linuxcnc мотает эти переходы "в лоб", как написано, а надо чтобы ... понятно короче.
Изображение- центроискатели
Аватара пользователя
verser
Мастер
 
Сообщения: 1735
Зарегистрирован: 21 июл 2013, 22:28
Откуда: Минск
Репутация: 1144
Медальки:
Настоящее имя: Сергей

Re: 4-я ось: как сбросить намотанные обороты

Сообщение verser » 05 май 2014, 20:40

nkp писал(а):нет - я думал маленькую подпрограмку написать,кнопкой ее вызывать...

Деталь может иметь десятки таких проблемных переходов. Кнопка отпадает.
Изображение- центроискатели
Аватара пользователя
verser
Мастер
 
Сообщения: 1735
Зарегистрирован: 21 июл 2013, 22:28
Откуда: Минск
Репутация: 1144
Медальки:
Настоящее имя: Сергей

Re: 4-я ось: как сбросить намотанные обороты

Сообщение nkp » 05 май 2014, 20:46

verser писал(а):Деталь может иметь десятки таких проблемных переходов. Кнопка отпадает.

то есть нужен G-код ??
при вызове которого ось отматывает в ноль по кратчайшему?
nkp
Мастер
 
Сообщения: 7796
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1421
Медальки:

Re: 4-я ось: как сбросить намотанные обороты

Сообщение verser » 05 май 2014, 20:52

Интересно, что и симулятор SolidCAM , и cимулятор Cimco Edit, с этой проблемой справляются "по-умолчанию" без проблем.. но я верю в СИЛУ linuxcnc !!! :bender:
Изображение- центроискатели
Аватара пользователя
verser
Мастер
 
Сообщения: 1735
Зарегистрирован: 21 июл 2013, 22:28
Откуда: Минск
Репутация: 1144
Медальки:
Настоящее имя: Сергей

Re: 4-я ось: как сбросить намотанные обороты

Сообщение verser » 05 май 2014, 20:59

nkp писал(а):то есть нужен G-код ??
при вызове которого ось отматывает в ноль по кратчайшему?

Нужно чтобы такой g-code
Код: Выделить всёРазвернуть
G0 A359
G0 A1
крутил ось на +2° а не на -358°
Изображение- центроискатели
Аватара пользователя
verser
Мастер
 
Сообщения: 1735
Зарегистрирован: 21 июл 2013, 22:28
Откуда: Минск
Репутация: 1144
Медальки:
Настоящее имя: Сергей

Re: 4-я ось: как сбросить намотанные обороты

Сообщение nkp » 05 май 2014, 21:16

можно такой код сохранить в файл deg.ngc
Код: Выделить всёРазвернуть
o<deg> sub
  o111 if [#5424 LT 360]
       G0 B[360 - #5424]
  o111 else
       G0 B[#5424 MOD 360]
  o111 endif 
o<deg> endsub

и доворачивать ось вызовом этого о-кода:
Код: Выделить всёРазвернуть
o<deg>call

то есть :
Код: Выделить всёРазвернуть
G0 B359
o<deg>call

ps
вначале в условиях ось была B
потом А
если А - то код:
Код: Выделить всёРазвернуть
o<deg> sub
  o111 if [#5423 LT 360]
       G0 A[360 - #5423]
  o111 else
       G0 A[#5423 MOD 360]
  o111 endif 
o<deg> endsub
nkp
Мастер
 
Сообщения: 7796
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1421
Медальки:

Re: 4-я ось: как сбросить намотанные обороты

Сообщение verser » 05 май 2014, 21:38

Полезная процедурка :)
Но проблему перехода по кратчайшему углу не решает. :(
Последний раз редактировалось verser 05 май 2014, 21:40, всего редактировалось 2 раз(а).
Изображение- центроискатели
Аватара пользователя
verser
Мастер
 
Сообщения: 1735
Зарегистрирован: 21 июл 2013, 22:28
Откуда: Минск
Репутация: 1144
Медальки:
Настоящее имя: Сергей

Re: 4-я ось: как сбросить намотанные обороты

Сообщение nkp » 05 май 2014, 21:38

так наверно с обнулением(если необходимо):
Код: Выделить всёРазвернуть
o<deg> sub
  o111 if [#5423 LT 360]
       G0 A[360 - #5424]
       G10 L20 P1 A0
  o111 else
       G0 A[#5423 MOD 360]
       G10 L20 P1 A0
  o111 endif 
o<deg> endsub

P1 для G54
verser писал(а):Но проблему перехода по кратчайшему углу не решает

почему???
nkp
Мастер
 
Сообщения: 7796
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1421
Медальки:

Re: 4-я ось: как сбросить намотанные обороты

Сообщение verser » 05 май 2014, 21:42

nkp писал(а):
verser писал(а):Но проблему перехода по кратчайшему углу не решает

почему???

verser писал(а):Нужно чтобы такой g-code
Код: Выделить всёРазвернуть
G0 A359
G0 A1
крутил ось на +2° а не на -358°
Изображение- центроискатели
Аватара пользователя
verser
Мастер
 
Сообщения: 1735
Зарегистрирован: 21 июл 2013, 22:28
Откуда: Минск
Репутация: 1144
Медальки:
Настоящее имя: Сергей

След.

Вернуться в LinuxCNC

Кто сейчас на конференции

Зарегистрированные пользователи: arkhnchul, artsemi, Bing [Bot], Darxton, dvhab, Google [Bot], loi_28, Magzzz, midway, mikehv, mikro3v, MSN [Bot], nik1, NikolayUa24, niksooon, PavelTch, Sashalex24, savo, stenkodv, uralpt, Yandex [bot]

Reputation System ©'