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

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

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

  1. vad711
    Регистрация:
    30.04.14
    Сообщения:
    5.310
    Благодарности:
    5.028

    vad711

    Живу здесь

    vad711

    Живу здесь

    Регистрация:
    30.04.14
    Сообщения:
    5.310
    Благодарности:
    5.028
    Адрес:
    МО
    В новой - это в какой?
     
  2. Pskovsat
    Регистрация:
    04.12.12
    Сообщения:
    2.504
    Благодарности:
    1.231

    Pskovsat

    Живу здесь

    Pskovsat

    Живу здесь

    Регистрация:
    04.12.12
    Сообщения:
    2.504
    Благодарности:
    1.231
    Адрес:
    Псков
  3. vad711
    Регистрация:
    30.04.14
    Сообщения:
    5.310
    Благодарности:
    5.028

    vad711

    Живу здесь

    vad711

    Живу здесь

    Регистрация:
    30.04.14
    Сообщения:
    5.310
    Благодарности:
    5.028
    Адрес:
    МО
    У меня норм, проверил на этой версии: Дата и время сборки прошивки Feb 24 2020 15:34:13
    upload_2020-2-26_11-10-42.png
     
  4. Pskovsat
    Регистрация:
    04.12.12
    Сообщения:
    2.504
    Благодарности:
    1.231

    Pskovsat

    Живу здесь

    Pskovsat

    Живу здесь

    Регистрация:
    04.12.12
    Сообщения:
    2.504
    Благодарности:
    1.231
    Адрес:
    Псков
    Вернул, для проверки функцию запуска компрессора к изначальному виду. Не помогло, загрузка 90-95%
    Где то засада есть...
    зы
    Код:
     Set Vacon[Hp2]: 58.00%
    11:25:10 compressorON > modWork:1[Hp2], now OFF
    EEV go preStartPos: 250
    11:25:16 Pause 5 s before start compressor
    Vacon[Hp2] ON
    Pause 20 second before go starting position EEV . . .
    EEV go StartPos: 76
    Resume task UpdateEEV
    11:25:45 Heat Pump WORK . . .
    11:25:45 Relay RPUMPB: OFF
    
    Вот этрв идет к 250 шагам загрузка 95%
    ЭТРВ стоит в 250 шагах закрузка 14%
    Этрв идет к 76 и стоит в них загрузка 95%
    через 244сек пойдет регулирование этрв загрузка 14%
     
  5. vad711
    Регистрация:
    30.04.14
    Сообщения:
    5.310
    Благодарности:
    5.028

    vad711

    Живу здесь

    vad711

    Живу здесь

    Регистрация:
    30.04.14
    Сообщения:
    5.310
    Благодарности:
    5.028
    Адрес:
    МО
    Нужно в этот момент открыть страницу OC RTOS, нажать кнопку "Обнулить время" и смотреть какая задача жрет ресурсы и дальше разбираться с доработками в этой задаче, если они были.
     
    Последнее редактирование: 26.02.20
  6. Pskovsat
    Регистрация:
    04.12.12
    Сообщения:
    2.504
    Благодарности:
    1.231

    Pskovsat

    Живу здесь

    Pskovsat

    Живу здесь

    Регистрация:
    04.12.12
    Сообщения:
    2.504
    Благодарности:
    1.231
    Адрес:
    Псков
    Чтобы уместилось сделал по мельче.
    Idle и readsensor, больше ничего не жрет.
    upload_2020-2-26_13-35-1.png

    в этой версии менялись стеки или времена как их в Создание задач FreeRTOS
     
    Последнее редактирование: 26.02.20
  7. vad711
    Регистрация:
    30.04.14
    Сообщения:
    5.310
    Благодарности:
    5.028

    vad711

    Живу здесь

    vad711

    Живу здесь

    Регистрация:
    30.04.14
    Сообщения:
    5.310
    Благодарности:
    5.028
    Адрес:
    МО
    задача vServiceHP дорабатывалась?
     
  8. Pskovsat
    Регистрация:
    04.12.12
    Сообщения:
    2.504
    Благодарности:
    1.231

    Pskovsat

    Живу здесь

    Pskovsat

    Живу здесь

    Регистрация:
    04.12.12
    Сообщения:
    2.504
    Благодарности:
    1.231
    Адрес:
    Псков
    В control. ino убраны 2 строки
    Код:
                  HP.Pump_HeatFloor(true);
                  HP.Pump_HeatFloor(false);
     
  9. Pskovsat
    Регистрация:
    04.12.12
    Сообщения:
    2.504
    Благодарности:
    1.231

    Pskovsat

    Живу здесь

    Pskovsat

    Живу здесь

    Регистрация:
    04.12.12
    Сообщения:
    2.504
    Благодарности:
    1.231
    Адрес:
    Псков
    Похоже проблема с загрузкой в 95% при старте и открывающимся ЭТРВ, у меня из за переделанной функции.
    Код:
    Стартовая позиция ЭРВ определяется по температуре подачи
    Если убрать галку использования этой функции, то загрузки такой нет и ЭТРВ после остановки ТН, не откатывается в позицию соответствующей температуре подачи.
    Переделано так
    Код:
    // Стартовая позиция ЭРВ
    uint16_t devEEV::get_StartPos()
    {
        if(GETBIT(_data.flags, fEEV_StartPosByTemp)) {
        int16_t t = HP.sTemp[TOUT].get_Temp();
            if(t <= EEV_START_POS_LOW_TEMP) return _data.StartPos;
            else if(t >= EEV_START_POS_HIGH_TEMP) return _data.PosAtHighTemp;
            return (int32_t)_data.StartPos - (t - EEV_START_POS_LOW_TEMP) * (_data.StartPos - _data.PosAtHighTemp) / (EEV_START_POS_HIGH_TEMP - EEV_START_POS_LOW_TEMP);
        } else return _data.StartPos;
    }
    подозреваю, что проблема может быть из за отрицательных значений температур.

    Вадим нужна помощь...

    ps
    вот такой вариант работал и сильной нагрузки на процессор не наблюдал.
    В поисках отката ЭТРВ вернулся к верхнему варианту, появилась перегрузка
    Код:
    // Стартовая позиция ЭРВ
    uint16_t devEEV::get_StartPos()
    {
        if(GETBIT(_data.flags, fEEV_StartPosByTemp)) {
        int16_t t = HP.sTemp[TOUT].get_Temp();
            if(t <= EEV_START_POS_LOW_TEMP) return _data.StartPos;
            else if(t >= EEV_START_POS_HIGH_TEMP) return _data.PosAtHighTemp;
    return map((t), (EEV_START_POS_LOW_TEMP), (EEV_START_POS_HIGH_TEMP), (_data.StartPos), (_data.PosAtHighTemp));
        } else return _data.StartPos;
    }
     
    Последнее редактирование: 26.02.20
  10. vad711
    Регистрация:
    30.04.14
    Сообщения:
    5.310
    Благодарности:
    5.028

    vad711

    Живу здесь

    vad711

    Живу здесь

    Регистрация:
    30.04.14
    Сообщения:
    5.310
    Благодарности:
    5.028
    Адрес:
    МО
    Все как обычно - вставляешь логирование переменных, используемых в функции и результата - смотришь и анализируешь, по необходимости корректируешь код.
     
  11. Pskovsat
    Регистрация:
    04.12.12
    Сообщения:
    2.504
    Благодарности:
    1.231

    Pskovsat

    Живу здесь

    Pskovsat

    Живу здесь

    Регистрация:
    04.12.12
    Сообщения:
    2.504
    Благодарности:
    1.231
    Адрес:
    Псков
    Вот задача.
    Код:
    // Задача Управление ЭРВ, "UpdateEEV"
    #ifdef EEV_DEF
    void vUpdateEEV(void *)
    {
        for(;;) {
            while(!(HP.get_startCompressor() && (rtcSAM3X8.unixtime() - HP.get_startCompressor() > HP.dEEV.get_delayOnPid() && HP.dEEV.get_delayOnPid() != 255))) { // ЭРВ контролирует если прошла задержка после включения компрессора (пауза перед началом работы ПИД) и задержка != 255
                vTaskDelay(TIME_EEV_BEFORE_PID / portTICK_PERIOD_MS); // Период управления ЭРВ (цикл управления)
                if(GETBIT(HP.dEEV.get_flags(), fEEV_StartPosByTemp)) { // Скорректировать ЭРВ по температуре подачи
                    HP.dEEV.set_EEV(HP.dEEV.get_StartPos());
            journal.jprintf("I am returning your ETRV to StartPos...\n");
                }
            }
    Подставил в нее вывод I am returning your ETRV to StartPos

    Лог
    Код:
    Format I2C journal (size 57344 bytes) - Ok
    Run command: START
    27.02.2020 13:04:52   Start . . .
    EEV: Set zero
    Start modWork:1[Hp2]
    13:04:52 Relay RPUMPI: ON
    13:04:53 Relay RPUMPO: ON
    Set Vacon[Hp2]: 58.00%
    EEV go preStartPos: 250
    13:05:11 Pause 5 s before start compressor
    Vacon[Hp2] ON
    Pause 20 second before go starting position EEV . . .
    EEV go StartPos: 249
    Start task UpdateEEV
    Start task UpdateHP
    13:05:39 Heat Pump ON . . .
    13:05:39 Relay RPUMPOS1: ON
    13:05:40 Relay R3WAYCLOS: ON
    Gvs 3-valve STOP
    I am returning your ETRV to StartPos...
    I am returning your ETRV to StartPos...
    I am returning your ETRV to StartPos...
    I am returning your ETRV to StartPos...
    I am returning your ETRV to StartPos...
    I am returning your ETRV to StartPos...
    I am returning your ETRV to StartPos...
    I am returning your ETRV to StartPos...
    I am returning your ETRV to StartPos...
    I am returning your ETRV to StartPos...
    I am returning your ETRV to StartPos...
    I am returning your ETRV to StartPos...
    Stop control EEV
    Vacon[Hp3] OFF
    13:06:29 Relay R3WAYCLOS: OFF
    Gvs 3-valve CLOSED
    13:06:29 Relay RPUMPOS1: OFF
    pump SO speed 2->1
    Delay: stop IN pump.
    I am returning your ETRV to StartPos...
    I am returning your ETRV to StartPos...
    13:06:35 Relay RPUMPI: OFF
    Delay: stop OUT pump.
    I am returning your ETRV to StartPos...
    I am returning your ETRV to StartPos...
    I am returning your ETRV to StartPos...
    I am returning your ETRV to StartPos...
    I am returning your ETRV to StartPos...
    I am returning your ETRV to StartPos...
    I am returning your ETRV to StartPos...
    13:07:06 Relay RPUMPO: OFF
    I am returning your ETRV to StartPos...
    Pause before closing EEV 5 sec . . .
    I am returning your ETRV to StartPos...
    EEV closed
    I am returning your ETRV to StartPos...
    I am returning your ETRV to StartPos...
    I am returning your ETRV to StartPos...
    I am returning your ETRV to StartPos...
    I am returning your ETRV to StartPos...
    I am returning your ETRV to StartPos...
    I am returning your ETRV to StartPos...
    Run command: STOP
    27.02.2020 13:07:43 Stopping...
    modWork: 0[Hp3]
    Stop task UpdateHP
     All relay off
    13:07:43 Heat Pump OFF . . .
    I am returning your ETRV to StartPos...
    I am returning your ETRV to StartPos...
    I am returning your ETRV to StartPos...
    I am returning your ETRV to StartPos...
    I am returning your ETRV to StartPos...
    13:08:51 Relay RHEAT: ON
    I am returning your ETRV to StartPos...
    I am returning your ETRV to StartPos...
    I am returning your ETRV to StartPos...
    I am returning your ETRV to StartPos...
    I am returning your ETRV to StartPos...
     Stop task UpdateEEV
    
    часть I am returning your ETRV to StartPos... вырезал иначе слишком длинно
    По идее поведение ЭТРВ соответствует правилу
    Код:
    (!(HP.get_startCompressor() && (rtcSAM3X8.unixtime() - HP.get_startCompressor() > HP.dEEV.get_delayOnPid() && HP.dEEV.get_delayOnPid() != 255)))
     
    Последнее редактирование: 27.02.20
  12. Pskovsat
    Регистрация:
    04.12.12
    Сообщения:
    2.504
    Благодарности:
    1.231

    Pskovsat

    Живу здесь

    Pskovsat

    Живу здесь

    Регистрация:
    04.12.12
    Сообщения:
    2.504
    Благодарности:
    1.231
    Адрес:
    Псков
    Вадим, покритикуй... всей логики возможно не вижу.
    Но, по моему так оно лучше.
    Код:
    // Задача Управление ЭРВ, "UpdateEEV"
    #ifdef EEV_DEF
    void vUpdateEEV(void *)
    {
        for(;;) {
    //  while((HP.is_compressor_on() && HP.dEEV.get_delayOnPid()==255) || (HP.is_compressor_on() && rtcSAM3X8.unixtime()-HP.get_startCompressor()<HP.dEEV.get_delayOnPid())) {
            while(HP.is_compressor_on() && rtcSAM3X8.unixtime()-HP.get_startCompressor()<HP.dEEV.get_delayOnPid()) { // ЭРВ контролирует если прошла задержка после включения компрессора (пауза перед началом работы ПИД) и задержка != 255
                    vTaskDelay(TIME_EEV_BEFORE_PID / portTICK_PERIOD_MS); // Период управления ЭРВ
                 if(GETBIT(HP.dEEV.get_flags(), fEEV_StartPosByTemp) && HP.dEEV.get_EEV()!=HP.dEEV.get_StartPos()) {   // Скорректировать ЭРВ по температуре подачи, если есть что корректировать
                      HP.dEEV.set_EEV(HP.dEEV.get_StartPos());
                }
            }  
     
  13. vad711
    Регистрация:
    30.04.14
    Сообщения:
    5.310
    Благодарности:
    5.028

    vad711

    Живу здесь

    vad711

    Живу здесь

    Регистрация:
    30.04.14
    Сообщения:
    5.310
    Благодарности:
    5.028
    Адрес:
    МО
    Лучшее - враг хорошего.
    Не догоняю, чего ты к этой функции пристал.
     
    Последнее редактирование: 29.02.20
  14. Pskovsat
    Регистрация:
    04.12.12
    Сообщения:
    2.504
    Благодарности:
    1.231

    Pskovsat

    Живу здесь

    Pskovsat

    Живу здесь

    Регистрация:
    04.12.12
    Сообщения:
    2.504
    Благодарности:
    1.231
    Адрес:
    Псков
    Наверное где то у меня накосячено. Найти где не могу.
    Вижу только что, кода крутится цикл в этой фкнкции идет постоянное тыркание в
    get_StartPos().
    Это дает загрузку 95%.
    В новой версии любое перемещение ЭТРВ вызывает скачек загрузки до 90-100%
     
  15. heatingmaster
    Регистрация:
    17.02.14
    Сообщения:
    803
    Благодарности:
    1.444

    heatingmaster

    Живу здесь

    heatingmaster

    Живу здесь

    Регистрация:
    17.02.14
    Сообщения:
    803
    Благодарности:
    1.444
    Адрес:
    Таллин
    @Pskovsat, мучаешься...:hello:...опять сломал..:)