16К20Т1 -модернизация с LINUXCNC
-
- Мастер
- Сообщения: 516
- Зарегистрирован: 21 янв 2012, 00:23
- Репутация: 32
- Откуда: Ивано-Франковск
- Контактная информация:
Re: 16К20Т1 -модернизация с LINUXCNC
Собрал всю механику , проблем было много , теперь приступаю к наладке комплексной . В архиве все рабочие файлы , в том числе файлы дополнительной клавиатуры на базе TEENSY .
На сегодня главный вопрос ---- какие правильные настройки ПИД выбрать . В связи с разными моментами инерции осей разница в ПИД параметрах X и Z состовляет 5 !!!! раз .
Какие ПИД параметры используются в других форумчан ?
На сегодня главный вопрос ---- какие правильные настройки ПИД выбрать . В связи с разными моментами инерции осей разница в ПИД параметрах X и Z состовляет 5 !!!! раз .
Какие ПИД параметры используются в других форумчан ?
- Вложения
-
- 16k20.zip
- HAL + INI + XML + ...
- (61.06 КБ) 595 скачиваний
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: 16К20Т1 -модернизация с LINUXCNC
Параметры ПИД могут быть разными
А как ты настраивал? Покажи скриншоты из HAL Scope по пинам ferror position и feedback по всем осям.
А как ты настраивал? Покажи скриншоты из HAL Scope по пинам ferror position и feedback по всем осям.
-
- Мастер
- Сообщения: 516
- Зарегистрирован: 21 янв 2012, 00:23
- Репутация: 32
- Откуда: Ивано-Франковск
- Контактная информация:
Re: 16К20Т1 -модернизация с LINUXCNC
Вчерашние файлы . Один вариант с использованием шпинделя в режиме серво , другой в обычном , оборотная подача работает , но не смасштабирована , резьбонарезание не опробовал . Коробка передач шпинделя с разными коэффициентами передачи также работает , но точного поддержания оборотов нет ( +- 1 % ) . С понедельника - резьбонарезание
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: 16К20Т1 -модернизация с LINUXCNC
не парься, это нормально.vmarkiv писал(а):+- 1 %
еще не забудь про spindle.at-speed пин
-
- Мастер
- Сообщения: 516
- Зарегистрирован: 21 янв 2012, 00:23
- Репутация: 32
- Откуда: Ивано-Франковск
- Контактная информация:
Re: 16К20Т1 -модернизация с LINUXCNC
+- 1 на шпинделе - хочется лучше , резьба получится кривой и горбатойLexxa писал(а):не парься, это нормально.vmarkiv писал(а):+- 1 %
еще не забудь про spindle.at-speed пин
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: 16К20Т1 -модернизация с LINUXCNC
По идее, когда ты режешь при помощи G76 все эти проценты будут компенсироваться изменением скорости подачи.
Можешь скинуть скриншоты от halscope?
Можешь скинуть скриншоты от halscope?
-
- Мастер
- Сообщения: 516
- Зарегистрирован: 21 янв 2012, 00:23
- Репутация: 32
- Откуда: Ивано-Франковск
- Контактная информация:
Re: 16К20Т1 -модернизация с LINUXCNC
с понедельника подготовлю и сброшу
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: 16К20Т1 -модернизация с LINUXCNC
так и будет. А при простом точении там пофиг на 1%Nick писал(а):G76 все эти проценты будут компенсироваться изменением скорости подачи
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: 16К20Т1 -модернизация с LINUXCNC
Ждем
Вот о чем я говорил, при нарезании резьбы LinuxCNC подстраивает подачу под вращение шпинделя:
https://www.youtube.com/watch?v=pxXGN2SVrhU
Вот о чем я говорил, при нарезании резьбы LinuxCNC подстраивает подачу под вращение шпинделя:
https://www.youtube.com/watch?v=pxXGN2SVrhU
-
- Мастер
- Сообщения: 516
- Зарегистрирован: 21 янв 2012, 00:23
- Репутация: 32
- Откуда: Ивано-Франковск
- Контактная информация:
Re: 16К20Т1 -модернизация с LINUXCNC
Да , подстраивает , я это уже практически опробовал , но стружку ещё не дал , а , как говорил бывший генсек - будет стружка-будет песня !Nick писал(а):Ждем
Вот о чем я говорил, при нарезании резьбы LinuxCNC подстраивает подачу под вращение шпинделя:
https://www.youtube.com/watch?v=pxXGN2SVrhU
-
- Мастер
- Сообщения: 516
- Зарегистрирован: 21 янв 2012, 00:23
- Репутация: 32
- Откуда: Ивано-Франковск
- Контактная информация:
Re: 16К20Т1 -модернизация с LINUXCNC
Начал настраивать резьбонарезание , вылезли вопросы :
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 , придется возвращаться к настройке ПИД регулятора .
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 , придется возвращаться к настройке ПИД регулятора .
- Вложения
-
- 16k20_22_10.hal
- (31.01 КБ) 1178 скачиваний
-
- 16k20_22_10.ini
- (4.7 КБ) 1228 скачиваний
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: 16К20Т1 -модернизация с LINUXCNC
А что при этом на сигнале Svel-fb-RPM? Какое значение?vmarkiv писал(а):1 . При переключении направления оборотов М3 на М4 отсутствует сигнал
Какое разрешение энкодера? Возможно погрешность возникает из-за неравномерного поступления сигналов от энкодера, точнее из-зи их дискретизации. Например в последовательных итерациях приходят следующие количества тиков 100 101 100 100 99, тогда вычисленные обороты будут скакать в пределах 1%, можно попробовать прогнать это значение через фильтр.vmarkiv писал(а):2. При использовании сигнала Svel-fb-RPM сложилось мнение , что где-то теряется точность преобразования
Кстати, у тебя нет осциллографа, чтобы померить реальный выход с энкодера?
А причем здесь MIN_FERROR? По идее, если его превысит то тупо вываливается joint following error и все, тупить не должно, или по крайней мере не должно из-за него тупить ....vmarkiv писал(а):3. При значении MIN_FERROR = 0.3 мне не удается точно спозиционировать привод , привод на конце кадра стоит и думает - ждет помощи молотка и какой то ... ключа на 13
-
- Мастер
- Сообщения: 516
- Зарегистрирован: 21 янв 2012, 00:23
- Репутация: 32
- Откуда: Ивано-Франковск
- Контактная информация:
Re: 16К20Т1 -модернизация с LINUXCNC
Re: 16К20Т1 -модернизация с LINUXCNC
#32 UNREAD_POST Nick » 2 минуты назад
Какое разрешение энкодера?
2048 на оборот , прямо на шпинделе , обороты 100 об\мин . Сигналы с энкодера нормальные . Может это из-за преобразования из формата f32 в обороты ?
При маленькой FERROR вываливается , но не понял как назначить определенную точность позиционирования
#32 UNREAD_POST Nick » 2 минуты назад
Какое разрешение энкодера?
2048 на оборот , прямо на шпинделе , обороты 100 об\мин . Сигналы с энкодера нормальные . Может это из-за преобразования из формата f32 в обороты ?
При маленькой FERROR вываливается , но не понял как назначить определенную точность позиционирования
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: 16К20Т1 -модернизация с LINUXCNC
В каком смысле точность?
На изображении у тебя похоже на скругление траектории, попробуй дописать 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 или нет?
На изображении у тебя похоже на скругление траектории, попробуй дописать 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 или нет?
-
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: 16К20Т1 -модернизация с LINUXCNC
а где тут преобразование ? (S32 ??...)vmarkiv писал(а):Может это из-за преобразования из формата f32 в обороты ?
Код: Выделить всё
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
-
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: 16К20Т1 -модернизация с LINUXCNC
Один и тот же параметр задается два раза:
не приводит ли это к неоднозначности в работе??
Код: Выделить всё
setp s8i48o24.encoder.2.scale [SPINDLE_9]ENCODER_SCALE
setp s8i48o24.encoder.2.scale [SPINDLE_9]INPUT_SCALE
-
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: 16К20Т1 -модернизация с LINUXCNC
как вариант можно еще так попробовать:
Код: Выделить всё
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
-
- Мастер
- Сообщения: 516
- Зарегистрирован: 21 янв 2012, 00:23
- Репутация: 32
- Откуда: Ивано-Франковск
- Контактная информация:
Re: 16К20Т1 -модернизация с LINUXCNC
Иду пробовать дальше , да меня версия 2.3.5 дальше на этой машине не обновлял
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: 16К20Т1 -модернизация с LINUXCNC
А поможет ли? У него разница вроде как больше будет...nkp писал(а):setp near.0.difference 0.1
ИМХО нужен lowpass с коэффициентом 0.04
-
- Мастер
- Сообщения: 516
- Зарегистрирован: 21 янв 2012, 00:23
- Репутация: 32
- Откуда: Ивано-Франковск
- Контактная информация:
Re: 16К20Т1 -модернизация с LINUXCNC
Опробовал и пробовал измерить характеристики каналов скорости сначала шпинделя , а потом и оси X .Скриншоты выкладываю . Видно что скачки в данных не зависят от амплитуды данных , есть некоторая переменная составляющая , я думаю , что версия Ника о считывании несинхронизированных данных наиболее правильная . Если б неравномерность была только в шпинделе - вопрос был бы интересным , но по оси Икс по скорости аналогичная картина . Или , вопрос по передаче данных в моей Плуто-подобной плате .