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

Настройка токарного шпинделя

Добавлено: 23 ноя 2017, 14:32
valor
На токарном станке настраиваю шпиндель, привод от асинхронника с частотником, пытаюсь настроить шим.
конвертер шим-напряжение от пурелогик. Проблема с реверсным вращением шпинделя, при задании в настройках PWM
диапазона 0-0 и 3000-1
прямые обороты совпадают с показанием энкодера, а вот обратные занижены,
то-есть M3s300 дает 300 оборотов а M4s300 дает где-то 200,
с оборотами вроде помогло задание диапазонов в виде -3000 - -1 и 3000 - 1
обороты в обе стороны стали одинаковы, но в обоих случаях при М4 не срабатывает SPINDLE-AT-SPEED и соответственно не начинается движение в режиме подачи мм на оборот, подскажите где я мог неправильно настроить?

Re: Настройка токарного шпинделя

Добавлено: 23 ноя 2017, 15:06
Serg
В документации целая глава есть на эту тему с примерами.

Re: Настройка токарного шпинделя

Добавлено: 23 ноя 2017, 15:39
valor
Я главу то прочитал, все 4 страницы про шпиндель, про SPINDEL AT SPEED вообще всего 1 абзац, и на мой вопрос там ответа нет, (ну или я тупой), сейчас поменял местами фазы а и б энкодера, и теперь прямые обороты не включают шпиндель ат спид, а обратные включают.

Re: Настройка токарного шпинделя

Добавлено: 23 ноя 2017, 15:46
nkp
valor писал(а):подскажите где я мог неправильно настроить?
или в "железе" ,или в настройках
что из этого ты можешь тут показать?

Re: Настройка токарного шпинделя

Добавлено: 23 ноя 2017, 15:55
Serg
А что за PWM такой с двумя диапазонами?

Re: Настройка токарного шпинделя

Добавлено: 23 ноя 2017, 18:37
valor
завтра утром доберусь до работы и все покажу, сделаю фото железа и выложу все конфиги,
pwm не двух диапазонный, я имел ввиду настройку в stepconf там указываются соответствия шим к оборотам, в первый раз я указал для скважности 0 соответствие нулю оборотов а для 1 соответствие 3000 оборотов
когда проверял реверс стал смотреть значения pwmgen и увидел что для М4 значение отрицательное, поэтому решил задать диапазон не от нуля а от -3000 оборотов и соответственно от -1 шим, это не логично для меня, но обороты стали соответствовать.

Re: Настройка токарного шпинделя

Добавлено: 24 ноя 2017, 02:29
Serg
valor писал(а):когда проверял реверс стал смотреть значения pwmgen и увидел что для М4 значение отрицательное
Вполне логично. Однако реверс на вашем частотнике скорее всего делается не отрицательным напряжением, а переключением соотв. дискретного входа. Посему надо просто на pwmgen подавать абсолютное значение задаания (в HAL есть соотв. компонент).
Точно так-же и с энкодером - для сравнения надо использовать абсолютное значение с энкодера. Это можно сделать либо тем-же компонентом, либо просто оторвав фазу B.

Re: Настройка токарного шпинделя

Добавлено: 24 ноя 2017, 08:51
valor
Все верно, оторвать фазу б нельзя, потому-что тогда не будет работать функция G33.1, а она мне нужна.
вот мой hal файл сгенерированный stepconf

Код: Выделить всё

loadrt trivkins
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
loadrt hal_parport cfg="0x378 out"
setp parport.0.reset-time 5000
loadrt stepgen step_type=0,0
loadrt encoder num_chan=1
loadrt abs count=1
loadrt scale count=1
loadrt lowpass count=1
loadrt near
loadrt pwmgen output_type=1

addf parport.0.read base-thread
addf stepgen.make-pulses base-thread
addf encoder.update-counters base-thread
addf pwmgen.make-pulses base-thread
addf parport.0.write base-thread
addf parport.0.reset base-thread

addf stepgen.capture-position servo-thread
addf encoder.capture-position servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf stepgen.update-freq servo-thread
addf pwmgen.update servo-thread
addf abs.0 servo-thread
addf scale.0 servo-thread
addf lowpass.0 servo-thread
addf near.0 servo-thread

net spindle-cmd-rpm => pwmgen.0.value
net spindle-on <= motion.spindle-on => pwmgen.0.enable
net spindle-pwm <= pwmgen.0.pwm
setp pwmgen.0.pwm-freq 0.0
setp pwmgen.0.scale 2700.0
setp pwmgen.0.offset 0.0
setp pwmgen.0.dither-pwm true
net spindle-cmd-rpm     <= motion.spindle-speed-out
net spindle-cmd-rpm-abs <= motion.spindle-speed-out-abs
net spindle-cmd-rps     <= motion.spindle-speed-out-rps
net spindle-cmd-rps-abs <= motion.spindle-speed-out-rps-abs
net spindle-at-speed    => motion.spindle-at-speed
net spindle-cw <= motion.spindle-forward
net spindle-ccw <= motion.spindle-reverse

setp encoder.0.position-scale 800.000000
net spindle-position encoder.0.position => motion.spindle-revs
net spindle-velocity-feedback-rps encoder.0.velocity => motion.spindle-speed-in
net spindle-index-enable encoder.0.index-enable <=> motion.spindle-index-enable
net spindle-phase-a encoder.0.phase-A
net spindle-phase-b encoder.0.phase-B
net spindle-index encoder.0.phase-Z

net spindle-pwm     => parport.0.pin-04-out
net xstep           => parport.0.pin-05-out
setp parport.0.pin-05-out-reset 1
net zstep           => parport.0.pin-06-out
setp parport.0.pin-06-out-reset 1
setp parport.0.pin-07-out-invert 1
net zdir            => parport.0.pin-07-out
net spindle-cw      => parport.0.pin-08-out
net spindle-ccw     => parport.0.pin-09-out
setp parport.0.pin-17-out-invert 1
net xdir            => parport.0.pin-17-out
net spindle-phase-b <= parport.0.pin-10-in
net spindle-index   <= parport.0.pin-11-in
net both-home-z     <= parport.0.pin-12-in
net both-home-x     <= parport.0.pin-13-in
net spindle-phase-a <= parport.0.pin-15-in

setp stepgen.0.position-scale [AXIS_0]SCALE
setp stepgen.0.steplen 1
setp stepgen.0.stepspace 0
setp stepgen.0.dirhold 33000
setp stepgen.0.dirsetup 33000
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
net both-home-x => axis.0.home-sw-in
net both-home-x => axis.0.neg-lim-sw-in
net both-home-x => axis.0.pos-lim-sw-in

setp stepgen.1.position-scale [AXIS_2]SCALE
setp stepgen.1.steplen 1
setp stepgen.1.stepspace 0
setp stepgen.1.dirhold 33000
setp stepgen.1.dirsetup 33000
setp stepgen.1.maxaccel [AXIS_2]STEPGEN_MAXACCEL
net zpos-cmd axis.2.motor-pos-cmd => stepgen.1.position-cmd
net zpos-fb stepgen.1.position-fb => axis.2.motor-pos-fb
net zstep <= stepgen.1.step
net zdir <= stepgen.1.dir
net zenable axis.2.amp-enable-out => stepgen.1.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

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

net tool-number <= iocontrol.0.tool-prep-number
net tool-change-loopback iocontrol.0.tool-change => iocontrol.0.tool-changed
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared

Re: Настройка токарного шпинделя

Добавлено: 24 ноя 2017, 12:49
valor
Проблему решил, в файле custom_postgui.hal надо было поменять строку
net spindle-velocity-feedback-rps => near.0.in2
на строку
net spindle-fb-filtered-abs-rps => near.0.in2

Re: Настройка токарного шпинделя

Добавлено: 24 ноя 2017, 13:59
Serg
valor писал(а):Все верно, оторвать фазу б нельзя, потому-что тогда не будет работать функция G33.1, а она мне нужна.
Оторвать можно и всё работать будет - надо только сменить режим работы счётчика:

Код: Выделить всё

encoder.N.counter-mode bit i/o
        Enables counter mode. When true, the counter counts each rising edge of the phase-A input, ignoring the value on phase-B. This is useful for counting the output of a single channel (non-quadrature) sensor. When false (the default), it counts in quadrature mode.

Re: Настройка токарного шпинделя

Добавлено: 24 ноя 2017, 14:02
valor
а при жестком нарезании резьбы когда он будет понимать что шпиндель остановился а потом реверсировался?

Re: Настройка токарного шпинделя

Добавлено: 24 ноя 2017, 14:04
Serg
Когда после реверса скорость шпинделя уменьшится до нуля, а потом снова станет ненулевой. :)

Re: Настройка токарного шпинделя

Добавлено: 24 ноя 2017, 14:30
valor
а переходные процессы при этом куда девать? с одной фазой при реверсе мне станок благополучно ломал метчики.

Re: Настройка токарного шпинделя

Добавлено: 24 ноя 2017, 14:34
Serg
Такое может быть, если энкодер с малым разрешением.
В коде LinuxCNC при синхронизации не используется направление.

Re: Настройка токарного шпинделя

Добавлено: 24 ноя 2017, 14:39
valor
https://www.youtube.com/watch?v=OL7VKCo_KKIэнкодер 200 линий на оборот, при подключении фазы б нарезает резьбу от м2.5 в дюрали на 300 оборотах.

на видео м3 как раз на этих деталях всплыли косяки с реверсными оборотами.

Re: Настройка токарного шпинделя

Добавлено: 24 ноя 2017, 17:32
Serg
valor писал(а):энкодер 200 линий на оборот, при подключении фазы б нарезает резьбу от м2.5 в дюрали на 300 оборотах.
Ну да, маловато линий - больше тратится времени на то, чтобы понять, что шпиндель уже стоит и след. импульса не будет...
У меня на станке 1024 линии - всё ок.

Re: Настройка токарного шпинделя

Добавлено: 24 ноя 2017, 22:32
valor
А у вас энкодер через лпт? или месу?
у меня энкодер где-то до 1500 оборотов нормально работает, потом похоже порт не успевает, вроде где-то слышал что надо резисторы подтяжки на ножки лпт поставить?

Re: Настройка токарного шпинделя

Добавлено: 25 ноя 2017, 02:20
Serg
valor писал(а):А у вас энкодер через лпт? или месу?
Через месу.
при нынешних ценах на Mesa мне даже лень задумываться о наличии LPT на матплатах и переживать за большой джиттер. :)

Re: Настройка токарного шпинделя

Добавлено: 06 дек 2017, 15:04
valor
valor писал(а):Проблему решил, в файле custom_postgui.hal надо было поменять строку
net spindle-velocity-feedback-rps => near.0.in2
на строку
net spindle-fb-filtered-abs-rps => near.0.in2

Проблема решилась не полностью, теперь шпиндель эт спид срабатывает, а вот резьба по циклу G76 не режется, выходит на глубину первого реза и встает, ошибок не выдает.

Re: Настройка токарного шпинделя

Добавлено: 06 дек 2017, 17:09
Dmaster
valor писал(а):ыходит на глубину первого реза и встает, ошибок не выдает.
Не видит Индексную точку на энкодере шпинделя ИЛИ отсчет энкодера идет в обратную сторону. (смените направление счета)