PDA

Просмотр полной версии : SCADA и отчёт времени



energvk
20.04.2015, 11:00
Здравствуйте!
Пытаюсь реализовать отчет времени с момента последнего удачного вопроса, но в нормальном виде не получается этого сделать.
Задача такая, произошел опрос объекта opc-сервером, он удачен (то есть все переменные опросились), начинается отчет времени вида hh:mm:ss. Затем при следующем опросе значение сбрасывается на 0 и отчет начинается сначала. Пока получается запускать отчёт по Событию с формулой "OPCQuality( Pust ) = 192" и только в формате числа двойного вещественного (т.е. используя Счётчик времени). Не могу сообразить как штатными средствами это можно выполнить.
P.S. И ещё вопрос, можно ли вытащить значение периода опроса объекта из masteropc желательно с возможностью его изменения?

Заранее спасибо.
С уважением.

SCADAMaster
20.04.2015, 17:49
Задача такая, произошел опрос объекта opc-сервером, он удачен (то есть все переменные опросились), начинается отчет времени вида hh:mm:ss. Затем при следующем опросе значение сбрасывается на 0 и отчет начинается сначала.
Пример в приложении.

energvk
21.04.2015, 14:07
Большое спасибо, ваш вариант то что нужно. Пробовал, что-то подобное, но у меня почему то не работал расчет, ни один, ни второй. И по вашему примеру в том числе. Подсвечивался серым. В итоге просто скопировал с вашего проекта, вставил в свой, изменив привязку переменной и всё заработало. Причину не выяснил.


P.S. И ещё вопрос, можно ли вытащить значение периода опроса объекта из masteropc желательно с возможностью его изменения?

А по этому вопросу как? Думал можно сделать через скрипт, но в описании Lua не нашел ничего похожего.

SCADAMaster
21.04.2015, 18:05
Можно использовать функции server.SetCurrentDeviceCycle( ) и server.GetCurrentDeviceCycle( ).

energvk
21.04.2015, 22:10
Странно, но server.GetCurrentDeviceCycle( ) выдает значение настройки "Время ответа (мс)"

energvk
22.04.2015, 13:42
И ещё изменение происходит только в онлайне, после рестарта opc - изменения не сохраняются

SCADAMaster
22.04.2015, 19:02
Действительно, сейчас данная функция возвращает время ответа. Это ошибка, мы исправим данную ошибку.