Перейти до публікації
Пошук в
  • Додатково...
Шукати результати, які містять...
Шукати результати в...

Мониторинг 9 температур + ПЗА (погодоЗависимая автоматика)

Sattva

Рекомендовані повідомлення

Разрабатываю прошивку контроллера для управления пунктом отопления.

Главные задачи:

  • погодозависимое управление отоплением с учетом теплопотерь,
  • сбор данных на свой сервер,
  • удаленное управление,
  • удаленное конфигурирование.

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


Особенности:

  • 9 датчиков температуры DS18B20 (возможно будет больше).
  • 8 входов 12/24 В гальванически развязанных для наблюдения за работой клапанов и насосов
  • 8 выходов транзисторных для управления реле 12 / 24 / 220 В
  • Силовыми нагрузками управляет релейный шкаф
  • Данные раз в 20 сек .. 10 мин отправляются на сервер
  • Связь: WiFi, Ethernet
  • Отладка: Bluetooth, Serial Monitor
  • Память: минимально, состояние выходов
  • RS-485: Да
  • База данных: MySQL (Maria DB) + свои страницы на PHP
  • Сервер 1: Web LAMP (Linux, Apache, MySQL, PHP)
  • Сервер 2: MQTT Mosquitto (для отладки и работы приложения на Android / iOS)
  • Микроконтроллер: ESP32-Wroom (Dev Kit V1 или LuaNode32)
  • Настройка конфигурации: Web-страница, Android приложение, Bluetooth

Паяю пару прототипов, пока фабричные контроллеры едут из Китая.
Пишу прошивку.

Змінено користувачем Sattva
Посилання на коментар
Поділитися на інших сайтах

Идея написать пост родилась по ходу изучения того, что есть
погодозависимое управление отоплением с учетом теплопотерь.
Тема для меня новая и требует изучения.

Именно на этом форуме нашел вот такой пост:


Великолепный standov подсказал ссылку:

Цитата

Алгоритмы расчета погодозависимости взял тут mxjournal.ru/blog/1154 и чуть адаптировал.

На 2022 год mxjournal.ru - оказался нерабочим, так как был личным сайтом
Maxim Vdovin - PHP-разработчик, который сменил домен.

Теперь его блог на новом ресурсе:
wdn.su

Статья, которая нас интересует:

Группа тем о разработке контроллера и прошивке
wdn.su/blog/1154


Новая прошивка
wdn.su/blog/1472


Сама Прошивка Контроллера для погодозависимого управления отоплением здесь:
github.com/maxvdovin/termostat

Эта новая ссылка на прошивку Maxim Vdovin одна из причин начать тему.

Ну, и раз тема создана, поделюсь размышлениями на тему погодозависимого управления.

Основная задача: расчет целевой температуры теплоносителя в системе отопления.
Входные данные: температура за окном.
Основа расчета: замудренные температурные кривые.

P. S.
Кривые сильно напоминают Параболу.
 

2e7ef2a85d.jpg

Змінено користувачем Sattva
Посилання на коментар
Поділитися на інших сайтах

Целесообразность - НУЛЕВАЯ, ну, разве что для того, чтобы поучиться паять и писать програмки под ESP32.

Себестоимость такого изделия с учетом затрат на разработку харда и софта будет в сотни раз выше аналогичного по функционалу готового изделия. Так же очень большие вопросы по ремонтопригодности (срок ремонта либо изготовления и отладки нового оборудования взамен вышедшего из строя с учетом доступности элементов). 

Змінено користувачем Invest-finans
  • Лайк 1
Посилання на коментар
Поділитися на інших сайтах

Для построения параболы используется функция вида:
Y = ax2 + bx + c
Она называется квадратичной и графиком ее является парабола.

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

image002.gif

image003.gif

Посилання на коментар
Поділитися на інших сайтах

5 минут назад, Invest-finans сказал:

Целесообразность - НУЛЕВАЯ, ну, разве что для того, чтобы поучиться паять и писать програмки под ESP32.

Спасибо за конструктивную критику. Уже на 2 объектах работает. Делаем еще для двух.
Это прямо традиция: все мои коммерчески успешные проекты получают подобный отзыв в начале пути.
По истине, признак хорошего начинания, когда опытные люди говорят "не имеет смысла".

 

Цитата

Паяю пару прототипов, пока фабричные контроллеры едут из Китая.

 

Змінено користувачем Sattva
  • Дякую 1
Посилання на коментар
Поділитися на інших сайтах

После рядя махинаций, удалось собрать формулу, для построения графика,
который очень похож на температурные кривые 2.0 (красная) и 2.5 (синяя).

2e7ef2a85d.jpg

Screenshot 2022-09-30.png

Посилання на коментар
Поділитися на інших сайтах

Чтобы закрыть тему прошивки Maxim Vdovin привожу ЕГО код расчета температуры контура отопления:

github.com/maxvdovin/termostat/blob/master/termostat/controller.ino

// Настройки
float curve = 1.6; // Кривая отопления
float delta_t = 5; // Шаг поправки термостата в °С
float delta_k = 3; // Шаг поправки комнатной температуры в °С

// Функция расчитывает температуру контура отопления
// Подробнее тут: https://wdn.su/blog/1154
// float desired - Желаемая температура в доме
// float in - Фактическая температура в доме
// float out - Фактическая наружая температура
float getController(float desired, float in, float out) {
  float a, b, c, x, t;
  float temp_n = 0; // Рассчетная температура контура отопления на основе температурной кривой
  float temp_t = 0; // Поправка термостата (если желаемая температура сильно отличается от фактической)
  float temp_k = 0; // Поправка на желаемую комнатную температуру (сдвиг температурной кривой при изменении желаемой температуры)
  float result = 0; // Температура контура отопления котла, возвращаемый результат

  // Расчет поправки термостата
  // Tt = (Tu — T2) × 5
  t = desired - in;
  // Ограничиваем влияние термостата
  if (t > 2) t = 2;
  if (t < -2) t = -2;
  temp_t = t * delta_t; // Рассчитываем поправку термостата

  // Поправка на желаемую комнатную температуру, кривые расчитаны на желаемую температру 20°С
  // Tk = (Tu — 20) × 5
  temp_k = (desired - 20) * delta_k;

  // Если кривая отопления больше 1,5, то используем явно заданную кривую
  // Подробнее тут: https://wdn.su/blog/1287
  if (curve > 1.5) {
    // Кривая задается с шагом 1 градус от +30 до -30
    int i = round(30 - out);
    if (i < 0) i = 0;
    if (i > 60) i = 60;
    // Матрица с кривой: iv_curve[0] - температура контура отопления при +30, iv_curve[60] - при -30
    int curve_explicit[] = {1, 3, 5, 7, 10, 12, 14, 16, 18, 20, 21, 23, 25, 27, 29, 30, 32, 34, 35, 37, 38, 40, 41, 43, 44, 45, 47, 48, 49, 50, 52, 53, 54, 55, 56, 57, 58, 59, 60, 60, 61, 62, 63, 63, 64, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 69, 69, 69, 70, 70, 70};

    temp_n = curve_explicit[i];
  } else {
    // Рассчитытваем температура контура отопления на основе кривой отопления
    // Tn = ax2 + bx + c
    // a = -0,21k — 0,06
    // b = 6,04k + 1,98
    // с = -5,06k + 18,06
    // x = -0.2*t1 + 5

    x = (-0.2 * out) + 5;
    a = (-0.21 * curve) - 0.06;
    b = (6.04 * curve) + 1.98;
    c = (-5.06 * curve) + 18.06;

    temp_n = (a * x * x) + (b * x) + c;
  }

  // Расчетная температура конура отопления
  // T = Tn + Tk + Tt
  result = temp_n + temp_k + temp_t;

  // Ограничиваем температуру
  if (result > 75) result = 75;
  if (result < 0) result = 0;

  return result;
}

 

Змінено користувачем Sattva
  • Лайк 1
Посилання на коментар
Поділитися на інших сайтах

Кстати, одно из мест, которое подтверждает использование параболы:

temp_n = (a * x * x) + (b * x) + c;

Строка 54, файл controller.ino

Змінено користувачем Sattva
Посилання на коментар
Поділитися на інших сайтах

22 минуты назад, Sattva сказал:

Спасибо за конструктивную критику. Уже на 2 объектах работает. Делаем еще для двух.

Я рад за вас и сочувствую хозяевам тех объектов, которых вы уболтали (развели на деньги) установив самоделки.

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

У меня была подобная история лет 20 назад, когда предыдущий руководитель поставил самоделку на ответственное место в промышленном цикле. Она работала изумительно несколько лет, но всё имеет тенденцию к выходу из строя. Так и это изделие вышло из строя. А починить его некому. Разработчик и изготовитель эмигрировал. Оборудование простояло несколько дней (повезло что не несколько недель), пока инженеры-электронщики не заменили его на омроновское и не сделали подробное описание отладки и работы, не дали в архив программу. Это позволило через несколько лет восстановить этот узел за пару часов силами своего электрика.

  • Лайк 1
Посилання на коментар
Поділитися на інших сайтах

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

Цитата

 ну, разве что для того, чтобы поучиться паять и писать програмки под ESP32

Ничего сложного там нет. Код заказчик получил.

Ну, а электроника фабричная, легко повторяемая (что и сделано мною, пока едет
нужная Заводская конфигурация).

Что за плата такая? Пока умолчу название. :-) Конфигурацию описал.

Большинство ваших тезисов верны с поправкой на год, эдак 2010.
Все же за 12 последних лет рынок сильно изменился.
Сейчас спроектировать и запустить в производство, если вдруг нужно,
можно за несколько недель. При наличии опытного образца - за несколько дней.
Так же никто не мешает иметь запас изделий на случай выхода из строя.

Развернуть новый веб-сервер на случай смерти разработчика можно за 1 рабочий день.

И, кстати, никого я не убалтывал. Ко мне пришел заказчик, который сам может
построить простой контроллер, а так же запрограммировать ПЛК

и попросил сделать что-то посложнее. Так и полетели.

Какая-то реклама услуг по разработке получается.

Цель 1: поделиться найденным кодом от Maxim Vdovin.

Цель 2: подобрать рабочие графики для погодозависимой
автоматики управления отоплением, а не услуги свои рекламировать.

По результату испытаний отпишусь.

Вы же почему-то подняли философский вопрос:
Следует ли самоделки (по факту фабричный контроллер на базе ESP32
с выданным исходным кодом) ставить на ответственные объекты,
в случае смерти / ухода разработчика?


Как мне на это реагировать, работая в отрасли разработок и прототипирования
более 4 лет, при том, что тема не об эффективности работы ESP32 в сравнении с ПЛК?

В качестве альтернативы вы предложили
Программируемый логический контроллер "Омрон" (если я верно понял),
что сразу отброшено, как решение.

Скажу больше:
заказчик не идиот, у него есть 4 ПЛК по $1000 каждый
какого-то именитого бренда. Они его не устраивают совершенно.


Не сбивайте меня, пожалуйста.

 

CP1H-CP1L.jpg

Змінено користувачем Sattva
Добавил монстров Omron для иллюстрации диалога
  • Лайк 1
Посилання на коментар
Поділитися на інших сайтах

4 часа назад, Sattva сказал:

Не сбивайте меня, пожалуйста.

Боже упаси! Как можно?

Каждый выбирает свой путь, и свой крест.

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

Но и Сименс и Омрон и даже макинтош начинались с "гаража" и выросли в гигантов индустрии. А за то же время даже не десятки тысяч проектов дошедших в некоторых случаях до серийных партий оказались за бортом истории. 

По этому могу лишь пожелать вам успеха.

Посилання на коментар
Поділитися на інших сайтах

8 годин тому, Sattva сказав:

Главные задачи:

  • погодозависимое управление отоплением с учетом теплопотерь,
  • сбор данных на свой сервер,
  • удаленное управление,
  • удаленное конфигурирование.

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

Посилання на коментар
Поділитися на інших сайтах

2 часа назад, normal сказал:

А у вас котел включается если на улице похолодало или типа того... :)

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

Для котла, который в квартире с двумя комнатами и кухней+санузлами это справедливо.

Если же это 3-этажный коттедж с более чем 10 жилыми комнатами или
12 этажное здание с десятками квартир, то температура в комнатах
не учитывается котлом или тепло-пунктом.
Она регулируется термоголовками радиаторов. Важно лишь задать
верно температуру теплоносителя.

Приблизительно внутренняя температура состоит из таких параметров:

  1. Количество отопительных приборов (радиаторы, конвекторы, теплые полы, регистры - отопительные трубы большого диаметра, теплые плинтуса и стены, инфракрасные обогреватели и другие источники тепла).
     
  2. Теплоизоляция ограждающих конструкций. Под ними мы подразумеваем наружные стены, окна, двери, кровлю, полы нижнего этажа, фундамент или цоколь — в общем, всё, что так или иначе контактирует с менее нагретой окружающей средой.
     
  3. Тепловая инертность отапливаемого сооружения, то есть скорость изменения его температуры при определенной разнице температур. Это суммарная теплоемкость отапливаемых элементов. Инертность легкого каркасного дома, например, намного ниже, чем у дома кирпичного. Система должна адаптироваться к тепловой инертности сооружения. Для начала мы можем задавать это вручную. Это как раз указанная вами температура внутри дома.
     
  4. Воздухообмен в помещениях. Когда мы открываем окна, чтобы проветрить комнату, нагретый воздух из нее сменяется более холодным наружным. С воздухообменом уносится от 10 до 30 % тепла.
     
  5. Время разогрева системы отопления в зависимости от длины и количества теплотрасс, а так же мощности котла — система должна подстраивать алгоритмы работы, не только учитывая параметры зданий, но и свои собственные характеристики (например, типы радиаторов, этажность здания).
     
  6. Заданные пользователем минимумы и максимумы температур. Например, можно заставить систему греть «чуть сильнее», когда на улице слякоть и создать атмосферу тепла и уюта даже если на улице не очень холодно или ограничить максимальную температуру в целях экономии.

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

Как я понимаю, Maxim Vdovin (код которого приведен), так же не учитывал температуру в комнате, так как делал для частного дома с множеством комнат.

Змінено користувачем Sattva
  • Хаха 1
Посилання на коментар
Поділитися на інших сайтах

Связь между

  • желаемой температурой в помещении
  • температурой теплоносителя
  • и температурой окружающей среды

видна на графике ниже. Как видим, температурные кривые рассчитаны так,
чтобы сформировать в помещении температуру около 20 С. 

По коду мы видим, как автор решает задачу "сдвига" температуры в помещении:

float temp_k = 0; // Поправка на желаемую комнатную температуру (сдвиг температурной кривой при изменении желаемой температуры)
// desired - Желаемая температура в помещении
// float delta_k = 3; // Шаг поправки комнатной температуры в °С
// Поправка на желаемую комнатную температуру, кривые расчитаны на желаемую температру 20°С
// Tk = (Tu — 20) × 5

temp_k = (desired - 20) * delta_k; // => сдвиг температурной кривой

good-chart.png

Змінено користувачем Sattva
Посилання на коментар
Поділитися на інших сайтах

В 30.09.2022 в 17:40, Invest-finans сказал:

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

Напомнило:

Цитата

С другой стороны, а если вы завтра исчезаете с рынка, что делать клиенту?

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

 

Посилання на коментар
Поділитися на інших сайтах

В 30.09.2022 в 21:16, Sattva сказал:

Приблизительно внутренняя температура состоит из таких параметров:

  1. Количество отопительных приборов (радиаторы, конвекторы, теплые полы, регистры - отопительные трубы большого диаметра, теплые плинтуса и стены, инфракрасные обогреватели и другие источники тепла).
     
  2. Теплоизоляция ограждающих конструкций. Под ними мы подразумеваем наружные стены, окна, двери, кровлю, полы нижнего этажа, фундамент или цоколь — в общем, всё, что так или иначе контактирует с менее нагретой окружающей средой.
     
  3. Тепловая инертность отапливаемого сооружения, то есть скорость изменения его температуры при определенной разнице температур. Это суммарная теплоемкость отапливаемых элементов. Инертность легкого каркасного дома, например, намного ниже, чем у дома кирпичного. Система должна адаптироваться к тепловой инертности сооружения. Для начала мы можем задавать это вручную. Это как раз указанная вами температура внутри дома.
     
  4. Воздухообмен в помещениях. Когда мы открываем окна, чтобы проветрить комнату, нагретый воздух из нее сменяется более холодным наружным. С воздухообменом уносится от 10 до 30 % тепла.
     
  5. Время разогрева системы отопления в зависимости от длины и количества теплотрасс, а так же мощности котла — система должна подстраивать алгоритмы работы, не только учитывая параметры зданий, но и свои собственные характеристики (например, типы радиаторов, этажность здания).
     
  6. Заданные пользователем минимумы и максимумы температур. Например, можно заставить систему греть «чуть сильнее», когда на улице слякоть и создать атмосферу тепла и уюта даже если на улице не очень холодно или ограничить максимальную температуру в целях экономии.

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

При наличии стольких влияющих факторов останется ли это парабола? Не проще ли просто задавать экспериментально таблицу температура на улице <-> температура носителя?

  • Лайк 1
Посилання на коментар
Поділитися на інших сайтах

В 30.09.2022 в 11:48, Sattva сказал:
  • сбор данных на свой сервер

Вы будете предоставлять все исходники для разворачивания своего сервера?
 

В 30.09.2022 в 11:48, Sattva сказал:

Коммерческие решения сразу отпадают, так как используют закрытые протоколы и свои сервера.

Потому что заказчику некогда и нет возможности разбираться в протоколах и разворачивать свои сервера.
 

В 30.09.2022 в 11:48, Sattva сказал:

Платы с операционной системой и прочими нежными местами - долой.

Под ОС понимается линуксы? А то FreeRTOS тоже ОС.

 

В 30.09.2022 в 11:48, Sattva сказал:

Программируемые логические контроллеры - тоже долой.

Почему? В ПЛК нет никаких проблем сделать любой график управления. Причем не на C++, я на языке который знают автоматчики.

Посилання на коментар
Поділитися на інших сайтах

В 30.09.2022 в 12:28, Sattva сказал:

github.com/maxvdovin/termostat/blob/master/termostat/controller.ino


А как вот это все тестируется?

Посилання на коментар
Поділитися на інших сайтах

1 час назад, Берман сказал:

Напомнило:

 

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

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

Посилання на коментар
Поділитися на інших сайтах

4 часа назад, Invest-finans сказал:

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

Большинство контроллеров котлов и прочее подобное реализовано как раз атмегах а еще чаще на 8051. И никого это не смущает.

Посилання на коментар
Поділитися на інших сайтах

  • 2 тижні потому...

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

Посилання на коментар
Поділитися на інших сайтах

В 30.09.2022 в 11:48, Sattva сказал:

погодозависимое управление отоплением с учетом теплопотерь,

мат модель здания есть? )

Посилання на коментар
Поділитися на інших сайтах

В 02.10.2022 в 20:19, Берман сказал:

Большинство контроллеров котлов и прочее подобное реализовано как раз атмегах а еще чаще на 8051. И никого это не смущает.

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

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

Посилання на коментар
Поділитися на інших сайтах

11 годин тому, smartdom сказав:

мат модель здания есть? )

ПЗА — це і є модель тепловтрат будинку, тому там нема зворотнього зв'язку по внутрішній температурі. Еквітермальна крива і її зміщення налаштовується під конкретний будинок — ось вам і мат. модель.

Посилання на коментар
Поділитися на інших сайтах

1 час назад, volomoto сказал:

це і є модель тепловтрат будинку

ничего подобного. мат модель гораздо шире ) а для погодозависимой кривой не надо никаких теплопотерь здания учитывать и рассчитывать - это маркетинговая лабуда.....достаточно ПИД регулирования. не надо писать "Без ГМО" там где это гмо в принципе не возможно )

 

и кстати, а чем вообще управлять будет этот контероллер? непосредственно горелкой котла? или автоматикой котла по 0-10В? или всем домом, т.е. + зональное управление? 

Змінено користувачем smartdom
  • Лайк 1
Посилання на коментар
Поділитися на інших сайтах

Створіть акаунт або увійдіть у нього для коментування

Ви маєте бути користувачем, щоб залишити коментар

Створити акаунт

Зареєструйтеся для отримання акаунта. Це просто!

Зареєструвати акаунт

Увійти

Вже зареєстровані? Увійдіть тут.

Увійти зараз
×
×
  • Створити...