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

Организовать в MS Excel постоянное обновление данных от Electro

Наиболее эффективный способ создания документа с постоянным обновлением данных от системы Electro – использование встроенной функции RTD (Real Time Data; в русских версиях ДРВ – Данные Реального Времени), имеющейся в Excel начиная с верс.10 (Excel 2002).
Эта функция извлекает данные реального времени из программ, поддерживающих автоматизацию COM. В комплекте поставки Electro имеется компонента ElectroRTD.dll. Ее необходимо зарегистрировать в операционной системе:
Regsvr32 ElectroRTD.dll

После этого в excel-документе для некоторой ячейки можно записать функцию
=RTD(“ElectroRTD”;;”OID=1234”)
смысл которой – «постоянно получать от программы ElectroRTD данные согласно ключа OID=1234”». Число 1234 – это идентификатор параметра в БД системы Electro. Идентификатор параметра можно определить, например, с помощью программы DBView.exe
Для упрощения вставки функции RTD в excel-документ в Редакторе Отчетов RepCNF.exe имеется команда Link à Special define. При этом нет необходимости определять OID вручную – редактор связи откроет стандартное окно навигации по БД Electro.

Замечания.

1. Синтаксис функции RTD предусматривает указание имени компъютера на котором должна быть запущена COM-надстройка (в нашем случае программа ElectroRTD). Это следует понимать так – клиент (компьютер на котором открыт excel-документ) связывается с указанным сервером посредством DCOM. Программа ElectroRTD запускается на сервере и «не знает» о том что результатом ее работы пользуется удаленный клиент.
Однако, возможности DCOM поддерживаются только для exe-модулей. Программа ElectroRTD.dll может быть запущена только локально, поэтому функция RTD(“ElectroRTD”;”ИмяСервера”;”OID=1234”) не будет работать!

2. Конфигурация системы Electro предусматривает возможность доступа к нескольким базам данных, расположенных на различных компъютерах. Если не указано другое, программа ElectroRTD подключается к БД, указанной в конфигурации клиента (Electro.ini) в качестве основной.

3. Появление значения #N/A (#Н/Д – «нет данных», данные недоступны) при обращении к функции RTD может быть связано с тем, что в Вашем экземпляре Excel установлен высокий уровень безопасности – см. Сервис(Tools) à Параметры(Options) à Безопасность(Security).

4. Появление значения #NAME? (#ИМЯ? – «неправильное имя») при обращении к функции RTD встречается при работе генератора отчетов RepGen.exe c русской версией Excel. Приходится вручную исправлять _xlfn.RTD на ДРВ.

Как сохранить БД конфигурации и измерений?

Конфигурация системы Electro находится в базе данных “ElectroCNF”, а результаты опроса устройств и вычисляемые параметры в базе данных “Electro”. Например, для СУБД Access – это файлы ElectroCND.mdb и Electro.mdb; для СУБД MySQL – содержимое подкаталогов ElectroCNF, Electro в каталоге Data. Конечно, Вы можете сохранить/скопировать эти данные применительно к специфике конкретной СУБД.
Более эффективный способ – использование ElectroXML-консоли. С ее помощью можно выполнить сохранение (экспорт) конфигурации системы и наборов данных в xml-формате, независимом от используемой СУБД. Обратные действия (импорт конфигурации и данных) также выполняются в ElectroXML-консоли.
Рассмотрим все действия в отдельности.
Экспорт конфигурации. Запустите ElectroXML.exe и нажмите кнопку GetConfig. Конфигурация будет записана в файлах electro/xml/ElectroCNF.xml и electro/xml/ElectroCNF.files/*.*
Заархивируйте эти файлы (с сохранением каталога ElectroCNF.files) для хранения; переноса на другой компъютер.

Импорт конфигурации. Разархивируйте файлы конфигурации (см. предыдущий параграф) во временную директорию. Запустите ElectroXML.exe и нажмите кнопку LoadXML, выберите файл ElectroCNF.xml. Для загрузки выбранной конфигурации необходимо нажать кнопку PutConf. Для ее разблокировки зарегистрируйтесь с правами администратора (меню по правой кнопке мыши).
ВНИМАНИЕ! Загрузка новой конфигурации приводит к полному удалению текущей конфигурации из БД ElectroCNF. На всякий случай текущая конфигурация автоматически сохраняется в каталоге electro/Logs/Конф YYYY_MM_DD HH_MM.
После выполнения импорта конфигурации рекомендуется полностью перезапустить систему Electro (завершить все приложения и ElectroHost).

Импорт данных. Запустите ElectroXML.exe и нажмите кнопку LoadXML, выберите файл с данными. Для загрузки данных необходимо нажать кнопку PutData. Для ее разблокировки зарегистрируйтесь с правами администратора (меню по правой кнопке мыши).
Важный момент. Xml-документ с данными в общем случае имеет вид:

Имеющейся в данном документе информации достаточно для идентификации импортируемых данных по БД ElectroCNF. Идентификация производится по серийному номеру устройства serialnumb и индексу параметра в карте памяти устройства memind.
Другими словами, процедура импорта ищет в БД ElectroCNF обьект с memind=5004 принадлежащий устройству с serialnumb=”OE22_001228”. Если импортируемый параметр отсутствует в ElectroCNF, производится его автоматическое занесение в каталог системы. После этого производится собственно импорт данных.

 

Экспорт данных. Запустите ElectroXML.exe и нажмите кнопку LoadXML, выберите файл с заданием на экспорт (с секцией select) либо укажите новый файл. При необходимости нажмите кнопку Select для редактирования файла. После нажатия на кнопку GetData открывается диалог уточнения режима экспорта:
Экспорт данных
В разделе Список параметров можно отказаться от списка параметров указанных в xml-задании и использовать задаваемую в данном разделе маску выбора. Отметка 'для указанных устройств' распостраняет применение маски только на указанные в xml-задании устройства (в противном случае экспортируются параметры всех устройств согласно маске).
При указании флагов периодичные, непериодичные, исходные, вычисляемые руководствуются информацией о том что:

  • периодичные параметры – это графики нагрузки, суточные и месячные значения и т.п. Непериодичные параметры – это, как правило, результат считывания текучей информации (накапливаюший итог, текущая нагрузка, телеметрия). Как правило, объем непериодичных параметров на порядок больше объема периодичных параметров, а вот регламентная продолжительность их хранения (несколько месяцев) существенно меньше чем у периодичных (несколько лет). Таким образом, смешивать оба типа параметров нежелательно, разве что при переносе БД целиком.
  • исходные параметры попадают в систему извне (считывание со счетчиков, межмашинный обмен). Вычисляемые параметры рассчитыватся внутри системы. Сохранение (архивирование) вычисляемых параметров имеет определенный смысл. Однако их обратный импорт в систему имеет временный характер – в любой момент они могут быть перерассчитаны системой.

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

Действия, продемонстрированные на примере работы с ElectroXML.exe, доступны также в консольном режиме (программа XmlGen.exe) и в Диспетчере Заданий ElectroHost. Например, Вы можете установить режим ежесуточного выполнения команды
XMLGEN ACTION=10 FALLPAR=29 AFTER=DAY1 FROM=DAY60 OUTPUT=c:/electro/data/DIFF%Y%m%d.xml
Особенности данной команды следующие:
- значение ключа ALLPAR содержит комбинацию (29) битов, определяющих что xml-задание отсутствует (1); экспорт выполняется по маске для периодичных (4) и непериодичных (8) исходных (16) параметров;
- комбинация ключей AFTER и FROM указывает что экспорт выполняется для данных с метками времени с 60-ти дней назад (DAY60) но только те которые попали в БД начиная со вчерашнего дня (DAY1);
- ключ OUTPUT указывает имя файла для результата экспорта. Специальные форматные поля (%Y, %m, %d) будут замещены значением текущего года, месяца, дня соответственно.
Таким образом, в результате ежедневного запуска указанной команды в каталоге c:/electro/data будут накапливаться файлы с приращениями БД.

Организация работы удаленных пользователей

Дополнительные рабочие места для доступа к системе Electro могут быть организованы через

  • развертывание на клиентской машине системы Electro в конфигурации предусматривающей доступ к удаленной БД;
  • WEB-доступ;
  • Подключение к удаленному рабочему столу сервера приложений.

Клиентская конфигурация Electro характеризуется наличием в файле Electro.ini строк вида
LOCALDB=LocalDB SQL=ACCESS FLAG=3
REMOTEDB=MainDB FLAG=11 IP=192.168.200.100
REMOTEDB=TechUchetDB IP=192.168.200.106
В данном примере указывается три БД – локальная под управлением ACCESS и две удаленных – MainDB и TechUchetDB. База данных MainDB указана в качестве основной. Это, в частности, означает, что при запуске приложений Electro по умолчанию открывается БД MainDB.
Отметим, что на прикладном уровне базы данных являются несвязанными. Это означает, например, что Генератор Отчетов не может в одном отчете получить данные из нескольких баз. Решением этой проблемы является настройка синхронизации БД – необходимые данные перемещаются из одной базы в другую.
Для чисто клиентского рабочего места (т.е. на котором не задействованы подсистемы опроса устройств) локальная БД практически не используется (поэтому в качестве ее движка и указывается ACCESS – как бесплатная и всегда присутствующая в Windows компонента). Однако, при нестационарном или медленном канале связи с удаленной БД целесообразно настроить импорт информации и организовать работу пользователя на локальной БД.

WEB-сервер Electro поддерживает основные функции системы – просмотр данных и генерацию отчетов. Этого вполне достаточно для организации клиентского рабочего места.
В составе Electro имеется два web-сервера, соответствующих различным направлениям развития данного метода доступа.
Встроенный web-сервер реализован в составе ElectroHost.exe и использует порт 5080 и/или 5081. Поддерживаются прикладные функции (просмотр данных, генерация отчетов); элементы администрирования системы; элементы web-сервисов.
Внешний web-сервер реализован на базе web-сервера IIS по технологии .NET.

Система Electro может работать в среде терминального сервера WindowsNT. Как и в случае с web-доступом, это позволяет организовать клиентское рабочее место без инсталляции ПО Electro. При этом доступна вся функциональность установленной на терминальном сервере системы Electro.