Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Архивирование средневзвешенного значения  (Прочитано 2689 раз)

Кумар

  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Доброго времени суток!

Использую процедуру ArchiveAverage для расчета средневзвешенного значения переменной за 20 минут и записи результата в новую переменную. Получившийся результат вывожу в отчет получаю один результат.
При этом используя расчет средневзвешенного значения за 20 минут с помощью возможностей создания отчета получаются другие значения. С чем это может быть связано?

В конечном итоге необходимо архивировать средневзвешенные значения за 20 минут, за сутки, за месяц.
Будет ли использование ArchiveAverage правильным в данном случае?

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3224
    • Просмотр профиля
    • Simple-Scada
Re: Архивирование средневзвешенного значения
« Ответ #1 : 20 Ноября 2018, 10:59:53 »
Здравствуйте.

Цитировать
При этом используя расчет средневзвешенного значения за 20 минут с помощью возможностей создания отчета получаются другие значения. С чем это может быть связано?
Обычно разница может быть только в том случае, если вычисления в отчете и по ArchieveAverage отличаются по времени. Например, если в ArchieveAverage передаётся интервал от 00:00 до 00:10, а в отчете идут вычисления по интервалу с 00:01 по 00:11. Вы уверены, что расчеты не отличаются по времени?
В ближайшее время перепроверим выполнение расчетов через архивные функции и через отчеты.

Цитировать
В конечном итоге необходимо архивировать средневзвешенные значения за 20 минут, за сутки, за месяц.
Будет ли использование ArchiveAverage правильным в данном случае?
Да, ArchiveAverage подходит. Но учитывайте, что эта процедура выполняет относительно "тяжелые" расчеты на основе архивных данных, т.е. берёт все архивные данные из БД за указанный интервал и выполняет с ними вычисления. Поэтому, если нужно часто выполнять расчёт за большие интервалы времени и по переменным которые часто меняются, то нужно следить чтобы возможности серверного ПК подходили для таких объемов вычислений.

Кумар

  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Re: Архивирование средневзвешенного значения
« Ответ #2 : 20 Ноября 2018, 14:58:34 »
1 вариант) Для создания отчета за 20 минут задаем период времени со скады, интервал установлен на 1200 секунд, тип обработки данных - "среднее" для источника данных в отчетах. Здесь все должно быть верно.

2 вариант) Для создания отчета используем готовые средние значения с архива, интервал так же 1200 секунд, тип обработки данных - "последнее" для источника данных в отчетах.
Возможно в скрипте вызывающем архивирование что-то не так. Время архивирования привязано к минутам и секундам, вызов скрипта происходит каждую секунду и активируется при 0/20/40 минут:
Код: (delphi)
begin
  if SecondOf(Now) = 00 then
    if MinuteOf(Now) = 00 then
    begin
      DateEnd.Value := Now;
      DateStart.Value := IncSecond(Now, -1200);
      ArchiveAverage(GH1_CO_03, GH1_CO_03_AVG20, DateStart.Value, DateEnd.Value);
      ArchiveAverage(GH1_NOX_03, GH1_NOX_03_AVG20, DateStart.Value, DateEnd.Value);
      ArchiveAverage(GH1_SO2_03, GH1_SO2_03, DateStart.Value, DateEnd.Value);
      ArchiveAverage(GH1_DUST_02, GH1_DUST_03_AVG20, DateStart.Value, DateEnd.Value);
    end;
end.

« Изменён: 20 Ноября 2018, 22:19:09 от Simple-Scada »

Кумар

  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Re: Архивирование средневзвешенного значения
« Ответ #3 : 26 Ноября 2018, 14:39:56 »
Получилось добиться одинаковых результатов средневзвешенных значений. Для этого запуск скрипта для процедуры ArchiveAverage установлен с задержкой по времени (спустя 10 минут).