Страница 3 из 3
Re: 7i33TA настройка шпинделя
Добавлено: 24 янв 2012, 09:49
roach
NightV писал(а):тестер в руки и в перед! по очереди, прозвони на утечку кабели и частотник, у тебя чтото просаживает месу в ноль, кстате как себя ведут леды на 7i33TA которые в центре платы, они показывают что есть напряжения на плате +5v, +15v, -15v
горят всегда
Re: 7i33TA настройка шпинделя
Добавлено: 24 янв 2012, 09:57
NightV
значит с напругами на месе все в порядке, звони все по очереди после нее, вплоть перепроверь туда-ли завели вход на самом частотнике.... и такое бывает
Re: 7i33TA настройка шпинделя
Добавлено: 31 янв 2012, 12:53
roach
Спасибо. С частотником разобрался
Проблема с енкодером оcталась. Никто не сталкивался?:
датчик на 1000 ставлю input_scale=1000, обороты шпинделя не соответствуют. Приблизительно верные значения только при input_scale =~67, в коробке прямая передача
Читал Hostmot
http://www.linuxcnc.org/docs/html/drive ... html#r1_15 ничего применительно к себе не нашел
Алл, подскажите где копать?
Re: 7i33TA настройка шпинделя
Добавлено: 31 янв 2012, 16:13
Nick
Попробуй так, включи энкодер, и рукой поверни вал на один оборот, посмотри, сколько энкодер натикает. Причем именно в тиках.
Может в EMC2 еще что-то настроил по шпинделю?
Скинь hal и ini. Или на выходе с на частотник, что-то не то...
Re: 7i33TA настройка шпинделя
Добавлено: 31 янв 2012, 16:32
roach
roach писал(а):
датчик на 1000 ставлю input_scale=1000, обороты шпинделя не соответствуют. Приблизительно верные значения только при input_scale =~67, в коробке прямая передача
уточню, при =1000 показывает значения сильно заниженные, при решении пропорции на различных скоростях получатся одно значение приблизительно ~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
менял counter-mode, filter меняются только знаки
еще заметил пин spindle-index-enable всегда false
проверял, датчик подключен верно
Re: 7i33TA настройка шпинделя
Добавлено: 31 янв 2012, 17:00
Nick
roach писал(а): setp hm2_5i20.0.encoder.02.index-enable TRUE
Вот этот пин =false?
Или индексный пин?
А пробовал вручную повернуть вал, не на скорости и посмотреть, сколько тиков насчитает энкодер?
Re: 7i33TA настройка шпинделя
Добавлено: 31 янв 2012, 18:27
roach
завтра сутра все уточню, отпишу
Re: 7i33TA настройка шпинделя
Добавлено: 01 фев 2012, 08:14
roach
Nick писал(а):roach писал(а): setp hm2_5i20.0.encoder.02.index-enable TRUE
Вот этот пин =false?
Или индексный пин?
А пробовал вручную повернуть вал, не на скорости и посмотреть, сколько тиков насчитает энкодер?
вал на приблизительно на 1 оборот
encoder.02.pisition =62,8
encoder.02.index-enable = false
encoder.02.rawcounts = 4214
Re: 7i33TA настройка шпинделя
Добавлено: 01 фев 2012, 09:28
Nick
Так, а вот это чему равно: [SPINDLE_9]INPUT_SCALE
Если прикинуть, что на оборот у тебя 4000 тиков, то [SPINDLE_9]INPUT_SCALE должен быть равен 1/4000 = 0,00025, тогда при 1 повороте position будет смещаться на 1.
Re: 7i33TA настройка шпинделя
Добавлено: 01 фев 2012, 09:52
roach
Nick писал(а):Так, а вот это чему равно: [SPINDLE_9]INPUT_SCALE
Если прикинуть, что на оборот у тебя 4000 тиков, то [SPINDLE_9]INPUT_SCALE должен быть равен 1/4000 = 0,00025, тогда при 1 повороте position будет смещаться на 1.
наверное 4500
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
Re: 7i33TA настройка шпинделя
Добавлено: 01 фев 2012, 11:37
Nick
А вот это сейчас зачем?
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 настройка шпинделя
Добавлено: 01 фев 2012, 13:58
roach
Nick писал(а):
setp hm2_5i20.0.encoder.02.scale 0,013333333
не то (при 100 оборотах показывает больше 100000) показывает с этим, грю же только =66 показывает реальную скорость шпинделя
Re: 7i33TA настройка шпинделя
Добавлено: 01 фев 2012, 18:45
Nick
А, точно, 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 равен небольшое время.
Re: 7i33TA настройка шпинделя
Добавлено: 01 фев 2012, 18:52
roach
Спасибо!
Re: 7i33TA настройка шпинделя
Добавлено: 17 июл 2012, 13:46
galexey
Столкнулся с похожей задачей, переключать коробку передач в зависимости от от скорости двигателя. Т.е. если в программе задаем скорость до s500, то это первая передача, если выше то вторая. Как такое реализовать? Шпиндель крутит частотник по аналогу +-10 вольт через месу 7i33. Энкодера и индекса нет, т.к. точная скорость шпинделя не сильно важна.
Re: 7i33TA настройка шпинделя
Добавлено: 17 июл 2012, 15:30
Nick
Как переключаются передачи?
Вообще можно сделать просто через classic ladder вот таким образом:
Re: 7i33TA настройка шпинделя
Добавлено: 17 июл 2012, 16:12
galexey
Похоже то что надо. Вечером буду пробовать.
Re: 7i33TA настройка шпинделя
Добавлено: 15 сен 2021, 12:44
SONIC300077
freeform писал(а): ↑17 янв 2012, 19:56
Значит так. Вот куски конфигов, касающиеся шпинделя:
.ini
Код: Выделить всё
#********************
# 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
.hal
Код: Выделить всё
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
Вот вроде бы все, относящееся к шпинделю. Датчик у меня стоит на 2500 импульсов, соответственно поправить под свой. Gear 1 и 2 - сигналы с концевиков коробки, передаточные числа стоят для коробки 16А20Ф3 с приводом "Размер", с постоянником они немного отличаются.
Пытаюсь встроить эти настроки на свой станок 16а20ф3, Платы Mesa 7i92 и 7i77 Версия Linuxcnc 2.8
Вот кусок моего 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