горят всегдаNightV писал(а):тестер в руки и в перед! по очереди, прозвони на утечку кабели и частотник, у тебя чтото просаживает месу в ноль, кстате как себя ведут леды на 7i33TA которые в центре платы, они показывают что есть напряжения на плате +5v, +15v, -15v
7i33TA настройка шпинделя
Re: 7i33TA настройка шпинделя
- NightV
- Почётный участник
- Сообщения: 6602
- Зарегистрирован: 30 дек 2011, 09:14
- Репутация: 2279
- Настоящее имя: Владимир Айрапетян
- Откуда: Israel
- Контактная информация:
Re: 7i33TA настройка шпинделя
значит с напругами на месе все в порядке, звони все по очереди после нее, вплоть перепроверь туда-ли завели вход на самом частотнике.... и такое бывает
Всё просто! если знаешь КАК!
Re: 7i33TA настройка шпинделя
Спасибо. С частотником разобрался
Проблема с енкодером оcталась. Никто не сталкивался?:
датчик на 1000 ставлю input_scale=1000, обороты шпинделя не соответствуют. Приблизительно верные значения только при input_scale =~67, в коробке прямая передача
Читал Hostmot http://www.linuxcnc.org/docs/html/drive ... html#r1_15 ничего применительно к себе не нашел Алл, подскажите где копать?
Проблема с енкодером оcталась. Никто не сталкивался?:
датчик на 1000 ставлю input_scale=1000, обороты шпинделя не соответствуют. Приблизительно верные значения только при input_scale =~67, в коробке прямая передача
Читал Hostmot http://www.linuxcnc.org/docs/html/drive ... html#r1_15 ничего применительно к себе не нашел Алл, подскажите где копать?
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: 7i33TA настройка шпинделя
Попробуй так, включи энкодер, и рукой поверни вал на один оборот, посмотри, сколько энкодер натикает. Причем именно в тиках.
Может в EMC2 еще что-то настроил по шпинделю?
Скинь hal и ini. Или на выходе с на частотник, что-то не то...
Может в EMC2 еще что-то настроил по шпинделю?
Скинь hal и ini. Или на выходе с на частотник, что-то не то...
Re: 7i33TA настройка шпинделя
уточню, при =1000 показывает значения сильно заниженные, при решении пропорции на различных скоростях получатся одно значение приблизительно ~67.roach писал(а): датчик на 1000 ставлю input_scale=1000, обороты шпинделя не соответствуют. Приблизительно верные значения только при input_scale =~67, в коробке прямая передача
конфиги аналогичные freeform:
Код: Выделить всё
setp hm2_5i20.0.encoder.02.counter-mode 1
setp hm2_5i20.0.encoder.02.filter 1
setp hm2_5i20.0.encoder.02.index-invert 0
setp hm2_5i20.0.encoder.02.index-mask 0
setp hm2_5i20.0.encoder.02.index-mask-invert 0
setp hm2_5i20.0.encoder.02.scale [SPINDLE_9]INPUT_SCALE
setp hm2_5i20.0.encoder.02.index-enable TRUE
net spindle-revs <= hm2_5i20.0.encoder.02.position
net spindle-vel-fb <= hm2_5i20.0.encoder.02.velocity
net spindle-index-enable <=> hm2_5i20.0.encoder.02.index-enable
еще заметил пин spindle-index-enable всегда false
проверял, датчик подключен верно
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: 7i33TA настройка шпинделя
Вот этот пин =false?roach писал(а): setp hm2_5i20.0.encoder.02.index-enable TRUE
Или индексный пин?
А пробовал вручную повернуть вал, не на скорости и посмотреть, сколько тиков насчитает энкодер?
Re: 7i33TA настройка шпинделя
завтра сутра все уточню, отпишу
Re: 7i33TA настройка шпинделя
вал на приблизительно на 1 оборотNick писал(а):Вот этот пин =false?roach писал(а): setp hm2_5i20.0.encoder.02.index-enable TRUE
Или индексный пин?
А пробовал вручную повернуть вал, не на скорости и посмотреть, сколько тиков насчитает энкодер?
encoder.02.pisition =62,8
encoder.02.index-enable = false
encoder.02.rawcounts = 4214
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: 7i33TA настройка шпинделя
Так, а вот это чему равно: [SPINDLE_9]INPUT_SCALE
Если прикинуть, что на оборот у тебя 4000 тиков, то [SPINDLE_9]INPUT_SCALE должен быть равен 1/4000 = 0,00025, тогда при 1 повороте position будет смещаться на 1.
Если прикинуть, что на оборот у тебя 4000 тиков, то [SPINDLE_9]INPUT_SCALE должен быть равен 1/4000 = 0,00025, тогда при 1 повороте position будет смещаться на 1.
Re: 7i33TA настройка шпинделя
наверное 4500Nick писал(а):Так, а вот это чему равно: [SPINDLE_9]INPUT_SCALE
Если прикинуть, что на оборот у тебя 4000 тиков, то [SPINDLE_9]INPUT_SCALE должен быть равен 1/4000 = 0,00025, тогда при 1 повороте position будет смещаться на 1.
input_scale я не использовал совсем
снова запутался, вот у меня как
HAL:
Код: Выделить всё
setp hm2_5i20.0.pwmgen.02.output-type 1
#
#setp hm2_5i20.0.pwmgen.02.scale [SPINDLE_9]OUTPUT_SCALE
#
# макс. скорость на данной передаче, отношение 1.1
#1250*1.1=1375, 1/1375=.000727273
#
setp scale.spindle.gain .000727273
setp scale.spindle.offset 0
net spindle-speed-cmd <= motion.spindle-speed-out
net spindle-speed-cmd => scale.spindle.in
net spindle-speed-pwm <= scale.spindle.out
net spindle-speed-pwm => hm2_5i20.0.pwmgen.02.value
net spindle-enable => hm2_5i20.0.pwmgen.02.enable
# ---Encoder feedback signals/setup---
setp hm2_5i20.0.encoder.02.counter-mode 0
setp hm2_5i20.0.encoder.02.filter 1
setp hm2_5i20.0.encoder.02.index-invert 0
setp hm2_5i20.0.encoder.02.index-mask 0
setp hm2_5i20.0.encoder.02.index-mask-invert 0
setp hm2_5i20.0.encoder.02.scale 67
setp hm2_5i20.0.encoder.02.index-enable TRUE
net spindle-revs <= hm2_5i20.0.encoder.02.position
net spindle-vel-fb <= hm2_5i20.0.encoder.02.velocity
net spindle-index-enable <=> hm2_5i20.0.encoder.02.index-enable
net spindle-vel-cmd-rps <= motion.spindle-speed-out-rps
#net spindle-vel-cmd <= motion.spindle-speed-out
net spindle-enable <= motion.spindle-on
net spindle-cw <= motion.spindle-forward
net spindle-ccw <= motion.spindle-reverse
net spindle-brake <= motion.spindle-brake
net spindle-revs => motion.spindle-revs
net spindle-vel-fb => motion.spindle-speed-in
net spindle-index-enable <=> motion.spindle-index-enable
net spindle-speed-cmd => near.0.in1
net spindle-vel-fb => near.0.in2
net spindle-at-speed motion.spindle-at-speed <= near.0.out
setp near.0.scale 1.1
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: 7i33TA настройка шпинделя
А вот это сейчас зачем?
setp scale.spindle.gain .000727273
и вот это:
setp hm2_5i20.0.encoder.02.scale 67
В каких величинах ты будешь задавать обороты шпинделя, в об/мин? Тогда надо так:
setp scale.spindle.gain 1 # т.к. идет прямая передача.
setp hm2_5i20.0.encoder.02.scale 0,000222222 # это 1/4500, т.е. 1 единица = 1 оборот
encoder.N.velocity = это скорость в единицах postion энкодера в секунду, т.е. об/сек, а нам нужно в мин. Поэтому нужно умножить .encoder.02.scale еще на 60. Т.е. нужно вот это вместо предыдущей строки:
setp hm2_5i20.0.encoder.02.scale 0,013333333
setp scale.spindle.gain .000727273
и вот это:
setp hm2_5i20.0.encoder.02.scale 67
В каких величинах ты будешь задавать обороты шпинделя, в об/мин? Тогда надо так:
setp scale.spindle.gain 1 # т.к. идет прямая передача.
setp hm2_5i20.0.encoder.02.scale 0,000222222 # это 1/4500, т.е. 1 единица = 1 оборот
encoder.N.velocity = это скорость в единицах postion энкодера в секунду, т.е. об/сек, а нам нужно в мин. Поэтому нужно умножить .encoder.02.scale еще на 60. Т.е. нужно вот это вместо предыдущей строки:
setp hm2_5i20.0.encoder.02.scale 0,013333333
Re: 7i33TA настройка шпинделя
не то (при 100 оборотах показывает больше 100000) показывает с этим, грю же только =66 показывает реальную скорость шпинделяNick писал(а): setp hm2_5i20.0.encoder.02.scale 0,013333333
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: 7i33TA настройка шпинделя
А, точно, encoder.N.position-scale float i/o должен быть равным количеству тиков на оборот. Т.е. 4500.
Т.е. должно быть так
setp scale.spindle.gain 1
setp hm2_5i20.0.encoder.02.scale 4500
Это мы получим об/сек
А если хотим обороты в мин, то это значение должно быть в 60 раз меньше, т.е.
setp hm2_5i20.0.encoder.02.scale 75, может у тебя 4000 тиков на оборот, тогда как раз получается твои 66.66666667.
encoder.N.index-enable bit i/o это не пин, который показывает состояние index, если его поставить в 1, то при следующей 1 на фазе Z, counts у энкодера сбросится на 0 и сам пин станет 0. Т.е. он 1 равен небольшое время.
Т.е. должно быть так
setp scale.spindle.gain 1
setp hm2_5i20.0.encoder.02.scale 4500
Это мы получим об/сек
А если хотим обороты в мин, то это значение должно быть в 60 раз меньше, т.е.
setp hm2_5i20.0.encoder.02.scale 75, может у тебя 4000 тиков на оборот, тогда как раз получается твои 66.66666667.
encoder.N.index-enable bit i/o это не пин, который показывает состояние index, если его поставить в 1, то при следующей 1 на фазе Z, counts у энкодера сбросится на 0 и сам пин станет 0. Т.е. он 1 равен небольшое время.
Re: 7i33TA настройка шпинделя
Спасибо!
-
- Опытный
- Сообщения: 104
- Зарегистрирован: 01 апр 2012, 21:35
- Репутация: 9
- Контактная информация:
Re: 7i33TA настройка шпинделя
Столкнулся с похожей задачей, переключать коробку передач в зависимости от от скорости двигателя. Т.е. если в программе задаем скорость до s500, то это первая передача, если выше то вторая. Как такое реализовать? Шпиндель крутит частотник по аналогу +-10 вольт через месу 7i33. Энкодера и индекса нет, т.к. точная скорость шпинделя не сильно важна.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: 7i33TA настройка шпинделя
Как переключаются передачи?
Вообще можно сделать просто через classic ladder вот таким образом:
Вообще можно сделать просто через classic ladder вот таким образом:
-
- Опытный
- Сообщения: 104
- Зарегистрирован: 01 апр 2012, 21:35
- Репутация: 9
- Контактная информация:
Re: 7i33TA настройка шпинделя
Похоже то что надо. Вечером буду пробовать.
-
- Опытный
- Сообщения: 131
- Зарегистрирован: 07 апр 2013, 18:17
- Репутация: 0
- Настоящее имя: Сергей
- Контактная информация:
Re: 7i33TA настройка шпинделя
Пытаюсь встроить эти настроки на свой станок 16а20ф3, Платы Mesa 7i92 и 7i77 Версия Linuxcnc 2.8freeform писал(а): ↑17 янв 2012, 19:56 Значит так. Вот куски конфигов, касающиеся шпинделя:
.ini.halКод: Выделить всё
#******************** # Spindle #******************** [SPINDLE_9] MAX_VELOCITY = 41.6666666667 MAX_ACCELERATION = 100.0 OUTPUT_SCALE = 4500 OUTPUT_OFFSET = 0.0 MAX_OUTPUT = 10.0 INPUT_SCALE = 2500
Вот вроде бы все, относящееся к шпинделю. Датчик у меня стоит на 2500 импульсов, соответственно поправить под свой. Gear 1 и 2 - сигналы с концевиков коробки, передаточные числа стоят для коробки 16А20Ф3 с приводом "Размер", с постоянником они немного отличаются.Код: Выделить всё
loadrt abs count=2 loadrt lowpass names=lowpass.spindle loadrt scale names=scale.spindle,scale.gear loadrt near loadrt mux4 names=mux4.gear addf scale.gear servo-thread addf mux4.gear servo-thread addf abs.0 servo-thread addf abs.1 servo-thread addf scale.spindle servo-thread addf lowpass.spindle servo-thread addf near.0 servo-thread #******************* # SPINDLE S #******************* # ---PWM Generator signals/setup--- setp hm2_5i20.0.pwmgen.00.output-type 1 setp hm2_5i20.0.pwmgen.00.scale [SPINDLE_9]OUTPUT_SCALE net spindle-vel-cmd => abs.1.in net spindle-vel-abs abs.1.out => scale.gear.in net Spindle-motor-command scale.gear.out hm2_5i20.0.pwmgen.00.value net spindle-enable => hm2_5i20.0.pwmgen.00.enable # ---Encoder feedback signals/setup--- setp hm2_5i20.0.encoder.02.counter-mode 1 setp hm2_5i20.0.encoder.02.filter 1 setp hm2_5i20.0.encoder.02.index-invert 0 setp hm2_5i20.0.encoder.02.index-mask 0 setp hm2_5i20.0.encoder.02.index-mask-invert 0 setp hm2_5i20.0.encoder.02.scale [SPINDLE_9]INPUT_SCALE setp hm2_5i20.0.encoder.02.index-enable TRUE net spindle-revs <= hm2_5i20.0.encoder.02.position net spindle-vel-fb <= hm2_5i20.0.encoder.02.velocity net spindle-index-enable <=> hm2_5i20.0.encoder.02.index-enable # ---setup spindle control signals--- net spindle-vel-cmd-rps <= motion.spindle-speed-out-rps net spindle-vel-cmd <= motion.spindle-speed-out net spindle-enable <= motion.spindle-on net spindle-cw <= motion.spindle-forward net spindle-ccw <= motion.spindle-reverse net spindle-brake <= motion.spindle-brake net spindle-revs => motion.spindle-revs net spindle-at-speed => motion.spindle-at-speed net spindle-vel-fb => motion.spindle-speed-in net spindle-index-enable <=> motion.spindle-index-enable # ---Setup spindle at speed signals--- net spindle-vel-cmd-rps => near.0.in1 net spindle-vel-fb => near.0.in2 net spindle-at-speed <= near.0.out setp near.0.scale 1.3 #---Setup spindle scale for gear change---- net Gear_selected mux4.gear.out => scale.gear.gain net Gear1 => mux4.gear.sel0 net Gear2 => mux4.gear.sel1 setp mux4.gear.in0 4.47 setp mux4.gear.in2 1.789 setp mux4.gear.in3 12.964
Вот кусок моего HAL по шпинделю, может что не так поправил, помогите поравить.
Код: Выделить всё
# --- GEAR ---
net gear1 <= hm2_7i92.0.7i77.0.0.input-11
net gear2 <= hm2_7i92.0.7i77.0.0.input-10
loadrt abs count=2
loadrt lowpass names=lowpass.spindle
loadrt scale names=scale.spindle,scale.gear
loadrt near
loadrt mux4 names=mux4.gear
addf scale.gear servo-thread
addf mux4.gear servo-thread
addf abs.0 servo-thread
addf abs.1 servo-thread
addf scale.spindle servo-thread
addf lowpass.spindle servo-thread
addf near.0 servo-thread
#*******************
# SPINDLE
#*******************
setp pid.s.Pgain [SPINDLE_0]P
setp pid.s.Igain [SPINDLE_0]I
setp pid.s.Dgain [SPINDLE_0]D
setp pid.s.bias [SPINDLE_0]BIAS
setp pid.s.FF0 [SPINDLE_0]FF0
setp pid.s.FF1 [SPINDLE_0]FF1
setp pid.s.FF2 [SPINDLE_0]FF2
setp pid.s.deadband [SPINDLE_0]DEADBAND
setp pid.s.maxoutput [SPINDLE_0]MAX_OUTPUT
setp pid.s.error-previous-target true
net spindle-index-enable <=> pid.s.index-enable
net spindle-enable => pid.s.enable
net spindle-vel-cmd-rpm => pid.s.command
net spindle-vel-fb-rpm => pid.s.feedback
net spindle-output <= pid.s.output
# ---PWM Generator signals/setup---
setp hm2_7i92.0.7i77.0.1.analogout2-scalemax [SPINDLE_0]OUTPUT_SCALE
setp hm2_7i92.0.7i77.0.1.analogout2-minlim [SPINDLE_0]OUTPUT_MIN_LIMIT
setp hm2_7i92.0.7i77.0.1.analogout2-maxlim [SPINDLE_0]OUTPUT_MAX_LIMIT
net spindle-output => hm2_7i92.0.7i77.0.1.analogout2
net spindle-vel-cmd => abs.1.in
net spindle-vel-abs abs.1.out => scale.gear.in
#net Spindle-motor-command scale.gear.out hm2_7i92.0.7i77.0.1.analogout2
#net spindle-enable => hm2_7i92.0.7i77.0.1.analogout2
# ---Encoder feedback signals/setup---
setp hm2_7i92.0.encoder.02.counter-mode 0
setp hm2_7i92.0.encoder.02.filter 1
setp hm2_7i92.0.encoder.02.index-invert 0
setp hm2_7i92.0.encoder.02.index-mask 0
setp hm2_7i92.0.encoder.02.index-mask-invert 0
setp hm2_7i92.0.encoder.02.scale [SPINDLE_0]ENCODER_SCALE
setp hm2_7i92.0.encoder.02.index-enable TRUE
net spindle-revs <= hm2_7i92.0.encoder.02.position
net spindle-vel-fb-rps <= hm2_7i92.0.encoder.02.velocity
net spindle-vel-fb-rpm <= hm2_7i92.0.encoder.02.velocity-rpm
net spindle-index-enable <=> hm2_7i92.0.encoder.02.index-enable
# ---setup spindle control signals---
net spindle-vel-cmd-rps <= spindle.0.speed-out-rps
net spindle-vel-cmd-rps-abs <= spindle.0.speed-out-rps-abs
net spindle-vel-cmd-rpm <= spindle.0.speed-out
net spindle-vel-cmd-rpm-abs <= spindle.0.speed-out-abs
net spindle-enable <= spindle.0.on
net spindle-cw <= spindle.0.forward
net spindle-ccw <= spindle.0.reverse
net spindle-brake <= spindle.0.brake
net spindle-revs => spindle.0.revs
net spindle-at-speed => spindle.0.at-speed
net spindle-vel-fb-rps => spindle.0.speed-in
net spindle-index-enable <=> spindle.0.index-enable
# ---Setup spindle at speed signals---
net spindle-vel-cmd-rps => near.0.in1
net spindle-vel-fb-rps => near.0.in2
net spindle-at-speed <= near.0.out
setp near.0.scale 1.3
#sets spindle-at-speed true
#---Setup spindle scale for gear change----
net Gear_selected mux4.gear.out => scale.gear.gain
net Gear1 => mux4.gear.sel0
net Gear2 => mux4.gear.sel1
setp mux4.gear.in0 4.47
setp mux4.gear.in2 1.789
setp mux4.gear.in3 12.964