ПИД рег

darner

✩✩✩✩✩✩✩
4 Июн 2020
2
0
Подскажите смысл следующих строк кода в ПИД регулятора Алекса
#if (PID_INTEGRAL_WINDOW > 0)
// режим интегрального окна
if (++t >= PID_INTEGRAL_WINDOW) t = 0; // перемотка t
integral -= errors[t]; // вычитаем старое
errors[t] = (float)error * _dt_s; // запоминаем в массив
integral += errors[t]; // прибавляем новое
#else
Для чего нужен этот режим интегрального окна?
 

Arhat109

★★★★✩✩✩
9 Июн 2019
473
203
Не смотрел код, но думаю что это длительность интегрирования для "И" коэффициента. Просто организовано через массив (буфер) ограниченной длины и тут идет перемотка в начало по достижению конца массива и работа с буфером.

И можно считать разными способами, если он вообще нужен. Можно накапливать "за всю историю" просто суммируя с текущей ошибкой .. способ хорош когда известно заранее что интегральная ошибка равна нулю из "других соображений" (теории). А вот когда это не факт и присутствует систематическое "косоглазие" .. правильней считать на каком-то участке измерений.. окном.
Считать можно по-разному: можно как тут или сделать "бегущее среднее" и изменять окно интегрирования к-тами усреднения .. и т.д.
 
  • Лойс +1
Реакции: Mix_man

Mix_man

✩✩✩✩✩✩✩
21 Янв 2020
91
9
@Arhat109, Блин в универе подобную информацию преподносят в каком то извращёном виде, благо хоть знакомые формулировки вспоминаются,
 

Arhat109

★★★★✩✩✩
9 Июн 2019
473
203
@Mix_man, там на самом деле все "просто":
"П" - пропорциональное управление: чем больше отклонение (ошибка) тем сильнее воздействуем дабы вернуть систему куда надо;
"И" - накопленная ошибка: чем "тормознее" система тем хуже она реагирует на локальные изменения .. т.с. "статическая" корректировка для "П";
"Д" - ошибка скорости реагирования. Опять же, чем тормознее система, тем .. ну в общем понятно. Приходится увеличивать начальное воздействие на "Д" чтобы система зашевелилась. Так сказать "пинок под зад". :)

Хуже то, что ПИД в таком виде "пихают везде", не заморачиваясь законом управления самой системы, а он далеко не везде "линеен" от "П" и может даже иметь гистерезис управления в виде "туда" - одна скорость реакции, "обратно" - иная. Вот про эти "ограничения ПИД" вообще мало где можно что-то "нарыть". Увы.

В частности, управление ДС-моторами в задаче "следование по линии" зависимость "П" от ошибки далеко не линейна и более того .. зависит от текущей скорости движения. А возможность выхода управляющего воздействия и результирующего ускорения за коэффициент трения колес о покрытия .. вообще мало где не то что "исследована", но и даже вообще поднятно как "вопрос"! ;)

Аналогично, трение судна о воду - зависимость от скорости определяет "режим движения" от ламинарного до сверхглиссирующего, в которых показатель степени(!) зависимости трения изменяется в достаточно больших пределах.. толку-то? ПИД - "наше всё" и пофиг, что "не работает" ;)

Полноценно ПИД в чистом виде можно применять только в задачах с "нагревателем", кмк.
 

AlexGyver

★★★★★★✩
Команда форума
30 Июл 2018
359
569
@darner, режим интегрального окна - один из вариантов оптимизации интегральной суммы, которая в сыром виде склонна к бесконечным накоплениям и уводу системы чёрт знает куда. Так же часто используется тупо ограничение по какому-то верхнему пределу, или в случае с нагревателем ещё и отсечение отрицательных значений, чтобы при долгом остывании до заданной температуры система не сошла с ума. PID_INTEGRAL_WINDOW по умолчанию выключен, это так, поиграться
 
  • Лойс +1
Реакции: darner и Arhat109

darner

✩✩✩✩✩✩✩
4 Июн 2020
2
0
@darner, режим интегрального окна - один из вариантов оптимизации интегральной суммы, которая в сыром виде склонна к бесконечным накоплениям и уводу системы чёрт знает куда. Так же часто используется тупо ограничение по какому-то верхнему пределу, или в случае с нагревателем ещё и отсечение отрицательных значений, чтобы при долгом остывании до заданной температуры система не сошла с ума. PID_INTEGRAL_WINDOW по умолчанию выключен, это так, поиграться
Уважаемый, AlexGyver. Дайте пожалуйста ссылки на источники данной идеи ограничения интегральной составляющей, для того-чтобы досконально разобраться. Спасибо.
 

AlexGyver

★★★★★★✩
Команда форума
30 Июл 2018
359
569
Уважаемый, AlexGyver. Дайте пожалуйста ссылки на источники данной идеи ограничения интегральной составляющей, для того-чтобы досконально разобраться. Спасибо.
к сожалению источников нет, это из личного опыта экспериментов и каких-то обрывков из статей, которые я уже не смогу найти