Отсутствие связи с Modbus устройством

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

Есть прибор учёта Modbus.
ПУ опрашивается контроллером WB по Modbus TCP.
Контроллер WB опрашивает SCADA по Modbus TCP.

В случае отсутствия связи ПУ - WB на вкладке WB карточка устройства становится красной

Но SCADA опрашивая WB по прежнему получает последнее показание и “не догадывается” что ПУ уже “вышел из чата”.

Задача.
Создать Modbus регистр который при пропадании связи с ПУ менял бы своё состояние на 0.
SCADA считывала бы данный регистр и подтверждала актуальность данных из считываемого регистра ПУ.

Ну или другой вариант решения задачи передачи информации об отсутствии связи с ПУ на SCADу.

Буду благодарен за любую помощь.

Добрый день.
При отсутствии связи драйвер (служба) создающая топики пишет в meta/errror значения, описанные в конвенции, “r” и “w”, напримере при ошибках чтения или записи соответственно.
И, конечно, это значение можно обработать. Описание обработки есть тут: GitHub - wirenboard/wb-rules: Rule engine for Wiren Board

Да, это “типовой” способ, то есть создается витруальное устройстово, в топик кторого при пропадании связи записывается значение, при появлении - сбрасывается или наоборот.
И да, вариант реализации "записать в сам топик какое-то значение, описывающее “ошибочное” состояние - тоже видел и он обсуждался.
То есть записывать в топик самого устройства 0xffff например.
Он, несмотря на кажущуюся простотуу менее удобен и требует большей обработки на другой стороне. В общем именно отдельный топик (modbus TCP регистр) контроля связи - оптимален.

Спасибо за ответ.

К сожалению тяжеловато даётся rules

Подскажите что не так
(прибор /devices/46275347/controls/Total consumption на связи, s_2 должно быть 1, а оно 3)

defineVirtualDevice("MB", { 
    title: "MB",
    cells: {
      "s_2": {
        type: "value",
        value: 1,
      },
	}
});

defineRule("MB", {
  whenChanged: "/devices/46275347/controls/Total consumption#error",
  then: function (newValue, devName, cellName) {
    if(newValue !== "") {
      dev["MB"]["s_2"] = 3;
    } else {
      dev["MB"]["s_2"] = 1;
    }
  }
});

devices и controls - подразумаваются, их не надо указывать.
Предполагаю так:

whenChanged: "46275347/Total consumption#error",

Вот тут описано.
И да, сравнение "не равно"выполняется так:

if(newValue != "") 

Тут немного про это: Написание скриптов для начинающих — Wiren Board