ПИД-регулирование. Общие вопросы.

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

Re: ПИД-регулирование. Общие вопросы.

Сообщение 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
Impartial
Мастер
Сообщения: 953
Зарегистрирован: 23 фев 2011, 01:50
Репутация: 36
Контактная информация:

Re: ПИД-регулирование. Общие вопросы.

Сообщение Impartial »

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

Re: ПИД-регулирование. Общие вопросы.

Сообщение 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
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: ПИД-регулирование. Общие вопросы.

Сообщение Lexxa »

И мы опять пришли к началу дискуссии
:bender:
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: ПИД-регулирование. Общие вопросы.

Сообщение Nick »

xentaur писал(а):Можно и с энкодера скорость пересчитать, а потом назад в позицию.
Если обратную связь по скорости пересчитать в положение то неизбежно получим погрешность преобразования, которая со временем будет накапливаться.

Вообще единственная задача ПИД - минимизировать значение error которое равно command-feedback. В каких величинах это считать принципиальной разницы нет. Но если исходить из того, что задание выдается по положению и точная обратная связь тоже идет по положению, то имеет смысл в ПИД загонять положение. Иначе придется городить несколько вычислений:
1. преобразовывать command в скорость через ddt
2. плюс к этому добавлять дифференциальную ошибку от полученной обратной связи по положению

Вообще интересно, какой физический смысл будет иметь разница в ПИД по скорости и ПИД по положению исходя из мат формулы ПИД?

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

Re: ПИД-регулирование. Общие вопросы.

Сообщение PKM »

Ага, Nick, вразуми поклонников скорости :lol1:
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: ПИД-регулирование. Общие вопросы.

Сообщение Nick »

О, тут я смотрю как раз и формула объявилась :).

Давайте проанализируем ситуацию: мы рассматриваем два вида ПИД управления
  1. задание положения -> ПИД
    обратная связь по положению -> ПИД
    ПИД -> скорость (момент) двигателя
  2. задание скорости -> ПИД
    обратная связь по скорости -> ПИД
    ПИД -> скорость (момент) двигателя
    при этом задание по скорости это положение пропущенное через ddt, и обратная связь в принципе тоже самое. Т.к. наверняка компонент encoder делает тоже самое.
Теперь попробуем проанализировать формулу для обоих случаев. Точнее попробуем один привести к другому.
В следующей формуле ep это ошибка по положению ev по скорости. Из того, что скорость вычисляется дифференцированием имеем ev = dep/dt
В итоге:
pid formula.png (2244 просмотра) <a class='original' href='./download/file.php?id=5688&mode=view' target=_blank>Загрузить оригинал (39.18 КБ)</a>
Что получаем, остался компонент D, остался компонент P. Исчез компонент I, вместо него появилось что-то несуразное :).
Что нам это дает, если пользоваться стандартными методами настройки PID, то вместо P надо настраивать I, вместо D - P, а компонент I - D (но так как он у нас вообще непонятно что, надо его ставить = 0)

Вывод для получения именно PID регулирования со всеми его составляющими надо на вход pid подавать скорость и ошибку по скорости :thinking:. Как-то так.

Или с выхода 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?!?}
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: ПИД-регулирование. Общие вопросы.

Сообщение Lexxa »

Nick писал(а): Т.к. наверняка компонент encoder делает тоже самое.
Не совсем. http://cnc-club.ru/forum/download/file. ... &mode=view
Красноым скорость снятая с энкодера,
Зеленым - скорость вычисленная с помощью производной с позишн.
Красный оч красивый, в отличии от зеленого.
Внимание вопрос. Как будет вести себя производная от комманд?
:bender:
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: ПИД-регулирование. Общие вопросы.

Сообщение Nick »

Можно его через фильтр прогнать... хотя тоже может быть фигня... надо посмотреть в исходниках как энкодер скорость считает...
Lexxa писал(а):Внимание вопрос. Как будет вести себя производная от комманд?
Ждем от тебя ответ в виде скрина :D!
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: ПИД-регулирование. Общие вопросы.

Сообщение Lexxa »

С фнч гораааааздо лучше но 2 косяка:
1) на большиих постоянных скоростях
2) задержка
:bender:
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: ПИД-регулирование. Общие вопросы.

Сообщение Nick »

Lexxa писал(а): на большиих постоянных скоростях
А какой тут косяк?
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: ПИД-регулирование. Общие вопросы.

Сообщение Lexxa »

ФНЧ отрезает постоянную составляющую, покажу скриншот
:bender:
T00T
Мастер
Сообщения: 742
Зарегистрирован: 16 дек 2011, 12:07
Репутация: 100
Контактная информация:

Re: ПИД-регулирование. Общие вопросы.

Сообщение T00T »

Nick писал(а):О, тут я смотрю как раз и формула объявилась :).
Или с выхода PID брать положение, и преобразовывать его в скорость?

[/spoiler]
Ну, вот вроде ты и добрался до того, что мы с IMPARTIAL ом говорили:))))))))
Здорово
Я не волшебник я пока учусь......
T00T
Мастер
Сообщения: 742
Зарегистрирован: 16 дек 2011, 12:07
Репутация: 100
Контактная информация:

Re: ПИД-регулирование. Общие вопросы.

Сообщение T00T »

Impartial писал(а):
T00T писал(а):Двигателями управляют привода, а на них подаётся напряжение управление и это напряжение соответствует какой-то определённой скорости - следовательно физически управление идёт по скорости, расчёт траектории тоже ведётся по графику скорость/время в полярных координатах. Пид является корректирующим звеном в цепи управления по скорости нужен для того, чтобы сгладить выбросы перерегулирования, и соответственно скачки тока на двигателе, и ударные нагрузки на механику. Его параметры должны вычисляться изходя из характеристик ваших приводов и механики. Конечно есть общая обратная связь по положению - но она как результат управления по скорости. Даже если у вас шаговый двигатель - управление всё равно идёт по скорости, только у вас не напряжением, а частотой следования импульсов.
Вот видно, человек в теме.
Вот здесь
Я не волшебник я пока учусь......
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: ПИД-регулирование. Общие вопросы.

Сообщение Lexxa »

Предположим, что выход у
axis,command это скорость, что вообще было бы правильно. Почему же тогда обратная связь на пид регулятор это позишн?
:bender:
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: ПИД-регулирование. Общие вопросы.

Сообщение Lexxa »

Наверно сам себе отвечу.
Если отталкиваться от servo-period, т.е. ПИД-ЕМС считает приращение позишн за серво-период, то это действительно можно рассматривать как скорость.
В этом случае и енкодер.позишн будет всё той же скоростью.
Тогда производных никаких брать не надо всё и так нормально.

Возникает следующий вопрос тогда.
На кой нужны FFx параметры в ПИД-ЕМС регуляторе?
и тогда стало совсем неясно вот это:
http://wiki.linuxcnc.org/cgi-bin/wiki.pl?PiD
http://wiki.linuxcnc.org/cgi-bin/wiki.p ... _PID_Loops
:bender:
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: ПИД-регулирование. Общие вопросы.

Сообщение Lexxa »

То как работают производные по комманд и фидбэку
https://www.youtube.com/watch?v=wGJtxupvzEA
p.s. смотреть на 480p
:bender:
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: ПИД-регулирование. Общие вопросы.

Сообщение Nick »

Lexxa писал(а):На кой нужны FFx параметры в ПИД-ЕМС регуляторе?
Для компенсации вторичных сил - трения и инерции.
FF0 или FF1 добавляют к выходу небольшое усиление, таким образом чем выше выход => тем выше скорость => тем больше компенсация трения.
и FF1 или FF2 добавляют компанент при изменении скорости => компенсируют инерцию.
Обычно эти параметры должны быть достаточно маленькими.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: ПИД-регулирование. Общие вопросы.

Сообщение Nick »

Наконец-то посмотрел видео :).

Откуда берутся такие скачки в pid.command?

И xvel-fb, это ddt от encoder.position?
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: ПИД-регулирование. Общие вопросы.

Сообщение Lexxa »

там где скачки это ddt от axis.pos-cmd
Да, xvel-fb это ddt от encoder.position

Скачки только при смене направления, что непонятно
:bender:
Ответить

Вернуться в «Электроника»