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

Передача данных по протоколу УППД

В ядре системы Электро (файл Electro.dll, функция ElectroXML()) реализован клиент Универсального Протокола Передачи Данных (УППД), принятого для обмена информацией в ГП «Энергорынок».
Инициировать подготовку и передачу данных можно с помощью консольного приложения XmlGen.exe:
XmlGen ACTION=12 [INPUT=шаблон.xml] [DATE=date] [GROUPID=group_id]

Принципы реализации УППД и Генератора Макетов (см. Как организовать формирование и автоматическую посылку макета 30817) аналогичны. В обеих случаях по умолчанию используется один и тот же файл настроек electro/settings/makgen.xml – но за УППД отвечает тэг uppds:
Передача данных по протоколу УППД
Cвойства тэга uppds определяют параметры подключения к серверу УППД:
srv – ip-адрес сервера. Сервер АСКУЭ ГП «Энергорынок» имеет ip-адрес 213.160.129.35 или 10.131.1.12 (для пользователей ТКС «Энергия»)
prt – порт (сокет) сервера, обычно 7011
usr,psw – авторизация
obj – код обьекта

Подтэг uppd своим свойством group аналогичен типу макета и задает структуру (состав) передваемых данных. group=100 зарезервировано для почасовых и суточных значений (т.е. по сути соответствует макету 30817).
Подтэг point определяет точку учета:
id - идентификатор точки учета в УППД
dbid - идентификатор соответствующего параметра в системе Электро
descr - комментарий, в протоколе не используется.

В приведенном примере, для группы данных 100 будет передана информация для обьекта 11002 по трем точкам учета с идентификаторами 1,2,3. Информация будет взята из БД Электро по параметрам с objid 4933, 4934 и 4935 соответственно.

Апрель2007.
Добавлена настройка соединения через прокси по протоколам SOCKS4 и HTTPCONNECT. Добавьте к тэгу uppds свойство proxy="SOCKS4/ip:port" или proxy="HTTPCONNECT/ip:port"
где ip и port - это адрес и порт вашего прокси-сервера. Например, тэг будет выглядеть следующим образом
<uppds srv="213.160.129.35" prt="7011" proxy="HTTPCONNECT/10.17.40.94:80" usr="askoe@xxx" psw="yyy" obj="00">

Июль2007.
Согласно полученной информации, нельзя в одной телеграмме с предопределенными данными передавать одновременно почасовые и суточные значения.
Почасовый график необходимо передавать с кодом группы group=100, суточные значения - с кодом группы group=101. Источник информации для обеих телеграмм по сути один и тот же – почасовые ГН. В первом случае передается собственно почасовые значения, а во втором – их сумма, т.е. суточное значение. Шаблон может выглядеть следующим образом:

Т.е. как правило тэги <uppd group=”100”> и <uppd group=”101”> имеют одинаковое содержание. Однако, для отсылки почасового ГН за вчера необходимо выполнить команду
XmlGen ACTION=12 INPUT=шаблон.xml DATE=DAY1 GROUPID=100
Для отсылки суточного значения используем тот же макет:
XmlGen ACTION=12 INPUT=шаблон.xml DATE=DAY1 GROUPID=101

 

При передаче данных по УППД предполагается наличие установленного TCP/IP соединения с сервером УППД. Если имеется только dial-up выход в интернет, используйте например такой скрипт:
rasdial EnergoRinok login passw
if ERRORLEVEL 1 GOTO err2
XmlGen ACTION=12 DATE=DAY1
if ERRORLEVEL 1 GOTO err1
:exok
rasdial /DISCONNECT
exit 1
:err1
echo ОШИБКА УППД
rasdial /DISCONNECT
exit
:err2
echo ОШИБКА СОЕДИНЕНИЯ c EnergoRinok
exit -100


Для проверки поступления данных на сервер ЭР можно воспользоваться ВЭБ-доступом на http://www.er.gov.ua :
вводим логин пароль, внизу ссылка Перегляд даних комерційного обліку.

Настройка доступа Electro-клиента к серверу

Изначально доступ к серверу прописывается в клиентской лицензии (файл electro.ini) – там присутствуют строки вида
REMOTEDB=Oct330 FLAG=11 IP=10.25.44.17
Эта дефиниция указывает что удаленная БД Oct330 доступна по IP-адресу 10.25.44.17 (по умолчанию, используется сокет (порт) 5000).
Начиная с Electro.dll от 30 октября 2006г пользователь имеет возможность перестроить адрес. Для этого необходимо изменить тэг CONFIG/REMOTEDB/имя/Link :
Настройка доступа Electro-клиента к серверу

После чего перезапустить систему Electro.

Необходимо строго соблюдать синтаксис тэга – TCP:порт/SOCKET:адрес

Перенос БД с одного типа СУБД на другой

Иногда в процессе эксплуатации системы Электро возникает необходимость перейти с одной СУБД на другую сохранив как конфигурацию так и накопленные измерения.
Классический случай – система эксплуатировалась на базе встроенной бесплатной СУБД SQLite. Со временем количество подключенных устройств превысило 50 а обьем накопленных данных – более чем чем за год. Персонал стал замечать некоторое замедление реакции системы. Также стали возникать некоторые другие вопросы в части функционирования СУБД – многопользовательский доступ, встроенные средства администрирования БД и прочее.
Таким образом, созрели обьективные и субьективные предпосылки замены СУБД. При этом, естественно, ставится условие сохранения всего массива накопленных данных.

В Электро предусмотрено пошаговое решение данной задачи.

ШАГ 1. Сохранение содержимого Баз Данных ELECTRO и ELECTROCNF ТЕКУЩЕЙ (СТАРОЙ) КОНФИГУРАЦИИ в СУБД-независимых фаловых форматах. Это делается двумя командами (в отдельности для БД ELECTRO и ELECTROCNF):
d:/electro/xmlgen ACTION=4 OUTPUT=d:/electro/dump_electrocnf.xml DSN=ELECTROCNF
в результате будет создан файл dump_electrocnf.xml и папка с файлами dump_electrocnf.files с набором дополнительных файлов.
d:/electro/xmlgen ACTION=4 OUTPUT=d:/electro/dump_electro.xml DSN=ELECTRO
в результате будет создан файл dump_electro.xml и папка с файлами dump_electro.files с набором дополнительных файлов.

ШАГ 2. Запускаем НОВУЮ КОНФИГУРАЦИЮ системы Электро (на новой СУБД). При этом базы данных конфигурации ELECTROCNF и ELECTRO создаются пустыми. Для запуска новой конфигурации необходимо получить у поставщика системы Электро новой лицензии electro.ini (с указанием другого типа СУБД) и, возможно, другого Ядра системы electro.dll (на данный момент существуют реализации Ядра для СУБД SQLite, MySQL и ODBC-интерфейса).
По сути необходимо заново установить систему Электро, возможно предварительно выполнив необходимые действия по установке СУБД.
Очевидно необходимо соблюсти требование чтобы новая конфигурация не сужала условия применения системы. Например, старая конфигурация предусматривала возможность подключения до 60 устройств определенных типов. Лицензия на новую конфигурацию также должна предусматривать возможность подключения не менее 60 устройств соответствующих типов.

ШАГ 3. Восстанавливаем содержимое Баз Данных ELECTRO и ELECTROCNF из ранее полученных (на Шаге 1) СУБД-независимых фаловых форматов. Это делается двумя командами (в отдельности для БД ELECTRO и ELECTROCNF):
d:/electro/xmlgen ACTION=13 INPUT=d:/electro/dump_electrocnf.xml OUTPUT=d:/electro/electrocnf_rz.xml
d:/electro/xmlgen ACTION=13 INPUT=d:/electro/ dump_electro.xml OUTPUT=d:/electro/electro_rz.xml

В результате выполнения Шага3 содержимое новой конфигурации будет соответствовать содержимое старой конфигурации на момент выполнения Шага1.