здравствуйте.
I.
просмотрев форум ответ на следующий вопрос найти не смог:
есть расходомер (СИ 30), данные с которого прилежно архивитруются. название счётчика "Значение_счетчика_в_физических_величинах". необходимо выводить расчётные данные на основании данных архива, а именно:
1. текущее значение
2. количество прокачанной жидкости за последний час (60 минут), с начала часа
3. количество прокачанной жидкости за сутки: (последние 24 часа), с начала суток, за предыдущий день
4. количество прокачанной жидкости за месяц: с начала текущего, за предыдущий месяц
5. количество прокачанной жидкости за год: с начала текущего года, за предыдущий год

приступив к решению вышел на такое:
1
Код:
AbsArchMomentValue (Значение_счетчика_в_физических_величинах, DateTime (), 1)
при просмотре графика симуляции бросается в глаза, что данные со счётчика и данные из архива смещены по фазе на 1 шаг (не критично) и что важнее формульное значение "скачет", хотя должно быть ровным - чем вызвано разобраться не смог.
2.1.
Код:
AbsArchMomentValue (Значение_счетчика_в_физических_величинах, DateTime (), 1)-AbsArchMomentValue (Значение_счетчика_в_физических_величинах, DateTime ()-3600, 1)
2.2.
Код:
AbsArchMomentValue (Значение_счетчика_в_физических_величинах, DateTime (), 1)-AbsArchMomentValue (Значение_счетчика_в_физических_величинах, CurHour(), 1)
3.1
Код:
AbsArchMomentValue (Значение_счетчика_в_физических_величинах, DateTime (), 1)-AbsArchMomentValue (Значение_счетчика_в_физических_величинах, DateTime ()-86400, 1)
3.2
Код:
AbsArchMomentValue (Значение_счетчика_в_физических_величинах, DateTime (), 1)-AbsArchMomentValue (Значение_счетчика_в_физических_величинах, CurDay(), 1)
3.3, 4.1, 4.2, 5.1, 5.2 -пока не придумал

II.
отдельно встаёт вопрос про цикл счётчика 0-999999. возникают следующие вопросы:
1. определение периода прохождение цикла, затем его усреднение и выявление минимального периода, за который цикл не успеет пройти (возможно экспорт данных со временем или отображение на графике).
2. учёт этого события при расчёте. например на текущий момент значение 8, а час назад значение было 999994. т.е. учитывая вышесказанное если нам необходимо рассчитать разницу между текущим значением и значением, которое было час назад то я вывышел следующим образом:
Код:
ЕСЛИ(AbsArchMomentValue (Значение_счетчика_в_физических_величинах, DateTime (), 1)>=AbsArchMomentValue (Значение_счетчика_в_физических_величинах, DateTime ()-3600, 1), AbsArchMomentValue (Значение_счетчика_в_физических_величинах, DateTime (), 1)-AbsArchMomentValue (Значение_счетчика_в_физических_величинах, DateTime ()-3600, 1), 1000000+AbsArchMomentValue (Значение_счетчика_в_физических_величинах, DateTime (), 1)-AbsArchMomentValue (Значение_счетчика_в_физических_величинах, DateTime ()-3600, 1))
логика такая: Если(v1>=v0, v1-v0,1000000+v1-v0)
замечание что данный метод применим если если за период проходит не больше одного цикла. как быть в противном случае не знаю. (вернее в голове есть соображения по утяжелению вычислений с разбивкой на сегменты пропорциональные циклу и анализ логикой ЕСЛИ, но хочу спросить есть ли альтернатива с простым решением ко всему второму блоку вопроса)

спасибо за все советы и предложения.