Канал класса СОБЫТИЕ

  Стандартный алгоритм канала СОБЫТИЕ

  Расширенный алгоритм канала СОБЫТИЕ

  Особенности свойства СВЯЗЬ канала СОБЫТИЕ

  Экспорт данных в файл

Канал класса Событие предназначен для мониторинга объекта с целью фиксирования возникновения/исчезновения на этом объекте некоторого события или ситуации (например, аварии). Канал хранит историю события (в стеке, последнее по времени сообщение имеет номер 0) и допускает квитирование последнего по времени события.

В канале предусмотрены два алгоритма – стандартный (фиксация двух типов событий) и расширенный (фиксация 127 типов событий). Для использования расширенного алгоритма нужно в редакторе канала задать значение На старте, большее или равное 16, и установить флаг Отработать (см. Общие атрибуты каналов ).

Для работы с каналами этого класса в РПД предусмотрен специальный графический элемент – таблица каналов класса СОБЫТИЕ (см. ГЭ ‘События’ ).

В профайлере канал Событие индицируется как C12_Event (атрибут 126, TsT).

События делятся на короткие (Tисчезновения - Tвозникновения < Ack_after_off) и длинные (Tисчезновения - Tвозникновения >= Ack_after_off) – см. описание системной переменной @RTM_Parameter в разделе Группа СИСТЕМНЫЕ .

С помощью этой же переменной задается таймаут на квитирование (Ack_after_on).

Кроме атрибутов, которые имеют каналы всех классов (см. Общие атрибуты каналов ), каналы класса Событие имеют специфические атрибуты.

К специфическим атрибутам, которые могут быть заданы в редакторе канала, относятся следующие:

   раздел "Параметры":

   Размер стека аварий (17, Stack_Size) – глубина стека для хранения истории события (1–255, 0 – стек не используется);

   флаг Квитирование в сеть (84, ACKtoNET) – этот флаг используется в случае необходимости квитирования события на удаленных сетевых узлах. Пусть, например, мониторинг объекта выполняет канал ev_1 узла node1, а в узлах node2...nodeN существуют соответственно каналы ev_2...ev_N, для каждого из которых задана привязка к каналу ev_1 и установлен флаг Квитирование в сеть (ACKtoNET=1). При такой конфигурации:

– в каналы ev_2...ev_N передается информация о статусе события и его квитировании на узле node1 (вне зависимости от флага Квитирование в сеть канала ev_1);

– квитирование события может быть выполнено на любом из узлов ev_2...ev_N – уведомление об этом будет получено на узле node1 и, соответственно, на всех остальных узлах группы ev_2...ev_N.

В профайлере доступны также следующие специфические атрибуты канала:

   Статус события (0, R) – статус события. Этот параметр автоматически принимает следующие значения:

   0 (в мониторе по умолчанию – ... ) – событие не возникало;

   1 (E_On) – событие первого типа возникло и не квитировано;

   2 (E_Off+ACK) – событие исчезло после своевременного квитирования;

   3 (E_On+ACK) – событие возникло и квитировано своевременно;

   4 (E_Off+unACK) – событие не было квитировано и исчезло. Для коротких событий в этом статусе возможно квитирование (и переход, в зависимости от таймаута Ack_after_on, в статус 2 или 6). Длинные события в статусе 4 не могут быть квитированы;

   5 (E_On+wACK) – событие возникло и квитировано несвоевременно;

   6 (E_Off+wACK) – событие исчезло после несвоевременного квитирования;

   7 (E_On_On) – событие любого типа, отличного от первого, возникло и не квитировано.

   Наличие/отсутствие события (7, P) – этот атрибут индицирует наличие/отсутствие события (соответственно 1 и 0);

   Дата и время прихода (10, EventIn) – дата и время возникновения события (с точностью до миллисекунд);

   Дата и время ухода (11, EventOut) – дата и время исчезновения события (с точностью до миллисекунд);

   Дата и время квитирования (12, EventAck) – дата и время квитирования события (с точностью до секунд). Для квитирования надо послать в данный атрибут ненулевое значение;

   Число событий (13, ECount) – счетчик событий, увеличивается на 1 при каждом возникновении события;

   Миллисекунды прихода (14, MsIn) – миллисекунды возникновения события;

   Миллисекунды ухода (15, MsOut) – миллисекунды исчезновения события;

   Число квитирований (16, Ack_Count) – счетчик квитирований;

   Число записей в стеке (18, InStack) – число записей, помещенных в стек. Сообщение заносится в стек при исчезновении события и содержит следующую информацию (справа в скобках указан атрибут, в который выводится соответствующая часть сообщения при его выборе из стека с помощью атрибута Позиция (19, Position)):

   дата и время прихода с точностью до миллисекунд (128, Tin);

   дата и время ухода с точностью до миллисекунд (129, Tout);

   дата и время квитирования с точностью до секунд (если квитирование было выполнено) (130, Tack);

   миллисекунды прихода (131, MSin);

   миллисекунды ухода (132, MSout);

   статус при уходе (133, STS);

   Позиция (19, Position) – этот атрибут задает номер сообщения в стеке (позиции стека нумеруются с 0) – указанное сообщение отображается атрибутами 128-133. Монитор отслеживает параметр InStack и игнорирует попытки присвоить несуществующий номер атрибуту Position.

Стандартный алгоритм канала СОБЫТИЕ

Возникновение/исчезновение события канал определяет следующим образом:

   событие первого типа возникло, если входное значение канала (атрибут In) изменилось и приняло значение 1;

   событие второго типа возникло, если входное значение канала (атрибут In) изменилось и приняло любое целое значение n (n >= 2);

   событие исчезло, если входное значение канала (атрибут In) приняло нулевое значение после ненулевого.

Расширенный алгоритм канала СОБЫТИЕ

Возникновение/исчезновение события канал определяет следующим образом:

   событие типа n возникло, если входное значение канала (атрибут In) изменилось и приняло целое значение n (n=1...127);

   событие исчезло, если входное значение канала (атрибут In) приняло нулевое значение после ненулевого.

При расширенном алгоритме в ГЭ События и отчет тревог выводятся сообщения с указанием типа события (к значению статуса добавляется значение In, заключенное в скобки). Для корректной работы ГЭ каналу периодически присваивается значение 7 (на 1 такт).

При расширенном алгоритме квитирование в сеть отключено.

Особенности свойства СВЯЗЬ канала СОБЫТИЕ

Канал класса СОБЫТИЕ может быть привязан к любому атрибуту канала произвольного класса с одним ограничением – привязка к атрибуту R другого канала возможна для канала СОБЫТИЕ, в котором не используется расширенный алгоритм обработки.

Если к каналу класса СОБЫТИЕ (ev) привязан произвольный атрибут aaa некоторого канала ch не класса СОБЫТИЕ, то ev.In = ch.aaa.

Если к каналу класса СОБЫТИЕ (ev) привязан некоторый канал ch, связанный со словарем, то к сообщениям, генерируемым в канале ev, через двоеточие добавляются сообщения канала ch.

Канал СОБЫТИЕ (пусть его имя – GNRL) с кодировкой, которая заканчивается знаком звездочки, является обобщающим (в таком канале устанавливается атрибут 40).

Если к GNRL привязан некоторый атрибут aaa канала класса Class, то при отработке GNRL МРВ анализирует каналы класса Class узла, первые символы кодировки которых совпадают с кодировкой обобщающего канала (до знака звездочки). При обнаружении хотя бы одного канала (пусть его имя – ch), удовлетворяющего критерию (см. ниже), входу обобщающего канала присваивается 1 (в противном случае входу обобщающего канала присваивается 0):

   Class – СОБЫТИЕ:

   aaa – любой атрибут, кроме указанных ниже: если значение aaa равно 1 или 7;

   aaaДата и время прихода (10, EventIn): если ch.R = 1 или 7 и ch.EventIn > GNRL.EventAck;

   aaaДата и время квитирования (12, EventAck): если ch.EventAck > GNRL.EventAck;

   aaaЧисло событий (13, ECount): если ch.R = 1, 3, 5 или 7 и ch.EventIn > GNRL.EventAck;

   aaaЧисло квитирований (16, Ack_Count): если ch.ECount > ch.Ack_Count;

   aaa – (45, T) Время изменения: если ch.T > GNRL.EventAck;

   Class – числовой (кроме TIME):

   aaa – (45, T) Время изменения: если ch.T > GNRL.EventAck;

   aaa – (59, DR): если не квитировано последнее сообщение ОТ по каналу ch;

   aaa – (7, P): если ch.P<>0. Особый случай: если ch недостоверен, то GNRL.In = 7;

   aaa – (254, RST): если ch.RST = 1 или 7;

   aaa – любой другой атрибут: если ch.aaa <>0;

   Class – любой другой класс:

   aaa – любой атрибут: если ch.aaa <>0.

При отработке GNRL, в котором привязка не задана, МРВ анализирует каналы всех классов, первые символы кодировки которых совпадают с кодировкой обобщающего канала (до знака звездочки). При обнаружении канала (ch) статус GNRL устанавливается в соответствии с ch.R, если класс ch – СОБЫТИЕ, и в соответствии с ch.RST, если класс ch – любой другой. После присвоения GNRL.In ненулевого значения поиск и анализ других каналов в текущем цикле прекращается.

Экспорт данных в файл

Запись значения в атрибут (254, RST) обычного канала СОБЫТИЕ приводит к генерации файла с именем по умолчанию event_export (1 – TXT, 3 – HTML, 4 – XML, кодировка – utf-8). Имя файла может быть изменено с помощью ключа EXP_NAME в файле *.cnf (см. Задание параметров работы мониторов ). В файл экспортируется стек канала (статус, если стек не задан), а также информация о текущем событии, если оно актуально (статус 1, 3 , 5 или 7).

Запись значения в байт 0 атрибута (254, RST) GNRL приводит к генерации файла с именем канала (1 – TXT, 3 – HTML, 4 – XML, кодировка – utf-8). Файл содержит информацию обо всех случаях возникновения событий (по вышеуказанным критериям) в обнаруженных каналах. Если aaa – (254, RST) числового канала или привязка не задана, значение байта 1 (0xFF00) атрибута (254, RST) GNRL задает дополнительное условие отбора данных для экспорта:

   0 – нет дополнительного условия;

   1 – каналы с RST = 1, 3, 5, 7;

   4 – каналы с RST = 4;

   7 – включенные каналы с аппаратной недостоверностью;

   17, 20 и 23 (1, 4 и 7, увеличенные на 16) – соответственно 1, 4 и 7 при условии, что время изменения канала больше или равно времени квитирования GNRL;

   45 – время изменения канала больше времени квитирования GNRL;

   46 – время изменения канала больше времени квитирования GNRL и атрибут 46 канала не равен 0.

Файлы создаются в директории, заданной с помощью ключа AVB_PATH в файле *.cnf (по умолчанию – в папке узла).