avatar_Бандерівець

ПИД-Регулятор

Автор Бандерівець, 29-10-2011, 13:19:10

Попередня тема - Наступна тема

0 Користувачі і 1 Гість дивляться цю тему.

GrOV

#15
В догонку: - способ подбора оптимальных ПИД коэфициентов вручную ( из документации на приборы "ОВЕН")


[attach=1][attach=2]

Начинать с пункта 3...
Может быть полезным для настройки как заводских приборов, так и самодельных ПИД регуляторов.
Мозги даны каждому..Не все читали инструкцию по эксплуатации..

Игорь

#16
Для причесывания своих мыслей, выложу мое видение ПИД-регулирования в нашем приложении, скажем, для управления отбором по температуре в нижней части насадки.

Основная мысль - мы не должны сами устанавливать коэффициент пропорциональности и постоянные времени. Микроконтроллер на борту вполне в силах сделать это за нас.

Исходные данные и логика управления.
1. Система отбора должна обеспечивать максимальный отбор (мл/час) примерно в 2 раза больше подводимой мощности в ваттах, то есть, если рабочая мощность 1400 кВт - 2800 мл/час, если 1700 ватт - 3500 мл/час. Этот отбор должен поддерживаться при полностью открытом клапане за счет подобранного диаметра иглы на трубке отбора и высоты ее расположения.
2. Мы открываем клапан 1000 раз в час (раз в 3.6 секунды) на время, которое мы можем изменять от нуля до максимума (3,6 сек). Весь диапазон отбора у нас разделен на 256 ступенек - от 0 до 255. Задача системы управления - в любой момент времени вычислять и устанавливать правильное значение времени открытого состояния клапана.
3. Мы определяем температуру, которая устанавливается внизу насадки при работе колонны на себя и задаем превышение, которое хотим поддерживать во время ректификации.
Скажем, при работе на себя установилось 77.5 градуса, мы разрешаем вести отбор с такой скоростью, чтобы температура в этой точке выросла на 0,2 градуса, то есть составляла 77.7. Не больше, иначе страдает качество, но и не меньше, иначе страдаеи производительность.

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

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


Guests are not allowed to view images in posts, please Register or Login


Наша система входит в колебательный режим, периодически включаясь и выключаясь, а температура выписывает кривую, похожую на искаженную синусоиду.
В момент второго  "стопа" начинаем отсчет времени и снимаем два параметра - период tc (время между вторым и третьим стопами, и "разлет"  А (разницу между максимальной и минимальной температурами).

Получив эти два параметра, мы останавливаем отбор и даем колонне поработать на себя минут 10-20-30, меняем емкость и готовимся к отбору тела.

А тем временем контроллер определит параметры ПИД.

Коэффициент пропорциональности получим исходя из значения максимального "разлета" температур А.
Кп= 0,55/А
Пропорциональная составляющая должна захотеть установить полный отбор если температура не доходит до заданной на  А / 0,55 градусов.

Постоянную времени интегрирования примем равной половине от значения периода Tc.
Постоянную времени дифференциования примем равной 0,12 от значения периода Tc.

Для дифференцирования введем переменную D, в которой будет накапливаться значение ошибки.

Величина отбора в каждом его цикле будет определяться как алгебраическая (с учетом знака) сумма трех параметров - П, И и Д с ограничением - сумма должна находиться в вилке от 0 до 255 и ограничиваться крайними значениями в случае выхода за эти пределы.

Кроме того, накопленное значение ошибки тоже должно быть ограничено каким-то, пока неясным для меня значением. Псть пока будет от -5 до + 5 градусов. Значение взято с потолка

Перед началом каждого цикла отбора (раз в 3.6 секунды) мы выполняем следующие манипуляции.
   - измеряем температуру в насадке, отнимаем из полученного значение заданную температуру (77.7 градуса). получаем значение ошибки и запоминаем его под именем D.
.....
продолжу завтра
Віриш ти в Бога чи ні, йому байдуже.
Важливо, щоб Бог в тебе вірив, а не навпаки.

Borbos

   Игорь,не понимаю твоего пристрастия к постоянно щелкающему клапану.Ты уже перепробовал десятки клапанов и все не выдерживают.И новые клапана рано или поздно начнут давать сбои ИМХО.В таком режиме сможет работать только специально заточенный под это клапан.Например автомобильная бензиновая форсунка выдерживающая миллионы срабатываний,  но к сожалению она не из н/ж.
    Наверно более правильно использовать для регулировки шаговый двигатель с регулировочной иглой. chelovechik использовал автомобильный РХХ.Очень удачное решение ИМХО.
   Алгоритм управления простой:чем дольше температура не вернулась обратно=>тем на меньшее количество шагов подымется игла.Да и программа не сложней чем для клапана.
[attach=1]
ɐwʎ ɔ vǝmоɔ dиw

chelovechik

Скоро будет новая версия клапана дозировки!

Borbos

Цитата: chelovechik від 28-03-2012, 23:02:05
Скоро будет новая версия клапана дозировки!
В режиме ПИД?
ɐwʎ ɔ vǝmоɔ dиw

chelovechik

Цитата: Borbos від 28-03-2012, 23:09:24
Цитата: chelovechik від 28-03-2012, 23:02:05
Скоро будет новая версия клапана дозировки!
В режиме ПИД?
С шаговиком! но по другому выглядет.

Игорь

Borbos, Новый клапан - прямого действия, как и форсуночный. он будет нормально работать долго. За это я не переживаю.

А насчет надежности... почему ты считаешь, что сервопривод с мильёном шестереок, с электродвигателем, с иглой, которая при  каждом полном останове царапаетсчя о седло, с сальником, который норовит пропустить спирт, будет работать надежней, чем солеоид с единственой пружинкой?

Да и в этой ветке я не об этом... Я о самом принципе ПИД-управления, и неважно чем он управляет - углом поворота вентиля, или длительностью открытого состояния клапана.
Віриш ти в Бога чи ні, йому байдуже.
Важливо, щоб Бог в тебе вірив, а не навпаки.

chelovechik

Прикол в том что в процессе ректификации , за один полный цикл отбора голов и отжим тела до нуля, шаговик делает 610  шагов, 250 в режиме позиционирования, 170 отбор голов, 95 отбор тела, и 95 в момент отжима тела до нуля, При этом нигде в дозирующем узле не происходит трения с выработкой. Хотя это не важно!!!  Я думаю сложно сказать что хорошо и что плохо, каждому своё! Но это отдельная тема, к ПИД-у не имеет значения. А что касается клапанов с пружинками, знаю найдутся те у которых хоть раз в жизни залипал клапан и вся срань шуровала в основной продукт. Уж очень должен клапан быть качественный!

Игорь

Клапана залипают у тех, кто часами держит их под напругой в открытом состоянии. При ШИМ-управлении этого нет. Те клапана, что я купил сейчас, уж точно не залипнут :)

Я объясню свою личную приверженность ШИМ управлению клапаном и свое личное категорическое отрицание иголчатых клапанов с приводом и без такового для управления потоком спирта.

Не знаю у кого - как, а мне для установки отбора на уровне 2,5 литра  в час (при полностью открытом клапане) понадобилось искать иглу с Двн примерно 0,8 мм. Площадь сечения протока спирта - 0,5 мм2. Подозреваю, что для такого-же отбора открытое сечение игольчатого клапана должно быть примерно на том-же уровне. Чтобы сделать отбор для отбора голов  раз в 20 меньше, есть два варианта - или открывать клапан на секунду каждые 20 секунд, или уменьшить площадь сечения в игле или в кране грубо говоря в 20 раз - до сечения 0,025 мм2. Для такого сечения мне нужно было бы искать иглу Двн 0,18 мм.
На мой взгляд, добиться надежной повторяемости для таких малых значений открытого сечения невозможно. Малейший люфт будет изменять отбор в разы. То есть, одному и тому-же положению клапана каждый раз, после каждого поаоротика, будут соответствовать разные значения отбора.
Кроме того, если в ШИМ- варианте с клапаном существует достаточно четкая линейная зависимость отбора от времени открытого состояния клапана, то в игольчатом кране это весьма проблематично - угол поворота и поток спирта связаны нелинейно  "неповторябельно".
Что это дает? Если контроллер вычислит, чтонадо уменьшить отбор на 12%, он просто на 12 процентов снизит время открытого состояния клапана. А что делать с игольчатым клапаном? Как контроллеру посчитать сколько шагов должен сделать шаговик чтобы отбор изменился на определенную величину?
Я не вижу ответов на этот вопрос.

Блин, вспомнилась мне моя система с "лифтом", винтовым подъемником который по сигналам с ЛПТ-порта тягал вверх- вниз иглу на трубке отбора...
Там я реализовал ПИ-регулирование, сам не зная, что оно так называется :)
Но потом нашел неплохие (в то время) клапана Херцог и со вдохом облегчения разобрал лифт. Уж слишком громко жужжал моторчик от шуруповерта, который крутил метровую шпильку М8....
Віриш ти в Бога чи ні, йому байдуже.
Важливо, щоб Бог в тебе вірив, а не навпаки.

Олежище

#24
Игорь, традиционно все доходчиво и правильно. В ПИД регулировании жидкостного отбора лично меня смущают такие вещи:
- разрешающая способность датчика температуры 18б20 1/16 градса т.е. 2 десятых о которых ты пишешь это всего три с небольшим ступеньки, что мне кажется, довольно мало. И будет сложновато построить регулирование по этим ступенькам. Возможно придется менять датчики.
- для получения точности 1/16 градуса, время преобразования 18б20 0,75секунды (или очень близко к этому). При периоде регулирования 3,6с, думаю маловато будет.
Дальше все без проблем. Единственное что я считаю, что период ШИМа должен выбирать исходя из значения tc (график от Игоря), и вполне возможно, что значение 3-4 секунды это оптимально. Коэффициенты вычисленные на основе реакции на единичное воздействие, как правило достаточно точны, но не оптимальны и почти всегда требуют небольшого уточнения и
коррекции. Но учитывая особенности применения в нашем деле, подкорректировать способна программа МК.
А что реле щелкает, так и пусть оно железное :)
Мне вот в руки попалась довольно большая 12В релюха из серии КНЕ, думаю если между ЭМ и хреновиной которую он притягивает вставить силиконовую трубочку, то пусть пережимает. На след. неделе попробую. А в спортивной поплавочной ловле без мелких силиконовых трубочек никак, так что у меня их, как выяснилось, изрядный запас  ;)

Игорь

Цитата: Олежище від 29-03-2012, 01:57:25
лично меня смущают такие вещи:
- разрешающая способность датчика температуры 18б20 1/16 градса т.е. 2 десятых о которых ты пишешь это всего три с небольшим ступеньки, что мне кажется, довольно мало. И будет сложновато построить регулирование по этим ступенькам. Возможно придется менять датчики.
Сейчас я управляю старт-стопом, то ест позиционным способом, корректируя отбор по тупому принципу.

Зашкалило - останови отбор и считай время. Если  через минуту отбор не остановился, сдвинься на 1/10 в сторону уменьшения отбора.  Если темпратура не вернулась через 4 минуты - сдвинь отбор вниз еще на 1/10. Если возврата нет 10 минут, суши весла. Это конец.
В принципе, такой способ дает возможность четко управлять процессом не задумываясь о ПИД, Графики ты видел... но... Наличие простоев заставляет задуматься о том, что их отсутствие дало бы возможность повысить производительность... процентов на 10....

блин, зачем мне это надо? Чтобы процесс завершился не за час до моего прихода с работы, а за полтора? И сэкономил мне 12 копеек электроэнергии на 12 литров спирта?

ладно, буду считать, что борюсь за идею :)

Опишу еще один алгоритм. Он почти пропорциональный, но не совсем. Я его делал на аналоговых элементах, максимальный отбор управлялся ШИМом и устанавливался вручную. Задавался допустимый порог - разрешался рост температуры на оператором выбранную величину от 0,05 до 0,2 градуса. Если температура поднималась выше порога, отбор не останавливался, а снижался вдвое.
При этом были возможны три варианта.
1. Новый отбор стал недостаточным, и температура поползла вниз. Тогда при пересечении порога отбор снова запускается на заранее установленном уровне.
2. Новый отбор оказался почти оптимальным, тогда продолжает поддерживаться половинный отбор.
3. Новый отбор, хоть и уменьшен вдвое, все-же оказался избыточным, и температура ыползла на 1/10 выше порога. Только тогда отрабатывает "стоп", а если несмотря на останов отбора температура продолжает расти, еще через 1/10 градуса начинается писк, и если он продолжается больше 3 минут, система дает сигнал для прекращения работы.

Наверное есть смысл подумать не о ПИД контроле, а о чем-то экзотическом...
А в принципе, надо просто собирать схему с 1-wire и с выходом на клапан, и пробовать мильён разных кодов...
Или вообще можно детство вспомнить - датчик у ком-порт, клапан - в ЛПТ, и вперед, кодить на вижлбейсике. заодно и графики для наглядности... А как родится достойный алгоритм - переписать его под АВР... Надо подумать
Цитата
- для получения точности 1/16 градуса, время преобразования 18б20 0,75секунды (или очень близко к этому). При периоде регулирования 3,6с, думаю маловато будет.
Чего? Даже одного замера за период хватит. Но надо делать три и считать среднее арифметическое. Я уже сталкивался с этим еще на вижлбейсике.
.... Кстати, у меня есть логи "релейного" режима при отборе больше 2 литров в час. Утром посмотрю какие там можно сделать выводы и по начальному скачку, т по прочим методикам.
Кстати, судя по инерционности наших систем, дифференциальую компоненту можно исключить, я думаю. Нет у нас резких воздействий. Хотя, если для перехода с ПИ на ПИД и обратно надо сменить пару строк в программе, можно опробовать любые варианты, которые здравый смысл не отметет как утопичные Да и утопичные можно пощупать :)
Віриш ти в Бога чи ні, йому байдуже.
Важливо, щоб Бог в тебе вірив, а не навпаки.

chelovechik

Цитата: Игорь від 29-03-2012, 01:42:41То есть, одному и тому-же положению клапана каждый раз, после каждого поаоротика, будут соответствовать разные значения отбора.
Тут как раз ты глубоко ошибаешься!  Повторяемость 100%!

Цитата: Игорь від 29-03-2012, 01:42:41угол поворота и поток спирта связаны нелинейно

Так и не надо. Мы просто калибруем скорость отбора голов, и максимальную скорость отбора тела. А в процессе работы (по Дельте) автоматика сама начнёт плавно снижать скорость!


Цитата: Игорь від 29-03-2012, 01:42:41Как контроллеру посчитать сколько шагов должен сделать шаговик чтобы отбор изменился на определенную величину?

Та не надо ничего считать! Делаем шаг и смотрим Дельту ....

Система рабочая!!! И справляется на ура!!!!

Пора уже перенести обсуждение в застольное поле :D :D :D :D .

Олежище

Цитата: Игорь від 29-03-2012, 03:00:24ладно, буду считать, что борюсь за идею
Так ведь я тоже ПИ управление на клапан сделаю и на отбор по пару(это после переделки дефлегматора). Можно и старт стопом обойтись, ну ведь скучно же :) И опять таки за идею.....

Spoiler

Цитата: chelovechik від 29-03-2012, 08:15:24Пора уже перенести обсуждение в застольное поле
Хорошо вам :) А я весной, к сожалению, на встречу не смогу попасть  :'(
[close]

Игорь

#28
По просьбе Вовы продолжу излагать свои, пока еще непричесанные, мысли.

Пока табуретки не кидайте, ничего еще не поверено, есть ошибки, я их правлю. Когда закончу - уберу этот синий текст. Я напутал в знаке ошибки - в том, что из чего вычитать.

Итак, отбор может быть задан от нулевого до максимального, ограниченного на каком-то уровне (скажем, 3 литра в час для колонны д.50 или 2 литра в час для колонны д.40), с шагом 1/256.
То есть, отбору "0" будет соответствовать отбор 0 мл/час, а отбору "255" - 2 или 3 литра в час.

Величина отбора ( от 0 до 255) определяется как сумма трёх слагаемых - П, И и Д. Если эта сумма окажется больше, чем 255, мы ограничим ее значением 255. Если она окажется меньше нуля, установим "ноль".

П -  это пропорциональная составляющая. Ее величина задается в зависимости от отклонения текущей температуры от заданной.
ПКп х (Тзад - Тфакт)
П может принимать как положительные значения (пока температура не доползла до заданного значения), так и отрицательные, когда произошел "залёт" температуры.
Значение коэффициента пропорциональности Кп система определит сама на этапе автонастройки при каждом новом пуске. Возможно есть смысл делать эту настройку только один раз, или время от времени, а результат запоминать в ЕЕПРОМ (или как там оно называется?). Это уже детали.

И - это интегральная составляющая. Пару слов о том, зачем она нужна...
Мы ставим перед собой задачу непрерывно устанавливать такое значение отбора, при котором температура в какой-то точке насадки будет поддерживаться на 1-2-3-5 десятых больше, чем при работе "на себя". С помощью одной только пропорцилнальной составляющей решить эту задачу невозможно.
Посмотри формулу - чему равно П. Когда фактическая температура равна заданной, пропорциональная составляющея становится равной нулю. Для того, чтобы отбор был не нулевым, температура не должна доходить до заданной на какую-то величину, которую называют статической ошибкой.
Задача интегральной составляющей - вытеснение пропорциональной составляющей и постепенное приведение ее к нулю. Именно интегральная составляющая определяет тот отбор, при котором фактическая температура равна заданной, а ошибка и пропорциональная составляющая равны нулю.

Для вычисления интегральной составляющей нам надо суммировать и накапливать значение ошибки, ограничивая сумму сверху и снизу какими-то значениями. Какими именно - разберемся потом, чтобы пока не вдаваться в детали.
Для накопления ошибки, мы будем при каждом замере вычислять ошибку и прибавлять ее к уже накопленному значению. Пусть накопленное значение ошибки называется "О".
Тогда при каждом замере делаем такую манипуляцию.
О = О + Тзад - Тфакт.
Если О > максимума, О= максимум
Если О < минимума,  О= минимум

Обращаю внимание на то, что накопленная ошибка увеличивается если фактическая температура меньше заданной, и уменьшается когда фактическая температура больше заданной.
Определив накапливаемую ошибку, мы без проблем вычисляем интегральную составляющую.
И = Ки х О
Коэффициент интегрирования Ки определим при автонастройке.

Д - это дифференциальная составляющая. Она играет роль амортизатора, и не дает системе делать резких телодвижений. Она анилизирует как изменилась температура с прошлого замера и дает поправку, замедляющую развитие такого изменения. При этом значение заданной температуры в расчет не берется.
Д = Кд х (Тфакт предыдущая - Тфакт нынешняя )
Независимо от положения фактической температуры относительно заданной, дифференциальная составляющая попытается уменьшить отбор если температура растет, или увеличит его если она падает. Причем чем быстрее изменяется температура, тем сильнее будет противодействие этому изменению. Кто пытался руками тягать автомобильный амортизатор, тот понимает о чем я пишу.
Коэффициент дифференцирования Кдопределим при автонастройке.

Получив эти три значения, мы суммируем их и получаем значение для настройки ШИМ клапана, или угла открытия шаговика.

ШИМ = П + И + Д

Если ШИМ < 0 , ШИМ = 0
Если ШИМ > 255 , ШИМ = 255

Это я написал на языке, который мне кажется русским.
А теперь повторю то же самое на языке , который кажется мне Си.
Простите за кирилицу в названиях переменных - это я для параллелей с русскоязычным текстом.

typedef struct
{
  double Тфакт  предыдущее;        // Предыдущее значение температуры
  double О             // Накопитель ошибки
  double Омакс, Омин;        // Mинимум и максимум накопителя
  double    Ки,        // Коэффициент интегрирования
            Кп,        // Коэффициент пропорциональности
             Кд;         // Коэффициент дифференцирования
} SPid;
double UpdatePID(SPid * ШИМ, double Tфакт, double Tзад)  // Сюда нужно передать значение текущей температуры и заданной,  и отсюда забрать посчитанное значение ШИМ
{
  double П, Д, И;

  П = pid->Кп* (Тзад - Тфакт);    // Вычисление пропорциональной составляющей
  pid->O += Тзад - Тфакт;          // Пополнение накопителя ошибки

  if (pid->О > pid->Омакс)    // две проверки на минимум-максимум
      pid->О = pid->Омакс;     
  else if (pid->О < pid->Омин)
      pid->О = pid->Омин;
  И = pid->Ки * О;    // Вычисление интегральной составляющей
  Д = pid->Кд* ( pid->Тфакт предыдущее - Тфакт); // Вычисление дифференциальной составляющей
  pid->Тфакт предыдущее = Тфакт;
  return (П + И - Д);





Это была поэзия. Пора вернуться к прозе жизни

Для начала - пару положений, но которые я буду опираться.
1. Система весьма инерционна, и - возможно - дифференциальная составляющая не понадобится. Но пусть будет, в крайнем случае установим Кд=0.
2. Та-же инерционность системы пзволяет делать корректировку отбора не очень часто - скажем, раз в 15 секунд. Или раз в 5 циклов отбора - это раз в 18 секунд.
3. Это уже по опыту написания подобных программ.
Температура измеряется с дикретностью 1/16 градуса, и, переходя от значения к значению иногда делает несколько прыжков на один дискрет вверх-вниз. При этом, если делать однократные замеры температуры, можно получить рост температуры, тогда как на самом деле наблюдается ее падения.
Чтобы исключить влияние этого эффекта, нужно брать для расчетов не измеренное только что значение температуры, а несколько (десяток?) значений и вычислять их среднее значение.
Кроме того, редко, но бывает - при каком-то сбое датчик кратковременно выдает ноль или 85 градусов.
Контроллер легко устранит такие помехи, если отбросит от десятка измеренных значений те, которые отличаются от предыдущего значения на пару градусов.

Продолжаю прозу.
Я о стартовом режиме автонастройки. его нужно пробовать выполнить разными методами, но пока я остановлюсь на "старт-стопном" методе. - том, что я описывал прошлый раз. Только забудь то, что я писал прошлый раз...


Итак, колонна работает на себя, стабилизируется некоторая температура, и мы запускаем полный отбор, установив "стоп " на 2-3-5 десятых выше установившегося значения. Через некоторое время температура пересечет порог и отбор остановится. при этом температура поползет вниз и полный отбор остановится. Во время второго "стопа" начинаем отсчет времени и ежесекундно засекаем температуры, фиксируя максимальное и минимальное значение. Когда поизойдет третий "стоп", отсчет времени и контроль температур останавливаем.

Разность между минимальной и максимальной температурами (Р) - основа для вычисления Кп.
Эту разность мы делим на 2, то есть экономим кучу памяти, организуя сдвиг. Это значение будет зоной пропорциональности. Если температура ниже заданной на Р х 0.55, П должно быть равным 255, если температура равна заданной, П должно быть равным нулю.

-- продолжу в субботу. --
Віриш ти в Бога чи ні, йому байдуже.
Важливо, щоб Бог в тебе вірив, а не навпаки.

Игорь

#29
Цитата: chelovechik від 29-03-2012, 08:15:24Та не надо ничего считать! Делаем шаг и смотрим Дельту ....

Система рабочая!!! И справляется на ура!!!!
То есть, ты хочешь вводить коррекцию только по факту положительности или отрицательности дельты - на шаг в одну или другую сторону, не учитывая ни фактического значения дельты (то есть на сколько сейчас температура выше или ниже заданной), ни того, сколько времени дельта имеет этот знак, ни скорости, с которой дельта в данный момент изменяется?
Я уже ходил этим путем. До, оно работает, но совсем не на "ура".
Шишки, набитые на таком управлении, и повели меня - сантехника по пути ПИД.
Еще управляя клапаном через ЛПТ-порт, я пытался управлять по тому-же принципу. Темпкипер рисовал графики, и это был ужас, а не управление. намного хуже тупого старт-стопа.
Я задавал ШИМ клапана и смотрел разницу между заданием и фактической температурой.
Если "недолет", увеличивал отбор на какой-то процент (процент изменения менял, подбирая режим). Если "перелет" - уменьшал отбор. То есть, технически это никак не отличалось от твоей задумки. Ничего хорошего не получилось. Я назвал такой способ управления слепым и тупым. Представь, температура камнем падает, за последнюю секунду упала на градус, но не дошла до порога на волосок. А регулятор видин, что температура выше и тупо уменьшает отбор, хотя давно уже надо его увеличивать. Или по крайней мене прекратить уменьшать.

Разобравшись потом глубже, я понял, что такой способ управления - это упрощенный И - регулятор. То есть из П-И-Д используется только И. Только  приращение зависит не от знака и  величины ошибки, а только от знака. Такой регулятор может вывести регулятор  на установленное значение, но это будет происходить очень долго,и только в случае если шаг управления и дискретность изменения оптимальны, а режим гладкий. Иначе пойдет раскачка.

Я бы сравнил такое управление с управлением автомобилем, который раегирует на изменение нажатия педали газа с 5-минутным запаздыванием, а задача - поддердивать ровную скорость.
На старте будет проблема - ты долго будешь жать педать, а нифига... А потом пошла-пошла-полетела... С перепугу ты бросишь педаль газа .... нет, не бросишь, а начнешь раз в секунду почуть-чуть отпускать, и пока дойдешь до нуля, машина разгонится еще больше. А потом скорость начнет снижаться, и тут бы при подходе к норме дать газку, но твоя система этого не умеет - она честно не нажмет на увеличение пока скорость не станет ниже нормы, и только тут начнет по капельке давить педаль... и снова задержка 5 минут... успеешь остановиться, и все по новой.
Допустим, каким-то чудом ты преодолеешь эту раскачку. На ровном прямом шоссе все будет окей, скорость постепенно выровняется... А как только дорога пойдет в гору, бензина резко не хватит и машина заглохнет. А стоило при начале падения скорости резко дать газу, все было бы получше, но даже при таком управлении  задержка реакции (ее называют транспортной задержкой) сыграет плохую роль.
Не меньшие проблемы будут если дорога пойдет с горы. Но логике надо было бы сбросить газ и идти накатом, а твоё управление начнет по грамму снижать подачу бензина... Не разобьешься, долетев до низу? :)

Спасибо всем, что помогли освежить в памяти то, что с 2008-2009 года успело поистереться из памяти.
Завтра подкорректирую то, что написано под синим комментарием чуть выше.

Такой принцип раньше использовали в системах погодного регулирования систем отопления, и на режим они выходили в течении суток. В случае резких колебаний температуры режим нарущался и систему колбалило сутки.

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

SMF spam blocked by CleanTalk