Сброс значений импульсного счетчика после обновления wb-hardware.conf и залипание геркона импульсного счетчика после wb-homa-gpio start


#1

Странный случай произошел в нашей деревне……

В событиях участвовали:

  • Контролер WB-6.5 с внутренними модулями -
  • WBE2-DI-DR-3
  • WBE2-D0-SSR-2
  • Импульсный (герконовый) датчик счетчика газа.

События протекали в следующей последовательности:

  • Сперва был установлен и успешно настроен импульсный счетчик газа на встроенный порт A1_IN. Счетчик был подключен к клеймам A1 и +5V.

  • После была успешно произведена процедура по вводу предварительного значения счетчика следующими командами –
    /etc/init.d/wb-homa-gpio stop
    mosquitto_pub -r -m 36539.51 -t /devices/wb-gpio/controls/Counter-A1_total
    reboot
    Все заработало и считало.

  • Через некоторое время обнаружил, что после каких то действий пропали из конфигурации wb-hardware внутренние модули. (подозреваю, что после установки WebUI 2 beta 8, но могу ошибаться)
    Через web-интерфейс были вновь добавлены в список внутренние модули.
    После этой процедуры обнаружил, что произошел сброс значений
    /devices/wb-gpio/controls/Counter-A1_total и
    /devices/wb-gpio/controls/Counter-A1_current
    Но счетчик работал и начал считать с нуля.

  • Беда не приходит одна:
    Я повторил установки нового начального значения счетчика следующими командами –
    /etc/init.d/wb-homa-gpio stop
    mosquitto_pub -r -m 36539.51 -t /devices/wb-gpio/controls/Counter-A1_total
    /etc/init.d/wb-homa-gpio start

  • Спустя достаточное время обнаружил, что значение счетчиков не меняется.
    Кроме этого, обнаружил, что контрол -
    /devices/wb-adc/controls/A1 показывает все время +5V

  • Прибыв на объект я отключил провода герконового датчика от контролера.
    Измерил сопротивление на контактах герконового датчика – там оказалось КЗ.
    Снял и постучал датчик об стол – КЗ пропало.
    Датчик рассчитан на 24V и 50 мА

Таким образом подозреваю следующие стечения обстоятельств в момент процедуры - /etc/init.d/wb-homa-gpio start

  • Были замкнуты контакты геркона (при переходе от 9 к 0 младшего разряда газового счетчика).
  • В этот момент при инициализации wb-homa-gpio выход A1_OUT оказался в состоянии true (т.е. замкнут на общий провод) и геркон оказался замкнут между общим проводом и +5V.

К сожалению, не додумался проверить замыкание выхода в момент инициализации прибором. Смогу проверить это на объекте только через несколько дней. Предоставляю эту возможность тех. поддержке.
Буду теперь подключать счетчик между общим проводом и входом A1 с подтянутым к +5V резистором, либо воспользуюсь входом на WBE2-DI-DR-3.

Прошу данный пост считать официальным обращение по двум указанным проблемам
- Сброс показаний импульсного счетчика после обновления конфигурации wb-hardware
- Замыкание выхода A1-OUT в момент запуска /etc/init.d/wb-homa-gpio start

P.S.
Обнаружил, что если в конфигурации wb-hardware.conf на внутренний слот добавить какой нибудь не существующий модуль – нигде, никакие ошибки не отображается (проверено с wbe2-do-r6c-1, wbe2-i-w1, wbe2-do-oc-2):
Нет на странице /#!/MQTTChannels
Нет в /var/log/messages
Нет в journalctl
Т.е. обратной связи и диагностирование не осуществляется и в случае проблем с внутренним модулем обнаружить это будет проблематично.
Понимаю, что дополнительная навеска приведет к удорожанию продукта, поэтому, прошу воспринимать это ни как претензию, а как информацию для пользователей данного устройства.

Пардон, за длинное повествование – так уж вышло.


#2

т.е. имеется подозрение, что А1, настроенный как “вход”, при перезагрузке выдал “1” как “выход”? А в это время пришел счетный импульс и замкнул геркон?


#3

Верно. По другому, я залипание геркона объяснить не могу.

Ниже фрагмент конфига
{
“name”: “Counter-A1”,
“gpio”: 109,
“direction”: “input”,
“inverted”: true,
“type”: “water_meter”,
“multiplier”: 100,
“decimal_points_current”: 5,
“decimal_points_total”: 3,
“initial_state”: false
}

Кстати, после “разлипания” геркона счетчик вновь заработал

Похоже, что понятие ‘настроенный как “вход”’ для WB-6 весьма условно.
Все эти входы и выходы (A1… - A4…) на разных gpio и могут работать параллельно.

В wiki написано следующее:

Для сокращения общего числа клеммников каналы управления низковольтной нагрузки совмещены с каналами АЦП
Управление_низковольтной_нагрузкой
И далее
Из этих трёх функций одновременно могут работать только две - АЦП и DI. Если вы хотите использовать порт в этом режиме, обязательно отключите соответствующий транзисторный выход (в веб-интерфейсе называется Ax_OUT). Если не сделать это, вы можете повредить устройство!
Мультиплексирование_портов


#4

В моем /etc/wb-homa-gpio.conf отсутствует упоминание Ax_IN и Ax_OUT. Это нормально, или “что то пошло не так”?

{
“channels”: [
{
“name”: “Counter2-A1”,
“gpio”: 109,
“direction”: “input”,
“inverted”: true,
“type”: “water_meter”,
“multiplier”: 100,
“decimal_points_current”: 5,
“decimal_points_total”: 3,
“initial_state”: true
},
{
“name”: “MOD1_IN1”,
“gpio”: 24,
“direction”: “input”,
“inverted”: false
},
{
“name”: “MOD1_IN2”,
“gpio”: 25,
“direction”: “input”,
“inverted”: false
},
{
“name”: “MOD1_IN3”,
“gpio”: 26,
“direction”: “input”,
“inverted”: false
},
{
“name”: “MOD2_K1”,
“gpio”: 117,
“direction”: “output”,
“inverted”: false
},
{
“name”: “MOD2_K2”,
“gpio”: 118,
“direction”: “output”,
“inverted”: false
}
],
“device_name”: “Discrete I/O”
}


#5

Судя по фрагментированной документации, для данной ситуации в конфиге должно присутствовать что то типа

    {
        "gpio" : 79 ,
        "name" : "A1_OUT",

“direction”: “input”,

        "inverted" : false
    },

???


#6

vugluskr, добрый вечер!

Это нормально для версии Wiren Board 6.5


#7

A1 — A4 не должны переключаться в режим выходов “открытый коллектор” даже при перезагрузке. Странно. Проверю.


#8

Добрался до объекта.

  • Попробовал подключить светодиод между A1 и +5V.
  • Перезагружал контроллер, перезагружал сервис wb-homa-gpio
    Вспышек светодиода не наблюдалось.
    Т.е. состояние выхода все время не активно.
    Если включить выход A1_OUT из интерфейса – светодиод горит.
    Моя версия не подтвердилась.

Переключил импульсный счетчик с A1_IN на MOD1_IN1.
Удалось заставить его корректно работать с предустановленным начальным значением только с 4 попытки:

  • После первой попытки ввести новое значение счетчика через mosquitto_pub - значение _total не менялось, но менялось значение _current
  • На второй попытке решил установить значение, пока не пришел ни один счетный импульс и значение контролов было none. После запуска сервиса значения обоих контролов не менялось вовсе.
  • После третьей попытки значения _total соответствовало показаниям реального механического счетчика, но показались неадекватными значения _current.
    С четвертой попытки все получилось.

Каждый раз я удалял старый и создавал новый GPIO channel с новым названием.
Если не делать этого – результаты еще более непредсказуемые.

Предполагаю, что в описываемой вначале топика истории случилось то, что после повторного ввода начальных значений счетчика total через mosquitto_pub привело к неработоспособности программного счетчика. А дальнейшие хаотические действия (в том числе включение/выключения порта A1_OUT) оператора (т.е. меня) привели к залипанию геркона импульсного датчика.

Помнитя еще в 2017 обещали:

очень скоро мы все эти костыли заменим на нормальное хранилище внутри подсистемы дискретных сигналов, но пока так…

?