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

3.4. Комплекс модулей опроса

3.4.1. GetDev – программа-оболочка опроса устройств.

В состав комплекса модулей опроса входит программа GetDev.EXE (оболочка) и набор динамических библиотек (драйвера устройств). Для каждого типа счетчика предназначен соответсвующий DLL-модуль (драйвер):
ZMB.DLL – счетчики Lanis&Gyr
SLB.DLL - счетчики Indigo+ Shlumberger
EMF.DLL - счетчики Alpha ABB (протокол FLAG)
Состав DLL-модулей пополняется в процессе развития системы и удовлетворения требований Заказчика. Каждый DLL-модуль имеет унифицированный интерфейс, принятый для системы Электро. Унифицированность интерфейса позволяет использовать произвольный DLL-модуль как в имеющихся программах (GetDev.exe, NRS.exe) так и в вновь разрабатываемых.
Экранная форма программы GetDev имеет следущий вид:
программа-оболочка опроса устройств
Прежде чем нажать кнопку Go! (опрос устройства), необходимо, в общем случае, выполнить следующие действия:
- указать опрашиваемое устройство. Программа показывает полный список имеющихся устройств (Возможно, не все устройства из данного списка сконфигурированы для опроса программой GetDev);
- проверить директорию, в которую буден записан отчет (кнопка Select для выбора директории). Информация о выбранной директории сохраняется для последующих запусков программы;
- указать и настроить, если необходимо, режим чтения графика нагрузки. Для этого сделать отметку “Get LP for last …” и указать количество дней;
- для выполнения телеопроса указать адрес компьютера, к которому подключено устройство.
При работе программы в левом окне выводятся диагностические сообщения, в правом – отчетные данные.

Информация о работе программы GetDev для администратора системы (программиста). Программа GetDev осуществляет опрос выбранного устройства через набор функций DLL_Open(), DLL_Close(), DLL_Control() Ядра системы (динамическая библиотека Electro.DLL). Первым делом локальное Ядро (т.е. расположенное на том же компьютере, что и запущенная программа GetDev) проверяет, на каком компьютере необходимо выполнить действия. Если указан режим телеопроса, команды опроса направляются на указанный сервер через специальный механизм удаленного вызова процедур.
В конечном счете функции DLL_Open(), DLL_Close(), DLL_Control() исполняются Ядром целевого компьютера (как правило, это тот же локальный компьютер) путем загрузки соответсвующего драйвера опроса и исполнении им команд опроса.
Специфика работы программы GetDev зависит от типа активизированного драйвера устройства (DLL-модуля). Например, при опросе счетчиков фирмы L&G драйвер ZMB.DLL передает в GetDev прочитанный из устройства отчет, который затем размещается в указанном каталоге. Для последующего импорта данного отчета в БД Электро необходимо использовать программу C300 (описана в данном документе).
В других случаях (например SLB.DLL, EMF.DLL) прочитанные данные попадают непосредственно в БД Электро. Впрочем, некоторый DLL-драйвер может поддерживать опцию настройки, задающую режим генерации LG-формата по результатам опроса. При конфигурировании системы администратор должен учитывать специфику конкретного DLL-драйвера.

Возможен запуск программы GetDev в командном (автоматическом) режиме, например под управлением компоненты операционной системы «Автоматический запуск программ». Для этого используется командная строка
GetDev.exe DEV=nn [LP=kk]
Где nn = номер опрашиваемого устройства (определяется с помощью Конфигуратора ElectroCNF либо в экранном режиме GetDev (параметр DevId выбранного устройства));
kk – глубина опроса графика нагрузки.
Программа возвращает код завершения:

  • - программа завершена успешно;
  • - ошибка открытия DLL-драйвера.

-1 - прочая ошибка.

Дополнительную информацию о работе программы GetDev (сообщение об успешном завершении либо текст ошибки) можно просмотреть в журнале событий системы Электро.

3.4.2. DLL-модули опроса устройств.

В данном разделе описываются DLL-модули (драйвера) опроса устройств. Данная информация предназначена для администратора системы и необходима при настройке конфигурации.
Прежде чем перейти к описанию отдельных модулей, отметим общие для всех свойства.
1. Любой DLL-модуль имеет унифицированный интерфейс, т.е. одинаковый набор экспортируемых функций. Это позволяет программе (GetDev.exe, NRS.exe) работать с различными DLL-модулями, «ничего не зная» о конкретном устройстве.
2. Аппаратно-зависимые настройки хранятся в БД ElectroCNF (конфигурация системы) в виде строк текста типа «КЛЮЧ1=значение КЛЮЧ2=значение …» и передаются в DLL-модуль при его инициализации. Например
MX16START= @2!41@4!41,1,5 MX16STOP= @5!41
Здесь использованы ключи MX16START и MX16STOP, которым присвоены соответсвующие значения (далее значения этих ключей будут описаны как команды управления мультиплексором MX16). Упомянутые ключи должны быть известны драйверу, для которого задана данная строка инициализации. Список ключей, поддерживаемых конкретным DLL-модулем, приведен в соответствующем описании (см. разделы 3.4.2.хх). Краткая сводка приведена в таблице .
Семантическая правильность строки настройки может быть проверена только самим DLL-модулем в момент его инициализации, т.е. осуществления сеанса связи.
Разработчику нового DLL-модуля следует придерживаться принципа – прежде чем вводить для DLL-модуля новый ключ настройки, попробовать подобрать и использовать определение некоторого ключа существующего модуля.
3. В большинстве случаев, сеанс связи с устройством происходит через последовательный порт (RS-232). При инициализации DLL-модулю сообщаются параметры используемого порта (по сложившимся обстоятельствам, последовательный порт рассматривается в расширенном виде, включая подключенный к нему AT-модем).
4. Как правило, взаимодействие с DLL-модулем в системе Электро осуществляется не напрямую, а через набор функций Ядра Electro.dll. Это, во-первых, несколько упрощает взаимодействие программы с DLL-модулем (достаточно указать идентификатор устройства, функция DLL_Open() из Electro.dll самостоятельно выполнит необходимые действия согласно настройкам БД ElectroCNF); во-вторых, позволяет использовать специальный механизм удаленного вызова процедур, имеющийся в Electro.dll (например, программа GetDev.exe работает в первом комьютере и запускает DLL-модуль во втором компьютере. При этом DLL-модуль использует конфигурацию и средства связи второго компьютера. Результаты опроса устройства передаются программе GetDev.exe, которая сохраняет их в БД первого компьютера).

3.4.2.1. ZMB.dll – счетчики ZMB фирмы Landis&Gyr

Особенностью счетчиков ZMB является неструктурированность протокола опроса – после вхождения в связь и запроса данных счетчик выдает длинный текстовый отчет специального формата (описан здесь). При разработке драйвера ZMB.dll было принято решение не производить [внутри драйвера] синтаксического анализа и вычленения из отчета отдельных данных. Программа GetDev.exe, использующая ZMB.dll, сохраняет принимаемый от счетчика отчет в текстовом файле. Последующая обработка файла отчета должна быть выполнена программой C300.exe.

3.5. NRS – Ядро диспетчерской системы

NRS – настраиваемая масштабируемая система, обеспечивающая сбор, накопление и обработку данных; выдачу управляющих воздействий.
В общем случае в NRS функционируют следующие компоненты:

  • набор DLL-модулей - интерфейсов связи с обьектом (телеметрические протоколы);
  • распределенная база данных реального времени (БД РВ);
  • интерфейс агрегатирования NRS-модулей;
  • виртуальный логический контроллер (ВЛК);
  • набор интерфейсов связи с прикладным уровнем (ODBC-SQL, NamedPipes/Sockets, OPC, DDE, DCOM-сервер);
  • подсистема выдачи аварийных сообщений (PAGER, FAX, VOICE, MAIL)

Настройка NRS описывается в отдельном документе.