Счетчик импульсов плохо считает

Доброго дня уважаемые разработчики!

  • Wiren Board 8.5.2
  • release wb-2507

Между +5 и А4 подключен счетчик воды с импульсным выходом (1 импульс на 10л).
Конфигурация сделана через веб интерфейс, в файле так:
{
“decimal_points_current” : 2,
“decimal_points_total” : 2,
“edge” : “rising”,
“multiplier” : 100,
“name” : “A4_IN”,
“type” : “water_meter”
}
],
“device_name” : “Discrete I/O”

Если вывести на один график напряжение входа и сумму, которая уходит в топик, то видно, что не все импульсы учтены и в целом не понятно как график с суммой зависит от импульсов. В результате посчитанное отстает от показаний счетчика.

Просьба подсказать, что я здесь делаю не так, как требуется?

Добрый день!

Проблема с некорректным подсчетом импульсов нам уже встречалась. Пока узнаю как обстоят дела по этому вопросу, проверю и вернусь с информацией.

Добрый день!

Проблему с подсчетом импульсов исправили, можно проверить в testing.

Добрый день!
Спасибо. Загрузил, понаблюдаю денёк, другой.

1 лайк

Если заметите расхождения – пишите. Нам важно иметь обратную связь по поводу успешного решения бага.

Добрый день!

Удалось проверить?

Добрый день! Проверить удалось.
Теперь, как мне кажется, подсчет импульсов опережает показания счетчика. Возможно, в алгоритме дребезг контактов не учтен или что-то подобное.
Было бы здорово, если бы алгоритм подсчета учитывал производительность насоса (коль речь о счетчике воды).
К пример, если производительность насоса 3 м.куб в час, а счетчик даёт один импульс на 10л, то переход от нуля к единице и возврат к нулю на выходе не может происходить быстрее чем за 12 секунд. Поэтому, если переход 0 → 1 → 0 (при подсчете по фронту импульса) случился быстрее, то его не нужно учитывать.

Понаблюдаю еще пару дней для уверенности, потом отпишусь. Но точно стало лучше чем было. Пожалуйста не закрывайте пока.

UP0209: убедился, счетчик импульсов опережает показания прибора учета где-то на 25% для моих условий. Предположительно учитывает слишком короткие импульсы типа дребезга контактов или помехи. Понятно, что даже требующий учета импульс может быть не виден на графике напряжений в силу разрешения этого графика по горизонтали (в csv выгрузке тоже не видно), но вот глубокой ночью с 3 до 6 вряд-ли был разбор воды… Провод у меня чуть меньше 3х метров, не знаю можно ли выше 3х вольт помехами собрать на такой длине.

Благодарю за обратную связь. Запишу в предложения.

А что если воспользоваться подсчётом импульсов в режиме “both” — будет точнее?

Переключил, расскажу что получилось.
UP: Рассказываю. Режим “both” приводит к тому, что учитывается оба фронта импулься. Т.е. результат теперь нужно делить на два (или указывать необходимое на кубометр количество импульсов в два раза больше, чем в паспорте прибора учета). Кажется погрешность тоже должна удвоиться :slight_smile: Понаблюдаю.

К предыдущему. Ошибся я с выводами по “both”, кажется в этом режиме считает почти точно (при условии деления на два). Еще понаблюдаю.

Добрый день!

А сообщите модель вашего счетчика. Хочу еще посмотреть документацию к нему.

Itelma WFK24.D110-0-R-L 10

Мне удалось найти счетчик ПУЛЬС УВС-15-80, тоже поставлю эксперимент.

Добрый день!

Эксперимент со счетчиком показал, что на testing подсчет импульсов работает исправно.

Входы закорочены между собой и настроены следующим образом:

{
  "channels" : 
  [
    {
      "edge" : "both",
      "name" : "A1_IN",
      "type" : "water_meter"
    },
    {
      "edge" : "rising",
      "name" : "A2_IN",
      "type" : "water_meter"
    },
    {
      "edge" : "falling",
      "name" : "A3_IN",
      "type" : "water_meter"
    }
  ],
  "device_name" : "Discrete I/O"
}

Доброго дня!

Предположу, что ваш лабораторный эксперимент не слишком похож на реальную эксплуатацию (импульсы короткие, к примеру, коль у вас поток в 300+ кубов в час, или счетчик не останавливается в 1 на всю ночь). Также предположу, что закорачивание входов может влиять на шум (не знаю).
Зато ваш эксперимент подтвердил, что в режиме “both” считает X2 и надо делить пополам (можно в доку добавить).

В моих условиях режим “both” работает с приемлемой точностью при делении на два, а по фронту с приемлемой точностью не считает.

Как бы цели что-то доказывать у меня нет, тем более что проблему удалось решить. Даже дважды удалось (открыл для себя esp32 с счетчиком импульсов “из коробки” с аппаратным подавлением дребезга контактов и настройкой длины импульсов, которые не нужно учитывать). Надеюсь текущий алгоритм из testing всех устроит.

ЗЫ: Не очень понятно, почему у Вас на картике поток так отличается при закорочнных входах.
ЗЫ2: Я когда руками (вместо счетчика) контакты замыкал, у меня тоже всё отлично считало, причем любым из способов.

Да, “both” подсчитывает два фронта. “rising” - только передний, “falling” - только задний. Это указано в интерфейсе при настройке.

На поток можно не ориентироваться в этом эксперименте, так как импульсы были достаточно редкие - примерно 1 в 20-30 секунд. Важно, что их подсчет теперь работает. Пока оставлю этот счетчик и понаблюдаю.