MQTT meta/error

Помечено: ,

Просмотр 6 сообщений - с 1 по 6 (из 6 всего)
  • Автор
    Сообщения
  • #35908
    astahovsv
    Участник

    Подключил к скаде контроллер WirenBoard, для добавления топиков использовал библиотеку ExtWirenBoard. Она добавила к каждому топику, ещё чтение /meta/error.
    Когда появляется проблема с топиком (появляется значение в /meta/error), я вижу в скаде сообщения и данные канала становятся серыми. Но когда проблема исчезает (пропадает значение в /meta/error). Скада продолжает показывать что в канале ошибка!
    Коммуникатор продолжает показывать что он считывает значение из /meta/error, хотя значения там никакого нет и самого /meta/error тоже нет (проверял с помощью mosquitto_sub на контроллере).
    В чем проблема?

    #35909
    astahovsv
    Участник

    Такое ощущение что коммуникатор не обрабатывает пустые значения, если значение в /meta/error — есть, я его вижу в системе. Но стоит удалить значение из /meta/error — коммуникатор молчит, показывает старое значение.

    #35930
    Mikhail
    Модератор

    Такое ощущение что коммуникатор не обрабатывает пустые значения

    Возможно, так и есть. Сделайте, пожалуйста, скриншоты настроек, полученных Коммуникатором данных, значений каналов.

    #35931
    Mikhail
    Модератор

    Нужны скриншоты, демонстрирующие наличие ошибки и её отсутствие.

    #35943
    astahovsv
    Участник

    Для тестирования я создал виртуальное устройство на WB, которое у другого виртуального устройства устанавливало или удаляло флаг ошибки.

    defineVirtualDevice('test-device', {
      title: "test-device",
      cells: {
        enableError: {
          title: "Enable Error",
          type: "switch", value: false,
        },
      }
    });
    
    defineRule('test-device:m52i', {
      whenChanged: 'test-device/enableError',
      then: function (newValue) { 
        if (newValue) {
          dev['dev-z7sa/k8a3#error'] = 'r';
        } else {
          dev['dev-z7sa/k8a3#error'] = '';
        }
      }
    });
    

    Дополнительно проверял значение ч/з mosquitto_sub

    mosquitto_sub -v -t "/devices/dev-z7sa/controls/k8a3/meta/error"

    Для преобразования строки в число на коммутаторе используется скрипт:

    if (payload) {
       if (payload === 'r') {
          setValue(0, 1); // read error
       } else if (payload === 'w') {
          setValue(0, 2); // write error
       } else if (payload === 'p') {
          setValue(0, 3); // read period miss
       } else {
          setValue(0, 4); // unknown error
       }
    } else {
        setValue(0, 0); // no error
    }

    Этап 1-ый, нет ошибок:
    Screenshot-2024-12-02-174946

    Этап 2-ой, ошибка установлена:
    /devices/dev-z7sa/controls/k8a3/meta/error r
    Screenshot-2024-12-02-175100

    Этап 3-ий, ошибка удалена:
    /devices/dev-z7sa/controls/k8a3/meta/error (null)
    Screenshot-2024-12-02-175130

    Этап 4-ый, перезагрузка scadacomm6.service
    Screenshot-2024-12-02-175442

    • Этот ответ был изменен 5 дней, 16 часов назад от astahovsv.
    • Этот ответ был изменен 5 дней, 16 часов назад от astahovsv.
    • Этот ответ был изменен 5 дней, 16 часов назад от astahovsv.
    #35990
    Mikhail
    Модератор

    Если я правильно понял, то не срабатывает «Этап 3-ий, ошибка удалена».
    По идее должен выполниться скрипт wb_error.js, который установит тег Коммуникатора в значение 0.

    Проверьте, пожалуйста, по журналу линии связи, выполняется ли скрипт в случае отсутствия ошибки. Он должен записать в журнал «Get Wiren Board error from topic:».
    Для удобства в js скрипт можно добавить дополнительный вывод в журнал с помощью функции log(«…»);

    • Этот ответ был изменен 4 дня, 17 часов назад от Mikhail.
Просмотр 6 сообщений - с 1 по 6 (из 6 всего)
  • Вы должны авторизироваться для ответа в этой теме.