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

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

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

Статус темы:
Закрыта.
  1. МальчишПлохиш
    Регистрация:
    29.08.12
    Сообщения:
    1.267
    Благодарности:
    1.699

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

    Живу здесь

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

    Живу здесь

    Регистрация:
    29.08.12
    Сообщения:
    1.267
    Благодарности:
    1.699
    Адрес:
    Саратов
    У каждого свои недостатки.
    (Х/ф «В джазе только девушки»):hello:
     
  2. Сергей247
    Регистрация:
    30.04.12
    Сообщения:
    6.161
    Благодарности:
    1.867

    Сергей247

    Живу здесь

    Сергей247

    Живу здесь

    Регистрация:
    30.04.12
    Сообщения:
    6.161
    Благодарности:
    1.867
    Адрес:
    Минск
    "Некоторым нравится погорячее!" (с)
     
  3. Perelesnik
    Регистрация:
    01.02.13
    Сообщения:
    991
    Благодарности:
    4.614

    Perelesnik

    Живу здесь

    Perelesnik

    Живу здесь

    Регистрация:
    01.02.13
    Сообщения:
    991
    Благодарности:
    4.614
    Адрес:
    Черкассы
    Прошу прощения, всё еще нет времени заниматься писанием, работаю над кодом.
    Приходится, так как с заслонками было вот такое (это где-то в период входа в режим):
    Снимок6.JPG
    Сейчас сделал вот такое:
    Снимок7.JPG
    Бегаю, проверяю... С утра раз 5 перепрошивал контроллер. Отладка - она такая отладка...

    Кусочек кода, управляющего первичкой (второй график - он от этого кода):

    Код:
    void ServoPrim () {
      Setpoint = temp_water;
      Input = forv_water;
      kp = 0.02;
      ki = 0.1;
      kd = 0.25;
      myPID.SetTunings (kp, ki, kd);
      myPID.Compute();//считаем выходной сигнал ПИД-регулятора
      spid = Output;
    
      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;
      }
      if ( forv_water < temp_water ) {
        tempdeficite = temp_water - forv_water;
      }
    
      if ( forv_water - settherm >= 1 ) {
        servoprim = 2;
      }
      else {
        if (spid > servosec){
          if (tempdeficite <= 2){
            servoprim = spid - servosec;   
          }
          else {
            servoprim = spid - (servosec / tempdeficite); 
          }
        }
        else {
          servoprim = spid;
        }
      }
      servoprim = constrain (servoprim, 0, 180);
     
    }
    Вот, пока вроде работает:
    1.JPG 2.JPG
     
  4. Perelesnik
    Регистрация:
    01.02.13
    Сообщения:
    991
    Благодарности:
    4.614

    Perelesnik

    Живу здесь

    Perelesnik

    Живу здесь

    Регистрация:
    01.02.13
    Сообщения:
    991
    Благодарности:
    4.614
    Адрес:
    Черкассы
    А это уже "угольный период".
    3.JPG

    Алгоритм управления первичкой получился весьма... сложнообъяснимый. Но цель его - четко ограничивать газовыделение из бункера, руководствуясь малейшими изменениями температуры теплоносителя и райзера.
    Само увеличение мощности теперь идет не в стиле "вперед, к светлому будущему", а постепенно, осторожно проверяя, как котик лапкой, достаточно ли газа вырабатывается.
    Объясняю:
    Допустим, мы задали температуру воды в 54 градуса. А имеем на старте 20 градусов. Если подходить к вопросу в лоб, то автоматика станет держать открытой заслонку первички всё время, пока вода не нагреется до 54 градусов. Но, так как котел не может за несколько минут нагреть большой объем воды стразу на 34 градуса, процесс весьма затянется... То есть, невзирая на способность котла выдавать полезную мощность, бункер уйдет в разгон до своих физических пределов.
    Поэтому, по алгоритму, мы разбиваем большую задачу: "нагреть с 20 до 54" на последовательность маленьких задач: сначала нагреть с 20 до 22 градусов, затем с 22 до 24, и так далее.
    При этом, на каждом этапе отслеживаем и "закрепляем" успех. Способно нагреть с 20 до 22? Отлично! Значит, газа для этого достаточно вырабатывается. А если достаточно для нагрева с 22 до 24, то, видимо, примерно такого же количества газа хватит и для нагрева с 24 до 26... или чуть больше нужно, но не очень намного больше.
    Смотрим и по температуре в райзере - пошла хорошо вверх - значит, динамика уже имеется, значит, газа вполне достаточно для такой динамики, больше пока давать не будем, даже уменьшим, а потом посмотрим на результат...
    Началась обратная динамика? То есть, падает в райзере, и долго не греет воду ("Долго" по мнению ПИД-регулятора), то чуток добавим первички...
    Лишь бы не переборщить.

    Вот, пока отлаживаю эти алгоритмы...
    В данный момент забросил 2 свежих полена на заведомо горячий бункер с углями. Наблюдаю:
    4.JPG 5.JPG

    А по поводу долго старта котла в этот раз, выяснилось: я взял для растопки "не тот" пакет с мусором - там была исключительно мокрая бумага, оказывается. Потому и не хотело разгораться.
     
    Последнее редактирование: 28.02.18
  5. StarykovMih
    Регистрация:
    13.11.12
    Сообщения:
    522
    Благодарности:
    176

    StarykovMih

    Живу здесь

    StarykovMih

    Живу здесь

    Регистрация:
    13.11.12
    Сообщения:
    522
    Благодарности:
    176
    Адрес:
    Киев
    Фактически ПИД на этапе розжига превратили в замедленный пропорциональный регулятор...
    Может попробовать использовать квадратичную функцию: - в начале градиент выше, при приближении к цели градиент падает:
    upload_2018-2-28_17-28-32.png
    Вводишь максимальную температуру, вводишь прирост времени (2...3 мин), вводишь время, за которое хочешь достичь макс температуры (например, 60 минут) и контроллер (принимая за первую точку температуру воды, которую показывает датчик и время 0) вычисляет каждый следующий шаг "интегрирования".
    Вначале быстрее, потом медленнее...
     
    Последнее редактирование: 28.02.18
  6. alarin
    Регистрация:
    29.07.16
    Сообщения:
    8.661
    Благодарности:
    3.751

    alarin

    Живу здесь

    alarin

    Живу здесь

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

    StarykovMih

    Живу здесь

    StarykovMih

    Живу здесь

    Регистрация:
    13.11.12
    Сообщения:
    522
    Благодарности:
    176
    Адрес:
    Киев
    Можно, конечно заняться точной аппроксимацией (чего?) рядом Тейлора, но чем чем выше степень, тем сложнее - вторая степень ИМХО даст более быструю реакцию при относительной простоте и универсальности.
    АПД: использование параболической функции (квадратичной или кубической) позволит дойти из точки А (нет огня) до точки Б (вода прогрета до целевого значения) по более комфортному пути (чем при использовании линейной ф-ции), когда при минимальных значениях температуры можно контролируемо добавлять мощщи больше, при достижении "целевого" значения "понемногу".
    Таким образом ИМХО за одинаковый промежуток времени котёл выработает больше тепла (интеграл под кривой), температура в помещении достигнет комфортной быстрее при управляемом на всём промежутке времени добавлении мощности.
     
    Последнее редактирование: 28.02.18
  8. alarin
    Регистрация:
    29.07.16
    Сообщения:
    8.661
    Благодарности:
    3.751

    alarin

    Живу здесь

    alarin

    Живу здесь

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

    StarykovMih

    Живу здесь

    StarykovMih

    Живу здесь

    Регистрация:
    13.11.12
    Сообщения:
    522
    Благодарности:
    176
    Адрес:
    Киев
    Насколько я понимаю. речь, скорее идёт о сплайне (например, кубическом), когда можно вычислить по предыдущим точкам еще и производную, что предскажет "загиб" функции.
    Но в данном случае речь идёт не об отслеживании заслонкой мощности (это дело ПИД регулятора), а о плавном выведении параметров этого самого котла на мощность, пропорциональную его готовности...
    Сорри, ИМХО.
     
  10. alarin
    Регистрация:
    29.07.16
    Сообщения:
    8.661
    Благодарности:
    3.751

    alarin

    Живу здесь

    alarin

    Живу здесь

    Регистрация:
    29.07.16
    Сообщения:
    8.661
    Благодарности:
    3.751
    Адрес:
    Казахстан, Алма-Ата
    @StarykovMih, Нет не об этом, приближение тейлора дает касательную к функции, но не в точке, а на отрезке. Чем выше степень, тем короче отрезок, то тем точнее приближение. Квадрат и куб сюда тоже входят. Прологарифмировав степенную функцию можно увидеть эти отрезки, последний из которых может быть ближайшим будущим. я на этой функции вычислял номера халявщиков, подделывавших АОН, для звонков по межгороду. Создал алгоритм, а программеры его в комп перенесли. Очень быстро и успешно получалось вычислять... опять оффтоп. :)]
     
  11. _Reba_
    Регистрация:
    13.10.15
    Сообщения:
    1.984
    Благодарности:
    1.764

    _Reba_

    Живу здесь

    _Reba_

    Живу здесь

    Регистрация:
    13.10.15
    Сообщения:
    1.984
    Благодарности:
    1.764
    Адрес:
    Приазовье
    Хорошо, если будет предсказывать следующий шаг или время выполнения поставленной задачи.
    Так бы, котел подсказал Руслану-"замени пакет, или будешь Долго ждать тепла ".:)
     
  12. V757V
    Регистрация:
    23.11.11
    Сообщения:
    1.683
    Благодарности:
    633

    V757V

    Живу здесь

    V757V

    Живу здесь

    Регистрация:
    23.11.11
    Сообщения:
    1.683
    Благодарности:
    633
    Адрес:
    Москва
    Вот тогда, когда вы это написали, хотел возразить... но не стал. Сейчас прочитал, вспомнил и вернулся.
    Вот вы и напоролись, за что боролись. ПИД алгоритм - это алгоритм не для любой системы, а для инерционной системы с астатизмом второго порядка, ни больше, ни меньше. Если у вас объект управления не соответствует этим требованиям ПИД алгоритм управления не подходит, система уходит вразнос. В переходном режиме для котла ПИД (по крайней мере с постоянными коэфф.) не подходит. Выйдете на уст. режим - пожалуйста. И думается, что наборов коэфф. должен быть не один., по крайней мере 2, для "газовой" фазы и для "угольной". А этап начального разгона - это вообще вещь в себе.
     
  13. arsenty
    Регистрация:
    15.01.15
    Сообщения:
    3.095
    Благодарности:
    1.079

    arsenty

    Живу здесь

    arsenty

    Живу здесь

    Регистрация:
    15.01.15
    Сообщения:
    3.095
    Благодарности:
    1.079
    Пуск он и в костре загадочен...
     
  14. V757V
    Регистрация:
    23.11.11
    Сообщения:
    1.683
    Благодарности:
    633

    V757V

    Живу здесь

    V757V

    Живу здесь

    Регистрация:
    23.11.11
    Сообщения:
    1.683
    Благодарности:
    633
    Адрес:
    Москва
    Но опытный костровой справляется и в ветер, и в дождь и в снег, только алгоритмы разные применяет.
     
  15. arsenty
    Регистрация:
    15.01.15
    Сообщения:
    3.095
    Благодарности:
    1.079

    arsenty

    Живу здесь

    arsenty

    Живу здесь

    Регистрация:
    15.01.15
    Сообщения:
    3.095
    Благодарности:
    1.079
    Ну ВЫ то правильно тут заметили в теме...а у нас вот в изысканиях три канала получается (пусковой влезает в игру...).
     
Статус темы:
Закрыта.