Страница 2 из 3

Re: 16К20Т1 -модернизация с LINUXCNC

Добавлено: 15 окт 2012, 19:34
vmarkiv
Собрал всю механику , проблем было много , теперь приступаю к наладке комплексной . В архиве все рабочие файлы , в том числе файлы дополнительной клавиатуры на базе TEENSY .
На сегодня главный вопрос ---- какие правильные настройки ПИД выбрать . В связи с разными моментами инерции осей разница в ПИД параметрах X и Z состовляет 5 !!!! раз .
Какие ПИД параметры используются в других форумчан ?

Re: 16К20Т1 -модернизация с LINUXCNC

Добавлено: 15 окт 2012, 21:26
Nick
Параметры ПИД могут быть разными
А как ты настраивал? Покажи скриншоты из HAL Scope по пинам ferror position и feedback по всем осям.

Re: 16К20Т1 -модернизация с LINUXCNC

Добавлено: 20 окт 2012, 23:05
vmarkiv
16k20.zip
конфигурация делалась для проверки g95
(68.47 КБ) 524 скачивания
16k20_s_servo.zip
шпиндель как ось , но непонятно какая -серво держит , а на команды не реагирует
(45.06 КБ) 538 скачиваний
Вчерашние файлы . Один вариант с использованием шпинделя в режиме серво , другой в обычном , оборотная подача работает , но не смасштабирована , резьбонарезание не опробовал . Коробка передач шпинделя с разными коэффициентами передачи также работает , но точного поддержания оборотов нет ( +- 1 % ) . С понедельника - резьбонарезание

Re: 16К20Т1 -модернизация с LINUXCNC

Добавлено: 21 окт 2012, 10:43
Lexxa
vmarkiv писал(а):+- 1 %
не парься, это нормально.
еще не забудь про spindle.at-speed пин

Re: 16К20Т1 -модернизация с LINUXCNC

Добавлено: 21 окт 2012, 10:51
vmarkiv
Lexxa писал(а):
vmarkiv писал(а):+- 1 %
не парься, это нормально.
еще не забудь про spindle.at-speed пин
+- 1 на шпинделе - хочется лучше , резьба получится кривой и горбатой

Re: 16К20Т1 -модернизация с LINUXCNC

Добавлено: 21 окт 2012, 12:49
Nick
По идее, когда ты режешь при помощи G76 все эти проценты будут компенсироваться изменением скорости подачи.

Можешь скинуть скриншоты от halscope?

Re: 16К20Т1 -модернизация с LINUXCNC

Добавлено: 21 окт 2012, 13:15
vmarkiv
с понедельника подготовлю и сброшу

Re: 16К20Т1 -модернизация с LINUXCNC

Добавлено: 21 окт 2012, 13:20
Lexxa
Nick писал(а):G76 все эти проценты будут компенсироваться изменением скорости подачи
так и будет. А при простом точении там пофиг на 1%

Re: 16К20Т1 -модернизация с LINUXCNC

Добавлено: 21 окт 2012, 13:26
Nick
Ждем :)
Вот о чем я говорил, при нарезании резьбы LinuxCNC подстраивает подачу под вращение шпинделя:
https://www.youtube.com/watch?v=pxXGN2SVrhU

Re: 16К20Т1 -модернизация с LINUXCNC

Добавлено: 21 окт 2012, 13:35
vmarkiv
Nick писал(а):Ждем :)
Вот о чем я говорил, при нарезании резьбы LinuxCNC подстраивает подачу под вращение шпинделя:
https://www.youtube.com/watch?v=pxXGN2SVrhU
Да , подстраивает , я это уже практически опробовал , но стружку ещё не дал , а , как говорил бывший генсек - будет стружка-будет песня !

Re: 16К20Т1 -модернизация с LINUXCNC

Добавлено: 22 окт 2012, 20:37
vmarkiv
Начал настраивать резьбонарезание , вылезли вопросы :
1 . При переключении направления оборотов М3 на М4 отсутствует сигнал
net Sat-speed => motion.spindle-at-speed
хотя брал абсолютное значение оборотов

# ---Setup spindle at speed signals---
net Svel-fb-RPM abs.0.in
net Svel-fb-RPM-abs abs.0.out
net Svel-abs => near.0.in1
net Svel-fb-RPM-abs => near.0.in2 ### в обертах в хвилину
net Sat-speed <= near.0.out
setp near.0.scale 1.5 # приблизительная равность оборотов
на М3 все работает .....
2. При использовании сигнала Svel-fb-RPM сложилось мнение , что где-то теряется точность преобразования - обороты показывают 100.2 или 105.7 ( скачки отображения ) при диапазоне отображения 0-2000 об\мин .
3. При значении MIN_FERROR = 0.3 мне не удается точно спозиционировать привод , привод на конце кадра стоит и думает - ждет помощи молотка и какой то ... ключа на 13 , придется возвращаться к настройке ПИД регулятора .

Re: 16К20Т1 -модернизация с LINUXCNC

Добавлено: 22 окт 2012, 21:02
Nick
vmarkiv писал(а):1 . При переключении направления оборотов М3 на М4 отсутствует сигнал
А что при этом на сигнале Svel-fb-RPM? Какое значение?
vmarkiv писал(а):2. При использовании сигнала Svel-fb-RPM сложилось мнение , что где-то теряется точность преобразования
Какое разрешение энкодера? Возможно погрешность возникает из-за неравномерного поступления сигналов от энкодера, точнее из-зи их дискретизации. Например в последовательных итерациях приходят следующие количества тиков 100 101 100 100 99, тогда вычисленные обороты будут скакать в пределах 1%, можно попробовать прогнать это значение через фильтр.

Кстати, у тебя нет осциллографа, чтобы померить реальный выход с энкодера?
vmarkiv писал(а):3. При значении MIN_FERROR = 0.3 мне не удается точно спозиционировать привод , привод на конце кадра стоит и думает - ждет помощи молотка и какой то ... ключа на 13
А причем здесь MIN_FERROR? По идее, если его превысит то тупо вываливается joint following error и все, тупить не должно, или по крайней мере не должно из-за него тупить :)....

Re: 16К20Т1 -модернизация с LINUXCNC

Добавлено: 22 окт 2012, 21:16
vmarkiv
Re: 16К20Т1 -модернизация с LINUXCNC

#32 UNREAD_POST Nick » 2 минуты назад

Какое разрешение энкодера?
2048 на оборот , прямо на шпинделе , обороты 100 об\мин . Сигналы с энкодера нормальные . Может это из-за преобразования из формата f32 в обороты ?

При маленькой FERROR вываливается , но не понял как назначить определенную точность позиционирования

Re: 16К20Т1 -модернизация с LINUXCNC

Добавлено: 22 окт 2012, 21:47
Nick
В каком смысле точность?
На изображении у тебя похоже на скругление траектории, попробуй дописать G61 (Exact path mode).

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

ЗЫ когда ты уже нас порадуешь скриншотами HALScope ? :) Теперь интересно, как у тебя скачут обороты.
ЗЫЫ по идее 100 об/мин, это примерно 1,5 оборота в секунду, т.е. примерно 3000 тысячи тиков в секунду. По идее количество этих тиков смотриться раз в servo-thread, а это скорее всего 1000 раз в секунду. Итого на каждый замер приходится около 3 тиков (а если считать все фазы, то 3*4 - около 12), так вот, если в разных периодах будет разное количество тиков (а оно будет, т.к. замер берется не согласованно с тиками) получаем 11-12 тиков за замер, т.е. отклонение около 10%. При стандартном замере среднее отклонение будет 5%.

Надо наверное lowpass добавить, но лучше бы посмотреть на график оборотов в halscope :)
Кстати, интерессно rps*60 будет отличаться от rpm или нет?

Re: 16К20Т1 -модернизация с LINUXCNC

Добавлено: 22 окт 2012, 21:55
nkp
vmarkiv писал(а):Может это из-за преобразования из формата f32 в обороты ?
а где тут преобразование ? (S32 ??...)

Код: Выделить всё

loadrt abs count=2 
loadrt lowpass names=lowpass.spindle
loadrt near
loadrt mux4 names=mux4.gear
addf mux4.gear servo-thread
addf abs.0 servo-thread
addf abs.1 servo-thread
addf lowpass.spindle servo-thread
addf near.0 servo-thread
 
net  Svel-cmd  motion.spindle-speed-out  =>  abs.1.in
net  Svel-abs  abs.1.out                 => near.0.in1  
net  Senable        => s8i48o24.pwm.2.enable 

setp     s8i48o24.encoder.2.scale  [SPINDLE_9]INPUT_SCALE
setp     s8i48o24.encoder.2.index-enable TRUE
                  
net Spos-fb   s8i48o24.encoder.2.position  
net Svel-fb   s8i48o24.encoder.2.velocity
   
net Senable         <=  motion.spindle-on
net Scw             <=  motion.spindle-forward
net Sccw            <=  motion.spindle-reverse
net Sbrake          <=  motion.spindle-brake
net Spos-fb         =>  motion.spindle-revs
net Sat-speed       =>  motion.spindle-at-speed
net Svel-fb         =>  motion.spindle-speed-in                
net Sindex-enable  <=>  motion.spindle-index-enable

net Svel-fb-RPM       abs.0.in
net Svel-fb-RPM-abs   abs.0.out

net Svel-fb-RPM-abs  =>   near.0.in2  
net Sat-speed        <=   near.0.out
setp near.0.scale 1.5    

net Gear_selected mux4.gear.out  
net Gear1         mux4.gear.sel0  => s8i48o24.din.42  iopanel.led-42 
net Gear2         mux4.gear.sel1 =>  s8i48o24.din.26  iopanel.led-26 
    
setp mux4.gear.in0 14.08
setp mux4.gear.in2 3.52
setp mux4.gear.in3 1  
setp mux4.gear.in1 1.408
    
net   Svel-cmd      =>    mult2.1.in0   
net   Gear_selected =>    mult2.1.in1   

net    Svel-cmd-mux <= mult2.1.out    
net    Svel-cmd-mux =>             s8i48o24.pwm.2.value 
setp   s8i48o24.encoder.2.scale  [SPINDLE_9]ENCODER_SCALE

net Svel-fb => mult2.0.in0
setp mult2.0.in1 60
net Svel-fb-RPM <= mult2.0.out
ЗЫ на скрине емс 2.3 ??

Re: 16К20Т1 -модернизация с LINUXCNC

Добавлено: 23 окт 2012, 06:06
nkp
Один и тот же параметр задается два раза:

Код: Выделить всё

setp     s8i48o24.encoder.2.scale           [SPINDLE_9]ENCODER_SCALE
setp     s8i48o24.encoder.2.scale           [SPINDLE_9]INPUT_SCALE
не приводит ли это к неоднозначности в работе??

Re: 16К20Т1 -модернизация с LINUXCNC

Добавлено: 23 окт 2012, 07:22
nkp
как вариант можно еще так попробовать:

Код: Выделить всё

setp near.0.difference       0.1
net  Svel-fb                 near.0.in1
net  spindle-vel-cmd-rps     motion.spindle-speed-out-rps   near.0.in2
net  Sat-speed               near.0.out

Re: 16К20Т1 -модернизация с LINUXCNC

Добавлено: 23 окт 2012, 07:50
vmarkiv
Иду пробовать дальше , да меня версия 2.3.5 дальше на этой машине не обновлял

Re: 16К20Т1 -модернизация с LINUXCNC

Добавлено: 23 окт 2012, 09:32
Nick
nkp писал(а):setp near.0.difference       0.1
А поможет ли? У него разница вроде как больше будет...
ИМХО нужен lowpass с коэффициентом 0.04

Re: 16К20Т1 -модернизация с LINUXCNC

Добавлено: 23 окт 2012, 18:51
vmarkiv
Опробовал и пробовал измерить характеристики каналов скорости сначала шпинделя , а потом и оси X .Скриншоты выкладываю . Видно что скачки в данных не зависят от амплитуды данных , есть некоторая переменная составляющая , я думаю , что версия Ника о считывании несинхронизированных данных наиболее правильная . Если б неравномерность была только в шпинделе - вопрос был бы интересным , но по оси Икс по скорости аналогичная картина . Или , вопрос по передаче данных в моей Плуто-подобной плате .