Документация по SCADA системе Simp Light 4


Содержание:


Указание периода времени

Вопрос:

Как правильно задать период времени от текущего момента, например: минус минута, минус час, минус сутки, минус месяц, год?

Ответ:

Рассмотрим несколько примеров задания периода времени. В этих примерах будет использовать следующие основополагающие функции:

Now Возвращает текущие дату и время
Date Возвращает текущую дату

Ряд функций системы программирования СИМП Лайт требуют указать период времени. В основном это функции, работающие с базой данных СИМП Лайт. Например, функция GetMaxValueFromDB в скрипте выглядит так, при условии конечно, что значения всех переменных, указанных в функции, были заданы в вышележащих строках скрипта:

res := GetMaxValueFromDB(beginData, endData, nameChannel);

Примечание
Следует помнить, что начальная дата (beginData) на шкале времени должна лежать раньше конечной даты (endData), в противном случае результатом работы функции GetMaxValueFromDB() будет нулевое значение.

Кроме переменных в функции GetMaxValueFromDB() можно указывать и реальные значения, что и будем использовать в дальнейших примерах.

Максимальное значение канала 'Температура 1' за последние 17 дней с текущего момента времени:

res := GetMaxValueFromDB(now - 17, now, 'Температура 1');

Максимальное значение канала 'Температура 1' за последние прошедшие 17 дней, то есть с 00:00 часов 17 дней назад, по 24:00 вчерашнего дня:

res := GetMaxValueFromDB(date - 17, date - 1, 'Температура 1');

Максимальное значение канала 'Температура 1' за период между указанными датами:

res := GetMaxValueFromDB(StrToDate('01.09.2023'), StrToDate('21.09.2023'), 'Температура 1');

res := GetMaxValueFromDB(StrToDateTime('01.09.2023 07:00'), StrToDateTime('21.09.2023 23:00'), 'Давление');

Максимальное значение канала 'Температура 1' за последний час:

res := GetMaxValueFromDB(now - 1 / 24, now, 'Температура 1');

Максимальное значение канала 'Температура 1' за последнюю минуту:

res := GetMaxValueFromDB(now - 1 / (24 * 60), now, 'Температура 1');

Максимальное значение канала 'Температура 1' за последние 25 секунд.

res := GetMaxValueFromDB(now - 25 / (24 * 60 * 60), now, 'Температура 1');


Примечание
Следует помнить, что малыми временными периодами, отсчитываемыми от текущего времени не следует увлекаться, потому что запись значений переменных активных каналов из буфера в оперативной памяти компьютера в базу данных (в файл на жестком диске) производится не сразу, а с определенной периодичностью, что может искажать получаемые результаты.


Максимальное значение канала 'Температура 1' за последний месяц:

Максимальное значение канала 'Температура 1' за последний год: