Страница 8 из 11
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 04 июн 2012, 13:12
PKM
Lexxa писал(а):Значенние axis.N.motor-pos-cmd это есть величина перемещения за сервопериод или это абсолютное число?
Это положение привода (абсолютное), а не скорость.
Lexxa писал(а):net xpos-fb <= hm2_7i43.0.encoder.00.position
net xpos-fb => pid.x.feedback
pid.x.feedback - это положение,
pid.x.command - тоже положение.
Разница между ними составляет
axis.N.f-error.
Но выход ПИД, который вычисляется по формуле (для обычного ПИД e(t)=
axis.N.f-error)

подается на мотор в виде сигнала
скорости, откуда все эти недоразумения
Здесь все есть
http://linuxcnc.org/docs/html/man/man9/pid.9.html
http://linuxcnc.org/docs/html/man/man9/axis.9.html
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 04 июн 2012, 13:51
Impartial
PKM писал(а):Из конфига видно, что ПИД минимизирует ошибку положения, управляя при этом скоростью мотора.
ПИД минимизирует ошибку скорости, а не положения. На положение ему наплевать.
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 04 июн 2012, 14:31
PKM
Impartial писал(а):ПИД минимизирует ошибку скорости, а не положения. На положение ему наплевать
Это смотря какой ПИД. Для шпинделя обычно минимизирует ошибку скорости, для приводов подачи - все-таки положения.
Их много разновидностей бывает
http://wiki.linuxcnc.org/cgi-bin/wiki.pl?PiD
The closed-loop spindle is velocity-result & velocity command. A motor/tach machine is position-result and velocity command. A torque-mode servo machine is position-result and acceleration command (neglecting friction) a stepper system is position-result and position command
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 04 июн 2012, 14:53
Lexxa
И мы опять пришли к началу дискуссии
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 04 июн 2012, 18:25
Nick
xentaur писал(а):Можно и с энкодера скорость пересчитать, а потом назад в позицию.
Если обратную связь по скорости пересчитать в положение то неизбежно получим погрешность преобразования, которая со временем будет накапливаться.
Вообще единственная задача ПИД - минимизировать значение error которое равно command-feedback. В каких величинах это считать принципиальной разницы нет. Но если исходить из того, что задание выдается по положению и точная обратная связь тоже идет по положению, то имеет смысл в ПИД загонять положение. Иначе придется городить несколько вычислений:
1. преобразовывать command в скорость через ddt
2. плюс к этому добавлять дифференциальную ошибку от полученной обратной связи по положению
Вообще интересно, какой физический смысл будет иметь разница в ПИД по скорости и ПИД по положению исходя из мат формулы ПИД?
ЗЫ блин вы тут оказывается 3 страницы форума исписали... сейчас еще что-нибудь добавлю

Re: ПИД-регулирование. Общие вопросы.
Добавлено: 04 июн 2012, 18:45
PKM
Ага,
Nick, вразуми поклонников скорости

Re: ПИД-регулирование. Общие вопросы.
Добавлено: 04 июн 2012, 19:22
Nick
О, тут я смотрю как раз и формула объявилась

.
Давайте проанализируем ситуацию: мы рассматриваем два вида ПИД управления
- задание положения -> ПИД
обратная связь по положению -> ПИД
ПИД -> скорость (момент) двигателя
- задание скорости -> ПИД
обратная связь по скорости -> ПИД
ПИД -> скорость (момент) двигателя
при этом задание по скорости это положение пропущенное через ddt, и обратная связь в принципе тоже самое. Т.к. наверняка компонент encoder делает тоже самое.
Теперь попробуем проанализировать формулу для обоих случаев. Точнее попробуем один привести к другому.
В следующей формуле e
p это ошибка по положению e
v по скорости. Из того, что скорость вычисляется дифференцированием имеем e
v = de
p/dt
В итоге:
Что получаем, остался компонент D, остался компонент P. Исчез компонент I, вместо него появилось что-то несуразное

.
Что нам это дает, если пользоваться стандартными методами настройки PID, то вместо P надо настраивать I, вместо D - P, а компонент I - D (но так как он у нас вообще непонятно что, надо его ставить = 0)
Вывод для получения именно PID регулирования со всеми его составляющими надо на вход pid подавать скорость и ошибку по скорости

. Как-то так.
Или с выхода PID брать положение, и преобразовывать его в скорость?
У кого какие мысли?
Формула в форма openoffice (для просмотра содержимого нажмите на ссылку)pid = Pe_v + Int from{0} to{t} e_v dt + D{de_v} over {dt}
newline
e_v = de_p over dt
newline
pid = P {de_p} over dt + Int from 0 to t {{de_p} over {dt} dt} + D {d^2 e_p} over {d^2 t} = {}
newline
{} = P {de_p} over dt + I(e_p(t) - e_p(0)) + D {d^2 e_p} over {d^2 t}
newline
{} = P{{de_p} over dt} underbrace {компопнет D_p} + I({e_p(t)}underbrace{компонент P_p} - {e_p(0)}underbrace{stack{константа # можно # опустить} }) + D {{d^2 e_p} over {d^2 t}} underbrace {что-то`вроде`FF0_p?!?}
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 04 июн 2012, 20:33
Lexxa
Nick писал(а): Т.к. наверняка компонент encoder делает тоже самое.
Не совсем.
http://cnc-club.ru/forum/download/file. ... &mode=view
Красноым скорость снятая с энкодера,
Зеленым - скорость вычисленная с помощью производной с позишн.
Красный оч красивый, в отличии от зеленого.
Внимание вопрос. Как будет вести себя производная от комманд?
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 04 июн 2012, 22:07
Nick
Можно его через фильтр прогнать... хотя тоже может быть фигня... надо посмотреть в исходниках как энкодер скорость считает...
Lexxa писал(а):Внимание вопрос. Как будет вести себя производная от комманд?
Ждем от тебя ответ в виде скрина

!
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 04 июн 2012, 23:03
Lexxa
С фнч гораааааздо лучше но 2 косяка:
1) на большиих постоянных скоростях
2) задержка
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 05 июн 2012, 10:38
Nick
Lexxa писал(а): на большиих постоянных скоростях
А какой тут косяк?
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 05 июн 2012, 18:14
Lexxa
ФНЧ отрезает постоянную составляющую, покажу скриншот
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 06 июн 2012, 16:31
T00T
Nick писал(а):О, тут я смотрю как раз и формула объявилась

.
Или с выхода PID брать положение, и преобразовывать его в скорость?
[/spoiler]
Ну, вот вроде ты и добрался до того, что мы с IMPARTIAL ом говорили:))))))))
Здорово
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 06 июн 2012, 16:33
T00T
Impartial писал(а):T00T писал(а):Двигателями управляют привода, а на них подаётся напряжение управление и это напряжение соответствует какой-то определённой скорости - следовательно физически управление идёт по скорости, расчёт траектории тоже ведётся по графику скорость/время в полярных координатах. Пид является корректирующим звеном в цепи управления по скорости нужен для того, чтобы сгладить выбросы перерегулирования, и соответственно скачки тока на двигателе, и ударные нагрузки на механику. Его параметры должны вычисляться изходя из характеристик ваших приводов и механики. Конечно есть общая обратная связь по положению - но она как результат управления по скорости. Даже если у вас шаговый двигатель - управление всё равно идёт по скорости, только у вас не напряжением, а частотой следования импульсов.
Вот видно, человек в теме.
Вот здесь
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 06 июн 2012, 22:23
Lexxa
Предположим, что выход у
axis,command это скорость, что вообще было бы правильно. Почему же тогда обратная связь на пид регулятор это позишн?
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 07 июн 2012, 00:19
Lexxa
Наверно сам себе отвечу.
Если отталкиваться от servo-period, т.е. ПИД-ЕМС считает приращение позишн за серво-период, то это действительно можно рассматривать как скорость.
В этом случае и енкодер.позишн будет всё той же скоростью.
Тогда производных никаких брать не надо всё и так нормально.
Возникает следующий вопрос тогда.
На кой нужны FFx параметры в ПИД-ЕМС регуляторе?
и тогда стало совсем неясно вот это:
http://wiki.linuxcnc.org/cgi-bin/wiki.pl?PiD
http://wiki.linuxcnc.org/cgi-bin/wiki.p ... _PID_Loops
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 07 июн 2012, 02:15
Lexxa
То как работают производные по комманд и фидбэку
https://www.youtube.com/watch?v=wGJtxupvzEA
p.s. смотреть на 480p
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 07 июн 2012, 13:13
Nick
Lexxa писал(а):На кой нужны FFx параметры в ПИД-ЕМС регуляторе?
Для компенсации вторичных сил - трения и инерции.
FF0 или FF1 добавляют к выходу небольшое усиление, таким образом чем выше выход => тем выше скорость => тем больше компенсация трения.
и FF1 или FF2 добавляют компанент при изменении скорости => компенсируют инерцию.
Обычно эти параметры должны быть достаточно маленькими.
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 08 июн 2012, 12:58
Nick
Наконец-то посмотрел видео

.
Откуда берутся такие скачки в pid.command?
И xvel-fb, это ddt от encoder.position?
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 08 июн 2012, 13:03
Lexxa
там где скачки это ddt от axis.pos-cmd
Да, xvel-fb это ddt от encoder.position
Скачки только при смене направления, что непонятно