Комплекс программых средств ELECTRO для построения коммерческих систем учета энергии и диспетчерских систем
1. Общая информация
Комплекс Electro – открытая для адаптации к обьекту внедрения система, позволяющая:
- принимать данные от различных устройств (счетчики учета энергии с интерфейсом удаленного доступа; концентраторы импульсных сигналов типа ЦТ5000, ITEK-210; программируемые логические контроллеры; терминалы телеметрических систем);
- накапливать Базу Данных (БД) с использованием широкого класса Систем Управления Базами Данных (СУБД) – MS Access, MS SQL Server, MySQL server, Borland Interbase server, Sybase SQL Anywhere, Informix, Oracle. Выбор СУБД определяется требованиями к внедряемой системе и возможностями заказчика.
- синхронизировать (реплицировать) БД расположенных на различных серверах (допускается применение различных СУБД).
- поддерживать архитектуру клиент – сервер БД (удаленный доступ).
- разрабатывать произвольные отчетные формы.
- передавать, в согласованном формате, информацию между БД Electro и другими системами.
- обслуживать интернет-клиентов (Electro WEB-сервер).
2. Установка системы
Настройка комплекса Electro в общем случае включает этапы:
- подключение аппаратуры передачи и пребразования данных (модемы, мультиплексоры);
- настройка сетевых компонент используемых операционных систем (подключение клиентского ПК к серверу через Microsoft Network (TCP/IP));
- настройка используемого SQL-сервера (в настоящее время поддерживаются MS Access, MS SQL Server, Interbase SQL Server; MySQL, Sybase SQL Server);
- настройка ODBC-источника данных на клиентском ПК;
- собственно установка компонент Electro на клиентских ПК и сервере.
Перечисленные этапы описываются в отдельных документах.
3. Программы и драйвера сбора данных
В данном разделе описываются различные программные компоненты, предназначенные для получения данных из некоторого источника (счетчики, устройства, файлы данных) и записи в БД Electro.
Отдельное место занимает программная компонента NRS, являющаяся также основой для построения диспетчерской ситемы контроля.
3.1. C300.exe – импорт данных из DGC300
Программа C300.exe обеспечивает перенос данных системы L&G DGC300 (каталоги DATEN, ROUTEN, TARIDAT) в БД Электро.
Программу следует разместить и запускать в каталоге, в котором непосредственно содержатся каталоги DATEN, ROUTEN, TARIDAT.
В каталогах ROUTEN, TARIDAT обрабатываются файлы с расширением TXT либо ABG. В каталоге DATEN обрабатываются файлы с расширениями ann, где a – латинская буква, символ месяца (A – Янв, B – Февр, C – Март, D – Апрель и т.д.), nn – две последние цифры года. Т.о. файл *.A02 хранит информацию за Январь2002.
Программа запускается командной строкой
C300.exe [DELETE] [NOROUTEN] [NODATEN] [NOTARIDAT] [SCANONLY] [NOWAIT] [TREND0]
Необязательные ключи запуска:
DELETE - удалять обработанные файлы. При отсутствии данного ключа в строке запуска обработанные файлы не удаляются. Информация об обработанных файлах заносится в файл PROCESSED.INI (отдельно для каждого каталога);
NOROUTEN - не обрабатывать каталог ROUTEN;
NODATEN - не обрабатывать каталог DATEN;
NOTARIDAT- не обрабатывать каталог TARIDAT;
SCANONLY - занесение характеристик параметров в БД ElectroCNF без сохранения значений в БД Electro. Режим используется для ускоренного формирования конфигурации обьекта.
NOWAIT - однократный запуск программы. После обработки файлов программа завершает работу. При отсутствии данного ключа в строке запуска программа переходит в режим ожидания новых файлов.
ПРИМЕЧАНИЕ. Программа игнорирует системную кнопку [x] и команду Alt+F4 во избежание случайного завершения программы пользователем. Прекратить работу программы можно в Диспетчере Задач (Ctrl+Alt+Del).
Особенностью программы C300.exe является автоматическая генерация конфигурации системы согласно имеющимся в импортируемых файлах данным. Например, при импорте файла
\ENERG#/CTK3-ENERGY9-ZMB4#0(E00002233)#12(01-10-29)
\ENERG#11(11:47:14)#8.1(37310*kWh)#8.2(83799*kWh)
\ENERG#8.3(54228*kWh)#9.1(60466*kWh)#9.2(149037*kWh)
\ENERG#9.3(88744*kWh)#38.1(0*kvarh)#38.2(0*kvarh)
\ENERG#38.3(0*kvarh)#48.1(0*kvarh)#48.2(0*kvarh)
\ENERG#48.3(0*kvarh)#8.1*22(0*kWh)#8.2*22(0*kWh)
\ENERG#8.3*22(0*kWh)#9.1*22(0*kWh)#9.2*22(0*kWh)
\ENERG#9.3*22(0*kWh)#38.1*22(0*kvarh)#38.2*22(0*kvarh)
\ENERG#38.3*22(0*kvarh)#48.1*22(0*kvarh)#48.2*22(0*kvarh)
\ENERG#48.3*22(0*kvarh)#108.1*22(4083*kWh)#108.2*22(9801*kWh)
\ENERG#108.3*22(6543*kWh)#109.1*22(0*kWh)#109.2*22(0*kWh)
\ENERG#109.3*22(0*kWh)#138.1*22(0*kvarh)#138.2*22(0*kvarh)
\ENERG#138.3*22(0*kvarh)#148.1*22(0*kvarh)#148.2*22(0*kvarh)
\ENERG#148.3*22(0*kvarh)#20(175337*kWh)#21(298247*kWh)
\ENERG#22(0*kvarh)#24(0*kvarh)#20*22(0*kWh)
\ENERG#21*22(0*kWh)#22*22(0*kvarh)#24*22(0*kvarh)
\ENERG#120*22(20427*kWh)#121*22(0*kWh)#122*22(0*kvarh)
\ENERG#124*22(0*kvarh)#PC(+730*kW)#QC(+0*kvar)
\ENERG#PI(+728*kW)#QI(+0*kvar)#L.1(7.345*kV)
\ENERG#L.2(0.000*kV)#L.3(0.006*kV)#I.1(99.130*A)
\ENERG#I.2(0.000*A)#I.3(0.000*A)#FRE(49.9*Hz)
\ENERG#71(21)
будет проверено наличие раздела ENERG и счетчика с серийным номером E00002233. Будет проверено наличие всех упоминаемых параметров (“8.3”, “48.1” и др.) и их размерностей.
Программа воспринимает следующий формат файла (каталоги ROUTEN, TARIDAT):
Имя файла – произвольное.
Расширение имени файла – ABG либо TXT.
Тип файла – текстовый, каждая строка заканчивается комбинацией 0x0D, 0x0A.
Общий формат строки (символы ‘[‘ ‘]’ заключают необязательные поля; ‘…’ – повторяющиеся поля):
[\Группа][#/Тип][#]Параметр[…#Параметр]
где:
Группа - строка символов (например Z0001, ENERG и т.п.). Указывает что данное устройство принадлежит указанной группе устройств. В случае отсутствия поля Группа по умолчанию принимается значение Z0001. Достаточно наличия поля в одной строке (как правило первой). Если поле встречается в нескольких строках, действительным для данного файла принимается первое упоминание. Программа использует имя группы при автоматической генерации каталога БД Электро.
Тип - строка символов (например ‘CTK3-ENERGY9-ZMB4’, ‘LGZ4ZMB410CT647.SsE’ и т.п.), тип счетчика. Обычно это поле размещается в первой строке, вслед за полем Группа.
Параметр - имеет в общем случае формат
Имя[.Инд][*Сохр](Знач[*Размерность])[(Метка)][“Наим”][@Период]
Где:
Имя - произвольная комбинация цифр ‘0’..’9’ и латинских букв ‘A’..’Z’ (маленькие буквы автоматически приводятся к большим). Длина – не более 4-x символов. Программа использует специальный алгоритм для преобразования комбинации Имя[.Индекс][* Сохр] к индексу Карты Памяти Устройства (КПУ, см.далее).
Инд - индекс, необязательное поле, целое число от 0 до 99.
Сохр - необязательное поле, целое число. Признак сохраненного значения параметра в памяти устройства. Отсутствие данного поля говорит о текущем значении параметра.
Знач - целое или вещественное число, значение параметра. В качестве разделителя дробной части можно использовать ‘.’ или ‘,’.
Размерность - строка смволов, размерность параметра (‘kWh’, ‘kV’ и т.п.).
Метка - необязательное поле, метка времени в формате ГГ-ММ-ДД ЧЧ:ММ , уточняет поле Сохр
Наим - необязательное поле, наименование параметра
Период - необязательное поле, период параметра. Может принимать значения: 0 – непериодичный параметрб 1 – день, 2 - месяц, 3 – квартал, 4 – год, 5 – неделя. Прочие значения указывают период в секундах.
Cимвол ‘#’ используется для разделения нескольких полей в строке.
Таким образом, наряду с вышеприведенным форматом ABG-файла, возможна также запись:
\ENERG#/CTK3-ENERGY9-ZMB4
0(E00002233)
12(01-10-29)
11(11:47:14)
8.1(37310*kWh)
8.2(83799*kWh)
и т.д.
Обязательные и зарезервированные имена параметров. В общем случае Имя.Индекс не имеет содержательного смысла с точки зрения программы C300.exe. Исключение составляют:
0(СерийныйНомер) - уникальный серийный номер устройства, произвольный текст.
Используется для идентификации устройства в БД Электро;
00(Идентификатор) - дополнительный идентификатор устройства;
12(ГГ-ММ-ДД) - дата генерации ABG-файла;
11(ЧЧ:ММ:СС) - время генерации ABG-файла.
Параметры 11,12 используются для присвоения метки времени параметрам с текущими значениями;
80(XXXXXX) - признак начала и описание графика нагрузки.
Обязательными параметрами ABG-файла являются: 0, 12 и 11.
Определение метки времени для параметров с сохраненными значениями.
Признаком сохраненного значения является наличие поля *Сохр. Например, имеем фрагмент файла:
12(01-10-29)
11(11:47:14)
8.1(37310*kWh) - текущее значение на 01-10-29 11:47:14
8.1*22(0) - сохраненное значение для интервала Сохр=22. (При отсутствии размерности программа попытается ее определить из других параметров 8.1 данного ABG-файла.)
Интервалы сохранения интерпретируются программой С300 как месячные, причем в общем случае месячный интервал сохранения не совпадает с календаным месяцем. День начала месячного интервала сохранения содержится в поле FirstDay таблицы TB_Devices базы данных ElectroCNF. Например, значение FirstDay=20 определяет, что интервал сохранения начанается 20-го числа месяца и заканчивается 19-м числом следующего месяца.
Программе необходимо определить по значению поля Сохр календарную дату интервала сохранения. Для этого анализируются значения FirstDay, значение параметра 12 и максимальное значение полей Сохр ABG-файла.
Рассмотрим наш пример ABG-файла при условии FirstDay=20. Максимальное значение Сохр равно 22, дата сьема показания – 29 октября 2001г.
Максимальное значение (у нас – 22) Сохр относится к последнему законченному интервалу сохранения «Октябрь2001» (20 сентября 2001 – 19 октября 2001). В соответствии с принципами хранения данных в БД Електро сохраненным значениям *22 присваивается метка времени ‘01-окт-2001 00:00:00’.
Параметрам с сохраненными значениями *21 будет присвоена метка времени ‘01-сент-2001 00:00:00’, *20 – ‘01-авг-2001 00:00:00’ и т.д.
Отметим, что если бы значение параметра 12 было бы 01-10-19 (т.е. день месяца меньше FirstDay), то интервалу сохранения *22 соответствовал бы «Сентябрь2001» (метка времени ‘01-сент-2001 00:00:00’).
Алгоритм преобразования Имя[.Индекс][*Сохр] в индекс карты памяти устройства.
Общая информация. Система Электро позволяет поддерживать произвольные устройства сбора данных (электронные счетчики, концентраторы, программируемые логические контроллеры, устройства телемеханики). В основе механизма адресации параметров произвольного устройства лежит модель Карты Памяти Устройства (КПУ).
КПУ – это принятое для системы Электро соглашение о том, каким образом нумеруется (индексируется) совокупность параметров для устройства конкретного типа. КПУ перечисляет все возможные параметры устройства данного типа и каждому параметру сопоставляет уникальный числовой идентификатор – Индекс (четырехбайтовое беззнаковое число), сохраняемый в поле MemInd таблицы TB_Objects.
КПУ для ABG-файла. В общем случае программе C300 ничего не известно об устройстве, от которого получен данный ABG-файл.
(ABG-формат используется в счетчиках фирмы L&G. Однако практикуется подход, когда совокупность опрошенных параметров со счетчиков другого производителя (Alpha ABB, Энергия-9) оформляется в виде ABG-файла).
Из ABG-файла программа читает символьное обозначение параметра - Имя[.Индекс][*Сохр]. Данная фраза должна быть преобразована к числовому индексу.
Сразу отметим, что алгоритм преобразования не учитывает значение поля Сохр – важен только факт его наличия\отсутствия. Формула преобразования:
ИндексКПУ = (To40(Имя)*100 + Индекс)*4 + K + 1000
где K принимает значение 0..3:
- - поле Сохр присутствует;
- – поле Сохр отсутствует;
2,3 - резервируется для будущего использования.
Функция To40() интерпретирует символьное Имя как совокупность «цифр» с основанием системы счисления 40 и преобразует к десятичному числу по правилам:
'0'..'9' <==> 0..9
'A'..'Z' <==> 11..36
коды 10,37,38,39 зарезервированы.
Таким образом, любая допустимая фраза Имя[.Индекс][*Сохр] преобразуется к целому числу в диапазоне от 1000 до
((((39*40+39)*40+39)*40+39)*100+99)*4+3+1000 = 1024000999 (0х3D0903E7)
Значения ИндексКПУ в диапазоне от 0 до 999 используется для индексации байт состояния и графиков нагрузки.
3.2. Maket.exe – импорт макетов 817, 30817
Программа Maket.exe обеспечивает перенос данных макетов обмена информацией в БД Электро. В текущей версии программы поддерживаются макеты 30817, 817.
Программу следует разместить и запускать в каталоге, в котором непосредственно содержится каталог MAKET.
Программа запускается командной строкой
Maket.exe [DELETE] [SCANONLY] [NOWAIT] [TREND0]
Необязательные ключи запуска:
DELETE - удалять обработанные файлы. При отсутствии данного ключа в строке запуска обработанные файлы не удаляются. Информация об обработанных файлах заносится в файл PROCESSED.INI (отдельно для каждого каталога);
SCANONLY - занесение характеристик параметров в БД ElectroCNF без сохранения значений в БД Electro. Режим используется для ускоренного формирования конфигурации обьекта.
NOWAIT - однократный запуск программы. После обработки файлов программа завершает работу. При отсутствии данного ключа в строке запуска программа переходит в режим ожидания новых файлов в каталоге MAKET.
Особенности учета летнего\зимнего времени.
1. В БД Электро метки времени данных указывают время по Гринвичу.
2. В прикладных программах (DBView, RepCnf и др.) гринвичское время преобразуется к локальному времени (учет часового пояса и летнего времени) конкретного компьютера.
3. Система Электро (Electro.DLL) автоматически настраивает компьютер согласно принятых в Украине правил. В случае применения других правил необходимо изменить настройки Electro.DLL.
Компоненты сбора данных (C300.exe, Maket.exe, dll-драйвера) должны обеспечивать правильное формирование метки времени (п.1) в контексте локального компьютера (п.3).
В правилах формирования макета 30817 указано:
- За сутки перехода на зимнее время необходимо передавать 25 часовых значених по всех показателях и записать значения показателей за время перехода в 25 час.
- За сутки перехода на летнее время необходимо передать 24 значения по всех показателях. Показатели за час перехода должны равняться нулю.
Пример макета в день перехода на летнее время (31 марта 2002):
//30817:020331:513804:++
(1):2927:1:2:0:4:5:6:7:8:9:10:11:12:13:14:15:16:17:18:19:20:21:22:23:24:==
После обработки данного макета в БД Електро будет храниться следующая информация (программа DBView, отображается локальное время):
Показания за 31.03.2002 02:00:00 отсутствуют, т.к. локальному времени с 02 по 03 часа ночи в день перехода на летнее время нельзя сопоставить значение гринвичского времени.
Пример макета в день перехода на зимнее время (28 октября 2001):
//30817:011028:513811:++
(1):2927:1:2:3:4:5:6:7:8:9:10:11:12:13:14:15:16:17:18:19:20:21:22:23:24:25:==
После обработки данного макета в БД Електро будет храниться следующая информация (программа DBView, отображается локальное время):
Для метки времени 28.10.2001 02:00:00 имеется два показания, что соответсвует специфике перехода на зимнее время.
3.3. CBASE-Reader – прием данных по протоколу ЦBase
Программа DataReader.exe предназначена для опроса устройств ЦТ5000, ITEK-210 и занесения считываемых данных в БД Электро. Описание программы в отдельном документе.