ПИД-регулирование. Общие вопросы.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: ПИД-регулирование. Общие вопросы.
Кстати, у тебя основные вылеты ошибки на ускорениях, попробуй поиграть с FF2 или FF1.
- Dmaster
- Мастер
- Сообщения: 1271
- Зарегистрирован: 15 июл 2011, 13:36
- Репутация: 476
- Контактная информация:
Re: ПИД-регулирование. Общие вопросы.
100% не верное ускорение на моторе. Снизь!. У самого такаяя-же гадость была.Lexxa писал(а):почему только пр смене направления? после остановки никаких выбросов при повторении направления
" Linux CNC - наше всё"
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: ПИД-регулирование. Общие вопросы.
переду сюда с ПИД от сюда http://cnc-club.ru/forum/viewtopic.php? ... 749#p48749
Вобщем.
Нужно три скрипта.
Первый скриптик, который с servo-trhread запишет в файл значения пина axis.N.position-cmd, поделит его значение на servo-thread и запишет в виде таблицы n V, где n - номер, V - скорость.
Второй скриптик должен из этой таблицы нарисовать график функции V(n).
Третий скриптик должен взять первую производную V(n) и найти его экстремумы.
Вобщем.
Нужно три скрипта.
Первый скриптик, который с servo-trhread запишет в файл значения пина axis.N.position-cmd, поделит его значение на servo-thread и запишет в виде таблицы n V, где n - номер, V - скорость.
Второй скриптик должен из этой таблицы нарисовать график функции V(n).
Третий скриптик должен взять первую производную V(n) и найти его экстремумы.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: ПИД-регулирование. Общие вопросы.
Это надо делать через:Lexxa писал(а):Первый скриптик, который с servo-trhread запишет в файл значения пина axis.N.position-cmd, поделит его значение на servo-thread и запишет в виде таблицы n V, где n - номер, V - скорость.
http://www.linuxcnc.org/docs/2.5/html/m ... ler.1.html
http://www.linuxcnc.org/docs/2.5/html/m ... mer.1.html
Ну для этого и halscope подойдет.Lexxa писал(а):Второй скриптик должен из этой таблицы нарисовать график функции V(n).
Попробуем.Lexxa писал(а):Третий скриптик должен взять первую производную V(n) и найти его экстремумы.
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: ПИД-регулирование. Общие вопросы.
Итак, сегодня я любопытства ради на входы регулятора ПИД подал
В результате я наблюдал чрезвычайно мягкую работу привода (у меня КЕМРОН), настолько мягкой я его не видел никода.
При этом axis.0.f-error стаоа вдруг инкрементальной, будто энкодера вообще нет, хотя координаты менялись, кроме того в регулировках поменялись местами P I D и FF0 FF1 FF2 соответственно.
Ось постоянно меееееееееееееееедленно "ползла", типа самохода. При этом странно что EMС видит этот самоход и не корректирует его.
Вывод.
1) Никакие входные нелинейности приводов обходить не надо как советует vmariiv. Привод добростовестно отрабатывает то, что ему подсунули на вход Uзадания.
2) На вход пид регулятора подать скорость не axis.0.joint-vel-cmd, а производную от axis.0.joint-pos-cmd. Думаю, что тут уж не уберется никуда слежение за координатами.
3) Видимо axis.0.joint-vel-cmd <> только при движении, спровоцированном программой или оператором.
Код: Выделить всё
axis.0.joint-vel-cmd => pid.0.command
блаблабла.encoder.velocity => pid.0.feedback
pid.0.output => 5i25.analogout или как он там называется.При этом axis.0.f-error стаоа вдруг инкрементальной, будто энкодера вообще нет, хотя координаты менялись, кроме того в регулировках поменялись местами P I D и FF0 FF1 FF2 соответственно.
Ось постоянно меееееееееееееееедленно "ползла", типа самохода. При этом странно что EMС видит этот самоход и не корректирует его.
Вывод.
1) Никакие входные нелинейности приводов обходить не надо как советует vmariiv. Привод добростовестно отрабатывает то, что ему подсунули на вход Uзадания.
2) На вход пид регулятора подать скорость не axis.0.joint-vel-cmd, а производную от axis.0.joint-pos-cmd. Думаю, что тут уж не уберется никуда слежение за координатами.
3) Видимо axis.0.joint-vel-cmd <> только при движении, спровоцированном программой или оператором.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: ПИД-регулирование. Общие вопросы.
А что на реальный feedback в motion подается?
Хотя наверное оно так и должно быть -наверняка joint-vel-cmd это просто производная отjoint-pos-cmd соответственно пока joint-pos-cmd не меняется joint-vel-cmd равен нулю, поэтому pid может ползать куда ему хочется.
кстати, интересно, что будет если к pos-cmd применить filter?
Хотя наверное оно так и должно быть -наверняка joint-vel-cmd это просто производная отjoint-pos-cmd соответственно пока joint-pos-cmd не меняется joint-vel-cmd равен нулю, поэтому pid может ползать куда ему хочется.
кстати, интересно, что будет если к pos-cmd применить filter?
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: ПИД-регулирование. Общие вопросы.
на фидбэк в моушн подается тоже что и обычно подавалось.
Т.е. я сделал так:
а было так:
0
Не понял на счет производных. почему это пид может ползать? По идее команды на перемещение нет, соответсвенно слежение за координатами должно вестись постояно и чпу должна держать координату на месте. Т.е. если чпу видит самоход, то она должна включать движение в противоположную сторону, разве нет?
Т.е. я сделал так:
Код: Выделить всё
net motor.00.pos-fb hm2_[HOSTMOT2](BOARD).0.encoder.00.position => axis.0.motor-pos-fb
net axis-0-fb-vel hm2_[HOSTMOT2](BOARD).0.encoder.00.velocity => pid.0.feedback
net axis-0-cmd-vel axis.0.joint-vel-cmd => pid.0.commandКод: Выделить всё
net motor.00.pos-fb hm2_[HOSTMOT2](BOARD).0.encoder.00.position => pid.0.feedback
net motor.00.pos-fb => axis.0.motor-pos-fb #push copy back to Axis GUI
net emcmot.00.pos-cmd axis.0.motor-pos-cmd => pid.0.command
net motor.00.command pid.0.output => hm2_[HOSTMOT2](BOARD).0.7i77.0.1.analogoutтоже интересно, особенно интересно как на точность следования траектории повлияет))) сгладить бы его конечно было б хорошокстати, интересно, что будет если к pos-cmd применить filter?
Не понял на счет производных. почему это пид может ползать? По идее команды на перемещение нет, соответсвенно слежение за координатами должно вестись постояно и чпу должна держать координату на месте. Т.е. если чпу видит самоход, то она должна включать движение в противоположную сторону, разве нет?
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: ПИД-регулирование. Общие вопросы.
Значит velocity-cmd - это просто производная от position-cmd. Кстати он находится в:Lexxa писал(а):на фидбэк в моушн подается тоже что и обычно подавалось.
DEBUGGING PINS
Many of the pins below serve as debugging aids, and are subject to change or removal at any time.
Смотри, если ПИД управляет скоростью и на feedbck получает скорость, то при задании скорости =0, ПИД будет стараться удерживать ось на месте. Предположим, что на оси появилась дополнительная сила и ось сместилась на dx мм при этом ось приобрела скорость v1. ПИД будет стремиться остановить ось, но не вернуть ее в начальное положение. Поэтому такая ось с ПИД управляющим скоростью может плавать.Lexxa писал(а):Не понял на счет производных. почему это пид может ползать? По идее команды на перемещение нет, соответсвенно слежение за координатами должно вестись постояно и чпу должна держать координату на месте. Т.е. если чпу видит самоход, то она должна включать движение в противоположную сторону, разве нет?
- PKM
- Почётный участник

- Сообщения: 4263
- Зарегистрирован: 31 мар 2011, 18:11
- Репутация: 705
- Настоящее имя: Андрей
- Откуда: Украина
- Контактная информация:
Re: ПИД-регулирование. Общие вопросы.
если появляется рассогласование, за счет интегрального компонента выход ПИД увеличивается и стремится вернуть ось в прежнее положение. потому такие отклонения могут быть только кратковременнымиNick писал(а):Смотри, если ПИД управляет скоростью и на feedbck получает скорость, то при задании скорости =0, ПИД будет стараться удерживать ось на месте. Предположим, что на оси появилась дополнительная сила и ось сместилась на dx мм при этом ось приобрела скорость v1. ПИД будет стремиться остановить ось, но не вернуть ее в начальное положение. Поэтому такая ось с ПИД управляющим скоростью может плавать.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: ПИД-регулирование. Общие вопросы.
Мне кажется, что при таком виде управления погрешность все равно будет расти. Тем более у нас работает не только интегральный компонент, но и все остальные.
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: ПИД-регулирование. Общие вопросы.
в итоге прямо, емс нифига не следит за координатами, а лишь косьвенно посредствам пид
- PKM
- Почётный участник

- Сообщения: 4263
- Зарегистрирован: 31 мар 2011, 18:11
- Репутация: 705
- Настоящее имя: Андрей
- Откуда: Украина
- Контактная информация:
Re: ПИД-регулирование. Общие вопросы.
Так же как и все остальные системы чпуLexxa писал(а):в итоге прямо, емс нифига не следит за координатами, а лишь косьвенно посредствам пид
- PKM
- Почётный участник

- Сообщения: 4263
- Зарегистрирован: 31 мар 2011, 18:11
- Репутация: 705
- Настоящее имя: Андрей
- Откуда: Украина
- Контактная информация:
Re: ПИД-регулирование. Общие вопросы.
Пронаблюдай за поведением оси под нагрузкой и убедишьсяNick писал(а):Мне кажется, что при таком виде управления погрешность все равно будет расти. Тем более у нас работает не только интегральный компонент, но и все остальные.
-
Nikomas
- Мастер
- Сообщения: 721
- Зарегистрирован: 07 янв 2012, 14:31
- Репутация: 64
- Откуда: Беларусь
- Контактная информация:
Re: ПИД-регулирование. Общие вопросы.
Подыму-ка тему.
Похожая с автором ситуация и у меня. Только у меня приводы могут регулировать ПИД петлю. Плюс есть параметр Drop Pulses некий аналог ferror LCNC. Приводы Panasonic Minas. Начитался теории по настройке петли. Принцип понимаю. И решился настроить привод пока он лежит на столе. Мотор с родным прецизионным планетарным редуктором и шестерней.
Даю команду x50 при f2000. Включаю Хал-Скоп и получаем красивую такую энкодерную пилу (синусоиду) на всей кривой команды. Особенно она ярко выражена на разгонах и торможениях. Начинаю шаманить с настройками LCNC. Максимум что мне удалось, это сгладить синусоиду на прямой перемещения. Пики на разгоне и торможении остались. Но ferror в любом случае большой - около 3х десяток.
Вот что я думаю: 2 ПИД петли это не есть хорошо. В любом случае реакция их не мгновенная и между ними есть некий временной промежуток. ЧПУ дает команду - поехали. У привода своя петля и команда исполняется медленнее чем это надо ЧПУ. ЧПУ поддает газку чтобы нагнать позицию и в итоге получаем перебег. ЧПУха подтормаживает привод. И в итоге получаем колебания вдоль линии задания.
Резюмируя: пока речь о знакопеременных пиках не идет, справиться бы с равномерным разгоном и торможением, поэтому буду ставить приводы на станок, так правильнее, и настраивать ПИД только на приводе. Сканы Скопа приложу позднее.
Похожая с автором ситуация и у меня. Только у меня приводы могут регулировать ПИД петлю. Плюс есть параметр Drop Pulses некий аналог ferror LCNC. Приводы Panasonic Minas. Начитался теории по настройке петли. Принцип понимаю. И решился настроить привод пока он лежит на столе. Мотор с родным прецизионным планетарным редуктором и шестерней.
Даю команду x50 при f2000. Включаю Хал-Скоп и получаем красивую такую энкодерную пилу (синусоиду) на всей кривой команды. Особенно она ярко выражена на разгонах и торможениях. Начинаю шаманить с настройками LCNC. Максимум что мне удалось, это сгладить синусоиду на прямой перемещения. Пики на разгоне и торможении остались. Но ferror в любом случае большой - около 3х десяток.
Вот что я думаю: 2 ПИД петли это не есть хорошо. В любом случае реакция их не мгновенная и между ними есть некий временной промежуток. ЧПУ дает команду - поехали. У привода своя петля и команда исполняется медленнее чем это надо ЧПУ. ЧПУ поддает газку чтобы нагнать позицию и в итоге получаем перебег. ЧПУха подтормаживает привод. И в итоге получаем колебания вдоль линии задания.
Резюмируя: пока речь о знакопеременных пиках не идет, справиться бы с равномерным разгоном и торможением, поэтому буду ставить приводы на станок, так правильнее, и настраивать ПИД только на приводе. Сканы Скопа приложу позднее.
- michael-yurov
- Почётный участник

- Сообщения: 11730
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4703
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: ПИД-регулирование. Общие вопросы.
Если бы был только пропорциональный коэффициент - так бы и было. Но есть ведь и другие параметры настройки.Nikomas писал(а):ЧПУ поддает газку чтобы нагнать позицию и в итоге получаем перебег. ЧПУха подтормаживает привод. И в итоге получаем колебания вдоль линии задания.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: ПИД-регулирование. Общие вопросы.
ПИД по позиции должен быть только один - либо в приводе, либо в ЧПУ.Nikomas писал(а):Вот что я думаю: 2 ПИД петли это не есть хорошо.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
Nikomas
- Мастер
- Сообщения: 721
- Зарегистрирован: 07 янв 2012, 14:31
- Репутация: 64
- Откуда: Беларусь
- Контактная информация:
Re: ПИД-регулирование. Общие вопросы.
Немного покалдовал В приводе и LCNC. Второй вариант заметно лучше, но смущает пик при разгоне. Общий ferror около 4мкм.
-
Nikomas
- Мастер
- Сообщения: 721
- Зарегистрирован: 07 янв 2012, 14:31
- Репутация: 64
- Откуда: Беларусь
- Контактная информация:
Re: ПИД-регулирование. Общие вопросы.
Еще раз перечитал доки на усилок: при управлении аналогом только ПИ регулирование.
-
ex71
- Мастер
- Сообщения: 759
- Зарегистрирован: 18 май 2019, 13:23
- Репутация: 109
- Настоящее имя: Андрей
- Контактная информация:
Re: ПИД-регулирование. Общие вопросы.
У меня токарный станок на щеточных моторах постоянного тока. Сами моторы родные для станка, а управляют ими AMC привода.
После длительных мучений, раза с 5-го я смог добиться такого показателя (скрин приложил). На графике только рассогласование и выход управления. Сама ошибка в районе 5 соток пляшет.
В первые разы перемещения были пульсирующими, с постоянным недоходом (это было видно в координатах системы). Потом получилось победить недоход, но почему-то точность перемещений была ... ну на 25мм реального перемещения не доезжал 0.3мм, хотя по координатам системы все было четко. Уже и энкодер проверил, и все настройки оси (только по Х) - все якобы отлично, но .. некий косяк по стрелочному индикатору есть. В итоге решилось очередной перенастройкой ПИД и железа. Теперь точу детали с точностью в +/-1 сотку.
Я готов описать как я делал все настройки, с нуля. При этом я настраивал и софт и железо.
Но вот хотел спросить - куда и как лучше оформить? там около 20 скринов.
После длительных мучений, раза с 5-го я смог добиться такого показателя (скрин приложил). На графике только рассогласование и выход управления. Сама ошибка в районе 5 соток пляшет.
В первые разы перемещения были пульсирующими, с постоянным недоходом (это было видно в координатах системы). Потом получилось победить недоход, но почему-то точность перемещений была ... ну на 25мм реального перемещения не доезжал 0.3мм, хотя по координатам системы все было четко. Уже и энкодер проверил, и все настройки оси (только по Х) - все якобы отлично, но .. некий косяк по стрелочному индикатору есть. В итоге решилось очередной перенастройкой ПИД и железа. Теперь точу детали с точностью в +/-1 сотку.
Я готов описать как я делал все настройки, с нуля. При этом я настраивал и софт и железо.
Но вот хотел спросить - куда и как лучше оформить? там около 20 скринов.
