Автор Тема: Подбор PID-параметров для ПВК  (Прочитано 12686 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн sechevoyАвтор темы

  • Опытный
  • ***
  • Сообщений: 334
  • Спасибо
  • -Отправлено: 57
  • -Получено: 70
  • Хочется блеснуть, а кроме голого зада нечем
Всем доброго времени суток, коллеги.
Пользуюсь ПВК 50 л для варки пива, тэн на 3 кВт, автоматика на базе NodeMCU. Рубашку на время затирания наполняю полностью, ПВК хорошо утеплён. Насос при затирании работает постоянно. Никак не удаётся настроить PID-параметры, чтобы не было залётов температуры на 2-3 градуса.
Посоветуйте из личного опыта параметры PID для ПВК. В начале пробовал 100/0/0, потом начал снижать Р-параметр, но пока не нашёл оптимальных цифр и залёты по температуре всё ещё не приемлемые.
Заранее благодарен.

Оффлайн Сергей Леонидович

  • Политолог
  • Эксперт
  • *
  • Сообщений: 4340
  • Спасибо
  • -Отправлено: 3486
  • -Получено: 1497
  • Безумно люблю Жизнь!
тоже пользуюсь пвк для затирания зерновых и тоже залёты по температуре.Сейчас заканчиваю строительство мешалки,надеюсь - поможет!У меня rex - 100,там есть автоматическая подстройка,не справляется и она
"Хорошая водка!"- успел сказать он...

Оффлайн sechevoyАвтор темы

  • Опытный
  • ***
  • Сообщений: 334
  • Спасибо
  • -Отправлено: 57
  • -Получено: 70
  • Хочется блеснуть, а кроме голого зада нечем
Мешалка или насос: особой разницы не вижу, а вот объём рубашки, утеплённость ПВК - это те параметры, которые напрямую влияют на инерционность. Ну и конечно параметры PID могут нивелировать инерционность, главное правильно настроить. Одна из методик настройки описана здесь https://drive.google.com/file/d/1tQbaKB1q054UEGhASLAbxBw3YdxOL-2-/view?usp=sharing
Опыты будут занимать не мало времени, а варки не чаще раза в неделю.  :-[

Оффлайн sechevoyАвтор темы

  • Опытный
  • ***
  • Сообщений: 334
  • Спасибо
  • -Отправлено: 57
  • -Получено: 70
  • Хочется блеснуть, а кроме голого зада нечем
Вчера пробовал затирать на ПВК с параметрами 50/0/0, всё равно залёты температуры 3-4 градуса. Буду дальше уменьшать П-составляющую.

Оффлайн dudemix

  • Специалист
  • ***
  • Сообщений: 677
  • Спасибо
  • -Отправлено: 358
  • -Получено: 160
в своем пвк(пропиленгликоль) я победил залеты следующим образом:

1) тен работал на 100%   длительностью, которую определял pid  в рамках duty cycle.
При ducty cyle  10сек,
когда пид отдавал 50% - тен работал 5сек на 100%  мощности,  и 5 сек был выключен.
когда пид отдавал 10% - тен работал 1сек на 100%  мощности,  и 9 сек был выключен.
Залеты были 3-5градусов.

2) я дописал плагин для CraftBeerPi(который управлял котлом), чтоб процент, который отдает PID переводился в мощность тэна.
когда пид отдавал 50% - тен постоянно(пока пид не обновился) работатает на 50% мощности.
когда пид отдавал 10% - тен постоянно(пока пид не обновился) работатает на 10% мощности.

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

Оффлайн sechevoyАвтор темы

  • Опытный
  • ***
  • Сообщений: 334
  • Спасибо
  • -Отправлено: 57
  • -Получено: 70
  • Хочется блеснуть, а кроме голого зада нечем
dudemix, Не совсем понял принципы настройки ПИД.
Есть 4 параметра:
Р - пропорциональная
I - интегральная
D - дифференциальная
Т - время дискретизации (квантования)
В какую сторону изменять тот или иной параметр, чтобы система плавно выходила на уставку без залётов?

Вычитал, что для инерционных систем нужно увеличивать время дискретизации до 15-20 с. Пока не пробовал на практике.
« Последнее редактирование: 11-06-2018, 13:57:04 от sechevoy »

Оффлайн Игорь

  • Администратор
  • Эксперт
  • *****
  • Сообщений: 15299
  • Спасибо
  • -Отправлено: 1106
  • -Получено: 9563
  • Думи мої думи...
    • Каптерка
Не ищи подсказок на стороне. Каждая система имеет свои параметры и свои характеристики. То, что помогло кому-то одному, скорее всего не подойдет другому. Тут нужна помощь настоящих КИПовцев.
Если они не отзовутся и если ты не побрезгуешь помощью сантехника, могу попробовать чем-то помочь.

Сначала нужно определиться с временем квантования и другими начальными данными.
Для начала установи Р в максимум, а I и D с ноль. Получится простой терморегулятор, который включает нагрев на полную при пересечении порога вниз, и отключает его при пересечениии порога вверх.
Запусти в таком режиме, система станет включаться-выключаться с какой-то периодичностью. Разумеется, будут залеты.
Дай ей так поработать минут 20-30 и замерь время и температуру. Нужно определить сколько времени система проводит с включенным нагревом, и сколько с выключенным. И измерить залеты температуры от заданного значения вверх и вниз.

Итак, нужны такие цифры при работе с Р=100%, I=0, D=0:
1. Температура настройки.
2. Максимум температуры
3. Минимум температуры.
4. Среднее время включенного состояние ТЭНа
5. Среднее время выключенного состояния.

После этого можно будет двигаться дальше.
« Последнее редактирование: 11-06-2018, 14:57:13 от Игорь »
Не тот глуп, кто не знает, но тот, кто знать не хочет.
Григорий Сковорода

Оффлайн sechevoyАвтор темы

  • Опытный
  • ***
  • Сообщений: 334
  • Спасибо
  • -Отправлено: 57
  • -Получено: 70
  • Хочется блеснуть, а кроме голого зада нечем
Спасибо Игорь. Экспериментировать нужно, но вот только на заторах не хочется, а на воде будет заметно отличаться. Но я готов померять на воде.
Из исходных данных:
- утеплённый ПВК на 50 л. (объём рубашки пока не знаю)
- тэн 3 кВт
- объём нагреваемой жидкости/затора обычно 25-30 л.
- мощность нагрева на этапе затирания не регулируется, только ПИД (автоматика отсюда https://hbpro.ru/threads/wifi-avtomatika-dlja-pivovarni-na-esp8266.233/)
- пробовал 100/0/0 залёты 3-4 градуса, пробовал 50/0/0 залёты примерно такие же
т.к. ПВК хорошо утеплён, то возврат к уставке после залёта может быть очень долгим (пол часа легко удержит)

Из вычитанных рекомендаций я понял следующее:
1. Выставить 100/0/0 и снижать Kp до тех пор, пока не будет залёта.
2. Повышать Kd для уменьшения колебаний
3. Повышать Ki для устранения рассогласования с уставкой.
« Последнее редактирование: 11-06-2018, 15:05:18 от sechevoy »

Оффлайн Игорь

  • Администратор
  • Эксперт
  • *****
  • Сообщений: 15299
  • Спасибо
  • -Отправлено: 1106
  • -Получено: 9563
  • Думи мої думи...
    • Каптерка
С залетами вверх ясно. Нужны еще залеты вниз и - главное - время работы ТЭНа и время простоя при PID 100/0/0/
От этого зависит время квантования, с которого начинаются все дальнейшие телодвижения.
Не тот глуп, кто не знает, но тот, кто знать не хочет.
Григорий Сковорода

Оффлайн Батарейкин

  • Политолог
  • Эксперт
  • *
  • Сообщений: 11627
  • Спасибо
  • -Отправлено: 2664
  • -Получено: 1849
  • Лучшее Враг Хорошего!!!
только на заторах не хочется, а на воде будет заметно отличаться.
купи дешевой каши
Со Мною спорить БЕСПОЛЕЗНО!!!

Оффлайн sechevoyАвтор темы

  • Опытный
  • ***
  • Сообщений: 334
  • Спасибо
  • -Отправлено: 57
  • -Получено: 70
  • Хочется блеснуть, а кроме голого зада нечем
Вечером запущу на воде и потом отпишусь. Есть возможность удалённого управления (могу в личку сбросить url).

Оффлайн Игорь

  • Администратор
  • Эксперт
  • *****
  • Сообщений: 15299
  • Спасибо
  • -Отправлено: 1106
  • -Получено: 9563
  • Думи мої думи...
    • Каптерка
Сбрось... Но меня терзают смутные сомнения. Систему "облизывают" три года, а проблемы не заканчиваются. Предпоследнее сообщение на 102-й страничке обсуждения было позавчера - "общий таймер еще не доделан"...
Особо настораживает то, что ты можешь давать только 100% мощности. Это уже не PID. Ведь если мощность может быть только 100%, значит пропорциональная составляющая не работает, а в режиме "вкл-выкл" залеты устранить не получится...
Не тот глуп, кто не знает, но тот, кто знать не хочет.
Григорий Сковорода

Оффлайн Игорь

  • Администратор
  • Эксперт
  • *****
  • Сообщений: 15299
  • Спасибо
  • -Отправлено: 1106
  • -Получено: 9563
  • Думи мої думи...
    • Каптерка
Хорошо изолированная и достаточно инерционная система должна очень хорошо и без залетов работать на чисто пропорциональном управлении. Но тогда температура стабилизируется на небольшую величину ниже заданной. Поэтому нужно вводить интегрирующую составляющую, которая постепенно добавит нагрев и доведет температуру до нужной. Можно обойтись и без дифференциальной составляющей.
Не тот глуп, кто не знает, но тот, кто знать не хочет.
Григорий Сковорода

Оффлайн Игорь

  • Администратор
  • Эксперт
  • *****
  • Сообщений: 15299
  • Спасибо
  • -Отправлено: 1106
  • -Получено: 9563
  • Думи мої думи...
    • Каптерка
В твоем случае я не знаю что численно значит коэффициент P,  какой в твоем случае его физический смысл.

Я бы установил его таким, чтобы нагрев 100% был бы до тех пор, пока температура не приблизится к заданному значению на 20 градусов. Ну, допустим...ты установил 60 градусов.
Пока затор (или вода - пофиг) холоднее 40 градусов, нагрев полный. До цели (60) остается еще 20 градусов и 100% нагрева. Значит при подъеме температуры на 1 градус, нагрев должен уменьшаться на 5%.
В таком случае при температуре 50 нагрев будет уже 50%, при 55 градусов - 25%, при 58 градусах - 10%.

Так... все вычеркиваем. Если ПВК хорошо утеплен, его теплопотери составляют 2-5% от мощности ТЭНа, а значит при такой настройке, как я предложил, залет температуры неизбежен.

Нужно установить значение коэффициента Р так, чтобы 100% нагрев соответствовал не 20-ти, а 50 градусам недолета до цели.

Короче говоря, тебе нужно поискать нужное значение где-то в диапазоне 20-50 градусов на 100% мощности.

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

После этого надо будет определиться с величиной интегральной составляющей. я опять напишу про ее физический смысл...
Допустим, у тебя температура измеряется раз в 10 секунд, соответственно раз в 10 секунд меняется мощность.
Фактически необходимый нагрев после прогрева до нужной температуры составит порядка  100-300 ватт, то есть интегральная составляющая за какое-то количество 10-секундных циклов (например, 5-10) дотянула нагрев до нужного значения, то есть значение коэффициента И должно быть таким, чтобы на каждый градус недолета температуры за один цикл добавлялось бы 0,1-0,2% нагрева, не больше. Тогда нагрев произойдет быстро, температура застрянет в 2-3 градусах от цели, причем без "зашквара", а потом в течении минуты температура плавно подойдет к нужному значению.
Дифференциальный коэффициент оставь нулевым. По крайней мере на первое время.


Опять-же, не знаю как настраиваются  твори коэффициенты, но если общепринятым способом, то П нужно установить в 2-3%, И в 0,1%, Д в ноль. Тактирование в 10 секунд.

Теперь пишу план твоего эксперимента с водой.
1. П=2% И=0, Д=0. Период 10 секунд. Настройка порога 60 градусов.
2. Ждем пока температура не дойдет до 50-ти. Если долго, устанавливаеи  П в 5%, меняем воду и греем снова.
3. Повторяем пункт 2 до тех пор, пока температура не залетит за порог. Когда залетит, возвращаемся к последнему  не залетающему значению и оставляет его.
3. Воду уже не меняем, устанавливаем И на 0,1%, следим как долго температура будет доползать до порога. если долго , увеличиваем И до тех пор, пока скорость доводки температуры будет нас устраивать, но при этом нужно убедиться, что нет залета температуры за буёк.

Вроде всё...
« Последнее редактирование: 11-06-2018, 20:47:46 от Игорь »
Не тот глуп, кто не знает, но тот, кто знать не хочет.
Григорий Сковорода

Оффлайн sechevoyАвтор темы

  • Опытный
  • ***
  • Сообщений: 334
  • Спасибо
  • -Отправлено: 57
  • -Получено: 70
  • Хочется блеснуть, а кроме голого зада нечем
Начал тестирование. Не совсем по плану, коэффициенты 50/0/0
Пока делаю короткие периоды нагрева 20-25 С, 25-30 С.
На первом периоде залёт 0,7 градуса, нагрелось за 9 мин.
На втором периоде залёт уже 1,6 градуса, нагрелось за 8 мин.
Некое подобие ПИД заметил при температуре 29,4 начались выключения по Брезенхэму. Текущие настройки во вложении.
Сейчас уменьшу Кп и буду греть до 35 градусов.

UPD: залёт на втором периоде (если подождать) до 1,9 градуса. И что-то мне подсказывает, что не Кп нужно изменять, а дискретность/мощность и размер окна. Сейчас уменьшил окно до 20 с и мощность до 25%. Грею до 45 градусов.
« Последнее редактирование: 11-06-2018, 21:32:46 от sechevoy »