1 2 3 4 5 6 7 8 9 10 10/10 9,84оценок: 31

Ракетный котел - 2

Тема в разделе "Котлы, горелки, котельное об-е своими руками", создана пользователем Perelesnik, 19.07.17.

Статус темы:
Закрыта.
  1. StarykovMih
    Регистрация:
    13.11.12
    Сообщения:
    522
    Благодарности:
    176

    StarykovMih

    Живу здесь

    StarykovMih

    Живу здесь

    Регистрация:
    13.11.12
    Сообщения:
    522
    Благодарности:
    176
    Адрес:
    Киев
    Я бы добавил в задачи:
    8. выход на режим (прогрев при розжиге) в заданные временные интервалы (например за час).
    Это даст шаг "интегрирования".
    Возможно, как раз на вторичке можно использовать ПИД (ограничив его снизу 400С и сверху 950С), т. к. если эта т-ра есть, то процессы более-менее установившиеся.
     
  2. alarin
    Регистрация:
    29.07.16
    Сообщения:
    8.661
    Благодарности:
    3.751

    alarin

    Живу здесь

    alarin

    Живу здесь

    Регистрация:
    29.07.16
    Сообщения:
    8.661
    Благодарности:
    3.751
    Адрес:
    Казахстан, Алма-Ата
    Этот шаг весьма спорный, наоборот форсировать режим до критических температур. Вторые производные по времени нужны, потому час не годится.
    п. с. а вот описанные вами вадратичные зависимости к месту.
     
  3. StarykovMih
    Регистрация:
    13.11.12
    Сообщения:
    522
    Благодарности:
    176

    StarykovMih

    Живу здесь

    StarykovMih

    Живу здесь

    Регистрация:
    13.11.12
    Сообщения:
    522
    Благодарности:
    176
    Адрес:
    Киев
    В любом случае (в смысле, любая функция) опирается на конечный временной промежуток, который может (или должен) устанавливаться, как параметр... 1 час был принят, как пример.
    Если практика при старте котла покажет, что часа не достаточно, можно будет "по ходу" увеличить до 2х...3х часов.
    Просто, чтобы такой параметр был и его изменение было возможно.
    Кстати, параметры в Ардуинке можно писать во внутреннюю (энергонезависимую) память.
    Жаль, что ограниченное число раз.
     
  4. alarin
    Регистрация:
    29.07.16
    Сообщения:
    8.661
    Благодарности:
    3.751

    alarin

    Живу здесь

    alarin

    Живу здесь

    Регистрация:
    29.07.16
    Сообщения:
    8.661
    Благодарности:
    3.751
    Адрес:
    Казахстан, Алма-Ата
    @StarykovMih, Все таки не соглашусь, опять немного в теорию, мощность будет функцией времени, а температура не обязательно. У нас ведь мощность зависит от произведения температуры на расход газа. как поднимать прогревочную температуру не увеличивая расхода газа. как подсказка- щепочки, быстро прогазили и превратились в уголь, он то и начинает греть, причем топливнику больше достанется от излучения, а вот райзеру нужен горячий газ. Температуру газа меряет ТП-2, а в топливнике ТП -1. Вывод не напрашивается? Разница температур ТП даст расход, вернее его пропорцию, а произведение температур должно быть на каждой итерации максимально. Управление фактически должно работать по температуре это параметр, который должен действовать до достижения критических температур. При этом сервисные показатели температуры воды можно вообще игнорировать. После достижения этих самых градусов, все действительно станет функцией времени. А в самом начале время - просто шаг дифференцирования. Приведенный вами интервал в один час это уже интегральная составляющая и если ее учитывать опять придем к ПИД.
    П С. Я так понимаю автоматика скоро появится еще у кого то, будет интереснее сравнивать результаты. У меня к сожалению скорее всего только к следующему сезону, хотя все есть для ее реализации, кроме времени.
     
  5. StarykovMih
    Регистрация:
    13.11.12
    Сообщения:
    522
    Благодарности:
    176

    StarykovMih

    Живу здесь

    StarykovMih

    Живу здесь

    Регистрация:
    13.11.12
    Сообщения:
    522
    Благодарности:
    176
    Адрес:
    Киев
    Температура горячей воды и есть "опосредованная" мощность котла (расход от температуры практически не зависит).
    Для перехода к численным методам этот шаг и нужно определить... Мы можем просто принять 2 минуты, тогда не совсем понятно за какое время (даже приблизительно) котёл выйдет "на режим" (доведёт воду до нормы), а можем задать время этого выхода "на режим" и разделить его на 100 (200 или 50) равных шагов (временных) и дальше уже иметь отправной временной интервал дифференцирования (или, если угодно интегрирования, смотря что рассматривать - мощность котла или производные перемещения заслонок).
    Я (по привычке) ничего стараюсь не откладывать на последний момент (оно всё равно так получается само :aga:). Стараюсь начинать всё заранее. Котёл тоже должен будет быть запущен к следующему сезону, сейчас пытаюсь учиться на чужом опыте (свои шишки набивать буду позже).
     
  6. alarin
    Регистрация:
    29.07.16
    Сообщения:
    8.661
    Благодарности:
    3.751

    alarin

    Живу здесь

    alarin

    Живу здесь

    Регистрация:
    29.07.16
    Сообщения:
    8.661
    Благодарности:
    3.751
    Адрес:
    Казахстан, Алма-Ата
    Совершенно не верно, игнорирование этого постулата есть главная ошибка и причина неудач в ракетостроении
    Вот как живучи стереотипы, от которых не хочется отказаться и поискать самостоятельно альтернативное решение.
     
  7. alarin
    Регистрация:
    29.07.16
    Сообщения:
    8.661
    Благодарности:
    3.751

    alarin

    Живу здесь

    alarin

    Живу здесь

    Регистрация:
    29.07.16
    Сообщения:
    8.661
    Благодарности:
    3.751
    Адрес:
    Казахстан, Алма-Ата
    Совершенно не верно, игнорирование этого постулата есть главная ошибка и причина неудач в ракетостроении
    Как то все в кучу сгреблось, а должно быть так...
     
  8. StarykovMih
    Регистрация:
    13.11.12
    Сообщения:
    522
    Благодарности:
    176

    StarykovMih

    Живу здесь

    StarykovMih

    Живу здесь

    Регистрация:
    13.11.12
    Сообщения:
    522
    Благодарности:
    176
    Адрес:
    Киев
    Что именно не верно:
    1. Удельная теплоемкость воды практически не зависит от температуры (в диапазоне от 30С до 100С изменение на 1 процент).
    2. Можно, конечно попытаться пересчитать производительность насоса в зависимости от изменения вязкости воды (по температуре), но при изменении вязкости жидкости в 3 раза производительность насоса меняется примерно на 30...35%. В диапазоне наших т-р (30С...70С) вязкость меняется примерно в 2 раза, можно предположить, что изменение производительности примерно 15%...
    К тому же там еще столько параметров, что реальное изменение производительности будет ещё меньше... возможно процентов 10...
     
    Последнее редактирование: 01.03.18
  9. alarin
    Регистрация:
    29.07.16
    Сообщения:
    8.661
    Благодарности:
    3.751

    alarin

    Живу здесь

    alarin

    Живу здесь

    Регистрация:
    29.07.16
    Сообщения:
    8.661
    Благодарности:
    3.751
    Адрес:
    Казахстан, Алма-Ата
    @StarykovMih, Вы про фому-воду, я про ярему газ - проехали
     
  10. V757V
    Регистрация:
    23.11.11
    Сообщения:
    1.683
    Благодарности:
    633

    V757V

    Живу здесь

    V757V

    Живу здесь

    Регистрация:
    23.11.11
    Сообщения:
    1.683
    Благодарности:
    633
    Адрес:
    Москва
    Ну это вы, по-моему, из крайности в крайность. ПИД алгоритм никогда и не являлся "предсказательным". Пропорциональный алгоритм никогда не даст нулевую ошибку, даже при неизменном входном воздействии, хотите ее убрать - вводите интегрирующий член. ПИ алгоритм обладает нулевой ошибкой при постоянном входном воздействии, т. е. скачок отработается до нуля. А если входное воздействие имеет скорость изменения, то возникает ненулевая динамическая ошибка. Вот для ее устранения и вводится Д-член. Но если у вх. воздействия есть "ускорение", то ошибка опять появится.
    Поставленные вами задачи я бы разбил на две:
    1. Это задача поддержания темпераруры теплоносителя. Это внешний контур котла. Вот здесь ПИ (Д лишний, это довольно капризная часть, требует хорошей стабильности вр. отсчетов) на своем месте.
    В результате в качестве вых. параметра вы бы получили требуемую мощность.
    P=Kp*Err+1/Ki*Int (Err)
    2. Задача получения от котла этой нужной мощности. Вот здесь уже в качестве ошибки выступает разность требуемой по. п. 1 P и фактически возможной выдаваемой котлом Pфакт.
    Вот в этой части у нужно рулить заслонками и мерить температуры. По какому алгоритму не знаю, возможно, что и чисто эмпирическому, а основной критерий это наличие замкнутости этого внутреннего контура. Под "замкнутостью" я имею ввиду наличие отклика котла на управление.
     
  11. Zinya
    Регистрация:
    28.09.12
    Сообщения:
    5
    Благодарности:
    2

    Zinya

    Участник

    Zinya

    Участник

    Регистрация:
    28.09.12
    Сообщения:
    5
    Благодарности:
    2
    Адрес:
    Николаев
  12. Сергей247
    Регистрация:
    30.04.12
    Сообщения:
    6.161
    Благодарности:
    1.867

    Сергей247

    Живу здесь

    Сергей247

    Живу здесь

    Регистрация:
    30.04.12
    Сообщения:
    6.161
    Благодарности:
    1.867
    Адрес:
    Минск
    Таки газ, газ и газ. Таки газген рулит! К этому придём. Упростятся многие вещи включая управление.
     
  13. Perelesnik
    Регистрация:
    01.02.13
    Сообщения:
    991
    Благодарности:
    4.614

    Perelesnik

    Живу здесь

    Perelesnik

    Живу здесь

    Регистрация:
    01.02.13
    Сообщения:
    991
    Благодарности:
    4.614
    Адрес:
    Черкассы
    Переписал. Без ПИДа на новом алгоритме работает уже половину суток - собираю данные для доработок. Хотелось бы хоть сутки погонять на каждом варианте, но времени мало. Сейчас буду вносить очередные изменения и снова запускать в проверку.

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

    Что пишет пока:
    Снимок1.JPG Снимок2.JPG Снимок3.JPG Снимок4.JPG

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

    А вот такое красивое рисует, если одновременно включить два разных котловых контроллера, работающих на одном канале:
    Снимок.JPG
    Еще много работы осталось, так что пока рано что-то здесь утверждать и что-то показывать.
     
  14. МальчишПлохиш
    Регистрация:
    29.08.12
    Сообщения:
    1.267
    Благодарности:
    1.699

    МальчишПлохиш

    Живу здесь

    МальчишПлохиш

    Живу здесь

    Регистрация:
    29.08.12
    Сообщения:
    1.267
    Благодарности:
    1.699
    Адрес:
    Саратов
    @Perelesnik, Руслан, что-то я уже забыл.
    1. У Вас температура воды в СО только вручную устанавливается или и программно?
    2. Если температура воды программно изменяется в зависимости от температуры воздуха в доме, то с каким периодом?
    3. И есть ли в планах погодозависимое регулирование?
     
  15. Perelesnik
    Регистрация:
    01.02.13
    Сообщения:
    991
    Благодарности:
    4.614

    Perelesnik

    Живу здесь

    Perelesnik

    Живу здесь

    Регистрация:
    01.02.13
    Сообщения:
    991
    Благодарности:
    4.614
    Адрес:
    Черкассы
    Запуск с доработанным алгоритмом:
    1.JPG 2.JPG

    Код:
    void ServoPrim () {
    
      if ( forv_water - settherm >= 0.5 && D_forv_water >= 0) {
        spid = 2;
        preservoprim = 2;
      }
      else {
    
        if (Tflag > 0) {
          if ( D_forv_water != 0 && spid - D_forv_water >= 2 && spid - D_forv_water < 180 ) {
            spid = spid - D_forv_water;
          }
          if ( D_riser != 0 && spid - D_riser >= 2 && spid - D_riser < 180 ) {
            spid = spid - D_riser;
          }
          if ( D_bunker != 0 && spid - D_bunker >= 2 && spid - D_bunker < 180 ) {
            spid = spid - D_bunker;
          }
    
    
          if (settherm - forv_water >= 5) {
            if (forv_water - temp_water >= 1 ) {
              temp_water = forv_water + 2;
            }
            if (temp_water - forv_water >= 3 ) {
              temp_water = forv_water + 2;
            }
          }
          else {
            temp_water = settherm;
          }
    
          tempdeficite = temp_water - forv_water;
         
          if ( spid + tempdeficite > 2 && spid + tempdeficite < 180 ) {
            spid = spid + tempdeficite;
          }
    
          if (riser > 400 && spid - (map (riser, 400, 1100, 2, 180) / constrain (tempdeficite, 1, 5)) >= 2) {
            preservoprim = spid - (map (riser, 400, 1100, 2, 180) / constrain (tempdeficite, 1, 5));
          }
          else {
            preservoprim = spid;
          }
        }
        servoprim = byte(constrain (preservoprim, 0, 180));
       
        Tflag = 0;
      }
    
    }
    Переменные с первой буквой "D" - это "дельта" того или иного параметра. Замер изменений параметров происходит с периодичностью в 5 секунд.
    Код:
      
         if (Primsec >= 5) {
          D_forv_water = forv_water - P_forv_water;
          P_forv_water = forv_water;
          D_riser = riser - P_riser;
          P_riser = riser;
          D_bunker = bunker - P_bunker;
          P_bunker = bunker;
          Primsec = 0;
          Tflag = 1;
        }
    
    1. Вручную, можно установить или на автоматике самого котла, или с домашнего компьютера.
    2. Не делал такого, так как домашний прибор часто переношу по дому, не хочу, чтобы котел бесполезно "дергал" температуру в зависимости от того, находится у меня прибор на столе у компа или где-то на подоконник я его решил поставить.
    3. Если нужно, то можно. Тем более, не сложно. Сейчас пока решаю более фундаментальные задачи.
     
Статус темы:
Закрыта.