Расчет среднего значения?
Добавлено: Чт фев 09, 2012 9:40 pm
Коллеги знающие!
Ситуация такая:
Historian и аналоговый тег, метод сохранения = cyclic ,10 sec.
Создал EventTag, тип детектора = "Shedule" с частотой равной 1 часу, Action = Summary, CalculationType = AVG,Duration = 1 Hour, Resolution = 10000 ms. Ну и естественно добавил тот аналоговый тег.
Закоммитил, все нормально, каждый час срабатывает детектор и вычисляет мне среднее за прошедший час, Historian там как то записывает в таблицу SummaryData, а часовые значения я смотрю через вьюшку v_SummaryData. Все нормально.
Но вот я делаю запрос:
и он мне возвращает значение, ну вот хоть и рядом с тем, что уже есть в SummaryData, но немножко другое.
Я рассуждаю так: сохранение раз в 10 сек, значит за час он сохранил 360 значений, из этих 360 значений я ищу среднее, причем качество должно быть этих значений Good.
Вот сколько не бьюсь, так и не могу понять почему значения средних разные.
Пробовал еще так:
Все равно значение хоть и рядом, но отличается от того значения, что сам Historian по детектору формирует.
Как правильно все же делать? и каким значениям доверять?
И вдогонку: если сервер ввода-вывода был на какое-то время недоступен (связи например не было) и хисториан не сохранял значения, он потом "правильно" посчитает среднее после восстановления связи? или лучше все же мне самому прямым запросом к History считать среднее, указывая параметр wwQualityRule = 'Good'?
Ситуация такая:
Historian и аналоговый тег, метод сохранения = cyclic ,10 sec.
Создал EventTag, тип детектора = "Shedule" с частотой равной 1 часу, Action = Summary, CalculationType = AVG,Duration = 1 Hour, Resolution = 10000 ms. Ну и естественно добавил тот аналоговый тег.
Закоммитил, все нормально, каждый час срабатывает детектор и вычисляет мне среднее за прошедший час, Historian там как то записывает в таблицу SummaryData, а часовые значения я смотрю через вьюшку v_SummaryData. Все нормально.
Но вот я делаю запрос:
- Код: Выделить всё
DECLARE @dt1 datetime
DECLARE @dt2 datetime
SET @dt1 = '20120209 15:00:00'
SET @dt2 = '20120209 16:00:00'
SELECT Avg(Value) FROM dbo.History
WHERE TagName = N'Tag1'
AND DateTime>=@dt1
AND DateTime<=@dt2
AND wwRetrievalMode ='Cyclic'
AND wwCycleCount = 360
AND wwQualityRule = 'Good')
и он мне возвращает значение, ну вот хоть и рядом с тем, что уже есть в SummaryData, но немножко другое.
Я рассуждаю так: сохранение раз в 10 сек, значит за час он сохранил 360 значений, из этих 360 значений я ищу среднее, причем качество должно быть этих значений Good.
Вот сколько не бьюсь, так и не могу понять почему значения средних разные.
Пробовал еще так:
- Код: Выделить всё
.......
AND wwRetrievalMode ='Cyclic'
AND wwResolution = 10000
AND wwQualityRule = 'Good'
Все равно значение хоть и рядом, но отличается от того значения, что сам Historian по детектору формирует.
Как правильно все же делать? и каким значениям доверять?
И вдогонку: если сервер ввода-вывода был на какое-то время недоступен (связи например не было) и хисториан не сохранял значения, он потом "правильно" посчитает среднее после восстановления связи? или лучше все же мне самому прямым запросом к History считать среднее, указывая параметр wwQualityRule = 'Good'?