-
Как настроить фильтр?
Добрый вечер! Подскажите решение проблемы. Есть ОРС-сервер с подключённым МВ110-16Д. Когда пропадает связь прибора с ОРС, то ОРС выдаёт значение на входах "0" (ноль). В СКАДЕ это значение благополучно записывается, архивируется и отображается в графике - падает до "0" и потом обратно возвращается. А в другом ОРС-сервере такая же картина, только там величина принимает значение 99999,99. Как отфильтровать такие ошибки?
-
А что вы хотите видеть в этот момент на графике ?
-
Скорее всего, последнее действительное значение.
-
Какие ОРС серверы вы используете. Попробуйте наш Modbus Universal - у него будет фиксироваться последнее значение.
-
Один MasterOPC Universal Modbus Server, а второй SensOPCServer. Когда у MasterOPC Universal Modbus Server знак качества "BAD", значение входа становится "0". А у второго ОРС - 99999,99 и у него нет признака качества.
-
Какая у вас версия Modbus Universal?
-
-
Пришлите вашу конфигурацию и несколько скриншотов описывающих ситуацию.
-
Вложений: 2
-
Попробуйте в MasterSCADA выделить ОРС сервер и на закладке "Опрос" поставить галочку "Запрет использования некачественных значений".
-
-
Сделали. Будем ждать результатов.
-
Спасибо. Изменения внесли, будем ждать результата. Сообщу.....
-
К сожалению результат прежний. Ничего не поменялось....
-
Пришлите конфигурацию ОРС сервера и новую версию проекта.
-
Вложений: 2
-
Сообщите пароль от проекта.
-
Прошу прощения за долгое молчание - был в командировке...... Пароль 1234, а при запуске - пустое место.
-
Если говорить о Modbus Universal то у вас от него идут сигналы на ФБ "Абсолютное значение" - данный ФБ действительно не передает на выход признак качества.
Используйте вместе него модуль "Расчет" - функцию abs. Также нужно будет у компьютера на закладке "Опрос" поставить галочку "Формировать признаки качества выходов ФБ по признакам входов".
-
Спасибо большое! Пробую! Разберусь с этим ОРС, буду просить помощи по другому....
-
Вложений: 2
Сделали, как Вы указали. Вместо "Абс. значения" используем "Расчёт" - функцию abs, галочку тоже поставили. Значения идут, но картина практически не поменялась. Как использовать признак качества и отфильтровывать ложные значения?
Вложение 18800
Вложение 18801
-
Вложений: 1
Зелёный график - это результат Расчёта, а красный - результат Абсолютного значения.....
Вложение 18802
-
Не этот ФБ "Расчет". Добавьте Расчет через контекстное меню объекта и не забудьте у компьютера на закладке "Опрос" поставить галочку "Формировать признаки качества выходов ФБ по признакам входов".
-
Понял. Спасибо. Пробую....
-
Вложений: 1
К сожалению, картина не изменилась.
Вложение 18833
Расход топлива в литрах - это Абсолютное значение, а Расход топлива - это Расчёт. Галочка тоже стоит....
-
-
Вложений: 1
-
Пароль прежний, 1234 и пустой....
-
Вложений: 1
У нас все корректно (см. приложение).
Посмотрите у переменной на закладке "Данные" - после того как связь восстанавливается, не поступает ли значение 0 с хорошим признаком качества?
-
Скорее всего, так и происходит. Когда в ОРС-сервере появляется связь и качества признак меняется на хороший, в начальный момент значение остаётся равным "0". потом меняется на действительное. Но этот "0" успевает проскочить ..... Как от этого можно избавиться?
-
Если это только на один цикл, то можно в ОРС сервере у каждого проблемного тега в скрипте после чтения разместить такой скрипт:
oldqual=OPC_QUALITY_COMM_FAILURE;
oldval=0;
-- инициализация
function OnInit()
end
-- деинициализация
function OnClose()
end
-- обработка
function OnRead()
val,qual=server.ReadCurrentTag();
if oldqual==OPC_QUALITY_BAD and qual==OPC_QUALITY_GOOD and val==0 then
server.WriteCurrentTag(oldval,oldqual);
end;
oldqual=qual;
oldval=val;
end
-
Да, на закладке "Данные" значение "0" есть.
-
-
Правда, немного не поняли в какое место.
У нас в скрипте следующее:
-- инициализация
function OnInit()
end
-- деинициализация
function OnClose()
end
-- обработка
function OnRead()
end
Меняем на Ваш вариант всё?
-
Да, меняете все на то что прислали
-
Вложений: 2
Прогресс есть, но "0" ещё проскакивает и в ОРС-сервере (видел значение входа "0" при знаке качества "ОК") и в СКАДЕ....
Вложение 18851
Вложение 18852
-
Видимо несколько циклов выдается 0 (хотя это странно). Посмотрите лог запросов к устройству - это устройство возвращает нули в начальный момент?
Можно модернизировать код чтобы пропускалось несколько циклов:
i=0;
oldqual=OPC_QUALITY_COMM_FAILURE;
oldval=0;
-- инициализация
function OnInit()
end
-- деинициализация
function OnClose()
end
-- обработка
function OnRead()
val,qual=server.ReadCurrentTag();
if oldqual==OPC_QUALITY_BAD and qual==OPC_QUALITY_GOOD and val==0 and i<3 then
server.WriteCurrentTag(oldval,oldqual);
i=i+1;
return;
end;
i=0;
oldqual=qual;
oldval=val;
end
-
-
Поменяли. До завта наберём информации и отпишусь..... Спасибо!
-
Боюсь спугнуть........ но пока, вроде, без ошибок! Набираем статистику.... Можете мне сбросить маячок на navigation1@mail.ru?