Добрый день, вопрос следующий.
Имеется датчик давления, с которого считывается аналог 4-20 мА, который идет через S7-1200, который потом выглядит как число от 0 до 27648. Датчик иногда капризничает и выдает меньше 4 мА, что сказывается на сигнале, у которого значение становится больше 27648 (специфика Сименса, дело не в этом). Зная этот факт, хочу ввести фильтр на значение давления. Ввел фильтр мин-макс, на диапазон датчика, но вижу картину на трендах, что он как бы просто рубит значения выше установленного предела. А надо так, чтобы при капризе датчика ( значение > 27648 или значение < 0), масштабируемое значение давление было равно 0.
пытался скриптом по изменению переменных реализовать, но не увидел пока результата. Может что-то неправильно делаю?
//ФИЛЬТР ПОМЕХ ЗНАЧЕНИЯ ДАВЛЕНИЯ С КОНТРОЛЛЕРА 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 настройки фильтра мин-макс поля для ввода значений, которые будут присвоены при превышении верхней и нижней границ с возможностью их не указывать. мне кажется это сделает применение этого фильтра более гибким.