Управление отоплением 0-10в / ПИД регулятор


#16

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


#17

Удалось разобраться с управлением приводами и логикой ПИД регулятора? Очень интересует этот вопрос, т.к. собираюсь реализовать подобное. Подскажите пожалуйста, если не сложно.


#18

Добрый день. Разобрался. Контроллер все четко выдаёт в диапазоне от 0 до 10в. У меня проблема была с питанием приводов клапанов отопления из-за странных особенностей, с которыми я не до конца разобрался. А так все просто и надежно.
Я не знаю, что Вам рассказать даже. В качестве приводов и клапанов я брал комплект серии Ballorex компании BROEN. По приводам надо смотреть, чтобы Управление было 0-10, способ открытия открытия и закрытия при отсутствии питания и само напряжение. Клапан я выбирал тоже исходя из пропускной способности своих контуров. У клапанов есть ручной режим управления для страховки - головка привода скидывается за секунду и можно вручную призакрыть клапан. А так я написал скрипт, отслеживающий температуру на этажах и по их значениям меняю положение сервопривода управляющим сигналом 0-10в.


#19

Спасибо! А управляющая логика реализована как ПИД регулятор или просто при превышении порога - отключаем, при понижении - включаем? Если первый вариант, то можете поделиться логикой или хотя бы указать на какие моменты нужно обратить внимание и что было труднее всего отладить?


#20

Вот основная функция, которая все и выполняет. Алгоритм построен по принципу поиска оптимального положения открытия клапана (нулевая точка) в процессе отслеживания изменения температуры (delta_t) и сравнения с предыдущими замерами через заданный интервал времени (я взял 15мин, а хотел и время проверки менять, но в cron не получилось подставить динамическую переменную). А дальше я смотрю на скорость изменения температуры и смещаю эту нулевую точку (SM_ZERO) с целью найти баланс. Чем меньше значение изменения температуры через установленный и6тервал времени, тем тоньше коррекция привода и наоборот.
Думаю все ясно в алгоритме. Уже год работает и колебания температуры доходят до 0,5градуса в длинном диапазоне установленной температуры. Бывает влияние ветра или приточно-вытяжной вентиляции на изменение температуры в помещении, поэтому я взял за норму находить ту самую нулевую отметку, которая стремится сместиться. На этом и построено ПИД регулирование.

function get_valve_dac($i, delta_t, delta_t1) {
var k_valve = 0;
var $t_diff = (delta_t-delta_t1);// Находим величину изменения температуры по истечению интервала времени
// (разницу между delta_t текущего и предыдущего вычисления)

// $i - номер контура отопления (всего 3)

if (delta_t > 0.3) {SM_ZERO[$i] = 0; time_interval[$i] = 30;} 
else
if (delta_t < -0.3) {SM_ZERO[$i] = 1; time_interval[$i] = 30;}
else
    if (delta_t > 0.1 && $t_diff > 0) {k_valve = 0.1 ;time_interval[$i] = 15;}
    else
    if (delta_t < -0.1 && $t_diff < 0) {k_valve = -0.1 ;time_interval[$i] = 15;}
    else
    if (Math.abs($t_diff) >= 0.15) {k_valve = $t_diff.toFixed(1); time_interval[$i] = 10;}
    else
    if (Math.abs($t_diff) < 0.15 && Math.abs($t_diff) >= 0.1) {k_valve = Math.ceil($t_diff)*0.15; time_interval[$i] = 15;}
    else
    if (Math.abs($t_diff) < 0.1 && Math.abs($t_diff) >= 0.05) {k_valve = $t_diff.toFixed(1); time_interval[$i] = 20;}
    else
    if (Math.abs($t_diff) < 0.05 && Math.abs(delta_t) <= 0.1) {k_valve = Math.ceil($t_diff)*0.05; time_interval[$i] = 25;}
    else  {k_valve = 0; time_interval[$i] = 30}
          
SM_ZERO[$i] -= k_valve;   
if (SM_ZERO[$i]>1) {SM_ZERO[$i]=1} else if (SM_ZERO[$i]<0) {SM_ZERO[$i]=0}

dev["wb-dac"]["MOD"+Mod_id[$i]] = SM_ZERO[$i]*10000; //Перевод в миливольты [0-10000 млВ]
log("  ➥  [TEMP has changed on: {}°, TEMP efficient: {}°. ZERO point corrected on: {}. Next checking in {}min. Signal level: {}V]",$t_diff.toFixed(2),delta_t.toFixed(2),k_valve,time_interval[$i],SM_ZERO[$i]*10);
return (delta_t);

}


#21

Спасибо большое! Буду разбираться. Еще несколько вопросов:

  1. Откуда взяли 24В АС? Сходу не смог найти что-то вменяемое, тем более на DIN-рейку.
  2. Почему использовали BROEN, а не VALTEC? На сколько понимаю, привод одинаковый, только на второй дают гарантию 7 лет.
  3. Аварийное управление возможно только со снятием сервопривода? Не думали над более удобным вариантом (для девочек :grinning:)?

#22

Smile, добрый день!
У нас продаются вот такие двадцатичетырехвольтовые блоки питания: https://wirenboard.com/ru/product/hdr_30_24/ на ВШТ-рейку.


#23

Приводам нужно 24 V AC.
Тоже такой искал безрезультатно…


#24

https://www.prestig.ru/elektrika/avtomati_i_uzo/modulnie_kontaktori/abb/TS/48145_2csm251043r0811?gclid=CjwKCAiA_P3jBRAqEiwAZyWWaOLCQrXld3dB1oZwUpZ52fTAE4lMoDnphDjaqI4MJTfKlFPfUTGfrRoC3qIQAvD_BwE


#25
  1. С блоком питания сам экспериментирую до сих пор. Два привода от моего БП работают прекрасно, а вот с тремя все закрываются и мне предстоит ещё это выяснить.
  2. Компактность, вариативность и клапанов и приводов, наличие в нашем городе, хоть и под заказ, цена, страна происхождения.
  3. Честно? Не думал, а может и стоило бы, учитывая, что дом оставляю иногда теще, а она та же «девочка» ))) можно было выбрать версию NO вместо NC.

#26

Я экспериментировал с несколькими трансформаторами понижающими и пока выбрал обычный блок в розетку, с остальными пока не разобрался что не так, но приводы закрываются.


#27

Как минимум по трансформатору от ABB на фото я могу сказать почему он не работает. Это звонковый трансформатор, расчитанный на кратковременное включение маломощной нагрузки. У того же ABB есть разделительные трансформаторы. Серия TS. Они мощнее и расчитаны на длительную нагрузку. Но это пока теория) Я еще только подбираю комплектующие.


#28

Вообщем я протестировал работу приводов с несколькими понижающими трансформаторами и сделал вывод, что дело не в трансформаторах. Опыт показал, что корректно работают приводы только при условии, что один из них всегда не открывается полностью ( сигнал 0-10в с контроллера должен быть в диапазоне примерно 0-5в). Эксперимент проводился и с одним приводом и тремя. Питание 24В параллельно подаётся на приводы и к каждому подходит свой сигнал 0-10в. Не могу обьяснить этот эффект, но будто бы постоянное и переменное напряжения связаны и оказывают влияние друг на друга.
Вот пример испытаний на примере 2х приводов: на первый подаю сигнал 10в, замеряю напряжение и вижу, что оно подсаживается. Через две минуты клапан полностью открывается. Если на второй подать сигнал выше 5в, то напряжение питания возрастает до величины без нагрузки и первый привод начинает закрываться, а второй и не пытался открыться. Такой же эффект наблюдается когда я второй привод без подачи сигнала 0-10в просто отключаю от питания после того, как первый уже открылся - привод начинает закрываться. Что-то заставляет их реагировать после подачи управляющего сигнала 0-10в. По паспорту я вижу, что допустимые отклонения по переменному напряжению: 24В -10% + 20%. Ток в момент открытия 0,25А, потом ниже. Странная ситуация и ответов у меня нет. Я вынужден всегда один контур отопления держать закрытым и менять местами по времени.


#29

А какая схема подключения устройств? Я не совсем понимаю, как подключать землю. Нужно ли объединять все земли? Вот нарисовал схему. У Вас похожая?


#30

Ну да, тут другой и быть не может. )) а земли у приводов нет, я и не считал нужным ее куда-то воткнуть


#31

Без общей земли 0-10в не будет управлять!
Подключать ещё не приходилось, но как вижу из документации, есть один провод, называется общая земля. К нему подключается один из проводников ~24в и GND вместе. Тогда создается потенциал для управляющего сигнала.


#32

У приводов нет земли как таковой, есть ноль.


#33

Это и есть общий провод, который нужно подключать к земле (минусу питания 24v DC) и одному из проводников 24v AC.


#34

Хм. Никогда с этим не приходилось сталкиваться, но мысль я понял. Я вначале засомневался в надобности земли у постоянки. Но я попробую так сделать, может это и решит мою проблему с одним неработающим приводом всегда. Спасибо за идею ))


#35

Ура. Заработали все три привода. Спасибо, Виталий. Я упустил этот момент, что ноль привода надо объединить с GND. :slight_smile: