Стандартный алгоритм канала СОБЫТИЕ
Расширенный алгоритм канала СОБЫТИЕ
Особенности свойства СВЯЗЬ канала СОБЫТИЕ
Канал класса Событие предназначен для мониторинга объекта с целью фиксирования возникновения/исчезновения на этом объекте некоторого события или ситуации (например, аварии). Канал хранит историю события (в стеке, последнее по времени сообщение имеет номер 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 (по умолчанию – в папке узла).