Страница 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 ничего применительно к себе не нашел
Датчик вот такой: (для просмотра содержимого нажмите на ссылку)
стр1 (3815 просмотров) <a class='original' href='./download/file.php?id=4014&sid=473d8a236ce4afa5f168da36453fb88c&mode=view' target=_blank>Загрузить оригинал (126.19 КБ)</a>
стр1
стр2 (3815 просмотров) <a class='original' href='./download/file.php?id=4015&sid=473d8a236ce4afa5f168da36453fb88c&mode=view' target=_blank>Загрузить оригинал (108.48 КБ)</a>
стр2
стр4 (3815 просмотров) <a class='original' href='./download/file.php?id=4016&sid=473d8a236ce4afa5f168da36453fb88c&mode=view' target=_blank>Загрузить оригинал (149.47 КБ)</a>
стр4
Алл, подскажите где копать?

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