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

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

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

Статус темы:
Закрыта.
  1. dimex2015
    Регистрация:
    25.10.15
    Сообщения:
    1.947
    Благодарности:
    372

    dimex2015

    Живу здесь

    dimex2015

    Живу здесь

    Регистрация:
    25.10.15
    Сообщения:
    1.947
    Благодарности:
    372
    Адрес:
    Минск
    Скомпилилось. Я конечно проверю еще раз.
     
  2. Pskovsat
    Регистрация:
    04.12.12
    Сообщения:
    2.497
    Благодарности:
    1.231

    Pskovsat

    Живу здесь

    Pskovsat

    Живу здесь

    Регистрация:
    04.12.12
    Сообщения:
    2.497
    Благодарности:
    1.231
    Адрес:
    Псков
    Это видимо не в конфиге, а в константах.

    Сделал настройки как на картинках Вадима.
    Насос рециркуляции, во время когда в расписании, не работает догрев тэном, перестал включаться.
    Это так задумано? Или только у меня.
    Я немного работу этого насоса переделывал и особо не проверял...
     
    Последнее редактирование: 08.05.19
  3. vad711
    Регистрация:
    30.04.14
    Сообщения:
    5.267
    Благодарности:
    4.964

    vad711

    Живу здесь

    vad711

    Живу здесь

    Регистрация:
    30.04.14
    Сообщения:
    5.267
    Благодарности:
    4.964
    Адрес:
    МО
    .
    А теперь попробуй изменить день недели или час.

    Ну не знаю, у меня работает как было задумано. Там еще разные опции есть - супербойлер и т. п., которые тоже влияют на то, как это все управляется.
     
  4. Pskovsat
    Регистрация:
    04.12.12
    Сообщения:
    2.497
    Благодарности:
    1.231

    Pskovsat

    Живу здесь

    Pskovsat

    Живу здесь

    Регистрация:
    04.12.12
    Сообщения:
    2.497
    Благодарности:
    1.231
    Адрес:
    Псков
    CONTROL. INO стр 1059-1064
    Нет в шедулере или как он там задания, значит пролетаем включение циркуляции по времени.

    У тебя тоже не должно работать...
    Тем не менее, почему в то время как не разрешено греть бойлер по рассписанию, к крану ГВС не должна подсасываться горячая вода?

    Зачем вообще эта заморочка?
    Код:
    #ifdef SUPERBOILER
                  if (HP.scheduleBoiler())  // Для супербойлера игнорироуем для циркуляции флаг включения бойлера только расписание
    #else
                    if ((HP.scheduleBoiler())&&(HP.get_BoilerON()))  // если бойлер разрешен и разрешено греть бойлер согласно расписания или расписание выключено
    #endif
                    {
    переделать вообще так
    Код:
                // 2. Управление циркуляционным насосом ГВС
    #ifdef RPUMPB
    #ifdef SUPERBOILER
      if (HP.sTemp[TBOILER].get_Temp() > 30*100) // Для супербойлера игнорируем для циркуляции флаг включения бойлера.
    #else
      if ((HP.scheduleBoiler())&&(HP.get_BoilerON()))  // если бойлер разрешен и разрешено греть бойлер согласно расписания или расписание выключено
    #endif
    {
    #ifndef SUPERBOILER   // если не определен супер бойлер, то при нагреве ГВС циркуляция всегда рабоатет
                        if ((HP.get_modWork()==pBOILER)||(HP.get_modWork()==pNONE_B))           // Если включен нагрев ГВС всегда включать насос циркуляции ЕСЛИ НЕ СУПЕРБОЙЛЕР
                        { HP.dRelay[RPUMPB].set_ON(); }
                        else
    #else                 // если супер бойлер, то при нагреве ГВС циркуляция работатет при работающем ТЭНЕ бойлера
              if (((HP.get_modWork()==pBOILER)||(HP.get_modWork()==pNONE_B)) && (HP.dRelay[RBOILER].get_Relay()))          // Если включен нагрев ГВС всегда включать насос циркуляции ЕСЛИ НЕ СУПЕРБОЙЛЕР
              { HP.dRelay[RPUMPB].set_ON(); }
              else      
    #endif
                            if (HP.get_Circulation())                     // Циркуляция разрешена
                            {
                                if (HP.get_CirculWork()==0) { HP.dRelay[RPUMPB].set_OFF(); continue;}   // В условиях стоит время работы 0 - выключаем насос ГВС
                                if (HP.get_CirculPause()==0) { HP.dRelay[RPUMPB].set_ON(); continue;}   // В условиях стоит время паузы 0 - включаем насос ГВС
                                if(HP.dRelay[RPUMPB].get_Relay())                                       // Насос включен Смотрим времена
                                {
                                    if(((long)xTaskGetTickCount()-RPUMPBTick ) > HP.get_CirculWork()*configTICK_RATE_HZ)   // ждем время мсек
                                    {
                                        RPUMPBTick=xTaskGetTickCount();
                                        HP.dRelay[RPUMPB].set_OFF();                                        // выключить насос
                                    }
                                }
                                else                                                                    // Насос выключен
                                {
                                    if(((long)xTaskGetTickCount()-RPUMPBTick ) >  HP.get_CirculPause()*configTICK_RATE_HZ)   // ждем время мсек
                                    {
                                        RPUMPBTick=xTaskGetTickCount();
                                        HP.dRelay[RPUMPB].set_ON();               // включить насос
                                    }
                                }                                             // if(HP.dRealay[RPUMPB].get_Relay())
                            }                                               //  if (HP.get_Circulation())
                            else HP.dRelay[RPUMPB].set_OFF() ;              // if (HP.get_Circulation())        выключить насос если его управление запрещено
                    }                                                   //  if (HP.scheduleBoiler())
                    else  HP.dRelay[RPUMPB].set_OFF() ;                 // По расписанию выключено или бойлер запрещен,  насос выключаем
    #endif                                                      // #ifdef RPUMPB
     
    Последнее редактирование: 08.05.19
  5. vad711
    Регистрация:
    30.04.14
    Сообщения:
    5.267
    Благодарности:
    4.964

    vad711

    Живу здесь

    vad711

    Живу здесь

    Регистрация:
    30.04.14
    Сообщения:
    5.267
    Благодарности:
    4.964
    Адрес:
    МО
    Я не использую циркуляцию ГВС. Павел использует, и значит работает, раз не изменил код еще.

    Попробуй, потом расскажи как оно.
     
  6. dimex2015
    Регистрация:
    25.10.15
    Сообщения:
    1.947
    Благодарности:
    372

    dimex2015

    Живу здесь

    dimex2015

    Живу здесь

    Регистрация:
    25.10.15
    Сообщения:
    1.947
    Благодарности:
    372
    Адрес:
    Минск
    Сегодня НК выдал сообщение
    18:05:18 Error -11 PrepareTemp bus 1
    18:05:32 MSG: #6: Критическая температура ГВС
    18:04:58 Prepare_Temp: Ошибка сброса на OneWire шине (обрыв или замыкание)

    Видимо КЗ.
     
  7. Pskovsat
    Регистрация:
    04.12.12
    Сообщения:
    2.497
    Благодарности:
    1.231

    Pskovsat

    Живу здесь

    Pskovsat

    Живу здесь

    Регистрация:
    04.12.12
    Сообщения:
    2.497
    Благодарности:
    1.231
    Адрес:
    Псков
    постоянно, даже внимания на неё уже не обращаю.
     
  8. dimex2015
    Регистрация:
    25.10.15
    Сообщения:
    1.947
    Благодарности:
    372

    dimex2015

    Живу здесь

    dimex2015

    Живу здесь

    Регистрация:
    25.10.15
    Сообщения:
    1.947
    Благодарности:
    372
    Адрес:
    Минск
    Дык НК не стартует.
     
  9. vad711
    Регистрация:
    30.04.14
    Сообщения:
    5.267
    Благодарности:
    4.964

    vad711

    Живу здесь

    vad711

    Живу здесь

    Регистрация:
    30.04.14
    Сообщения:
    5.267
    Благодарности:
    4.964
    Адрес:
    МО
    Ну это не значит, что у других должно быть так же.
    У меня такой ошибки не бывает, хотя датчиков температуры 18 штук.

    Ошибка сброса на OneWire шине (обрыв или замыкание)

    Что пишет при старте в этом разделе: "1. Setting and checking I2C devices. ."?
     
    Последнее редактирование: 09.05.19
  10. dimex2015
    Регистрация:
    25.10.15
    Сообщения:
    1.947
    Благодарности:
    372

    dimex2015

    Живу здесь

    dimex2015

    Живу здесь

    Регистрация:
    25.10.15
    Сообщения:
    1.947
    Благодарности:
    372
    Адрес:
    Минск
    Оказалось в мое отсутствие произошла авария. Вода залила датчик температуры бойлера и т. д. Мои эксперименты с ТЭН бойлера привели к аварии. Расплавилась армированная труба выхода горячей воды из бойлера. Датчик температуры бойлера просушил. Ошибок нет. Но раз авария и ТН выключен - буду прикручивать к нему плату на ds2482.
     

    Вложения:

    • 20190509_212312.jpg
  11. Pskovsat
    Регистрация:
    04.12.12
    Сообщения:
    2.497
    Благодарности:
    1.231

    Pskovsat

    Живу здесь

    Pskovsat

    Живу здесь

    Регистрация:
    04.12.12
    Сообщения:
    2.497
    Благодарности:
    1.231
    Адрес:
    Псков
    Жесть...
    Судя по фото, она не то, что не армированная, она вообще не ППР...
    Это похоже канал для проводов.
     
    Последнее редактирование: 09.05.19
  12. Pskovsat
    Регистрация:
    04.12.12
    Сообщения:
    2.497
    Благодарности:
    1.231

    Pskovsat

    Живу здесь

    Pskovsat

    Живу здесь

    Регистрация:
    04.12.12
    Сообщения:
    2.497
    Благодарности:
    1.231
    Адрес:
    Псков
    Первый вариант не взлетел, точнее падал.
    А вот так, потестировал денек, вроде все устраивает.
    Код:
                // 2. Управление циркуляционным насосом ГВС
    #ifdef RPUMPB
    #ifdef SUPERBOILER
          if (HP.sTemp[TBOILER].get_Temp() > 30*100) // Для супербойлера игнорироуем для циркуляции флаг включения бойлера.
    #else
          if ((HP.sTemp[TBOILER].get_Temp() > 30*100)&&(HP.get_BoilerON()))  // если бойлер разрешен и разрешено греть бойлер согласно расписания или расписание выключено
    #endif
    {
    #ifndef SUPERBOILER   // если не определен супер бойлер, то при нагреве ГВС циркуляция всегда рабоатет
                        if ((HP.get_modWork()==pBOILER)||(HP.get_modWork()==pNONE_B)) // Если включен нагрев ГВС всегда включать насос циркуляции ЕСЛИ НЕ СУПЕРБОЙЛЕР
                        { HP.dRelay[RPUMPB].set_ON(); }
                        else         
    #endif
                            if (HP.get_Circulation())                     // Циркуляция разрешена
                            {
                              if(HP.dRelay[RBOILER].get_Relay()) { HP.dRelay[RPUMPB].set_ON();}      // Догрев или совместно с ТЭН, включаем насос ГВС - улучшаем перемешивание
           else {
                                if(HP.get_CirculWork()==0) { HP.dRelay[RPUMPB].set_OFF(); continue;}   // В условиях стоит время работы 0 - выключаем насос ГВС
                                if(HP.get_CirculPause()==0) { HP.dRelay[RPUMPB].set_ON(); continue;}   // В условиях стоит время паузы 0 - включаем насос ГВС
                                if(HP.dRelay[RPUMPB].get_Relay())                                      // Насос включен Смотрим времена
                                {
                                    if(((long)xTaskGetTickCount()-RPUMPBTick ) > HP.get_CirculWork()*configTICK_RATE_HZ)   // ждем время мсек
                                    {
                                        RPUMPBTick=xTaskGetTickCount();
                                        HP.dRelay[RPUMPB].set_OFF();                                        // выключить насос
                                    }
                                }
                                else                                                                    // Насос выключен
                                {
                                    if(((long)xTaskGetTickCount()-RPUMPBTick ) >  HP.get_CirculPause()*configTICK_RATE_HZ)   // ждем время мсек
                                    {
                                        RPUMPBTick=xTaskGetTickCount();
                                        HP.dRelay[RPUMPB].set_ON();               // включить насос
                                    }
                                }                                             //  if(HP.dRealay[RPUMPB].get_Relay())
                            }                                               //  if (HP.get_Circulation())
                        }
                            else HP.dRelay[RPUMPB].set_OFF();               //  if (HP.get_Circulation()) выключить насос если его управление запрещено
                    }                                                   //  if (HP.scheduleBoiler())
                    else  HP.dRelay[RPUMPB].set_OFF();                  //  Бойлер холодный или запрещен, насос выключаем
    #endif 
     
  13. dimex2015
    Регистрация:
    25.10.15
    Сообщения:
    1.947
    Благодарности:
    372

    dimex2015

    Живу здесь

    dimex2015

    Живу здесь

    Регистрация:
    25.10.15
    Сообщения:
    1.947
    Благодарности:
    372
    Адрес:
    Минск
    Попробовал свою плату подключить к плате Добрыни

    В логе пишет
    23:02:24 Error -65 PrepareTemp bus 1
    23:02:24 $ERROR source: Prepare_Temp, code: -65
    modWork: 0[none] RCOMP: 0 RPUMPO: 0 R3WAY:0 RRESET: 0 RPUMPI: 0 RBOILER: 0 RSUPERBOILER: 0 RTRV: 0 RPUMPB: 0 freqFC: 0.00 Power: 0.000 EEV:-1
    TOUT: 0.00 TIN: 21.18 TEVAIN: 0.00 TEVAOUT: 0.00 TCONIN: 0.00 TCONOUT: 0.00 TBOILER: 0.00 TACCUM: 0.00 TCOMPIN: 0.00 TCOMP: 0.00 TEVAING: 0.00 TEVAOUTG: 0.00 TCONING: 0.00 TCONOUTG: 0.00 PEVA: 10.91 PCON: 10.86
    23:02:24 MSG: #4: 23:02:24 Prepare_Temp: Мастер DS2482 не найден на шине, возможно ошибка шины I2C

    В конфиге прописал:
    #define ONEWIRE_DS2482 / + Использование мастера i2c Onewire DS2482 (адрес AD1,0 = 0,0)
    #define ONEWIRE_DS2482_SECOND / второй мастер i2 Onewire DS2482 (адрес AD1,0 = 0,1)
    #define ONEWIRE_DS2482_THIRD / третий мастер i2 Onewire DS2482 (адрес AD1,0 = 1,0)
    #define ONEWIRE_DS2482_FOURTH / четвертый мастер i2 Onewire DS2482 (адрес AD1,0 = 1,1)
    #ifdef ONEWIRE_DS2482_2WAY
    const uint8_t ONEWIRE_2WAY = 0b1010; / На каких шинах (4|3|2|1) двух-проводные датчики, битовая маска
    #else
    const uint8_t ONEWIRE_2WAY = 0b0000;
    #endif
    #define ONEWIRE_DONT_CHG_RES / Не записывать 9/12-битное разрешение в датчик при привязке, а просто устанавливать
     

    Вложения:

    • 20190509_231205.jpg
    • 20190509_231150.jpg
    • 20190509_232543.jpg
    Последнее редактирование: 09.05.19
  14. vad711
    Регистрация:
    30.04.14
    Сообщения:
    5.267
    Благодарности:
    4.964

    vad711

    Живу здесь

    vad711

    Живу здесь

    Регистрация:
    30.04.14
    Сообщения:
    5.267
    Благодарности:
    4.964
    Адрес:
    МО
    @dimex2015, Чего при старте НК пишет?
    Одна плата расширения - 2 шины (ONEWIRE_DS2482, ONEWIRE_DS2482_SECOND).
     
  15. dimex2015
    Регистрация:
    25.10.15
    Сообщения:
    1.947
    Благодарности:
    372

    dimex2015

    Живу здесь

    dimex2015

    Живу здесь

    Регистрация:
    25.10.15
    Сообщения:
    1.947
    Благодарности:
    372
    Адрес:
    Минск
    �e�/��gt~IA�0 Q��0�X*�����\�-�E������ r���xn��
    êQ�E���_}���?٢��\XI5��-��ه?���j���t؟�=D&�t�隭����GW^e:����xz��4�F�T��������Q+���mh���F���8|� 41j�c�O��#�;�f��=#["4z��NI�c���Ù�sֲ�]�#��.�x����W��xyK[�����!)|M&�{|�&m:�k���5�e��O�l<h�{��x����pN�3n^��s�rSF�ׁ��)�>Ghdbc�������l�E��O��u�Q���x�UkL�"��m;Y|DMxD
    �l���ے��������X�����i�4n��m���N�)���b"�cR3�{Z�)a[*��=W�����Qk3�?
    Format I2C journal (size 57344 bytes) - Ok
    23:02:24 Error -65 PrepareTemp bus 1
    23:02:24 $ERROR source: Prepare_Temp, code: -65
    modWork: 0[none] RCOMP: 0 RPUMPO: 0 R3WAY:0 RRESET: 0 RPUMPI: 0 RBOILER: 0 RSUPERBOILER: 0 RTRV: 0 RPUMPB: 0 freqFC: 0.00 Power: 0.000 EEV:-1
    TOUT: 0.00 TIN: 21.18 TEVAIN: 0.00 TEVAOUT: 0.00 TCONIN: 0.00 TCONOUT: 0.00 TBOILER: 0.00 TACCUM: 0.00 TCOMPIN: 0.00 TCOMP: 0.00 TEVAING: 0.00 TEVAOUTG: 0.00 TCONING: 0.00 TCONOUTG: 0.00 PEVA: 10.91 PCON: 10.86
    23:02:24 MSG: #4: 23:02:24 Prepare_Temp: Мастер DS2482 не найден на шине, возможно ошибка шины I2C
    23:02:26 Error -65 PrepareTemp bus 1
    23:02:30 Error -65 PrepareTemp bus 1
    23:02:34 Error -65 PrepareTemp bus 1
    23:02:38 Error -65 PrepareTemp bus 1
    Connected server: sms. ru port: 80
    GET http://sms.ru/sms/send?api_id=96041739-8B7E-3C22-ABC6-9B5C5B5E8F2D&to=+375296625563&text=Control+ERROR+23:02:24+Prepare_Temp:+Мастер+DS2482+не+найден+на+шине,+возможно+ошибка+шины+I2C
    sms. ru return: 201

    Вообще часто писало что не может прочесть память. Может память на тех же ногах висит что и эта плата. Плату подключал в разъем XP9.
     
Статус темы:
Закрыта.