Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Как не архивировать ошибочные данные с устройства в трендах  (Прочитано 1857 раз)

bolfram

  • Новичок
  • *
  • Сообщений: 1
    • Просмотр профиля
Добрый день. С устройства на объекте считываются данные по уровню воды, устройство, в силу неисправности, время от времени выдает ошибку и передает максимально возможное значение, которое в сотни раз превышает действительное и огромным скачком архивируется в трендах. При этом также с устройства приходит в отдельную булевую переменную сообщение об ошибке. Подскажите, пожалуйста, есть ли возможность реализовать скрипт, который будет прекращать архивирование переменной и сохранять последнее нормальное значение при получении информации об ошибке или резком скачке числа в переменной? Спасибо

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1408
    • Просмотр профиля
Здравствуйте.

Можно у переменной включить "фильтр мин. макс.", тогда значения переменной будут автоматически фильтроваться и при выходе их за границы диапазона, данные значения будут отсекаться и в архив не будут попадать значения больше установленного диапазона. Например, если установить фильтр 0-100, то при значении 150 в архив попадет значение 100. Если такой вариант не подходит - см. другие варианты ниже.

Цитировать
есть ли возможность реализовать скрипт, который будет прекращать архивирование переменной и сохранять последнее нормальное значение при получении информации об ошибке или резком скачке числа в переменной?
Можно создать скрипт с типом события "Изменились переменные", добавить в него требуемую переменную и написать нужные условия, например записывать значения из нашей переменной в другую внутреннюю переменную пока "булевая переменная об ошибке" не равна 1. Таким образом, во второй переменной будут отфильтрованные значения первой переменной и можно будет включить архивацию у нее и использовать ее в проекте вместо первой переменной. Но стоит учитывать, что все это будет работать только если "булевая переменная об ошибке" будет изменяться и считываться быстрее, чем значение переменной изменится на недопустимое. Также, если переменная при ошибке принимает всегда какое-то фиксированное значение, то можно в скрипте "Изменились переменные" проверять неравенство этому значению и записывать значения в другую внутреннюю переменную, тогда во второй переменной гарантированно будут все значения первой переменной, за исключением этого фиксированного значения.
« Изменён: 11 Июня 2021, 13:29:30 от Simple_Scada »