--инициализация скрипта
function OnInit()
end
--деинициализация скрипта
function OnClose()
end
-- обработка
function OnRead()
--определение локальный переменных
local t,q,tstatus,qstatus, dpval,dpq;
--считывание значение и качества текущего тэга
t,q = server.ReadCurrentTag();
--
считывание значения смещения десятичной точки
dpval,dpq=server.ReadTagByRelativeName("Смещение") ;
if ( not (dpval>=0 and dpval <= 4)) then
dpval = 0;
end
--
смещаем полученное число
t=t/10^dpval;
if (q == OPC_QUALITY_GOOD) then
--если признак хороший анализируется статус измерения - тэг "Статус"
tstatus,qstatus = server.ReadTagByRelativeName("Статус");
--вызов внешней функции (функция прописана у устройства)
q = server.RunFunctionFromDevice("CheckQ",1,tstatus);
end
--если значение равно 0 то качество хорошее
--если значение не равно нулю
if(q ~= OPC_QUALITY_GOOD) then
--вывод сообщения в лог ОРС сервера server.Re
server.Message("q teg = ",q);
end
--запись в текущщий тэг измеренного значения и вычисленного признака качества
server.WriteCurrentTag(t,q);
end