Страница 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
Да , подстраивает , я это уже практически опробовал , но стружку ещё не дал , а , как говорил бывший генсек - будет стружка-будет песня !
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 .Скриншоты выкладываю . Видно что скачки в данных не зависят от амплитуды данных , есть некоторая переменная составляющая , я думаю , что версия Ника о считывании несинхронизированных данных наиболее правильная . Если б неравномерность была только в шпинделе - вопрос был бы интересным , но по оси Икс по скорости аналогичная картина . Или , вопрос по передаче данных в моей Плуто-подобной плате .