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

ElectroHost – сервер системы Electro

1 Общая информация

Программа ElectroHost.exe является важнейшей частью системы Electro и отвечает за:

  • поддержку клиентов БД и OPC;
  • оповещение о событиях;
  • выполнение назначенных заданий;
  • архивирование данных;
  • Web- контроль;
  • Telnet- контроль;
  • Виртуальный модем.

Как правило, запуск ElectroHost выполняется автоматически, когда какое-либо приложение использует библиотеку Electro.dll. Программа может быть также запущена явно, установлена в Автозапуск и т.п.

Поддержка клиентов

Система Electro предусматривает поддержку распределенной клиент-серверной архитектуры. Для понимания используемого механизма рассмотрим пример с приложением DBView.exe (просмотр БД Electro). Для доступа к данным приложение использует реализованные внутри Electro.dll функции
ODBC_Open(“Electro”) - подключение к БД Electro
и далее, например
ODBC_Execute(“SELECT * FROM trend WHERE …”)
Эти и подобные им функции (см. документ ElectroCNF.doc) обеспечивают унифицированный интерфейс взаимодействия приложения с БД. Изначально эти функции были реализованы на базе протокола ODBC, о чем напоминает префикс ODBC_ в названиях функций. Впоследствии для наиболее востребованых СУБД (в первую очередь для MySQL) ODBC_*-интерфейс был «заточен» под специфические механизмы взаимодействия. При этом приложению ничего не известно о деталях реализации ODBC_*-интерфейса и даже о типе используемой СУБД (в настоящее время поддерживаются MySQL, MSSQL, MS Access, Informix, Oracle, Interbase, Sybase, Cache).
Другими словами, приложение взаимодействует с абстрактной СУБД через набор функций ODBC_*. Следующий, сетевой, уровень абстрагирования обеспечивается за счет расширенного толкования агрумента функции ODBC_Open(). Так, вызов
ODBC_Open(“%hostname%Electro”)
Указывает что необходимо выполнить подключение к БД Electro расположенной на компьютере с сетевым именем hostname. В этом случае локальная Electro.dll устанавливает сетевое соединение с указанным сервером ElectroHost, который и выполняет функцию ODBC_Open(“Electro”) удаленной Electro.dll для удаленной СУБД. Все последующие вызовы ODBC_*-интерфейса передаются на удаленный ElectroHost, там исполняются; ответ возвращается на локальный компьютер.
В заключение вышесказанного отметим:

  • Приложение абстрагируется от типа и сетевого размещения СУБД. Проще говоря, любое приложение системы Electro может, например, работать с локальной БД MySQL и тут же (либо одновременно) подключиться к удаленной БД Oracle.
  • Между локальным и удаленным компьютером задействуется исключительно протокол системы Electro, базирующийся либо на чистом TCPIP либо на своем собственном протоколе управления звеном передачи данных. Таким образом, подключение к удаленной БД Oracle выполняется исключительно сетевым средствами Electro.

Что касается интерфейса OPC.
В составе программного комплекса имеется модуль ElectroOPC.exe, реализующий функции OPC-сервера согласно спецификации OPC DA v1 & v2 custom interface. Особенностью работы модуля есть то, что он запускается НА КОМПЬЮТЕРЕ КЛИЕНТА и связывается с целевым ElectroHost.exe по «чистому» протоколу TCP/IP, т.е. настройка DCOM не требуется.

Оповещение о событиях

Система Electro имеет гибкий механизм оповещения о возникающих событиях. Любое событие (например «Параметр ХХХ превысил предельное значение» либо «Задание NN не выполнено, код ошибки rrr») сопоставляется с реакцией, список которых доступен для редактирования в Конфигураторе системы:
Оповещение о событиях

В реакции указывается класс события (рабочее (нормальное) событие, предупреждение, тревога, отладочное событие) и указываются основные действия:
Распечатать - распечатать текст события на системной консоли;
В сист.журнал - поместить текст в файл системного журнала Electro.log;
Квитировать - Предпринять действия, заставляющие персонал подтвердить факт прочтения текста события;
На экран - поместить текст события в окне «Electro журнал».

Дополнительно может быть указана Группа оповещения, описывающая способ доставки текста события внешними средствами (факс, email, SMS и прочее).
Группы оповещения определяются в файле
Electro/Settings/ElectroHost.ini:

;**********************************************************************
;* ElectroHost.ini - файл настроек Electro-сервера (ElectroHost) *
;**********************************************************************
;
; ***************************************
; * ПРИНЦИПЫ РАБОТЫ СИСТЕМЫ ОПОВЕЩЕНИЯ *
; ***************************************
; Для возникающего в системе Электро события ([не]удачно выполненое задание,
; выход аналоговой величины за установленные пределы, аварийный сигнал
; от устройства и т.п.) может быть запрограммирована реакция на оповещение.
; Например, в свойствах некоторой аналоговой величины м.б. указано, что
; в случае выхода за предел необходимо сгенерировать событие
; "Показание ХХХ превысило лимит" согласно RMATR=2
; Строка RMATR=2 (либо соотв. элемент в таблице TB_Reactions) определяет что это warning,
; распечатать на принтере и записать в системный журнал. Кроме того поле GROUP=5
; указывает, что необходимо активизировать группу оповещения №5.
; В таблице TB_Alarms (строки GROUP= соответственно) в общем случае может быть
; несколько элементов с номером 5 что создает необходимые степени свободы
; в программировании реакции - в зависимости от даты и времени суток, одновременное
; оповещение по нескольким каналам и т.п.
; Например, оказалось что имеется два активных елемента GROUP=5. Первый элемент
; определяет последовательность оповещения "SEQ=2 SEQ=10 SEQ=1", второй -
; "SEQ=11 SEQ=3". Обе последовательности оповещения будут выполняться одновременно
; и независимо друг от друга.
; Ключ SEQ=2 ссылается на соответствующую строку (элемент таблицы TB_Posts). Эта
; строка, например, указывает что необходимо передать текст события в виде SMS на
; указанный номер. Если попытка передачи неуспешна, выполняется SEQ=10 и т.д.
;
;----------------------------------------------------------------------
;*** GROUP - группы оповещения
; GROUP=g VON=дд/мм/гггг BIS=дд/мм/гггг WEEKDAYS=bbbbbbb SEQ=s1 SEQ=s2 ...
; bbbbbbb - строка из '0' и '1', соответствует дням недели, начиная с Воскресенья;
; s1, s2 - номера каналов оповещения.
;
; В системе может присутствовать несколько одинаковых GROUP=g
; Активными являются те из них, для которых текущая дата попадает
; в интервал [VON;BIS] и день недели разрешен в WEEKDAYS.
; Для активных элементов последовательно выполняеются оповещения s1, s2 и т.д.
; Как только некоторое оповещение выполнится успешно, выполнение данной последовательности
; s1,s2.. прекращается.
; Активные группы оповещения выполняются одновременно и независимо друг от друга.
;
GROUP=0 VON=01/04/2000 BIS=30/12/2001 SEQ=4 SEQ=2
GROUP=1 WEEKDAYS=0111110 VON=01/05/2000 BIS=30/12/2001 SEQ=2
GROUP=2 WEEKDAYS=0111110 VON=01/05/2000 BIS=30/12/2001 SEQ=42
GROUP=3 VON=01/05/2000 BIS=30/12/2001 SEQ=2

GROUP=99 VON=01/04/2000 BIS=31/12/2000 SEQ=5
GROUP=99 VON=01/04/2000 BIS=31/12/2004 SEQ=1
;
;----------------------------------------------------------------------
;*** SEQ - каналы оповещения
; SEQ=s MEDIA=тип MODEM=m WORKZONE=чч:мм-чч:мм LINK=стр RETRY=r AFTER=a
; s - уникальный номер канала оповещения;
; м - номер модема (идентификатор в таблице TB_Modems)
; (используется в FAX PAGER VOICE)
; тип - FAX PAGER NETSEND SPEAK VOICE MAIL
; стр - строка настройки
; на оповещение дается RETRY попыток, повторяемых через AFTER минут.
; Канал оповещения активизируется если текущее время попадает в интервал WORKZONE. В противном
; случае оповещение приостанавливается до момента вхождения в WORKZONE.
;
SEQ=1 MEDIA=FAX MODEM=12 WORKZONE=07:00-22:00 LINK=80442491907 RETRY=3 AFTER=5
SEQ=2 MEDIA=PAGER MODEM=100 WORKZONE=07:00-22:00 LINK=0,01722278010:UCP:01739748614 RETRY=3 AFTER=5
SEQ=3 MEDIA=PAGER MODEM=11 WORKZONE=07:00-22:00 LINK=+38050000501:GSM:+380505141136 RETRY=3 AFTER=5
SEQ=4 MEDIA=NETSEND WORKZONE=07:00-22:00 LINK=GIVC5401 RETRY=3 AFTER=5
;SEQ=5 MEDIA=SPEAK WORKZONE=07:00-22:00 RETRY=3 AFTER=5
;SEQ=5 MEDIA=SPEAK WORKZONE=07:00-22:00 LINK="Adult Female #1 Russian (L&H)" RETRY=3 AFTER=5
SEQ=5 MEDIA=SPEAK WORKZONE=07:00-22:00 LINK="Adult Male #1 Russian (L&H)" RETRY=3 AFTER=5
SEQ=9 MEDIA=MAIL LINK="SMTP=10.17.40.65 TO=otd54@givc.energy.gov.ua FROM=ElectroHost@electro.com"
;

ElectroHost позволяет использовать следующие способы оповещения (ключ MEDIA в строке SEQ=):
FAX - посылка текста сообщения в виде факса через факс-модем;
PAGER - посылка текста сообщения в виде SMS на пэйджер либо мобильный телефон абонента (с использованием GSM-модема);
NETSEND - посылка текста сообщения через NET SEND (Microsoft Windows);
SPEAK - проговаривание текста сообщения через звуковую карту компьютера (используется технология text-to-speech (TTS));
MAIL - посылка текста сообщения в виде электронного письма;
VOICE - звонок (с помощью voice-модема) на телефон абонента и проговаривание текста сообщения.

Настройка канала оповещения FAX

Канал FAX использует модем (см. Конфигуратор системы) AT-modem. Важно правильно установить режим управления потоком и скорость, например FLOW=XONXOFF SPEED=14400
В ключе LINK= указывается телефонный номер факса.

Настройка канала оповещения PAGER

Канал PAGER использует (см. Конфигуратор системы) AT-modem (протоколы UCP, TAP) либо GSM-modem (протокол GSM).
Используется синтаксис
LINK=”PROT=XXX BOX=provider TO=abonent”
Где
provider - номер телефона оператора сети;
XXX - тип протокола (UCP, TAP, GSM);
abonent - номер телефона абонента.

Настройки для посылки SMS-сообщения c GSM-модема следующие:
С номера UMC
LINK=”PROT=GSM BOX=+38050000501 TO=+380-абонент”
С номера Киевстар (контрактовые абоненты)
LINK=”PROT=GSM BOX=+380672020000 TO=+380-абонент”
С номера Киевстар (для абонентов ACE&BASE)
LINK=”PROT=GSM BOX=+380672021111 TO=+380-абонент”
С номера WellCOM
LINK=”PROT=GSM BOX=+380683211111 TO=+380-абонент”
С номера GoldenTelecom
LINK=”PROT=GSM BOX=+380444939908 TO=+380-абонент”

Различные GSM-модемы имеют особенности в части организации посылки SMS-сообщений. Проверить работоспособность модема можно, например, с помощью стандартной программы HyperTerminal. Полезный набор AT-команд (обратитесь также к Руководству по AT-командам для конкретного модема):

AT+CMGF Формат SMS-сообщения

AT+CMGF=? запрос списка поддерживаемых форматов.
+CMGF: (0,1) ответ модема (1-текстовый режим; 0–режим PDU)

 

AT+CSCA Адрес сервисного центра

AT+CSCA? Запрос
+CSCA: "+38050000501",145 в модеме записан адрес сервисного центра UMC +38050000501
код 145 – это т.н. Service centre address format

AT+CSCA="+38050000501",145 Записываем в модем адрес сервисного центра. Адрес
сохраняется в энергонезависимой памяти.

 

Система Electro использует режим PDU (AT+CMGF=0). Адрес сервисного центра д.б. заранее установлен.

 

Настройка канала оповещения NETSEND

Для настройки канала оповещения NETSEND необходимо указать
LINK=имякомпьютера
На компьютерах д.б. запущена служба доставки сообщений (Microsoft Windows).

Настройка канала оповещения SPEAK

Для настройки канала оповещения SPEAK необходимо указать
LINK=”имя TTS-голоса”
На компьютере должен быть установлен Microsoft Text-To-Speech Engine и соответствующий набор голосов.

Настройка канала оповещения MAIL

Для настройки канала оповещения MAIL необходимо указать
LINK=”SMTP=server TO=email FROM=email”
Например
LINK=”SMTP=10.17.40.65 TO=xxx@mail.ru FROM=electrohost@mail.ru”

Каналом оповещения MAIL можно пользоваться для посылки SMS. Для этого в ключе TO= необходимо указывать (xxxxxxx – номер абонента):


Оператор

Email

KyivStar (ASE&BASE)

38067xxxxxxx@2sms.kyivstar.net

KyivStar (Contract)

38067xxxxxxx@sms.kyivstar.net

UMC

38050xxxxxxx@sms.umc.com.ua

WellCom

38068xxxxxxx@sms.welcome2well.com

Golden Telecom

38044xxxxxxx@sms.gt.kiev.ua

Baltcom GSM

371xxxxxxx@sms.baltcom.lv

LMT

371xxxxxxx@smsmail.lmt.lv

 

 

 

 

Настройка канала оповещения VOICE