Значит нужно взять значение счётчика на конец суток, например 1000, вычесть из него значение на начало суток, например 400 и полученный результат будет количеством импульсов накопленных за сутки, т.е 1000 - 400 = 600 импульсов. Делим это количество на 10 и получаем значение в кубах 600 / 10 = 60 кубов.
Для извлечения значений из архива нужно использовать процедуру ArchiveValueByTime (https://simple-scada.com/help/script/archivevaluebytime.html). Эта процедура берёт значение переменной из архива и записывает результат в переменную которую Вы укажете. Т.е. можно создать две внутренние переменные для значения на начало и на конец суток, например vrStart и vrEnd и в них получать значение из архива:
var
aDate: TDateTime;
begin
aDate := EncodeDateTime(2019, 12, 10, 0, 0, 0, 0); // время на начало суток (10 декабря 00:00:00)
{ извлечь из архива значение переменной "MyVariable" в отметке времени "aDate" и записать результат в переменную "vrStart" }
ArchiveValueByTime(MyVariable, vrStart, aDate);
aDate := EncodeDateTime(2019, 12, 11, 0, 0, 0, 0); // время на конец суток (11 декабря 00:00:00)
{ извлечь из архива значение переменной "MyVariable" в отметке времени "aDate" и записать результат в переменную "vrEnd" }
ArchiveValueByTime(MyVariable, vrEnd, aDate);
end.
, здесь мы время формируем в скрипте, но можно брать его из переменной или из компонента Календарь, как угодно.
Теперь можно создать отдельный скрипт с типом события "Изменились переменные" (https://simple-scada.com/help/script/changemulvar.html), добавить в него переменные vrStart и vrEnd и написать код пересчёта:
begin
// вычисляем значение в кубометрах и записываем результат в переменную vrResult
vrResult.Value := (vrEnd.Value - vrStart.Value) / 10;
end.
Очень просто.
var
aDate: TDateTime;
begin
aDate := RecodeTime(Now, 0, 0, 0, 0);
ArchiveValueByTime(MyVariable, vrEnd, aDate);
aDate := IncDay(aDate, -1);
ArchiveValueByTime(MyVariable, vrStart, aDate);
end
Ну и далее, как вам уже объяснили.
Скрипт должен быть таким, какой Вам нужен. Можете назначить его на событие OnClick кнопки, тогда по нажатию на кнопку будут запущены вычисления расхода. Если хотите выполнять периодически, например раз в сутки, то можно создать скрипт с типом события "Прошел час" и например в 00 часов запускать вычисление расхода, например:
var
aDate: TDateTime;
begin
if HourOf(Now) = 0 then // если сейчас 00 часов, то запускаем вычисление расхода за последние сутки
begin
aDate := RecodeTime(Now, 0, 0, 0, 0);
ArchiveValueByTime(MyVariable, vrEnd, aDate);
aDate := IncDay(aDate, -1);
ArchiveValueByTime(MyVariable, vrStart, aDate);
end;
end.