Страница 4 из 5
Re: Коробка шпинделя.. Нужны советы!)
Добавлено: 17 июн 2013, 11:16
Dmaster
разобрался....
nkp писал(а):настрой пока с М141 и М142...
это оказалось на 100% верно.. до сотни он что-то кушать их не хочет
факус оказался в удалении расширения ngc у самих файлов...
Теперь у меня не появляется ошибка, что он не знает , что это за М код, но кстати он ни чего не исполняет, пока неведомо почему..
Re: Коробка шпинделя.. Нужны советы!)
Добавлено: 17 июн 2013, 11:23
nkp
опять же положи в файл самый простой код...
добъешся исполнения - потом свои строки пиши
Re: Коробка шпинделя.. Нужны советы!)
Добавлено: 17 июн 2013, 11:24
Dmaster
nkp писал(а):добъешся исполнения - потом свои строни пиши
Смех-смехом..... код он НЕ исполняет, а мои "строни" исполняет))) чудесатее и чудесатее)))
Re: Коробка шпинделя.. Нужны советы!)
Добавлено: 17 июн 2013, 11:26
nkp
в начале написал:
#!/bin/sh
??
Re: Коробка шпинделя.. Нужны советы!)
Добавлено: 17 июн 2013, 11:29
nkp
то есть содержимое должно быть примерно таким:
Код: Выделить всё
#!/bin/sh
halcmd setp gearchange.0.sel 0
sleep 0.25
exit 0
Re: Коробка шпинделя.. Нужны советы!)
Добавлено: 17 июн 2013, 11:35
Dmaster
именно так и написал))) спасибо великому NKP за помосч!)))
теперь суперзадача номер 3 .. по команде m41
остановить шпиндель .. обязательно!!!
включить муфту 1
задать gearchange.0.sel 0
включить вращение на 400мс со скоростью 20 об сек
и только потом разрешить крутиться шпинделю.....
всё как бы ясно, кроме одного.. если напишет оператор в одну строчку m41s1000m3 сработает ли m41 до запуска шпинделя....
Re: Коробка шпинделя.. Нужны советы!)
Добавлено: 17 июн 2013, 11:50
nkp
попробовал в одну строку написать м-код с другими кодами
поставил паузу побольше sleep 5
вроде бы паузу выдерживает - потом продолжает выполнять кадр...
Re: Коробка шпинделя.. Нужны советы!)
Добавлено: 28 июн 2013, 11:22
Dmaster
Получилось у меня задуманное ( пока на тестовом моторе 24в 0.002А подключил прямиком к выходу "ЦАП" на него энкодер 1000ppr ..
Вроде рабтает, только вот одно "НО" при ориентации шпинделя он у меня гад раскручивает назад всё что нарутил...
5 минут работал по часовой стрелке, так 5 мину при ориентации назад раскручивать и будет. ((((( как сбросить PID error по импульсу индекса энкодера?
или как нормально это сделать, кто, что думает?
Re: Коробка шпинделя.. Нужны советы!)
Добавлено: 28 июн 2013, 11:25
Nick
Скинь то, что у тебя сейчас получилось.
Dmaster писал(а):как сбросить PID error по импульсу индекса энкодера?
тебе не error сбросить походу надо, а обнулить cmd при обнулении энкодера.
Или сделать encoder.index-enable и потом в команду pid выдать что-то вроде G0 A4...
Re: Коробка шпинделя.. Нужны советы!)
Добавлено: 28 июн 2013, 11:32
Dmaster
Код: Выделить всё
#ориентация шпинделя
#Необходимые компоненты.
#scale0 = Spindle RPM Scale
#scale1 = Spindle ABS
#scale6 = Spindle Deg to Rev
#scale7 spindle load
loadrt scale count=8
addf scale.0 servo-thread
addf scale.6 servo-thread
addf scale.7 servo-thread
addf scale.1 servo-thread
setp scale.1.gain 0.16667
#spindle speed gain
#pwm/speed=1/6000=0.0001667
#6k
setp scale.0.gain 0.003333333
#load abs comp make spindle pos
loadrt abs count=3
addf abs.0 servo-thread
addf abs.1 servo-thread
addf abs.2 servo-thread
#convert spindle speed to s32
loadrt conv_float_s32 count=1
addf conv-float-s32.0 servo-thread
#covert spindle s32 to float
loadrt conv_s32_float count=1
addf conv-s32-float.0 servo-thread
#comp for sp ori
loadrt wcomp count=1
addf wcomp.0 servo-thread
loadrt mux2 count=10
addf mux2.0 servo-thread
loadrt mux4 count=1
addf mux4.0 servo-thread
loadrt tristate_bit count=1
addf tristate-bit.0 servo-thread
#set scale and pwm
setp hm2_5i25.0.encoder.00.counter-mode 0
setp hm2_5i25.0.encoder.00.filter 1
setp hm2_5i25.0.encoder.00.index-invert 0
setp hm2_5i25.0.encoder.00.index-mask 0
setp hm2_5i25.0.encoder.00.index-mask-invert 0
setp hm2_5i25.0.encoder.00.scale [SPINDLE_9]ENCODER_SCALE
# ---setup spindle control signals---
setp pid.4.Pgain [SPINDLE_9]P
setp pid.4.Igain [SPINDLE_9]I
setp pid.4.Dgain [SPINDLE_9]D
setp pid.4.bias [SPINDLE_9]BIAS
setp pid.4.FF0 [SPINDLE_9]FF0
setp pid.4.FF1 [SPINDLE_9]FF1
setp pid.4.FF2 [SPINDLE_9]FF2
setp pid.4.deadband [SPINDLE_9]DEADBAND
#limit spindle speed
setp pid.4.maxoutput [SPINDLE_9]MAX_OUTPUT
#set ori postion
setp pid.4.command [SPINDLE_9]ORIENT_POS
# prevent integrator windup at the beginning of an orient
# after running the spindle for a long time. The error is
# very high before the first index happens.
setp pid.4.maxerrorI [SPINDLE_9]MAXI
setp pid.4.maxerrorD [SPINDLE_9]MAXD
setp pid.4.maxerror [SPINDLE_9]MAXERROR
#spindle sync
# net ori-index <= classicladder.0.out-17
#spindle sync
newsig tristate.index bit
sets tristate.index true
net tristate.index => tristate-bit.0.in
net spindle-index <= tristate-bit.0.out
setp tristate-bit.0.enable 1
net spindle-index <= motion.spindle-index-enable
net spindle-index <=> hm2_5i25.0.encoder.00.index-enable
net spindle-velocity motion.spindle-speed-in <= hm2_5i25.0.encoder.00.velocity
net spindle-deg <= hm2_5i25.0.encoder.00.position
#convert degrees to revs for spindle sync moves
#1/360=0.002777778
#deg*0.002777778=revs
setp scale.6.gain 0.002777778
net spindle-deg <= scale.6.in
net spinde-revs scale.6.out => motion.spindle-revs
#ori
net spindle-deg => pid.4.feedback
# check position error with window comparator
# set a +/- 2 degree window
setp wcomp.0.min [SPINDLE_9]WCOMP_MIN
setp wcomp.0.max [SPINDLE_9]WCOMP_MAX
net sp-orient-pos-err wcomp.0.in <= pid.4.error
# net ori-finish classicladder.0.in-17 <= wcomp.0.out
#spindle enable
#net spindle-enable-out classicladder.0.out-04 => hm2_[HOSTMOT2](BOARD).0.pwmgen.03.enable
#net spindle-enable-in motion.spindle-on => classicladder.0.in-16
#for pyvcp
net spindle-velocity => abs.1.in
net spindle-s-abs abs.1.out => scale.1.in
net spindle-s-abs-out <= scale.1.out
#net ori-enable pid.4.enable
setp pid.4.enable 1
#output
net sp-orient-rpm-cmd scale.0.in <= pid.4.output
# select between normal speed and orient speed
# based on ori-enable (M119) command
#net sp-orient-rpm-cmd => mux2.0.in1
#net spindle-rpm-in => mux2.0.in0
#net ori-enable => mux2.0.sel
# output of mux is desired spindle RPM
#net spindle-rpm-out mux2.0.out => scale.0.in
#net spindle-rpm-out sp-orient-rpm-cmd => scale.0.in
net spindle-speed-DAC scale.0.out => hm2_5i25.0.7i77.0.1.analogout0
Re: Коробка шпинделя.. Нужны советы!)
Добавлено: 28 июн 2013, 12:06
Nick
Давай по порядку у тебя шпиндель управляется соростью через hm2_5i25.0.7i77.0.1.analogout0.
Есть ПИД для оприентации шпинделя.
Что-то у тебя слишком много всего
Зачем тебе wcomp? Возьми near.
Зачем столько scale? Должно хватить только 1 для положения. Изначально настрой scale от энкодера на об/мин, а внешний scale и спользуй для положения.
У тебя должен быть 1 mux
pid.out => mux.in1
motion.spindle => mux.in2
near.in <= pid.error
near.out => finish
encoder.pos => scale.in
encoder.out => pid.command
ну и все стандартное от motion оставить...
плюс index enable и еще бы сделать задержку на near, чтобы пролетая мимо нужного положения не перейти на следующий шаг. (через timedelay наверное
http://www.linuxcnc.org/docs/html/man/m ... lay.9.html)
Re: Коробка шпинделя.. Нужны советы!)
Добавлено: 29 июн 2013, 19:31
Dmaster
Nick писал(а):Что-то у тебя слишком много всего
Еше не причесал... кучу всего надо убрать нафиг
Nick писал(а):Зачем тебе wcomp? Возьми near.
не.. с ним удобнее будет подстраивать на станке....
Nick писал(а):Зачем столько scale? Должно хватить только 1 для положения. Изначально настрой scale от энкодера на об/мин, а внешний scale и спользуй для положения.
Оставил 2))) остальные просто валялись)))
Nick писал(а):У тебя должен быть 1 mux
конечно! у меня mux4
1 вход для скорости
2 вход для остановки ( несколько постов назад говорил я о том, что-б останавливать шпиндель , когда он на второй передаче)
3 вход пид для ориентации
4 вход малой скорости для зацепления зубчатых муфт при переключении передач.
Nick писал(а):плюс index enable и еще бы сделать задержку на near, чтобы пролетая мимо нужного положения не перейти на следующий шаг. (через timedelay наверное
http://www.linuxcnc.org/docs/html/man/m ... lay.9.html)
Тут я не совсем понял... это зачем?
Для мня всё еще не ясно, как использовать индекс для обуления значений PID . ато прокрутишь двигатель минуту... пид насчитает ошибку... включишь ориентацию.. и он её всю насчитанную пытается компенсировать... (РАСКРУТИТЬ НАЗАД)
Хочу что-б он крутился до 0 метки датчика, а после искал уже координату заданную.
Re: Коробка шпинделя.. Нужны советы!)
Добавлено: 30 июн 2013, 09:25
Dmaster
ответ нашелся .. энкодер сломаный)))) канал Z отвалился))
Re: Коробка шпинделя.. Нужны советы!)
Добавлено: 01 июл 2013, 13:14
Nick
Dmaster писал(а):Тут я не совсем понял... это зачем?
Задержка для такой вещи: скажем после остановки едем в точку 10 градусов....
А, да, точно, не надо этого

все и так будет работать
хотя... если у тебя ПИД будет настроен с пролетом нужного положения, то шпиндель может в неправильном положении остановиться, т.к. сразу после прохода через нужное положение pid отключится...
Dmaster писал(а):Зачем тебе wcomp? Возьми near.
не.. с ним удобнее будет подстраивать на станке....
Дак near вроде тоже подстраивается как надо...
Re: Коробка шпинделя.. Нужны советы!)
Добавлено: 01 июл 2013, 19:33
Dmaster
Nick писал(а):pid отключится..
НЕ!! нельзя!!! надо что-б он его держал до конца смены инструмента! а вдруг фреза тяжелая или вообще головка расточная ( у меня горизонтально фрезерный) она возьми, да провернись!
Re: Коробка шпинделя.. Нужны советы!)
Добавлено: 01 июл 2013, 19:47
Nick
А тормоза на шпинделе нет?
Re: Коробка шпинделя.. Нужны советы!)
Добавлено: 01 июл 2013, 20:57
Dmaster
неа))).... только так))) там конструктивно только так)
Re: Коробка шпинделя.. Нужны советы!)
Добавлено: 02 апр 2016, 12:38
jo_key
А как это сделать для 4-х скоростной коробки передач (простите за нескромный вопрос)?
все вопросы и пожелания сюда
Коробка шпинделя. (4-х скоростная) Нужен совет! #1
Re: Коробка шпинделя.. Нужны советы!)
Добавлено: 05 окт 2017, 14:46
galexey
Прошу подсказки по ручной коробки шпинделя.
На станке стоит ручная коробка с тремя передачами и двумя концевиками. Энкодер установили на шпиндель. Необходимо ограничить скорость вращения шпинделя заданными диапазонами для каждой передачи.
Хотел использовать mux4 и limit1, но не знаю как передать параметр limit1.N.min и limit1.N.max
Для примера мой кусок хала
(для просмотра содержимого нажмите на ссылку)#*******************
# SPINDLE S
#*******************
# ---PWM Generator signals/setup---
setp hm2_5i25.0.7i77.0.1.analogout2-scalemax [SPINDLE_9]OUTPUT_SCALE
setp hm2_5i25.0.7i77.0.1.analogout2-minlim [SPINDLE_9]OUTPUT_MIN_LIMIT
setp hm2_5i25.0.7i77.0.1.analogout2-maxlim [SPINDLE_9]OUTPUT_MAX_LIMIT
net spindle-vel-cmd => hm2_5i25.0.7i77.0.1.analogout2
net spindle-enable => hm2_5i25.0.7i77.0.1.spinena
# ---Encoder feedback signals/setup---
setp hm2_5i25.0.encoder.03.counter-mode 0
setp hm2_5i25.0.encoder.03.filter 1
setp hm2_5i25.0.encoder.03.index-invert 0
setp hm2_5i25.0.encoder.03.index-mask 0
setp hm2_5i25.0.encoder.03.index-mask-invert 0
setp hm2_5i25.0.encoder.03.scale [SPINDLE_9]ENCODER_SCALE
net spindle-revs <= hm2_5i25.0.encoder.03.position
net spindle-vel-fb <= hm2_5i25.0.encoder.03.velocity
net spindle-index-enable <=> hm2_5i25.0.encoder.03.index-enable
# ---setup spindle control signals---
net spindle-vel-cmd-rps <= motion.spindle-speed-out-rps
net spindle-vel-cmd-rps-abs <= motion.spindle-speed-out-rps-abs
net spindle-vel-cmd_gear <= motion.spindle-speed-out
net spindle-vel-cmd-rpm-abs <= motion.spindle-speed-out-abs
net spindle-enable_stop <= 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
#Gear
net gear2 mux4.0.sel0 hm2_5i25.0.7i77.0.0.input-27
net gear3 mux4.0.sel1 hm2_5i25.0.7i77.0.0.input-28
setp mux4.0.in0 10
setp mux4.0.in1 3.4
setp mux4.0.in2 1.4
net mux_out mux4.0.out => scale.0.gain
net spindle-vel-cmd_gear_limit scale.0.in
net spindle-vel-cmd scale.0.out
#пределы скоростей коробки
net gear2 mux4.1.sel0
net gear3 mux4.1.sel1
setp mux4.1.in0 20
setp mux4.1.in1 63
setp mux4.1.in2 160
net gear_limit_min mux4.1.out
net gear2 mux4.2.sel0
net gear3 mux4.2.sel1
setp mux4.2.in0 325
setp mux4.2.in1 900
setp mux4.2.in2 2240
net gear_limit_max mux4.2.out
#net limit1.0.min gear_limit_min
net spindle-vel-cmd_gear limit1.0.in
net spindle-vel-cmd_gear_limit limit1.0.out
Re: Коробка шпинделя.. Нужны советы!)
Добавлено: 05 окт 2017, 14:53
Serg
galexey писал(а):Хотел использовать mux4 и limit1
Есть специальный компонент с говорящим названием:
http://linuxcnc.org/docs/devel/html/man ... nge.9.html