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

"Народный контроллер" для теплового насоса - 3

Тема в разделе "Геотермальные тепловые насосы", создана пользователем vad711, 26.11.19.

  1. Pskovsat
    Регистрация:
    04.12.12
    Сообщения:
    2.504
    Благодарности:
    1.231

    Pskovsat

    Живу здесь

    Pskovsat

    Живу здесь

    Регистрация:
    04.12.12
    Сообщения:
    2.504
    Благодарности:
    1.231
    Адрес:
    Псков
    Извиняюсь, у меня трех-ходовой выкинут из программы.
    А в гите недоглядел...
    В гите отключение насоса есть в строке 3082, и вообще все собрано в задаче
    я же у себя вынес это управление в
    Код:
    void HeatPump::Pumps(boolean b, uint16_t d)
    {
    #ifdef DEBUG_MODWORK
        journal.printf(" Pumps(%d), modWork: %X\n", b, get_modWork());
    #endif
    
        if(!b && GETBIT(dRelay[PUMP_IN].flags, fR_StatusMain)) {
             journal.jprintf(" Delay: stop IN pump.\n");
            _delay(DELAY_BEFORE_STOP_IN_PUMP * 1000); // задержка перед выключением вентилятора, после выключения компрессора (облегчение останова)
        }
           dRelay[PUMP_IN].set_Relay(b);            // Реле вентилятора
    
       if(b) {
           if((get_modWork() & pBOILER)) {
                      dRelay[RSUPERBOILER].set_ON();     // насос ГВС Включить
                      onBoiler = true;
                      offBoiler = 0;
    #ifdef SUPERBOILER
           if(dRelay[PUMP_OUT].get_Relay()) { _delay(d); dRelay[PUMP_OUT].set_OFF(); } // Если работает насос отопления, выключить.
    #endif
               } else {
                    dRelay[PUMP_OUT].set_ON();          // насос отопления
               onBoiler = false; }
             } else {
            if(GETBIT(dRelay[RSUPERBOILER].flags, fR_StatusMain)) {
              _delay(d);                           // Задержка после остановки вентиляторов
               dRelay[RSUPERBOILER].set_OFF();     // насос супер-бойлера
             }
            if(GETBIT(dRelay[RPUMPO].flags, fR_StatusMain)) {  // пауза перед выключением насоса отопления, если нужно
            if(Option.delayOffPump) journal.jprintf(" Delay: stop OUT pump.\n");
              _delay(Option.delayOffPump * 1000);  // задержка перед выключением насосов после выключения компрессора (облегчение останова)
               dRelay[PUMP_OUT].set_OFF();         // насос отопления выключить
          }
               onBoiler = false;
                   offBoiler = rtcSAM3X8.unixtime();     // запомнить время выключения ГВС (нужно для переключения)
             }
           if(!b) SETBIT0(HP.flags, fHP_BoilerTogetherHeat);
    }
    выкинув все ненужное мне.
    Кода то, Вадим и предлагал перенести управление насосами супербойлера в PUMPS
     
  2. vad711
    Регистрация:
    30.04.14
    Сообщения:
    5.310
    Благодарности:
    5.028

    vad711

    Живу здесь

    vad711

    Живу здесь

    Регистрация:
    30.04.14
    Сообщения:
    5.310
    Благодарности:
    5.028
    Адрес:
    МО
    Вообще в НК очень удобно тестировать и отлаживать - для этого достаточно скомпилить с опцией
    #define DEBUG_MODWORK и переключиться в тестовый режим SAFE_TEST через веб.
    Далее меняя у датчиков значения для режима тест, загонять ТН в нужный режим, а текущее состояние будет выводиться через монитор порта.
    Реальные подключенные устройства к НК трогаться не будут.
     
    Последнее редактирование: 30.10.20
  3. Pskovsat
    Регистрация:
    04.12.12
    Сообщения:
    2.504
    Благодарности:
    1.231

    Pskovsat

    Живу здесь

    Pskovsat

    Живу здесь

    Регистрация:
    04.12.12
    Сообщения:
    2.504
    Благодарности:
    1.231
    Адрес:
    Псков
    Код:
    $Compressor protection 14:17:22 $ERROR source: PEVA, code: -3
    modWork:84[Bp14] RCOMP:0 RPUMPI:1 RPUMPO:0 RPUMPOS1:0 RPUMPOS2:0 RSUPERBOILER:1 RPUMPB:0 R3WAYOPEN:0 R3WAYCLOS:0 RBOILER:0 RHEAT:0 RDFPAL:0 R4WAY:0 freqFC:51.37 Power:4.530 EEV:184 TSTT:1
    TOUT:5.81 TIN:20.25 TBOILER:28.48 TCOMP:83.06 TCOMPIN:-2.41 TCONIN:26.72 TCONOUT:37.85 TCONING:23.87 TCONOUTG:26.68 TEVAIN:-20.15 TEVAOUT:0.29 TEVAOUTG:2.00 TPCDIN:11.53 TPCDOUT:26.87 PEVA:2.17 PCON:19.07
    14:17:22 Run: REPEAT
    02.11.2020 14:17:22 Stopping...
    Как бы сюда, еще протоки с датчиков выводить, во время наступления ошибки?
     
  4. vad711
    Регистрация:
    30.04.14
    Сообщения:
    5.310
    Благодарности:
    5.028

    vad711

    Живу здесь

    vad711

    Живу здесь

    Регистрация:
    30.04.14
    Сообщения:
    5.310
    Благодарности:
    5.028
    Адрес:
    МО
    Дописать вывод датчиков sFrequency в метод HeatPump: save_DumpJournal
     
  5. Pskovsat
    Регистрация:
    04.12.12
    Сообщения:
    2.504
    Благодарности:
    1.231

    Pskovsat

    Живу здесь

    Pskovsat

    Живу здесь

    Регистрация:
    04.12.12
    Сообщения:
    2.504
    Благодарности:
    1.231
    Адрес:
    Псков
    Сюда?
    Код:
      // Доп инфо
      for(i = 0; i < TNUMBER; i++) if(sTemp[i].get_present() && !(SENSORTEMP[i] & 4)) ((journal).*(fn))(" %s:%.2d", sTemp[i].get_name(), sTemp[i].get_Temp());
      for(i = 0; i < ANUMBER; i++) if(sADC[i].get_present()) ((journal).*(fn))(" %s:%.2d", sADC[i].get_name(), sADC[i].get_Press());
      for(i = 0; i < FNUMBER; i++) if(sFrequency[i].get_present()) ((journal).*(fn))(" %s:%.2d", sFrequency[i].get_name(), sFrequency[i].get_Value());
      ((journal).*(fn))(cStrEnd);
     
  6. vad711
    Регистрация:
    30.04.14
    Сообщения:
    5.310
    Благодарности:
    5.028

    vad711

    Живу здесь

    vad711

    Живу здесь

    Регистрация:
    30.04.14
    Сообщения:
    5.310
    Благодарности:
    5.028
    Адрес:
    МО
    Ага
     
  7. Pskovsat
    Регистрация:
    04.12.12
    Сообщения:
    2.504
    Благодарности:
    1.231

    Pskovsat

    Живу здесь

    Pskovsat

    Живу здесь

    Регистрация:
    04.12.12
    Сообщения:
    2.504
    Благодарности:
    1.231
    Адрес:
    Псков
    @vad711,
    В каких случаях лучше использовать для определения состояния реле
    GETBIT (dRelay[PUMP_IN].flags, fR_StatusMain)
    , а в каких
    dRelay[PUMP_IN].get_Relay()
    Или разницы нет?
     
  8. vad711
    Регистрация:
    30.04.14
    Сообщения:
    5.310
    Благодарности:
    5.028

    vad711

    Живу здесь

    vad711

    Живу здесь

    Регистрация:
    30.04.14
    Сообщения:
    5.310
    Благодарности:
    5.028
    Адрес:
    МО
    Нужно использовать этот метод класса.
     
  9. Pskovsat
    Регистрация:
    04.12.12
    Сообщения:
    2.504
    Благодарности:
    1.231

    Pskovsat

    Живу здесь

    Pskovsat

    Живу здесь

    Регистрация:
    04.12.12
    Сообщения:
    2.504
    Благодарности:
    1.231
    Адрес:
    Псков
    Правка корректировка ЭТРВ при изменении частоты компрессора.
    Нет ограничений на перемещение этрв.
    Тут получилось, что переходя с ГВСа на отопление, ЭТРВ закрылось в 0.
    Но по идее ведь проверка тут...
    Код:
    int8_t devEEV::set_EEV(int16_t x)
    {
        err = OK;
        if(!(GETBIT(_data.flags, fPresent))) { // ЭРВ не установлен
            err = ERR_DEVICE;
            return err;
        }
        if(x < EEV_CLOSE_STEP) x = EEV_CLOSE_STEP; else if(x > _data.maxSteps) x = _data.maxSteps;
        if(testMode != SAFE_TEST) stepperEEV.step(x);                   // не  SAFE_TEST - работаем
        else EEV = x;                                                    // SAFE_TEST только координаты меняем
        return err;
    }
     
    Последнее редактирование: 10.11.20
  10. vad711
    Регистрация:
    30.04.14
    Сообщения:
    5.310
    Благодарности:
    5.028

    vad711

    Живу здесь

    vad711

    Живу здесь

    Регистрация:
    30.04.14
    Сообщения:
    5.310
    Благодарности:
    5.028
    Адрес:
    МО
    Там другая проверка, щас пофикшу...
     
  11. Pentilla
    Регистрация:
    20.06.13
    Сообщения:
    37
    Благодарности:
    13

    Pentilla

    Участник

    Pentilla

    Участник

    Регистрация:
    20.06.13
    Сообщения:
    37
    Благодарности:
    13
    Адрес:
    Украина. Одесса.
    Всем привет, подскажите по контроллеру, так и не нашел - как его сделать или заказать?
    - плату кто-то делает или можно самому изготовить?
     
  12. compacter
    Регистрация:
    10.09.18
    Сообщения:
    43
    Благодарности:
    4

    compacter

    Участник

    compacter

    Участник

    Регистрация:
    10.09.18
    Сообщения:
    43
    Благодарности:
    4
  13. Pentilla
    Регистрация:
    20.06.13
    Сообщения:
    37
    Благодарности:
    13

    Pentilla

    Участник

    Pentilla

    Участник

    Регистрация:
    20.06.13
    Сообщения:
    37
    Благодарности:
    13
    Адрес:
    Украина. Одесса.
    Перечитал все что там можно было.
    Огромная конечно работа проделана вами всеми!
    На сейчас в Украине кто-то платы заказывал, делал, может какой-то общей закупкой?

    Немного завис, правильно ли я понял, что можно собрать и без платы?
     
  14. dimex2015
    Регистрация:
    25.10.15
    Сообщения:
    1.947
    Благодарности:
    372

    dimex2015

    Живу здесь

    dimex2015

    Живу здесь

    Регистрация:
    25.10.15
    Сообщения:
    1.947
    Благодарности:
    372
    Адрес:
    Минск
    Да.
     
  15. dimex2015
    Регистрация:
    25.10.15
    Сообщения:
    1.947
    Благодарности:
    372

    dimex2015

    Живу здесь

    dimex2015

    Живу здесь

    Регистрация:
    25.10.15
    Сообщения:
    1.947
    Благодарности:
    372
    Адрес:
    Минск
    Давно не глючил мой ТН. И вот:
    FC> 39.27
    $Compressor protection 21:29:19 Relay RCOMP: OFF
    21:29:19 $ERROR source: SERRFC, code: -7
    modWork: 81[Hp12] RCOMP: 0 RPUMPO: 1 RRESET: 0 RPUMPI: 1 RBOILER: 0 RSUPERBOILER: 1 R4WAY:0 RPUMPB: 0 freqFC: 0.00 Power: 0.000 EEV: 2
    TOUT: 2.31 TIN: 23.00 TEVAIN: 14.18 TEVAOUT: 13.93 TCONIN: 0.00 TCONOUT: 16.81 TBOILER: 31.32 TCOMPIN: 26.89 TCOMP: 41.27 TEVAING: 3.80 TEVAOUTG: 3.86 TCONING: 25.06 TCONOUTG: 25.07 TROOM1:22.55 TROOM2:23.01 TROOM3:23.44 TROOM4:23.45 TROOM5:20.56 TROOM6:24.00 TGEO1:4.03 TGEO2:4.13 TGEO3:4.00 TGEO4:3.56 TGEO5:3.58 PEVA: 11.08 PCON: 11.08
    Run command: REPEAT
    22.11.2020 21:29:19 Stopping...
    modWork: 81[Hp12]
    Stop control EEV
    Omron MX2 OFF
    Delay: stop IN pump.
    Stop task UpdateHP
    21:29:30 Relay RPUMPI: OFF
    Delay: stop OUT pump.
    21:29:31 Relay RPUMPO: OFF
    21:29:32 Relay RSUPERBOILER: OFF
    Stop task UpdateHP
    21:29:32 Heat Pump OFF. ..
    Repeat start Heat Pump (attempts remaining 8). ..
    Start over 120 sec. ..
    Stop task UpdateEEV
    21:31:21 Ping[232] 95ms
    > narodmon. ru OK
    Run command: AUTOSTART
    22.11.2020 21:31:35 Start. ..
    21:31:35 Relay RRESET: ON
    21:31:35 Relay RRESET: OFF
    Reset Omron MX2 by RRESET: Ok
    Start modWork: 0[Hp5]
    Start task UpdateHP
    21:31:37 Heat Pump ON. ..
    > mqtt. thingspeak. com OK
    21:36:21 Ping[233] 115ms
    > narodmon. ru OK
    > mqtt. thingspeak. com OK

    Код -7
    upload_2020-11-22_23-18-29.png
    Правильно ли я понимаю что код -7 соответствует коду из манула
    upload_2020-11-22_23-19-33.png
    Если это E07, то странно - откуда торможение, если обороты не менялись.