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

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

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

Сообщение Lexxa »

У меня, Hunter и NightV ситуация с ПИД одинаковая. У всех нас поддержанием и заданной скорости, и заданного момента занимается серва.
У нас два контура ПИД должны быть для управления одной осью, а точнее три.
Два из них упакованы в сервопривод - поддержание заданной скорости (задает ЕМС) и поддержание заданного момента (задает производитель привода).
Третий контур это положение. ПИД цикл в нашем случае должен знать следующее:
1) как скоро двигатель сможет вывести стол станка или каретку на заданную скорость.
2) как скоро двигатель сможет остановить движущийся узел
Т.е. ЧПУ должна следить за координатами и с учетом этих факторов менять Uзадания привода.
Т.е. режим PID в ЕМС2 у нас будет скорость-положение. Верно?
:bender:
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

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

Сообщение Lexxa »

FF0 = 0 ( HAL ) Коэффициент прямой передачи нулевого порядка. На это число умножается задание (pid.N.command), а результат добавляется к напряжению задания привода. Единица измерения коэффициента FF0 - Вольт на единицу измерения станка, т.е. В/Ед. Обычно FF0 используется в pid регуляторах управляющих скоростью. FF0 позволяет компенсировать силы трения и обратную ЭДС двигателя.

FF1 = 0 ( HAL ) прямой передачи первого порядка. На это число умножается изменение задания (pid.N.command) за секунду. Результат добавляется к напряжению задания привода. Единица измерения коэффициента FF1 - вольт на единицу измерения станка за секунду, т.е. В/(Ед*с). При управлении положением то же, что и FF0 для скорости, при управлении скоростью позволяет компенсировать силы инерции.
Кстати отключить ПИД в ЕМС2 мне сейчас кажется не такой уж и плохой идеей.
Что-то мне говорит. что всё значительно проще. Может быть нам настраивать нужно не P, не I и не D коэффициенты, а
FF0 и FF1, и установить P=I=D=0?
За координатами ЕМС в любом случае следит, зачем возлагать работу по поддержанию скорости и момента на комп, пусть этим занимается сервопривод. Он в конце концов сделан для этого.

Теория подтверждается http://cnc-club.ru/forum/viewtopic.php? ... =40#p13851
:bender:
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

Мне кажется, что у NightV P I D не равны 0. Да, FF1 помогает на остановках, чтобы компенсировать инерцию но и остальные параметры обязательны.
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

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

Сообщение Lexxa »

Не обязательны. Я посмотрел исходник PID. Установив P, I, D в нули мы оставим только коэффициенты, описывающие механику станка, а все моменты и скорости будет разруливать сервопривод.
У NightV P I D не нули. но он без них и не пробовал.
:bender:
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

Хотя да, если мы в EMC2 управляем скоростью, то можно сделать FF0 = 1 и тогда как будто нет PID, чтобы компенсировать инерцию можно добавить FF1, но вообще все это может сделать сама серва. Т.е. PID вообще не нужен, можно на серву выдать задание по скорости, получить с нее feedback и на этом остановиться. Тогда никакого PID не надо.
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

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

Сообщение Lexxa »

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

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

Сообщение Nick »

Ну через энкодер, или что там у нее есть?
Аватара пользователя
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 »

А это не важно, внутри emc2 можно преобразовать скорость в положение и обратно. Но лучше, чтобы с сервы в качетсве обратной связи шло положение, а не скорость, чтобы накопленная ошибка не росла.
Фидбэк нужен для планировщика траекторий и слежения за траекторией.
Аватара пользователя
NightV
Почётный участник
Почётный участник
Сообщения: 6610
Зарегистрирован: 30 дек 2011, 09:14
Репутация: 2279
Настоящее имя: Владимир Айрапетян
Откуда: Israel
Контактная информация:

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

Сообщение NightV »

чет у меня при ПИД по нулям полная фигня получилась :)
от FF1 стало зависеть "сколько" переместиться :shock: тоесть инпут_скэйл ему стал до лампочки кажись :D да и при значении FF1 0.1 рванул с места как подорваный см на 10-15 хотя я сказал 10мм :hehehe:
Всё просто! если знаешь КАК!
Аватара пользователя
NightV
Почётный участник
Почётный участник
Сообщения: 6610
Зарегистрирован: 30 дек 2011, 09:14
Репутация: 2279
Настоящее имя: Владимир Айрапетян
Откуда: Israel
Контактная информация:

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

Сообщение NightV »

кстате и ferror стал постоянным... почти не реагирует на перемещения... зато со сначением -53.ххх :hehehe:
Всё просто! если знаешь КАК!
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

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

Сообщение Lexxa »

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

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

Сообщение Lexxa »

интересно
а FF0 тоже нулем оставил?
:bender:
Аватара пользователя
NightV
Почётный участник
Почётный участник
Сообщения: 6610
Зарегистрирован: 30 дек 2011, 09:14
Репутация: 2279
Настоящее имя: Владимир Айрапетян
Откуда: Israel
Контактная информация:

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

Сообщение NightV »

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

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

Сообщение Lexxa »

ща формулу скину из исходника, пару минут.
:bender:
Impartial
Мастер
Сообщения: 953
Зарегистрирован: 23 фев 2011, 01:50
Репутация: 36
Контактная информация:

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

Сообщение Impartial »

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

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

Сообщение Lexxa »

Код: Выделить всё

    
   if (enable != 0) {
	/* calculate the output value */
	tmp1 =
	    *(pid->bias) + *(pid->pgain) * tmp1 + *(pid->igain) * *(pid->error_i) +
	    *(pid->dgain) * *(pid->error_d);
	tmp1 += command * *(pid->ff0gain) + *(pid->cmd_d) * *(pid->ff1gain) +
	    *(pid->cmd_dd) * *(pid->ff2gain);
	/* apply output limits */
	if (*(pid->maxoutput) != 0.0) {
	    if (tmp1 > *(pid->maxoutput)) {
		tmp1 = *(pid->maxoutput);
		pid->limit_state = 1.0;
	    } else if (tmp1 < -*(pid->maxoutput)) {
		tmp1 = -*(pid->maxoutput);
		pid->limit_state = -1.0;
	    } else {
		pid->limit_state = 0.0;
	    }
	}
    } else {
	/* not enabled, force output to zero */
	tmp1 = 0.0;
	pid->limit_state = 0.0;
    }
:bender:
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

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

Сообщение Lexxa »

tmp1 += command * *(pid->ff0gain) + *(pid->cmd_d) * *(pid->ff1gain) + *(pid->cmd_dd) * *(pid->ff2gain);
Надо бы разобрать их влияние на физику перемещений
:bender:
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

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

Сообщение Lexxa »

NightV, поэкспериментируй, вот что говорит wiki http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?PiD
FF0 would let you pre-program the speed/voltage factor in, then the P, I and D terms be small modifiers to that, so the gains can be lower, and the loop stability higher.
По-русски: FF0 позволит вам запрограммировать коэффициент Скорость/напряжение. Тогда прапорциональный, интегральный и дифференциальный компоненты будут мало влиять на него так, что усиление станет меньше, а стабильность регулирования выше.
Только значения мелкие поставь, 0,01 или даже 0,001


Пином pid.N.output является Uзадания на привод. Привод обеспечивает и заданную скорость и заданный момент используя свою обратную связь, которую в общем случае мы использовать не можем. Поэтому мы используем энкодера. Вообще похоже, потому что

Код: Выделить всё

net xpos-cmd    axis.0.motor-pos-cmd   => pid.x.command
net xpos-fb               <=  hm2_5i20.0.encoder.01.position
net xpos-fb               =>  pid.x.feedback
net xpos-fb               =>  axis.0.motor-pos-fb
:bender:
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

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

Сообщение Lexxa »

кстати, тот кто писал мануал по серве накосячил с размерностями.
FF0 - В/ед.ст. - правильно, вольт за единцу станка. The units on the FF0 gain are volts per machine unit.
FF1 = В/(ед.ст*сек) - неправильно, должно быть - В/(ед.ст/сек). поскольку там написано Вольт за единицу станка за секунду . The units on the FF1 gain are volts per machine unit per second.
FF2 = В/(ед.ст*сек^2) - неправильно, должно быть - В/(ед.ст/сек^2). поскольку там написано Вольт за единицу станка за секунду за секунду. The units on the FF2 gain are volts per machine unit per second per second.
И, вообще говоря, все же ПИДом с сервоприводом со встроенным ПИДом регулируем мы скорость, а не положение. Поскольку привод выполняет функцию Скорость от напряжения задания.
:bender:
Ответить

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