1 вариант) Для создания отчета за 20 минут задаем период времени со скады, интервал установлен на 1200 секунд, тип обработки данных - "среднее" для источника данных в отчетах. Здесь все должно быть верно.
2 вариант) Для создания отчета используем готовые средние значения с архива, интервал так же 1200 секунд, тип обработки данных - "последнее" для источника данных в отчетах.
Возможно в скрипте вызывающем архивирование что-то не так. Время архивирования привязано к минутам и секундам, вызов скрипта происходит каждую секунду и активируется при 0/20/40 минут:
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.