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

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

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

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

    dimex2015

    Живу здесь

    dimex2015

    Живу здесь

    Регистрация:
    25.10.15
    Сообщения:
    1.947
    Благодарности:
    372
    Адрес:
    Минск
    Всем привет! Имею проблему следующего характера. Есть у меня "удаленные" датчики температуры. Увы время от времени то один то друго дачтвик вместо температуры комнаты передает значение 0. Для проводных датчиков у нас есть возможность убирать/ не учитывать значения (игнор, лог,crc). Для удаленных нету. Как оптимальнее всего поступить для решения задачи (а именно для удаленных датчиков если было значение например 22 градуса, потом пришло значение 0 - считать что после 22 сразу не может быть 0 и игрорить)?
     
  2. vad711
    Регистрация:
    30.04.14
    Сообщения:
    5.305
    Благодарности:
    5.023

    vad711

    Живу здесь

    vad711

    Живу здесь

    Регистрация:
    30.04.14
    Сообщения:
    5.305
    Благодарности:
    5.023
    Адрес:
    МО
    Перенести с проводных код, где GAP_NUMBER...
     
  3. Pskovsat
    Регистрация:
    04.12.12
    Сообщения:
    2.500
    Благодарности:
    1.231

    Pskovsat

    Живу здесь

    Pskovsat

    Живу здесь

    Регистрация:
    04.12.12
    Сообщения:
    2.500
    Благодарности:
    1.231
    Адрес:
    Псков
    Ни у кого нет NextionEditor проверенного? Помоложе чем текущий 1.63.3
     
  4. dimex2015
    Регистрация:
    25.10.15
    Сообщения:
    1.947
    Благодарности:
    372

    dimex2015

    Живу здесь

    dimex2015

    Живу здесь

    Регистрация:
    25.10.15
    Сообщения:
    1.947
    Благодарности:
    372
    Адрес:
    Минск
    Вообще экраном не пользуюсь.
     
  5. Igoryok
    Регистрация:
    13.05.12
    Сообщения:
    1.697
    Благодарности:
    1.135

    Igoryok

    Живу здесь

    Igoryok

    Живу здесь

    Регистрация:
    13.05.12
    Сообщения:
    1.697
    Благодарности:
    1.135
    Адрес:
    Иваново
    В личку стучись, нашёл какой то установщик на старом компе
     
  6. Igoryok
    Регистрация:
    13.05.12
    Сообщения:
    1.697
    Благодарности:
    1.135

    Igoryok

    Живу здесь

    Igoryok

    Живу здесь

    Регистрация:
    13.05.12
    Сообщения:
    1.697
    Благодарности:
    1.135
    Адрес:
    Иваново
    Вдруг еще кому пригодится
     

    Вложения:

  7. Альтермолог
    Регистрация:
    29.03.11
    Сообщения:
    8.499
    Благодарности:
    6.236

    Альтермолог

    Живу здесь

    Альтермолог

    Живу здесь

    Регистрация:
    29.03.11
    Сообщения:
    8.499
    Благодарности:
    6.236
    Адрес:
    Москва
     

    Вложения:

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

    Pskovsat

    Живу здесь

    Pskovsat

    Живу здесь

    Регистрация:
    04.12.12
    Сообщения:
    2.500
    Благодарности:
    1.231
    Адрес:
    Псков
    Переделываю режим разморозка, чтобы можно было допустим после ошибки запустить и оттаять в ручную.
    Сделал кнопку на экран.
    Залил, а экран тупо моргает.
    Залил старый, все равно моргает.
    Навешал кондеров на длинные провода до экрана, работает.
    Три года работал, а тут поле прошивки стал больше потреблять тока?
     
  9. Igoryok
    Регистрация:
    13.05.12
    Сообщения:
    1.697
    Благодарности:
    1.135

    Igoryok

    Живу здесь

    Igoryok

    Живу здесь

    Регистрация:
    13.05.12
    Сообщения:
    1.697
    Благодарности:
    1.135
    Адрес:
    Иваново
    У меня всегда моргает). Раньше помогал нормированный удар, думал контакт плохой (я тач менял).
    А тут недавно померял напряжение - 4.64...
     
  10. dimex2015
    Регистрация:
    25.10.15
    Сообщения:
    1.947
    Благодарности:
    372

    dimex2015

    Живу здесь

    dimex2015

    Живу здесь

    Регистрация:
    25.10.15
    Сообщения:
    1.947
    Благодарности:
    372
    Адрес:
    Минск
    Удар повышал напряжение до 5 вольт!
     
  11. Pskovsat
    Регистрация:
    04.12.12
    Сообщения:
    2.500
    Благодарности:
    1.231

    Pskovsat

    Живу здесь

    Pskovsat

    Живу здесь

    Регистрация:
    04.12.12
    Сообщения:
    2.500
    Благодарности:
    1.231
    Адрес:
    Псков
    @vad711, Если есть желание.
    Ткни пальцем откуда вызывается check_blockFC()
    чтобы скинуть ошибку number_err = 0; когда ошибки нет err = OK

    Вот в VaconFC. ino есть тройка таких функций.
    Ни из одной, при err = OK перехода в check_blockFC() для сброса не произойдет.
    Код:
    // Запись данных (2 байта) в регистр cmd возвращает код ошибки
    // Реализовано FC_NUM_READ попыток чтения/записи в инвертор
    int8_t devVaconFC::write_0x06_16(uint16_t cmd, uint16_t data)
    {
        uint8_t i;
        if(!get_present() || state == ERR_LINK_FC) return err; // выходим если нет инвертора или он заблокирован по ошибке
        for (i = 0; i < FC_NUM_READ; i++) // делаем FC_NUM_READ попыток записи
            {
                err = Modbus.writeHoldingRegisters16(FC_MODBUS_ADR, cmd - 1, data); // послать запрос, Нумерация регистров с НУЛЯ!!!!
                if(err == OK) break; // Записали удачно
                numErr++; // число ошибок чтение по модбасу
                journal.jprintf_time(cErrorRS485, name, __FUNCTION__, err); // Выводим сообщение о повторном чтении
                if(check_blockFC()) break; // проверить необходимость блокировки
                _delay(FC_DELAY_REPEAT);
            }
            return err;
    }
    #endif // FC_ANALOG_CONTROL    // НЕ АНАЛОГОВОЕ УПРАВЛЕНИЕ
    Я все про то, что ошибки идущие не подряд не скидываются...
     
  12. vad711
    Регистрация:
    30.04.14
    Сообщения:
    5.305
    Благодарности:
    5.023

    vad711

    Живу здесь

    vad711

    Живу здесь

    Регистрация:
    30.04.14
    Сообщения:
    5.305
    Благодарности:
    5.023
    Адрес:
    МО
    Так в самой devVaconFC: check_blockFC() и скидываются:
    Код:
    bool devVaconFC::check_blockFC()
    {
    #ifndef FC_ANALOG_CONTROL // Не аналоговое управление
        if(err != OK) {
            if(xTaskGetSchedulerState() == taskSCHEDULER_NOT_STARTED || ++number_err >= FC_NUM_READ) { // если не запущена free rtos то блокируем с первого раза
                SETBIT1(flags, fErrFC); // Установить флаг
                note = (char*)noteFC_NO;
                set_Error(err, (char*)name); // Подъем ошибки на верх и останов ТН
                return true;
            }
        } else {
            SETBIT0(flags, fErrFC);
    >>>        number_err = 0;
            note = (char*)noteFC_OK;
        }
    #endif
        return false;
    }
    
     
  13. Pskovsat
    Регистрация:
    04.12.12
    Сообщения:
    2.500
    Благодарности:
    1.231

    Pskovsat

    Живу здесь

    Pskovsat

    Живу здесь

    Регистрация:
    04.12.12
    Сообщения:
    2.500
    Благодарности:
    1.231
    Адрес:
    Псков
    Да...
    Но, кто посылает к number_err = 0;
    Если при if (err = OK) break;

    Код:
    // Запись данных (2 байта) в регистр cmd возвращает код ошибки
    // Реализовано FC_NUM_READ попыток чтения/записи в инвертор
    int8_t devVaconFC::write_0x06_16(uint16_t cmd, uint16_t data)
    {
        uint8_t i;
        if(!get_present() || state == ERR_LINK_FC) return err; // выходим если нет инвертора или он заблокирован по ошибке
        for (i = 0; i < FC_NUM_READ; i++) // делаем FC_NUM_READ попыток записи
            {
                err = Modbus.writeHoldingRegisters16(FC_MODBUS_ADR, cmd - 1, data); // послать запрос, Нумерация регистров с НУЛЯ!!!!
      >>>       if(err == OK) break; // Записали удачно
                numErr++; // число ошибок чтение по модбасу
                journal.jprintf_time(cErrorRS485, name, __FUNCTION__, err); // Выводим сообщение о повторном чтении
                if(check_blockFC()) break; // проверить необходимость блокировки
                _delay(FC_DELAY_REPEAT);
            }
            return err;
    }
    То есть, если сделать допустим так.
    Код:
    int8_t devVaconFC::write_0x06_16(uint16_t cmd, uint16_t data)
    {
        uint8_t i;
        if(!get_present() || state == ERR_LINK_FC) return err; // выходим если нет инвертора или он заблокирован по ошибке
        for (i = 0; i < FC_NUM_READ; i++) // делаем FC_NUM_READ попыток записи
            {
                err = Modbus.writeHoldingRegisters16(FC_MODBUS_ADR, cmd - 1, data); // послать запрос, Нумерация регистров с НУЛЯ!!!!
      >>>       if(err == OK) {check_blockFC(); break;} // Записали удачно
                numErr++; // число ошибок чтение по модбасу
                journal.jprintf_time(cErrorRS485, name, __FUNCTION__, err); // Выводим сообщение о повторном чтении
                if(check_blockFC()) break; // проверить необходимость блокировки
                _delay(FC_DELAY_REPEAT);
            }
            return err;
    }
    то ошибки идущие не подряд, скидываются.

    Правда вот попытался для проверки сэмитировать подряд ошибки. Получаю перезагрузку, зависает видимо.
    Код:
     Start task UpdateHP
    09:58:02 Heat Pump ON . . .
    10:00:33 Relay RSUPERBOILER: ON
    10:00:33 Relay R3WAYCLOS: OFF
    10:00:33 Relay R3WAYOPEN: ON
    Modbus reg #2106 - 10:01:14 Vacon: Read error read_0x03_16, code=-47 repeat . . .
    10:01:17 Relay R3WAYOPEN: OFF
    Modbus reg #2101 - 10:01:23 Vacon: Read error read_0x03_16, code=-47 repeat . . .
    Modbus reg #2101 - 10:01:24 Vacon: Read error read_0x03_16, code=-47 repeat . . .
    10:01:24 Relay R3WAYCLOS: ON
    Modbus reg #2101 - 10:01:24 Vacon: Read error read_0x03_16, code=-47 repeat . . .
    $Compressor protection 10:01:24 Vacon: Read error write_0x06_16, code=-47 repeat . . .
    $Compressor protection 10:01:24 Vacon: Read error write_0x06_16, code=-47 repeat . . .
    $Compressor protection 10:01:24 Vacon: Read error write_0x06_16, code=-47 repeat . . .
    $Compressor protection 10:01:24 Vacon: Read error write_0x06_16, code=-47 repeat . . .
    
    START ---
    Found I2C journal: size 57344 bytes, head=0x0, tail=0x58d
    Firmware version: 1.110
    Chip ID EXID: 677251680
    Chip ID SAM3X8E: 51203120-38383050-32303131-31113031
    Last reason for reset SAM3x: MEM ReadSensor
    Last FreeRTOS task + error: 0x0103 (78) Web(45)
    Power +5V, +3.3V on board: ON
    Supply Controller Register [SUPC_SR]: 0x00001080
    Supply monitor ON, voltage: 3.0V
     
    Последнее редактирование: 13.05.22
  14. vad711
    Регистрация:
    30.04.14
    Сообщения:
    5.305
    Благодарности:
    5.023

    vad711

    Живу здесь

    vad711

    Живу здесь

    Регистрация:
    30.04.14
    Сообщения:
    5.305
    Благодарности:
    5.023
    Адрес:
    МО
    Этот баг у меня исправлен давно в версии 1.120.
    Сейчас у меня версия 1.175.
     
  15. Igoryok
    Регистрация:
    13.05.12
    Сообщения:
    1.697
    Благодарности:
    1.135

    Igoryok

    Живу здесь

    Igoryok

    Живу здесь

    Регистрация:
    13.05.12
    Сообщения:
    1.697
    Благодарности:
    1.135
    Адрес:
    Иваново
    @vad711 ,1.175 в открытом доступе?