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

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

Автор Тема: Вопрос по фильтрам  (Прочитано 1565 раз)

azrael454

  • Новичок
  • *
  • Сообщений: 30
    • Просмотр профиля
Вопрос по фильтрам
« : 06 Марта 2020, 10:41:08 »
Добрый день, вопрос следующий.

Имеется датчик давления, с которого считывается аналог 4-20 мА, который идет через S7-1200, который потом выглядит как число от 0 до 27648. Датчик иногда капризничает и выдает меньше 4 мА, что сказывается на сигнале, у которого значение становится больше 27648 (специфика Сименса, дело не в этом). Зная этот факт, хочу ввести фильтр на значение давления. Ввел фильтр мин-макс, на диапазон датчика, но вижу картину на трендах, что он как бы просто рубит значения выше установленного предела. А надо так, чтобы при капризе датчика ( значение > 27648 или значение < 0), масштабируемое значение давление было равно 0. 

пытался скриптом по изменению переменных реализовать, но не увидел пока результата. Может что-то неправильно делаю?
Код: (delphi)
//ФИЛЬТР ПОМЕХ ЗНАЧЕНИЯ ДАВЛЕНИЯ С КОНТРОЛЛЕРА S7-1200
begin
if p5_BP1_DownArchiPress.Value < 0 then     //проверка на нижнюю границу аналогового значения
   p5_PressureSC.Value:=0;                  //обнуление масштабируемого значения давления
if p5_BP1_DownArchiPress.Value > 27648 then //проверка на верхнюю границу аналогового значения
   p5_PressureSC.Value:=0;                  //обнуление масштабируемого значения давления
end.
Есть вопрос и предложение:
вопрос: фильтр отклонений имеет смысл пробовать здесь использовать? так как по картинке примера работы я вижу примерно то, что и нужно, что он присваивает 0 при превышении значение на отклонение.
предложение: добавить в UI настройки фильтра мин-макс поля для ввода значений, которые будут присвоены при превышении верхней и нижней границ с возможностью их не указывать. мне кажется это сделает применение этого фильтра более гибким.
« Изменён: 09 Марта 2020, 15:53:11 от Simple-Scada »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3214
    • Просмотр профиля
    • Simple-Scada
Re: Вопрос по фильтрам
« Ответ #1 : 09 Марта 2020, 16:03:41 »
Здравствуйте.

Цитировать
добавить в UI настройки фильтра мин-макс поля для ввода значений, которые будут присвоены при превышении верхней и нижней границ с возможностью их не указывать.
Возможно добавим в одном из будущих обновлений.

Цитировать
пытался скриптом по изменению переменных реализовать, но не увидел пока результата. Может что-то неправильно делаю?
Если скрипт с типом события "Изменились переменные", то убедитесь, что Вы добавили в список переменных этого скрипта, переменную p5_BP1_DownArchiPress. Только скрипт будет выполняться при каждом изменении p5_BP1_DownArchiPress.
Если скрипт назначен на событие OnDataChange какого-то объекта, то убедитесь что этот объект связан с переменной p5_BP1_DownArchiPress.
Также в скрипте Вы забыли копировать значение из переменной, если границы не нарушены. Правильный код скрипта должен быть таким:
Код: (delphi)
begin
  if (p5_BP1_DownArchiPress.AsInt < 0) or (p5_BP1_DownArchiPress.AsInt > 27648) then   // если одна из границ нарушена
    p5_PressureSC.Value := 0                             // то обнуляем значение
  else                                                   // иначе
    p5_PressureSC.Value := p5_BP1_DownArchiPress.Value;  // копируем значение
end.