7i33TA настройка шпинделя

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
roach
Мастер
Сообщения: 205
Зарегистрирован: 01 июн 2011, 07:55
Репутация: 0
Контактная информация:

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

Сообщение roach »

NightV писал(а):тестер в руки и в перед! по очереди, прозвони на утечку кабели и частотник, у тебя чтото просаживает месу в ноль, кстате как себя ведут леды на 7i33TA которые в центре платы, они показывают что есть напряжения на плате +5v, +15v, -15v
горят всегда
Аватара пользователя
NightV
Почётный участник
Почётный участник
Сообщения: 6602
Зарегистрирован: 30 дек 2011, 09:14
Репутация: 2279
Настоящее имя: Владимир Айрапетян
Откуда: Israel
Контактная информация:

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

Сообщение NightV »

значит с напругами на месе все в порядке, звони все по очереди после нее, вплоть перепроверь туда-ли завели вход на самом частотнике.... и такое бывает ;)
Всё просто! если знаешь КАК!
Аватара пользователя
roach
Мастер
Сообщения: 205
Зарегистрирован: 01 июн 2011, 07:55
Репутация: 0
Контактная информация:

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

Сообщение roach »

Спасибо. С частотником разобрался
Проблема с енкодером о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 настройка шпинделя

Сообщение Nick »

Попробуй так, включи энкодер, и рукой поверни вал на один оборот, посмотри, сколько энкодер натикает. Причем именно в тиках.

Может в EMC2 еще что-то настроил по шпинделю?
Скинь hal и ini. Или на выходе с на частотник, что-то не то...
Аватара пользователя
roach
Мастер
Сообщения: 205
Зарегистрирован: 01 июн 2011, 07:55
Репутация: 0
Контактная информация:

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

Сообщение 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
проверял, датчик подключен верно
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

roach писал(а): setp hm2_5i20.0.encoder.02.index-enable TRUE
Вот этот пин =false?
Или индексный пин?

А пробовал вручную повернуть вал, не на скорости и посмотреть, сколько тиков насчитает энкодер?
Аватара пользователя
roach
Мастер
Сообщения: 205
Зарегистрирован: 01 июн 2011, 07:55
Репутация: 0
Контактная информация:

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

Сообщение roach »

завтра сутра все уточню, отпишу
Аватара пользователя
roach
Мастер
Сообщения: 205
Зарегистрирован: 01 июн 2011, 07:55
Репутация: 0
Контактная информация:

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

Сообщение 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
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

Так, а вот это чему равно: [SPINDLE_9]INPUT_SCALE
Если прикинуть, что на оборот у тебя 4000 тиков, то [SPINDLE_9]INPUT_SCALE должен быть равен 1/4000 = 0,00025, тогда при 1 повороте position будет смещаться на 1.
Аватара пользователя
roach
Мастер
Сообщения: 205
Зарегистрирован: 01 июн 2011, 07:55
Репутация: 0
Контактная информация:

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

Сообщение 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

Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение 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
Аватара пользователя
roach
Мастер
Сообщения: 205
Зарегистрирован: 01 июн 2011, 07:55
Репутация: 0
Контактная информация:

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

Сообщение roach »

Nick писал(а): setp hm2_5i20.0.encoder.02.scale 0,013333333
не то (при 100 оборотах показывает больше 100000) показывает с этим, грю же только =66 показывает реальную скорость шпинделя
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение 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 равен небольшое время.
Аватара пользователя
roach
Мастер
Сообщения: 205
Зарегистрирован: 01 июн 2011, 07:55
Репутация: 0
Контактная информация:

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

Сообщение roach »

Спасибо!
galexey
Опытный
Сообщения: 104
Зарегистрирован: 01 апр 2012, 21:35
Репутация: 9
Контактная информация:

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

Сообщение galexey »

Столкнулся с похожей задачей, переключать коробку передач в зависимости от от скорости двигателя. Т.е. если в программе задаем скорость до s500, то это первая передача, если выше то вторая. Как такое реализовать? Шпиндель крутит частотник по аналогу +-10 вольт через месу 7i33. Энкодера и индекса нет, т.к. точная скорость шпинделя не сильно важна.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

Как переключаются передачи?

Вообще можно сделать просто через classic ladder вот таким образом:
Вложения
classic ladder.png (3608 просмотров) <a class='original' href='./download/file.php?id=6535&sid=44ff308c09fd709d4529b40124d5c12e&mode=view' target=_blank>Загрузить оригинал (37 КБ)</a>
galexey
Опытный
Сообщения: 104
Зарегистрирован: 01 апр 2012, 21:35
Репутация: 9
Контактная информация:

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

Сообщение galexey »

Похоже то что надо. Вечером буду пробовать.
SONIC300077
Опытный
Сообщения: 131
Зарегистрирован: 07 апр 2013, 18:17
Репутация: 0
Настоящее имя: Сергей
Контактная информация:

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

Сообщение 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
Ответить

Вернуться в «LinuxCNC»