Стартовая >> Документация >> Энергонадзор >> Electro для построения систем учета и контроля

FAQ 6 - Electro для построения систем учета и контроля

Оглавление
Electro для построения систем учета и контроля
Установка, программы и драйвера
Комплекс модулей опроса
RepCNF
DBView, LogView
AppName
Примеры, рекомендации, типовые решения
Принципы работы WEB-сервера
Результаты тестирования СУБД
Конфигурирование СУБД
Установка демонстрационной версии
FAQ 1
FAQ 2
FAQ 3
FAQ 5
FAQ 6
FAQ 8
Dll Option перечень ключей
Dll Option - организация опроса устройств
Dll Option - организация опроса счетчиков Elgama
Dll Option - организация опроса устройств Альфа
Dll Option - организация опроса счетчиков Энергия-9,  Облік ЛО-3Т5, корректоров ОЕ-VT, OE-VPT
Dll Option - GPS-Приемник, мультиплексор MX16, ПИК-16
БД ElectroCNF, Electro
БД ElectroCNF, Electro - состав таблиц
Работа с БД ElectroCNF
ElectroHost сервер
ElectroHost сервер - задания, контроль, связь

Расчетные сутки, расчетный месяц

            Свойство «период» параметра БД Electro в частности имеет значения СУТКИ, МЕСЯЦ в контексте локального календаря. Параметр с суточным периодом определен на интервалах оси времени, образованных метками локального времени 00:00:00. Соответственно, параметр с месячным периодом определен на интервалах оси времени, образованных метками локального времени 00:00:00 первого календарного дня месяца.
Значения РАСЧЕТНЫЕ СУТКИ, РАСЧЕТНЫЙ МЕСЯЦ представляют из себя дальнейшее обобщение. В конфигурации системы Electro имеются константы CALCDAYH и CALCMOND. Константа CALCDAYH задает значение часов (0..23) меток времени, образующих интервалы расчетных суток и месяца. Константа CALCMOND задает значение дня (1..28)  меток времени, образующих интервалы расчетного месяца.
Значения констант CALCDAYH (стандартное значение 9) и CALCMOND (стандартное значение 1) могут быть изменены в файле ELECTRO.INI в строке LICENZ, например
LICENZ=1 OWN="ХХХ" TMLIM=0 DEV=10 OBJ=1000 CALCDAYH =7 CALCMOND=15
т.е. расчетные сутки и месяц будут начинаться в 07:00:00 локального времени; кроме того расчетный месяц начинается 15-го числа календарного месяца.
Значения CALCDAYH=0 CALCMOND=1 превращают расчетные интервалы в обычные календарные.

Вычисляемый параметр. Агрегатирующие функции

            Вычисляемый (расчетный) параметр данного типа строится путем применения к базовому параметру (периодическому или непериодическому) одной из функций агрегатирования на интервалах создаваемого параметра. Дополнительно вычисленное значение умножается на заданный коэффициент.
Например, имеем базовый параметр «текущая активная мощность». Если мы хотим получить количество энергии за получасовые интервалы – создадим вычисляемый параметр с периодом 1800 и функцией агрегатирования INTG. Если нам нужно усреднить мощность на 5-ти-минутных интервалах – создадим вычисляемый параметр с периодом 300 и функцией агрегатирования AVGTM. И т.п.

Обозначение

Описание, пример применения

0

MIN

Минимальное значение

1

MAX

Максимальное значение

2

AVG

Среднеарифметическое значение
AVG = SUM / POINT_CNT
ПРИМЕР. Вряд ли в измерительных системах эта функция применима, т.к. она не учитывает положение усредняемых точек на оси времени. Более подходящая – функция AVGTM

3

INTG

Численное интегрирование (метод прямоугольников)
ОСОБЕННОСТЬ. Прямоугольники строятся вправо от опорной точки. Поэтому для построения первого в интервале прямоугольника берется точка слева от расчетного интервала. Если эту точку прочитать не удалось, первый прямоугольник строится влево от первой опорной точки.
Если опорные точки отсутствуют, значение в интервале не вычисляется.
ПРИМЕР. Если базовый параметр – мощность, то применение к нему функции INTG даст значение энергии на интервале.

4

AVGTM

Среднее по времени значение
AVGTM = INTG / dT
ПРИМЕР. Если базовый параметр – мощность, то применение к нему функции AVGTM даст усредненное на интервале значение мощности.

5

FIRST

Первое прочитанное значение

6

LAST

Последнее прочитаннное значение

7

SUM

Арифметическая сумма

8

CNT

Количество переходов "ноль" ßà "не ноль"

9

CNT0

Количество переходов "не ноль" à "ноль"

10

CNT1

Количество переходов "ноль" à "не ноль"

11

TM0

Время (секунды) нахождения в состоянии "ноль"

12

TM1

Время (секунды) нахождения в состоянии "не ноль",

13

DIF

Приращение значения

14

TM_FIRST

Время первого прочитанного значения

15

TM_LAST

Время последнего прочитанного значения

16

POINT_CNT

Количество значений

17

ROUND

Округление
Умножение на коэффицент выполняется ПОСЛЕ округления базовой величины.

18

PROJ

Проекция (пропорциональное копирование)

19

SHARP

Линейная интерполяция на начало интервала по двум точкам
Вычисляется значение базового параметра (в момент начала периода) по двум ближайшим точкам (слева и справа).
ОСОБЕННОСТЬ. Точка слева – это последняя точка в предыдущем интервале, тачка справа – первая точка в текущем интервале. Если левая или правая точки отсутствуют, значение не вычисляется.
ПРИМЕР. Если необходимо оценить показание счетчика на начало суток (00:00:00), а базовый параметр опрашивался скажем раз в 10мин. Создадим вычисляемый параметр SHARP с периодом СУТКИ.

Вычисляемый параметр. Препроцессор

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

Список процедур препроцессора

Обозначение

Описание, пример применения

20

LPCALC(@;@)

Вычисление ГН по типовому ГН и опорным точкам

21

LPREST(@;@)

Восстановление ГН по исходному ГН и суточной энергии

22

LPREST2(@;@)

Восстановление ГН по исходному ГН и суточной мощности

23

REPL1(@;@)

(@2!=0) ? @2  : @1

24

MASK1(@;@)

(@2!=0) ? 0.0 : @1

25

MINCNST(@;koef)

(@1>=koef) ? @1 : koef
Процедура сравнивает значение базовой величины с константой koef, указанной в поле Множитель  свойств вычисляемой величины (значение Множителя соответственно не используется по назначению!).
Периоды базовой и вычисляемой величины могут быть различными, в т.ч. и непериодическими. Если в период вычисляемой величины попадает несколько значений базовой величины, то среди них находится минимальное значение, после чего оно сравнивается с koef.

26

MAXCNST(@;koef)

(@1<=koef) ? @1 : koef
См. описание MINCNST

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рекомендация. Для изучения поведения процедур препроцессора создайте базовые параметры типа Ручной ввод. Вводите значения базовых параметров (утилита ManInput.exe) и наблюдайте значения вычисляемой величины (утилита DBView.exe).

ebreak title=FAQ 7}

Процед {mospagура препроцессора LPCALC

            Препроцессор LPCALC предназначен для построения расчетного графика нагрузки, вычисляемого на основе типового графика (базовый параметр @1) и реальных показаний регистра энергии (базовый параметр @2). Результат расчета LPCALC - это график с заданным периодом (равенство периоду @1 не требуется) удовлетворяющий двум требованиям:
В первую очередь, интеграл расчетного графика на интервале между двумя значениями @2 равен приращению этих значений.
Во вторую очередь, форма расчетного графика соответствует форме типового графика @1.

            Замечания, особенности расчета, рекомендации.

  • Наличие значений @1 не обязательно для выполнения расчета. В случае отсутствия значений @1 препроцессор LPCALC (@1,@2) вырождается в агрегатирующую функцию DIF(@2)
  • Параметры @1 и @2 могут быть как первичными величинами (результат автоматического чтения данных) так и расчетными (например Ручной Ввод). Например, счетчик не содержит профиля нагрузки (или профиль недоступен) – тогда в качестве @1 используем ручной ввод (типовой график), а в качестве @2 – реальные показания счетчика (считанные автоматически или внесенные вручную). В результате будем иметь расчетный профиль нагрузки соответствующий показаниям счетчика и форме кривой типового графика.
  • Как и для любого расчетного параметра, перерасчет LPCALC инициируется автоматически для интервалов, на которые влияют вновь появляющиеся значения @1 и @2. Также, перерасчет можно инициировать вручную, например через утилиты DBView, ElectroXML.

Процедура препроцессора LPREST

            Препроцессор LPREST предназначен для восстановления (коррекции) исходного графика нагрузки  (базовый параметр @1) по известным приращениям энергии за более длительный интервал, обычно сутки  (базовый параметр @2). Результат расчета LPREST - это график с периодом равным периоду @1 рассчитываемый по следующему алгоритму:
Обозначения
V2[i]               - значение @2 на интервале i;
N                     - количество интервалов @1 на интервале @2;
V1[i][j]            - значение @1 на подинтервале j=0..N-1 интервала i;
V1[i]               - сумма значений @1 на интервале i;
N[i]                 - количество существующих значений @1 на интервале i;
V[i][j]             - значение расчетного параметра на подинтервале j интервала i;
V[i]                 - сумма значений расчетного параметра на интервале i;

            Например, если @2 имеет период сутки, а @1 – час, то N=24, V2[i] – значение за i-е сутки, а V1[i][j] – значение за j-й час i-х суток. Соответственно, V1[i] – сумма @1 за i-е сутки. По идее, должно выполняться равенство V1[i] = V2[i].

  • Для некоторого i-го интервала @2 проверяем наличие значений @1. Вычисляется сумма V1[i] по существующим значениям @1.
  • При наличии отсутствующих значений @1 (случай N[i]<N) выполняется их оценивание по формуле взвешенного среднего в два шага:

Шаг 1.
V’[i][j] = 0.5*v1 + 0.3*v2 + 0.2*v3
Где
v2 = (V2[i]-V1[i]) / (N-N[i])  - оценка по @2;
v1 = V1[i][j-1]            - значение @1 за «предыдущий час». Если оно отсутствует, то v1=v2;
v3 = V[i-1][j]              - значение @1 за «этот час предыдущих суток». Если оно отсутствует, то v1=v2

Шаг 2. Вычисляем корректирующий множитель
K = (V2[i]-V1[i])  / Сумма(V’[i][j])
Учитывающий отклонение суммы оценок V’[i][j] от требуемой.

Шаг 3. Окончательная оценка
V”[i][j] = K * V’[i][j]

            Значения V[i][j] расчетного параметра формируем из существующих значений V1[i][j] либо их оценок V”[i][j]. Очевидно, в результате должно выполняться условие V[i] = V2[i].

  • В тривиальном случае N[i] = N (т.е. имеются все значения @1) проверяем разность

dV = V2[i] – V1[i]
В случае если dV превышает некоторый установленный предел, невязка dV учитывается в одном из элементов
V”[i][j] = V1[i][j] + dV
Номер элемента j в котором учитывается невязка, находится по некоторому эмпирическому алгоритму.

Сравнительный анализ LPCALC и LPREST

Процедуры LPCALC и LPREST немного похожи. Отличия см. таблицу.


LPCALC

LPREST

Применяется для расчета вычисляемого ГН по типовому ГН (@1) и отсчетам энергии накапливающим итогом (@2).

Применяется для восстановления отсутствующих элементов ГН (@1) по значению приращения энергии (@2) за больший интервал.

 

 

@2 - суть энергия накапливающим итогом измеряемая в произвольные моменты времени.

@2 - суть приращение энергии за фиксированные интервалы – сутки, месяц.

Значения @1 не переносятся в расчетный параметр, они только задают форму кривой расчетного параметра.

Значения @1 переносятся неизменными в расчетный параметр.

Периоды расчетного параметра и @1 могут быть произвольными

Период расчетного параметра должен совпадать с периодом @1

 

 

 

 

 

 

 

 

 

Не могу получить текущие значения (например через ElectroRTD) для вычисляемых параметров с сервера Electro

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

Как организовать обмен между двумя связанными БД Электро

            Распределенная конфигурация системы Электро предусматривает возможность доступа к удаленной (серверной) БД в приложениях ПросмотрБД (DBView.exe), ГенераторОтчетов (RepGen.exe) и других.
Однако, в данном режиме приложение может работать только с одной БД. Для составления сводного отчета, в котором должна присутствовать информация из нескольких БД, необходимо предварительно предпринять действия по переносу информации из одной БД в другую.
Это достаточно просто сделать с помощью технологии экспорта-импорта данных в формате ElectroXML.
ПРИМЕР. Имеется распределенная конфигурация Электро с сервером OCT330 и клиентом LDB. Необходимо создать механизм репликации из БД OCT330 в БД LDB. Например, по причине того что связь между OCT330 и LDB непостоянна – поэтому оператор LDB периодически подключается к OCT330, вычитывает обновленные данные, после чего работает в режиме off-line.
Репликация данных   выполняется скриптом, исполняемом на LDB:
ECHO  Фаза1. Экспорт из удаленной БД
XMLGEN ACTION=0 INPUT=33.xml OUTPUT=33rz.xml SERVER=OCT330
if ERRORLEVEL 1 GOTO nxt
ECHO *** ОШИБКА ЭКСПОРТА ИЗ ВНЕШНЕЙ БД!!
EXIT -1
:nxt
ECHO  Фаза2. Импорт в локальную БД
XMLGEN ACTION=3 INPUT=33rz.xml
if ERRORLEVEL 1 GOTO ok
ECHO *** ОШИБКА ИМПОРТА В ЛОКАЛЬНУЮ БД!!
EXIT -2
:ok
ECHO *** ЗАДАНИЕ ВЫПОЛНЕНО!
EXIT  1

            Скрипт построен на двух вызовах утилиты XMLGEN (синтаксис ее командной строки см. в документации). Первый вызов выполняет экспорт (ACTION=0) данных, указанных в локальном файле 33.xml, из сервера OCT330 в локальный файл 33rz.xml.
Второй вызов выполняет импорт (ACTION=3) данных из локального файла 33rz.xml в локальную БД LDB.
Файл 33.xml содержит некоторый перечень параметров из БД OCT330:
перечень параметров из БД

Как исключить устройство из опроса

            Бывает, что некоторое устройство временно недоступно (например нарушен канал связи). Очевидно, автоматический опрос этого устройства будет всегда завершаться с ошибкой; будут делаться повторные попытки и т.п. Как избежать непродуктивного использования коммуникационных ресурсов?
В свойствах устройства (см. картинку в Как настроить дублирующий канал связи) имеется флаг Активно. Деактивируйте данный флаг – и попытки опроса устройства через функцию ElectroXML() будут игнорироваться (имитируется успешный код завершения) .
Данный флаг не влияет на работу программы ручного опроса GetDev.exe – она честно будет пытаться связаться с устройством.

Локализация подписей в приложениях

            Имеется возможность изменения подписей на экранных формах компонент системы Электро.

            В каталоге electro/settings имеется файл Language.xml в котором содержится перечень исходных подписей и их локализаций (далее – словарь).
Перечень формируется динамически, в процессе функционирования системы. Так, подписи, используемые в РедактореОтчетов RepCnf.exe, появятся в словаре только после запуска RepCnf и исполнения соответствующих экранных форм.
В настройках Электро, сохраняемых в реестре операционной системы, имеется параметр
HKEY_LOCAL_MACHINE\SOFTWARE\NIVUS GmbH\Electro\Language
значение которого определяет код локализации (обычно, номер кодовой страницы: 7-german; 9-english; 25-russian; 52-ukrainian и т.д.). Для каждой оригинальной подписи (тэг str) в словаре имеются в общем случае несколько подтэгов new для разных кодов локализации:
Локализация подписей в приложениях
В данном примере для оригинальной подписи “Open” имеются обе локализации; для подписи “ReLoad” – только для локализации с кодом 25. В случае отсутствия локализации (txt=””) на экранной форме остается оригинальная подпись.

            Последовательность действий.

  • Установить значение кода локализации HKLM\SOFTWARE\NIVUS GmbH\Electro\Language
  • Запустить систему Электро и выполнить различные приложения с целью наполнения словаря Language.xml
  • Отстановить все компоненты системы Электро.
  • С помощью xml-редактора (в крайнем случае подойдет обычный текстовый редактор) внести в словарь Language.xml  локализации для оригинальных подписей.
  • Повторно запустить Электро, удостовериться в наличии локализаций.

При инсталляции системы Электро на новом обьекте не обязательно заново повторять шаги 2-4 – достаточно использовать ранее подготовленный словарь Language.xml.



 
EТ2, EТ3 счетчики »
электрические сети