Форум » » пропорциональное управление климат. устройствами » Ответить

пропорциональное управление климат. устройствами

Pavel777: До этого имел дело с простыми устройсвами - теплыми полами. Есть датчик температуры, есть реле. Датчик температура ниже уставки - реле включилось, выше - выключилось. А как организовать регулировку, когда прибор управляется 0-10Вольт? В моем случае увлажнитель с датчиком влажности. Как правильно выбрать степень уменьшения производительности устройства при уменьшении разницы между измеренным значением и установленным? Например, пришел человек домой - очень сухо - 18%, надо 40, в начале на выходе сразу 10вольт, а снижать когда? Эта также касается не только увлажнителя, а и напольных конвекторов, у которых скорость вентилятора также регулируется 0-10 вольт. Может примером кто поделится?

Ответов - 17

Igor: Pavel777, собственно, в вопросе - половина ответа. Нужен ПИД-регулятор. Если есть время и желание разработать его под Crestron, а главное - перспектива достойной оплаты такой разработки, у Вики неплохо расписана теория вопроса. Забавная реализация была предложена в одном из изданий Серебряной библии KNX. Но нужно осознавать маленький нюанс - даже если регулятор образуется, его нужно будет параметризировать под конкретную задачу, с учетом, например, тепловой инерции материалов. История знает примеры попыток, столь же красивых, сколь безрезультатных.

Игорь K.: ПИД - красивая задача для студентов старших курсов, но только тех, кому не все равно. Личный домашний и объектовый опыт подсказывает, что безупречно работают только системы авторегулирования на Crestron, например, где контуры управления программно не пересекаются. Связанными же оказываются только через изменение внешних измеряемых параметров, в данном случае это температура и влажность.

Вячеслав: Для начала бы определиться с самой задачей. Выбрать и расставить приоритеты надо (в моем представлении они такие, от максимального к минимальному): 1.Максимально быстрое выравнивание значения регулируемого параметра до значения уставки 2.Наиболее точное поддержание значение уставки, с минимальным гистерезисом 3.Минимальный уровень шума создаваемый вентилятором 4.Минимальный расход энергии 5.Режим работы приборов для продления их ресурса 6.Отсутствие скачков в напряжении при переходе на плавное взамен ступенчатого регулирования К сожалению чем больше уделять внимания этим факторам, тем более сложным, а значит менее надежным становится алгоритм Для одного из пользователей этого ресурса я предложил алгоритм регулировки нагревателя полов (его можно адаптировать под ваши задачи). Насколько он жизнеспособен оцените сами. По крайней мере есть над чем поразмыслить: Предлагаю с 10 градусов уменьшить до 5 и после быстрого начального прогрева регулировку снизу начинать с 0%, чтоб гарантированно избежать ошибок корректировки. Тогда может так: t1-текущая //analog_input t2-желаемая (уставка) //analog_input p-мощность воздействия (%) //analog_output integer timewait,time_quick,time_slow,marker;//глобальные переменные Function check() { if((t1+5)<t2){p=100;} //если текущая температура меньше уставки более чем 5 градусов максимально быстро догоняем её до требуемой температуры уставки else if((t1>t2)&&(p=100)){p=0;timewait=time_quick;marker=1;} //чуть только проскочили уставку, выключили нагреватель (после этого калибруем мощность интеллектуально а не просто старт-стоп) //меняем режим таймера полинга на более быстрый 30с - > 2с Инициализируем маркер для последующей автоматической подстройки быстрого таймера else if((t1<t2)&&(p<100)){p=p+1;} //эта часть будет работать только после того как мы проскочим уставку на 100% мощности, потом выключим нагреватель и начнем быструю калибровку "снизу" в режиме быстрого таймера else if((t1>t2)&&(p>0)){p=p-1;timewait=time_slow;} //в процессе поиска значения мощности стабилизации соответствующей температуре уставки иногда можем чуток превышать температуру уставки, калибруем по 1% //"сверху" else if(t1=t2){timewait=time_slow;} //попали в точку стабилизации, возвращаемся опять на медленный таймер полинга, мощность не трогаем if((marker=1)&&(p=100)){marker=0;time_quick=time_quick+100;} //это нужно на всякий случай для корректировки быстрого таймера Если после выключения нагревателя за интеревал 200с(time_quick*100) в процессе калибровки //"снизу"мы успели поднять мощность опять до 100% не достигнув t уставки (t2) тем самым вернулись опять в топорный режим старт-стоп. Для этого система через какое то время сама стабилизирует (увеличит) быстрый таймер //т.о. сделав подход "снизу" более плавным и уйдя в итоге от режима старт-стопа. wait(timewait,next) { check(); //рекурсивно функция check() перезапускает сама себя через текущее значение таймера } } PUSH START_CALIBRATION //ставим этот вход в 1 при старте системы. Если по кнопке включения полов тогда надо еще RELEASE START_CALIBRATION сделать с CancelWait(next); { time_slow=3000; time_quick=200; marker=0; p=0; timewait=time_slow; check();//запускаем функцию сравнения температур (калибровки мощности), далее она будет повторно вызывать сама себя } Можно конечно не заморачиваться так и все упростить введя гистерезис +/- 2 градуса и переключаться старт-стопно между p=0%(>=уставка+2) и p=100%(<=уставка-2) По принципу простого квартирного термостата для теплого пола. Учитывая минимальную теплоёмкость электро нагревателя и большую теплоемкость помещения это будет работать на ура.


Игорь K.: Вячеслав, с такими предложениями не зажарите клиента?

Вячеслав: алгоритм чисто теоретический, не исключено На каком этапе наступит прожарка до румяной корочки? )

Игорь K.: Зажарить их всех, всего то делов, ввести нужный поправочный коэффициент.

semen: А у кого-нибудь получалось перенести ту формула ПИД-регулятора, которая в wiki в Crestron? В данный момент пытаюсь, но с одним из коэффициентов трудности пока. Вячеслав Интересная реализация, но ПИД может больше)

Crestroner: Вопрос, чем управлять. Если каким-то инертным нагревателем типа батарей отопления - легко можете что-то простое забубенить в SIMPL+. Но для динамичных процессов, не уверен, что это хороший вариант. У меня как-то стояла задача интеграции канального нагревателя в приточной вентиляции, чтоб на выходе приточки была заданная температура. Нагреватель (частота его включения) управлялся по 0-10в, на выходе канала стоял температурный датчик. Решил, что программировать PID в Crestron для такого динамичного процесса (температура может меняться очень быстро при вариации управляющего напряжения на нагревателе) неправильно. Нашел такое устройство: https://www.amplicon.com/MandC/product/HMI-Controllers-Tracker-2567.cfm (Модель 331). Втыкаете температурный датчик, по RS485 выставляете температуру, получаете на выходе управляюший сигнал 0-10В для нагревателя. Удачи!

Вячеслав: А что за Crestron wiki ? Дайте ссылку плиз. Посмотрю.

semen: Вячеслав нее, у крестрона нет wiki. Я имел ввиду wikipedia глобальная. Там описание ПИД-регулятора и формула.

Kaveckiy: Поддержу Crestroner, для быстрых процессов лучше использовать внешний регулятор с передачей уставки. Медленными процессами (типа теплого пола) можно рулить обычным сравниванием текущей температуры с уставкой.

Игорь K.: Для оценки сложности создания прототипа попробуйте для начала сделать программу вычисления квадратного корня на SIMPL+.

4ertjaga_88: В итоге есть где скачать нормальный ПИД регулятор для крестрона?

Paul_T: 4ertjaga_88 пишет: В итоге есть где скачать нормальный ПИД регулятор для крестрона? Я не видел. Но могу сказать написаный алгоритм ПИД регулятора, это еще пол проблемы, вернее даже малая ее часть. Основное начинается при настройке ПИД регулятора. Почему не использовать готовые регуляторы с Modbus, например?

4ertjaga_88: с моей точки зрения лучше уж тогда использовать комнатные дизайнерские термостаты KNX,где есть уже пид регуляторы. Но конкретно в данном случае есть задача решить этот вопрос программным путем...

Paul_T: Это в которых дизайнерских регуляторах есть ПИД регулятор? Спрашиваю ради интереса, ибо не в курсе.

4ertjaga_88: Во всех термостатах KNX используется ПИ регулятор



полная версия страницы