Расчётные формулы точек
В некоторых случаях прямое измерение параметров потребления ресурса невозможно и требуется их расчет. В этом случае вы можете задать формулы, которые будут использованы для расчёта указанных вами параметров. Расчётные формулы могут быть заданы для любой точки учёта. Вы можете заменить часть считанных от прибора параметров, используя рассчитанные по формулам значения.
Для расчётных точек формулы — единственный способ получить данные. Расчётные точки невозможно опросить и привязать к устройству, все параметры могут быть только рассчитаны.
Значения параметрам потребления, рассчитанные по формулам, присваиваются в следующих случаях:
- после опроса точек учета, используемых в формулах параметров
- после импорта данных по точкам учета используемых в формулах параметров
- после выполнения ручного пересчета расчетной точки учета
- после опроса или импорта данных по точке учёта, для которой заданы формулы. Расчёт в этом случае будет произведён только если во всех точках учёта, присутствующих в формуле, есть потребление.
Заполнение текущих параметров для расчётных формул выполняется по следующему алгоритму:
- При изменении текущих данных по какой-либо точке учёта-источника, входящей в выражения для расчетных точек, проверяются все формулы, в которую входит эта точка-источник.
- Запрашиваются текущие данные за период плюс минус пять минут относительно времени из п.1, по всем точкам-источникам используемым в формулах расчетных точек.
- По всем точкам-источникам отбираются текущие данные, которые укладываются в этот диапазон.
- Из отобранных выбираются данные ближайшие по времени к данным из п.1 и по ним рассчитываются параметры расчетной точки.
Важно
Чтобы не возникало коллизий расчетных данных, рекомендуется отключать все виды расчета интеграторов и архивов на вкладке Расчет и хранение.
Для точек учета, параметры потребления которых используются в формулах для расчетной точки, тоже рекомендуется отключить расчет архивов.
Расчет имеет смысл включать, если это действительно необходимо и требуемые данные не считываются с прибора.
Параметры и выражения для их расчета задаются на вкладке Расчётные формулы:
Расчетный параметр выбирается из выпадающего списка, содержимое которого зависит от системы расчетной точки. Значения хранятся в системных единицах измерения.
При нажатии кнопки вызова редактора выражений открывается окно:
Перед созданием выражения для расчета надо выбрать точки учета, параметры которых будут использоваться в расчете.
Редактор формул
Выражения для расчета параметров задаются с помощью редактора формул.
Наименования полей строятся по шаблону: <Наименование объекта> - <Наименование точки учета>.<Параметр>
Например, в приведенном выше примере построено выражение, результат которого зависит от того был ли включен на объекте с именем Test отопительный сезон. Данные для расчетной точки будут браться из точки учета с именем Отопление принадлежащей объекту c именем Test.
Для меток времени принадлежащих отопительному сезону параметр T1 для расчетной точки будет равен 100, а для меток времени не принадлежащих отопительному сезону параметр T1 будет равен 50.
Синтаксис выражений
Редактор позволяет ввести расчётные формулы с помощью интерфейса пользователя. В результате, получится строковое выражение, которое будет сохранено в базе. Ниже описано как строится это выражение и в каком виде оно сохранено в базу данных. Структура сформированной формулы может вам понадобится, если вы хотите ввести формулу через API.
Синтаксис расчётных формул описан на странице производителя DevExpress.
В качестве переменных могут использоваться параметры точек учёта. Для того чтобы определить переменную нужно в квадратных скобках указать её идентификатор и параметр.
[3763.5]
Здесь:
3763
- Идентификатор точки учёта.
5
- Идентификатор параметра.
В качестве идентификатора параметра можно указать:
Название параметра | Описание | Пример |
---|---|---|
Числовое значение перечисления DataParameter | При расчёте будет взято значение этого параметра. Например, можно указать объём по подающей магистрали, температуру, и так далее. Чтобы получить числовое значение приведите тип перечисления к целому значению. То есть (int)DataParameter.T_in . |
[3763.1] - Температура по подающей магистрали (1) точки учёта с идентификатором 3763 |
Errors | При расчёте заменяется на список кодов зафиксированных ошибок в формате |1|2|3| |
Contains([3763.Errors], "|2|") - проверить что по точке учёта есть ошибка с кодом “2”. Обратите внимание, что вертикальные чёрточки нужно будет обязательно написать, иначе НС будет зафиксирована если были найдены ошибки с кодами 123, 1234, 1123, и так далее. |
TimeStamp | Дата и время архивной записи, для которой рассчитывается значение. | GetHour([3759.TimeStamp]) = 5 - Проверяем что это архивная запись на 5 часов. |
IsHeatSeason | Флаг, указывающий что расчёт производится для отопительного сезона. | Iif ( [3763.IsHeatSeason] = True, 55, 33) - В отопительном сезоне вернёт значение 55, в межотопительном 33. |