Содержание материала

Процед {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.