Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: Кумар от 19 Ноября 2018, 14:45:30

Название: Архивирование средневзвешенного значения
Отправлено: Кумар от 19 Ноября 2018, 14:45:30
Доброго времени суток!

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

В конечном итоге необходимо архивировать средневзвешенные значения за 20 минут, за сутки, за месяц.
Будет ли использование ArchiveAverage правильным в данном случае?
Название: Re: Архивирование средневзвешенного значения
Отправлено: Simple-Scada от 20 Ноября 2018, 10:59:53
Здравствуйте.

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

Цитировать
В конечном итоге необходимо архивировать средневзвешенные значения за 20 минут, за сутки, за месяц.
Будет ли использование ArchiveAverage правильным в данном случае?
Да, ArchiveAverage подходит. Но учитывайте, что эта процедура выполняет относительно "тяжелые" расчеты на основе архивных данных, т.е. берёт все архивные данные из БД за указанный интервал и выполняет с ними вычисления. Поэтому, если нужно часто выполнять расчёт за большие интервалы времени и по переменным которые часто меняются, то нужно следить чтобы возможности серверного ПК подходили для таких объемов вычислений.
Название: Re: Архивирование средневзвешенного значения
Отправлено: Кумар от 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.

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