Просмотр полной версии : masterOPC и метка времени
Добрый день!
В ОПС сервере есть тэг для принудительного запуска опроса устройства:
-- Initialization
function OnInit()
end
-- Uninitialization
function OnClose()
end
-- Processing
function OnWrite()
val=server.ReadCurrentTag();
if val==true then
server.PollCurrentDevice( );
end;
end
Есть переменная на основании которой происходит анализ в мастерСКАДА удачного опроса и чтения метки времени:
count=0;
-- Initialization
function OnInit()
end
-- Uninitialization
function OnClose()
end
-- Processing
function OnRead()
tv,tq,ts = server.ReadCurrentTag();
if tq~=192 and count<4 then
server.Sleep(5000);
server.PollCurrentDevice( );
count=count+1;
end;
if tq==192 then
server.WriteCurrentTag(tv,tq);
end;
end
Обратил внимание, что когда опрос устройства происходит не по заданному периоду, а по команде server.PollCurrentDevice( ) присвоение метки времени не происходит. Как можно обойти этот момент?
SCADAMaster
23.04.2015, 18:53
Что значит не происходит присвоение метки времени? В какой момент?
PollCurrentDevice не вызывает мгновенного опроса устройства. Опрос только тогда, когда освободится опрос текущего устройства (в том числе и устройство в котором вызывается PollCurrentDevice )
Что значит не происходит присвоение метки времени? В какой момент?
PollCurrentDevice не вызывает мгновенного опроса устройства. Опрос только тогда, когда освободится опрос текущего устройства (в том числе и устройство в котором вызывается PollCurrentDevice )
Допустим период опроса устройства в настройках 1 раз в 5 минут. Запустили сервер в режим исполнения, произошел опрос - метка времени появилась. Через 5 минут произошел повторный опрос - метка обновилась. Через 2 минуты выполнил команду PollCurrentDevice - переменные опросились, данные обновились, метка времени нет. Через 5 минут после команды PollCurrentDevice выполнился следующий опрос (в соответствии с заданным периодом) - переменные и метка времени обновилась.
SCADAMaster
24.04.2015, 09:06
Мы проверили на текущей версии (3.1.4) - у нас метка времени изменяется сразу после того как был выполнен опрос. Попробуйте проверить на ней.
Обновил до версии 3.1.4 ничего не изменилось
SCADAMaster
24.04.2015, 19:16
Мы проверяли на конфигурации из приложения - попробуйте проверить на ней.
Пришлите также вашу конфигурацию.
Прикладываю конфигурацию и проект. Не понял фразу
Мы проверяли на конфигурации из приложения - попробуйте проверить на ней.
17899
SCADAMaster
25.04.2015, 13:23
Мы проверили - у нас все нормально. Где именно вы контролируете изменение метки времени - в скада системе или ОРС сервере?
Контролирую в скада системе
SCADAMaster
25.04.2015, 13:46
В скада системе метка времени будет менятся либо если включен полный опрос, либо если значение будет меняться.
Если стоит опрос по изменению и значение не меняется, то и метка времени меняться не будет.
Понятно, буду думать как это обойти
Хотел уточнить, а почему меняется метка времени, если выполняется опрос объекта опс-сервером по заданному периоду, даже если значение переменной не меняется? Скада как-то это узнает и выполняет полный опрос? Ещё вопрос, если опрос переменной выполнять не по изменению, а периодически, на что это повлияет?
SCADAMaster
25.04.2015, 20:13
Хотел уточнить, а почему меняется метка времени, если выполняется опрос объекта опс-сервером по заданному периоду, даже если значение переменной не меняется? Скада как-то это узнает и выполняет полный опрос?
ОРС сервер выставляет определенный флаг что значение изменилось и скада его опрашивает.
Ещё вопрос, если опрос переменной выполнять не по изменению, а периодически, на что это повлияет?
Вы имеете ввиду полный опрос в ОРС сервере? Тогда метка времени будет меняться - скада будет опрашивать значение независимо от того менялось оно или нет.
ОРС сервер выставляет определенный флаг что значение изменилось и скада его опрашивает.
А почему такой же флаг не выставляется после опроса по команде PollCurrentDevice? Можно как то принудительно его выставлять после опроса по этой команде?
Вы имеете ввиду полный опрос в ОРС сервере? Тогда метка времени будет меняться - скада будет опрашивать значение независимо от того менялось оно или нет.
Нет, я имею ввиду если в свойствах опроса переменной изменить
17905
Мне казалось, что эта переменная будет будет опрашиваться постоянно и при изменении метки времени, это будет видно, но оказалось что это не так
Я вам уже наверное надоел, просто хочется разобраться. Пошел следующим путём. Создал тэг в opc-сервере формата string и записываю в него метку времени переменной Pust.
Запускаю сервер и получаю следующее:
25-04-2015 20:58:53.360 poll:Запись в гайдара-99а.гайдара-99а.poll значения False
25-04-2015 20:58:38.959 poll_time:Запись в гайдара-99а.гайдара-99а.poll_time значения 2015-04-25 20:57:59.080
25-04-2015 20:58:38.959 гайдара-99а.гайдара-99а:Стоп опроса устройства (t = 4078 ms) (H41 0,1573,6 )
25-04-2015 20:58:37.380 гайдара-99а:Соединение установлено xx.xx.xxx.x 502
25-04-2015 20:58:34.933 гайдара-99а:Попытка соединения xx.xx.xxx.x 502
25-04-2015 20:58:34.882 гайдара-99а.гайдара-99а:Старт опроса устройства
25-04-2015 20:58:34.882 poll:Запись в гайдара-99а.гайдара-99а.poll значения True
25-04-2015 20:58:06.880 poll:Запись в гайдара-99а.гайдара-99а.poll значения False
25-04-2015 20:57:59.080 poll_time:Запись в гайдара-99а.гайдара-99а.poll_time значения 2015-04-25 20:57:24.586
25-04-2015 20:57:59.080 гайдара-99а.гайдара-99а:Стоп опроса устройства (t = 7493 ms) (H41 0,1594,7 )
25-04-2015 20:57:57.478 гайдара-99а:Соединение установлено xx.xx.xxx.x 502
25-04-2015 20:57:51.638 гайдара-99а:Попытка соединения xx.xx.xxx.x 502
25-04-2015 20:57:51.587 гайдара-99а.гайдара-99а:Старт опроса устройства
25-04-2015 20:57:51.587 poll:Запись в гайдара-99а.гайдара-99а.poll значения True
25-04-2015 20:57:24.586 poll_time:Запись в гайдара-99а.гайдара-99а.poll_time значения 2015-04-25 20:57:20.125
25-04-2015 20:57:24.586 гайдара-99а.гайдара-99а:Стоп опроса устройства (t = 3410 ms) (H41 0,1474,5 )
25-04-2015 20:57:23.107 гайдара-99а:Соединение установлено xx.xx.xxx.x 502
25-04-2015 20:57:21.177 гайдара-99а:Попытка соединения xx.xx.xxx.x 502
25-04-2015 20:57:21.177 гайдара-99а.гайдара-99а:Старт опроса устройства
25-04-2015 20:57:21.172 Server:Cтарт конфигурации C:\ProgramData\InSAT\MasterOPC Universal Modbus Server\SERVERCFG\gaidara-99a.mbp
25-04-2015 20:57:21.172 Server:MasterOPC Universal Modbus Server Demo 32 Build - 3.1.3
Мне не понятно почему записывается метка времени предыдущего опроса?
В общем получил желаемое, добавив дополнительный тэг типа "double", в него пишу метку времени от тэга "Pust", а в скаде беру метку времени от этого тэга.
count=0;
-- Initialization
function OnInit()
end
-- Uninitialization
function OnClose()
end
-- Processing
function OnRead()
tv,tq,ts = server.ReadCurrentTag();
if tq==192 then
server.WriteCurrentTag(tv,tq);
ts1=time.StringToTimeStamp(ts)
server.WriteTagByRelativeName( "poll_time", ts1,192 );
end;
end
Изврат конечно, но работает.
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot