Страница 1 из 2

Настройка поворотной оси Stepconf

Добавлено: 21 сен 2013, 17:07
Bmax77
В общем настраиваю в Stepconf, делаю тест оси скорость 8000, ускорение 15000, микрошаг 8. (Крутится устойчиво длительное время)
Сохраняю настройки, запускаю LCNC, пытаюсь покрутить ось, тут же получаю Joint 3 following error.
Снижаю ползунком скорость, пробую, в общем в LCNC без ошибки работает на скорости раз в 5 ниже чем в Stepconf.
Что я делаю не так?

Re: Настройка поворотной оси Stepconf

Добавлено: 21 сен 2013, 17:12
vovafed
уменьшите ускорение хотябы до 3000-4000

Re: Настройка поворотной оси Stepconf

Добавлено: 21 сен 2013, 17:13
PKM
Ускорение 15000 мм/с2? Многовато

Re: Настройка поворотной оси Stepconf

Добавлено: 21 сен 2013, 17:29
Bmax77
PKM писал(а):Ускорение 15000 мм/с2? Многовато
Но в тесте то работало стабильно, а из LCNC сразу ошибка.

Re: Настройка поворотной оси Stepconf

Добавлено: 21 сен 2013, 17:29
Bmax77
vovafed писал(а):уменьшите ускорение хотябы до 3000-4000
Ну так и пришлось сделать, чтобы работало, но опять же в тесте то работает!

Re: Настройка поворотной оси Stepconf

Добавлено: 21 сен 2013, 17:30
PKM
Похоже, в тесте ускорение отрабатывает неверно. Это очень большое значение, тем более для шаговика.

Re: Настройка поворотной оси Stepconf

Добавлено: 21 сен 2013, 18:43
Сергей Саныч
Ускорение, да, великовато, но в случае с ШД без обратной связи скорее всего приведет не к ошибке, а срыву шагов. Откуда LCNC будет знать, что механика не может отработать, как надо?
Выложите конфиги, посмотрим.

Re: Настройка поворотной оси Stepconf

Добавлено: 22 сен 2013, 10:54
Bmax77
https://www.youtube.com/watch?v=PIbwx5cUh0k
Вот такие обороты дает движок в тесте.
Вот конфиги:
ini
(для просмотра содержимого нажмите на ссылку)
# Создан stepconf в Sun Sep 22 10:29:39 2013
# Все изменения в этом файле будут перезаписаны
# при следующем запуске stepconf

[EMC]
MACHINE = 4AXIS
DEBUG = 0

[DISPLAY]
DISPLAY = axis
EDITOR = gedit
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 1.2
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
PROGRAM_PREFIX = /home/max/linuxcnc/nc_files
INCREMENTS = 5mm 1mm .5mm .1mm .05mm .01mm .005mm

[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Greyscale Depth Image
PROGRAM_EXTENSION = .py Python Script
png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python

[TASK]
TASK = milltask
CYCLE_TIME = 0.010

[RS274NGC]
PARAMETER_FILE = linuxcnc.var

[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
COMM_WAIT = 0.010
BASE_PERIOD = 43269
SERVO_PERIOD = 1000000

[HAL]
HALFILE = 4AXIS.hal
HALFILE = custom.hal
POSTGUI_HALFILE = custom_postgui.hal

[TRAJ]
AXES = 4
COORDINATES = X Y Z A
MAX_ANGULAR_VELOCITY = 5200.00
DEFAULT_ANGULAR_VELOCITY = 60.00
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
CYCLE_TIME = 0.010
DEFAULT_VELOCITY = 1.70
MAX_LINEAR_VELOCITY = 17.00

[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = tool.tbl

[AXIS_0]
TYPE = LINEAR
HOME = 0.0
MAX_VELOCITY = 17.0
MAX_ACCELERATION = 300.0
STEPGEN_MAXACCEL = 375.0
SCALE = 1280.0
FERROR = 1
MIN_FERROR = .25
MIN_LIMIT = -9999.0
MAX_LIMIT = 9999.0
HOME_OFFSET = 0.0

[AXIS_1]
TYPE = LINEAR
HOME = 0.0
MAX_VELOCITY = 17.0
MAX_ACCELERATION = 300.0
STEPGEN_MAXACCEL = 375.0
SCALE = 1280.0
FERROR = 1
MIN_FERROR = .25
MIN_LIMIT = -9999.0
MAX_LIMIT = 9999.0
HOME_OFFSET = 0.0

[AXIS_2]
TYPE = LINEAR
HOME = 0.0
MAX_VELOCITY = 17.0
MAX_ACCELERATION = 300.0
STEPGEN_MAXACCEL = 375.0
SCALE = 1280.0
FERROR = 1
MIN_FERROR = .25
MIN_LIMIT = -9999.0
MAX_LIMIT = 9999.0
HOME_OFFSET = 0.0

[AXIS_3]
TYPE = ANGULAR
HOME = 0.0
MAX_VELOCITY = 4940.02634681
MAX_ACCELERATION = 15000.0
STEPGEN_MAXACCEL = 18750.0
SCALE = 4.44444444444
FERROR = 1
MIN_FERROR = .25
MIN_LIMIT = -9999.0
MAX_LIMIT = 9999.0
HOME_OFFSET = 0.0
hal
(для просмотра содержимого нажмите на ссылку)
# Создан stepconf в Sun Sep 22 10:29:39 2013
# Все изменения в этом файле будут перезаписаны
# при следующем запуске stepconf
loadrt trivkins
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
loadrt probe_parport
loadrt hal_parport cfg="0x378 out "
setp parport.0.reset-time 1000
loadrt stepgen step_type=0,0,0,0

addf parport.0.read base-thread
addf stepgen.make-pulses base-thread
addf parport.0.write base-thread
addf parport.0.reset base-thread

addf stepgen.capture-position servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf stepgen.update-freq servo-thread
net spindle-cmd <= motion.spindle-speed-out
net spindle-cw <= motion.spindle-forward

setp parport.0.pin-01-out-invert 1
net estop-out => parport.0.pin-01-out
net ystep => parport.0.pin-02-out
setp parport.0.pin-02-out-reset 1
setp parport.0.pin-03-out-invert 1
net ydir => parport.0.pin-03-out
net xstep => parport.0.pin-04-out
setp parport.0.pin-04-out-reset 1
setp parport.0.pin-05-out-invert 1
net xdir => parport.0.pin-05-out
net zstep => parport.0.pin-06-out
setp parport.0.pin-06-out-reset 1
net zdir => parport.0.pin-07-out
net astep => parport.0.pin-08-out
setp parport.0.pin-08-out-reset 1
net adir => parport.0.pin-09-out
setp parport.0.pin-14-out-invert 1
net spindle-cw => parport.0.pin-14-out


net estop-ext <= parport.0.pin-10-in-not


setp stepgen.0.position-scale [AXIS_0]SCALE
setp stepgen.0.steplen 1
setp stepgen.0.stepspace 0
setp stepgen.0.dirhold 22000
setp stepgen.0.dirsetup 22000
setp stepgen.0.maxaccel [AXIS_0]STEPGEN_MAXACCEL
net xpos-cmd axis.0.motor-pos-cmd => stepgen.0.position-cmd
net xpos-fb stepgen.0.position-fb => axis.0.motor-pos-fb
net xstep <= stepgen.0.step
net xdir <= stepgen.0.dir
net xenable axis.0.amp-enable-out => stepgen.0.enable

setp stepgen.1.position-scale [AXIS_1]SCALE
setp stepgen.1.steplen 1
setp stepgen.1.stepspace 0
setp stepgen.1.dirhold 22000
setp stepgen.1.dirsetup 22000
setp stepgen.1.maxaccel [AXIS_1]STEPGEN_MAXACCEL
net ypos-cmd axis.1.motor-pos-cmd => stepgen.1.position-cmd
net ypos-fb stepgen.1.position-fb => axis.1.motor-pos-fb
net ystep <= stepgen.1.step
net ydir <= stepgen.1.dir
net yenable axis.1.amp-enable-out => stepgen.1.enable

setp stepgen.2.position-scale [AXIS_2]SCALE
setp stepgen.2.steplen 1
setp stepgen.2.stepspace 0
setp stepgen.2.dirhold 22000
setp stepgen.2.dirsetup 22000
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

setp stepgen.3.position-scale [AXIS_3]SCALE
setp stepgen.3.steplen 1
setp stepgen.3.stepspace 0
setp stepgen.3.dirhold 22000
setp stepgen.3.dirsetup 22000
setp stepgen.3.maxaccel [AXIS_3]STEPGEN_MAXACCEL
net apos-cmd axis.3.motor-pos-cmd => stepgen.3.position-cmd
net apos-fb stepgen.3.position-fb => axis.3.motor-pos-fb
net astep <= stepgen.3.step
net adir <= stepgen.3.dir
net aenable axis.3.amp-enable-out => stepgen.3.enable

net estop-out <= iocontrol.0.user-enable-out
net estop-ext => iocontrol.0.emc-enable-in

loadusr -W hal_manualtoolchange
net tool-change iocontrol.0.tool-change => hal_manualtoolchange.change
net tool-changed iocontrol.0.tool-changed <= hal_manualtoolchange.changed
net tool-number iocontrol.0.tool-prep-number => hal_manualtoolchange.number
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
Ну и пару скриншотов:
IMAG0296.jpg (1919 просмотров) <a class='original' href='./download/file.php?id=18865&mode=view' target=_blank>Загрузить оригинал (702 КБ)</a>
Тут видно максимальную скорость в LCNC
IMAG0297.jpg (1919 просмотров) <a class='original' href='./download/file.php?id=18866&mode=view' target=_blank>Загрузить оригинал (930.64 КБ)</a>
А тут в Stepconf

Ну и вопрос до кучи, можно ли эту ось программно вращать без ограничений? Тоесть получить токарный шпиндель?

Re: Настройка поворотной оси Stepconf

Добавлено: 22 сен 2013, 11:00
nkp
Bmax77 писал(а):Ну и вопрос до кучи, можно ли эту ось программно вращать без ограничений? Тоесть получить токарный шпиндель?
кажется надо просто убрать лимиты из ini (MIN_LIMIT = -9999.0
MAX_LIMIT = 9999.0)

Re: Настройка поворотной оси Stepconf

Добавлено: 22 сен 2013, 17:56
vovafed
Bmax77 писал(а):Ну и пару скриншотов:
там программка есть можно фотки с экрана делать ;)

Re: Настройка поворотной оси Stepconf

Добавлено: 23 сен 2013, 06:13
Сергей Саныч
Нужно попробовать увеличить для этой оси FERROR и MIN_FERROR раз в 10.

Re: Настройка поворотной оси Stepconf

Добавлено: 23 сен 2013, 10:33
Nick
Bmax77 писал(а):В общем настраиваю в Stepconf, делаю тест оси скорость 8000, ускорение 15000, микрошаг 8.
Скорость 8 метров в секунду? Что за станок такой?
Какой стоит: STEPGEN_MAXACCEL?
Как все происходит в linuxcnc:
Есть планировщик траектории, он планирует траекторию исходя из MAX_VELOCITY и MAX_ACCELERATION, и передает задание stepgen.
Stepgen генерирует шаги, но обычно он слегка запаздывает (на 1 серво период + могут быть различные компенсации на люфты и т.д.), поэтому его ускоерние ставят больше чем ускорение оси у планировщика, STEPGEN_MAXACCEL это как раз ускорение для stepgen.

Дальше происходит следующее, на больших скоростях разница в том, сколько сказали прошагать шаговику и сколько он прошагает на самом деле будет расти (это может происходить, например, из-за неровных интервалос сервоцикла). Поэтому надо увеличить FERROR.
vovafed писал(а):там программка есть можно фотки с экрана делать
Да, жмешь PrtScr (рядом с F12) и получаешь красивый скриншот ;).

Re: Настройка поворотной оси Stepconf

Добавлено: 23 сен 2013, 12:42
Сергей Саныч
Nick писал(а):Скорость 8 метров в секунду? Что за станок такой?
Это поворотная ось, там градусы в секунду.
PS: причем очень быстроповоротая :)

Re: Настройка поворотной оси Stepconf

Добавлено: 23 сен 2013, 13:10
solo
У меня похожее было получалось что LCNC не успевал выдавать импульсы степ я просто уменьшил (базе регион) если материнка позволяет это сделать , или как вариант надо изменить на драйвере ШД микрошаг в меньшую сторону и соответственно параметр скале в настройки оси, разгрузить LCNC от генерации большой частоты степ импульсов на поворотной оси. Мне это помогло.

Re: Настройка поворотной оси Stepconf

Добавлено: 23 сен 2013, 16:08
Bmax77
solo писал(а):У меня похожее было получалось что LCNC не успевал выдавать импульсы степ я просто уменьшил
Тоесть в чистом виде Stepconf успевает такую частоту генерить, а LCNC со всей нагрузкой уже не справляется с такой частотой.

Re: Настройка поворотной оси Stepconf

Добавлено: 23 сен 2013, 16:26
Сергей Саныч
Bmax77 писал(а):Тоесть в чистом виде Stepconf успевает такую частоту генерить, а LCNC со всей нагрузкой уже не справляется с такой частотой.
Не, не так. LCNC способен выдавать импульсы вплоть до базовой частоты - у тебя 23111 Гц. Для оси A расчетная частота 21955 Гц, то есть ниже.
Смотри в сторону увеличения FERROR.

Re: Настройка поворотной оси Stepconf

Добавлено: 23 сен 2013, 16:28
Nick
Bmax77 писал(а):Тоесть в чистом виде Stepconf успевает такую частоту генерить, а LCNC со всей нагрузкой уже не справляется с такой частотой.
Stepconf просто не следит за "обратной связью" (в кавычках потому, что у stepgen обратная связь виртуальная - он просто читает сколько сделал импульсов step и выдает это обратно, к реальной обраной связи это не совсем относится...)

Re: Настройка поворотной оси Stepconf

Добавлено: 01 окт 2013, 12:11
Bmax77
nkp писал(а):Ну и вопрос до кучи, можно ли эту ось программно вращать без ограничений? Тоесть получить токарный шпиндель?
Возвращаясь к этому вопросу, нашел вот эту тему http://linuxcnc.org/index.php/english/f ... mitstart=0
Кто хорошо понимает английский, получилось у них полностью решить проблему, чтобы можно было переключать режим работы 4й оси.

Re: Настройка поворотной оси Stepconf

Добавлено: 01 окт 2013, 13:42
Nick
А что именно надо сделать?
Если надо вращать бесконечно, то проще всего просто стереть (а еще лучше закомментировать) строки задания пределов оси в ini...

Re: Настройка поворотной оси Stepconf

Добавлено: 01 окт 2013, 15:00
Bmax77
И что у LCNC не произойдет переполнения там чегото и реально бесконечно будет крутиться?
G1 A∞ Fnnn ведь не сработает, предел то все равно будет так или иначе. А было б замечательно заставить его крутиться с нужной скоростью, а потом переключить в режим позиционирования по углу.