-
Если это только на один цикл, то можно в ОРС сервере у каждого проблемного тега в скрипте после чтения разместить такой скрипт:
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?