Страница 11 из 11
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 03 ноя 2019, 20:02
Serg
ex71 писал(а):Теперь точу детали с точностью в +/-1 сотку.
FF0 при позиционировании должно быть равно 0.
FF1=0.2 - это многовато. Это в некотором роде допустимая ошибка позиционирования.
BIAS и DEADBAND нужны в сильно специфичных случаях, в данном случае возможно такая точность из-за их использования.
Такое ощущение, что все эти параметры менялись просто методом тыка...
В халскопе параметр f-error стоит смотреть на макс. усилении - именно форма этой кривой таит в себе большинство ответов о поведении привода, собственно только на неё и стоит смотреть при настройке. И уж точно не стоит смотреть на цифры координат осей в LinuxCNC, ибо перед настройкой PID вы сами разрешили им не доезжать +/- трамвайную остановку.

И вообще переда настройкой PID рекомендуется втупить теорию хотя-бы в общих чертах, чтобы понимать что происходит, ну и внимательно почитать описание параметров настройки PID в LinuxCNC, чтобы иметь представление в каких случаях что крутить. Ну или пользовать автонастройщик at_pid, но помнить, что любой автомат более-менее нормально подберёт параметры только в простых случаях.
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 04 ноя 2019, 14:00
ex71
Да методом тыка и подбирал. Потому что детального описания какой параметр что именно меняет - не нашел. Ну кроме как-бы общего объяснения, скорее даже "перевода названия на русский".
при ff0 =0 при разгоне и торможении резко возрастает ошибка.
Если я уменьшу ff1 - тогда кривая ошибки будет повторять кривую управления. В данном случае усеченной пирамидой.
Это как раз увеличение итогового графика. Что-то в таком варианте уже ничего не сделаешь, уж очень малы значения милилметров.
Еще пара скринов в процессе подстройки.
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 04 ноя 2019, 14:23
Serg
ex71 писал(а):Это как раз увеличение итогового графика.
Теперь хорошо видно, что в конце остаётся ненулевое значение ошибки, т.е. PID не пытается её устранить - это влияние BIAS и/или DEADBAND.
Не пытайтесь крутить сразу все параметры, прежде чем переходить к очередному параметру старайтесь добиться наилучшего результата уже задействованными. Последовательность задействования параметров есть в множестве методик настройки ПИД.
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 04 ноя 2019, 14:45
ex71
На скринах нет мышки, но если посмотрите на график - там стоит точка как раз на ненулевом значении ошибки. И ее значение отображается внизу окна =>
1 тысячная миллиметра? да потому я и поставил deadband - иначе остается постоянное не нулевое управление. Потому что энкодер то на 1000им/об. При шаге 4мм по Х, вывести 0.001мм не возможно. А в итоге получается, что драйвер выдает на мотор управление и мотор гудит пытаясь дергаться в обе стороны. И тут либо я уменьшая "ref gain" на драйвере получаю неадекватное управление мотором, либо я добавляю deadband и ЧПУ успокаивается.
В моем случае bias позволил вывести значение ошибки на нуль. Он же просто добавляет константу к выходному напряжению?
Повторюсь: у меня не заводская серва. А именно связка советского щеточного мотора и уже далеко не последней модели AMC драйвера. Все настройки делал с нуля, выворачивая все крутилки в нули, и производя подстройку драйвера в нулевое управление при отсутствии управления. Есть скрин, где я убавил ток на драйвере.
Еще хотел спросить:
по этому скрину, можно судить что я достиг максимальной физической скорости перемещения?
Что именно происходит на этих скринах? Это происходит примерно в одном месте, может разъем тахогенератора цепляет - пока не знаю. Но не всегда, и по графику все же похоже что сначала падает кривая управления, а за ней уже и ошибка.
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 04 ноя 2019, 15:12
Serg
ex71 писал(а):В моем случае bias позволил вывести значение ошибки на нуль. Он же просто добавляет константу к выходному напряжению?
DEADBAND разрешает игнорить и положительную и отрицательную ошибки, а BIAS "работает" только в какую-то одну сторону, т.е. при движении в одну сторону о будет "компенсировать" ошибку, а при движении в другую - удваивать.
ex71 писал(а):по этому скрину, можно судить что я достиг максимальной физической скорости перемещения?
Скорее всего да. При настройке ПИД лучше смотреть не на PWM, а на feedback - лучше видно возможности привода. Если совсем всё плохо, то стоит попробовать уменьшить скорость/ускорение. ПИД настраивается на макс. скорости рабочей подачи, на макс. скорости холостых перемещений точно следовать траектории не требуется.
ex71 писал(а):Что именно происходит на этих скринах? Это происходит примерно в одном месте, может разъем тахогенератора цепляет - пока не знаю.
Весьма похоже на механическую проблему - что-то "закусывает" или ненадёжно контачащий разъём шевелят...
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 05 ноя 2019, 04:45
Duhas
UAVpilot писал(а):
FF0 при позиционировании должно быть равно 0.
Почему, если не секрет?
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 05 ноя 2019, 14:56
Serg
Duhas писал(а):Почему, если не секрет?
Это значение (задание * FF0) просто будет добавлено к заданию. В данном случае при поступлении задания "передвинутся в позицию NNN" ПИД будет упорно пытаться ехать в позицию NNN+(NNN*FF0).
Этот параметр имеет смысл разве что при управлении скоростью, например шпинделя.
Для осознания влияния разных параметров на поведение ПИД рекомендую пользовать "шпаргалку" из исходников компонента pid.comp, ну и собственно теорию ПИД.
Код: Выделить всё
The three most important pins are 'command', 'feedback', and
'output'. For a position loop, 'command' and 'feedback' are
in position units. For a linear axis, this could be inches,
mm, metres, or whatever is relavent. Likewise, for a angular
axis, it could be degrees, radians, etc. The units of the
'output' pin represent the change needed to make the feedback
match the command. As such, for a position loop 'Output' is
a velocity, in inches/sec, mm/sec, degrees/sec, etc.
Each loop has several other pins as well. 'error' is equal to
'command' minus 'feedback'. 'enable' is a bit that enables
the loop. If 'enable' is false, all integrators are reset,
and the output is forced to zero. If 'enable' is true, the
loop operates normally.
The PID gains, limits, and other 'tunable' features of the
loop are implemented as parameters. These are as follows:
Pgain Proportional gain
Igain Integral gain
Dgain Derivative gain
bias Constant offset on output
FF0 Zeroth order Feedforward gain
FF1 First order Feedforward gain
FF2 Second order Feedforward gain
deadband Amount of error that will be ignored
maxerror Limit on error
maxerrorI Limit on error integrator
maxerrorD Limit on error differentiator
maxcmdD Limit on command differentiator
maxcmdDD Limit on command 2nd derivative
maxoutput Limit on output value
All of the limits (max____) are implemented such that if the
parameter value is zero, there is no limit.
A number of internal values which may be useful for testing
and tuning are also available as parameters. To avoid cluttering
the parameter list, these are only exported if "debug=1" is
specified on the insmod command line.
errorI Integral of error
errorD Derivative of error
commandD Derivative of the command
commandDD 2nd derivative of the command
The PID loop calculations are as follows (see the code for
all the nitty gritty details):
error = command - feedback
if ( abs(error) < deadband ) then error = 0
limit error to +/- maxerror
errorI += error * period
limit errorI to +/- maxerrorI
errorD = (error - previouserror) / period
limit errorD to +/- maxerrorD
commandD = (command - previouscommand) / period
limit commandD to +/- maxcmdD
commandDD = (commandD - previouscommandD) / period
limit commandDD to +/- maxcmdDD
output = bias + error * Pgain + errorI * Igain +
errorD * Dgain + command * FF0 + commandD * FF1 +
commandDD * FF2
limit output to +/- maxoutput
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 07 ноя 2019, 07:39
Duhas
UAVpilot писал(а):Duhas писал(а):Почему, если не секрет?
Это значение (задание * FF0) просто будет добавлено к заданию.
Спасибо, согласен, то о чем я думал для LCNC будет FF1