Обработка мультиэкземплярных алармов

Обработка мультиэкземплярных алармов позволяет формировать набор алармов на основании алармов, поступающих от периферии. При этом используется специальный драйвер «КАСКАД Цифра» или менеджер (см. раздел «Мультиэкземплярные алармы«). Свойства аларма (например, аларм-класс или текст аларма) могут быть изменены динамически при формировании аларма.

Необходимым условием для использования обработки мультиэкземплярных алармов является наличие в структуре соответствующего элемента точки данных конфигурационного элемента обработки алармов (_alert_hdl). Мультиэкземплярный аларм может быть сформирован при помощи специального драйвера, менеджера, сценария CTRL или панели, путем установки специальных значений для соответствующих атрибутов обработки алармов.

Использование функции alertSet() применительно к атрибуту _alert_hdl.._event позволяет задавать состояние мультиэкземплярного аларма (УСТН., КВИТИРОВАН, СНЯТ и т.д. — см. раздел «Обработка алармов _alert_hdl.<i>._event«). Мультиэкземплярные алармы также могут быть квитированы в панели алармов или, при использовании специального аларм-класса, периферией (см. раздел «driverAckClassPrefix«). Атрибут _alert_hdl.._multi_instance (тип bool) определяет, используется ли конфигурационный элемент обработки алармов для обработки мультиэкземплярных алармов.

ПРИМЕЧАНИЕ

  • При использовании специального драйвера следует обратить внимание на то, что адрес периферии назначается только одному экземпляру драйвера, при этом алармы могут быть получены только от данного экземпляра драйвера.
  • В принципе, мультиэкземплярные алармы (в том числе и атрибут _alert_hdl.._multi_instance) должны использоваться только для алармов, которые были созданы во внешней системе, и для которых может существовать несколько экземпляров.
  • Настройки не должны устанавливаться при помощи функций dpSetTimed()/dpSetTimedWait(). Исключением является присвоение при помощи dpSetTimed()/dpSetTimedWait() значения точки отсчета времени (01.01.1970) времени источника с целью снижения объема истории конфигураций.
  • При использовании мультиэкземплярных алармов следует иметь в виду, что для квитирования с применением драйвера используется аларм-класс конфигурационного элемента, а не аларм-класс аларма.

Мультиэкземплярные алармы могут использоваться для всех числовых типов данных элементов точек данных (uint, int, float и bool).

Адресация экземпляра аларма

В подавляющем большинстве случаев со стороны периферии каждому экземпляру аларма присваивается номер сообщения. Для того, чтобы драйвер/менеджер имел возможность обращаться к конкретному экземпляру аларма периферии, требуется несколько атрибутов: номер менеджера, номер устройства, источник аларма, который обрабатывает аларм, а также номер сообщения, присвоенный экземпляру аларма. Драйвер/менеджер может использовать данные атрибуты (все или только выбранные) для изменения состояния аларма устройства (например, для квитирования). Данные дополнительные атрибуты хранятся в базе данных. Актуализация и использование этих атрибутов осуществляется драйвером/менеджером. Все эти атрибуты хранятся в атрибуте элемента точки данных _alert_hdl.._alert_id (тип string). Данный атрибут может использоваться для фильтрации алармов (например, для поиска всех алармов интересующего источника алармов) или в запросах dpQuery, alertGet или alertConnect. Однозначная идентификация элементов точек данных с мультиэкземплярными алармами (как и с прочими алармами) производится на основании времени аларма (atime) и счетчика (Count).

Счетчик (Count) циклически назначается мультиэкземплярным алармам и, во избежание перегрузки истории конфигураций, хранится отдельно для каждого аларма-диапазона. Подобный подход позволяет минимизировать риск перезаписи текущего аларма другим алармом с такими же  значением счетчика и таким же временем аларма. Соответственно, при каждом обращении к аларму при помощи сценария, например, для изменения его атрибутов, необходимо повторное определение счетчика (Count).

Дополнительные значения

Совместно с экземпляром аларма также могут храниться дополнительные свойства, так называемые дополнительные значения. Более подробная информация представлена в разделе «Дополнительные значения«.

Независимое квитирование алармов

Мультиэкземплярные алармы могут квитироваться в любом порядке. Это означает, что новый аларм может квитироваться до квитирования предыдущего аларма или аларм УСТН. может квитироваться до квитирования аларма СНЯТ.

Предпосылки и ограничения

  • Драйвер/менеджер должен поддерживать мультиэкземплярные алармы.
  • Обработка мультиэкземплярных алармов не может использоваться для груповых алармов.
  • Обработка мультиэкземплярных алармов не может использоваться для импульсных алармов.
  • Сглаживание, преобразование и низкоуровневое сравнение старых/новых значений недоступны для элементов точек данных, имеющих адреса периферии, предназначенные для работы с мультиэкземплярными алармами.
  • Для случаев (пере-)запуска драйвера, при помощи специального драйвера должна быть реализована синхронизация тех алармов, которые «известны» менеджеру событий, с фактически существующими алармами в периферийном устройстве: алармы, «известные» менеджеру событий, но не имеющие соответствующих алармов в периферийном устройстве, должны быть СНЯТы и автоматически квитированы; новые алармы должны быть созданы, а для алармов, ожидающих обработки, должно быть выполнено обновление текущего состояния. За выполнение подобной синхронизации отвечает специальный драйвер.
  • Использование обработки мультиэкземплярных алармов невозможно в распределенной системе, базирующейся на «КАСКАД Цифра» версии < 3.10.

Стандартная панель для обработки алармов для числовых значений

Панель для настройки мультиэкземплярных алармов для числовых значений (int, uint, float) содержит две вкладки — «Границы» и «Параметры«.

Рисунок. Панель обработки алармов (int, uint and float) — вкладка «Границы»

Вкладка «Границы»

При обработке мультиэкземплярных алармов используются минимум два диапазона — «диапазон допустимых значений» и «диапазон отклонения от нормы«. Новый экземпляр мультиэкземплярного аларма создается только в том случае, если задан соответствующий аларм-диапазон (но не в зависимости от текущего или исходного значения, как это происходит при обработке алармов для непрерывных / дискретных значений). Алармы устанавливаются, квитируются и снимаются в соответствии с командами, поступающими от периферии / менеджера. Это означает, что значение (_original.._value) не имеет прямого влияния на аларм (изменение значения не приводит к установке или снятию аларма). Значение, которое было записано в атрибут для первого дополнительного значения мультиэкземплярного аларма (_alert_hdl.._add_value_1) (см. запись конфигурационного файла attributesFromAddValues), может быть отображено в панели алармов.

ВНИМАНИЕ

Состояние мультиэкземплярного аларма не зависит от исходного или текущего значения, при этом диапазон допустимых значений для аларма не может быть выбран произвольно. Диапазон допустимых значений всегда имеет индекс 1.

  • Аларм-класс: выбор одного из стандартных аларм-классов (см. также раздел _alert_class (Аларм-класс)) для диапазона отклонения от нормы. Диапазон допустимых значений не имеет аларм-класса.

    Выбранный аларм-класс может быть перезаписан драйвером/менеджером путем задания атрибуту _alert_hdl.._class DpIdentifier для нового аларм-класса непосредственно после атрибута _alert_hdl.._event.
  • Пример
  • Пример вызова интерфейса прикладного программирования C++:

AlertList list;

list.insertAttribute(AlertAttr::EVENT_ATTR, IntegerVar(ALERTEVENT_CAME));

// для перезаписи аларм-класса следует добавить DpIdentifier непосредственно после _event

list.insertAttribute(AlertAttr::ALERTCLASS_ATTR, TextVar(alarmClassName));

// прочие атрибуты, такие как addValues; оповещение

Manager::alertSet(list);

  • Текст УСТН.: Данные поля предназначены для ввода текстов, отображаемых при входе значения в пределы соответствующего аларм-диапазона (аларм УСТН.). Тексты отображаются в панели алармов, например: «Измерительный зонд 2: критичное содержание CO». Текст УСТН. для диапазона допустимых значений не будет отображаться в панели алармов, но может быть опрошен (например, для использования в качестве контекста enum). По умолчанию для аларма УСТН. для диапазона отклонения от нормы используется текст «Отклон.устн.», для допустимого диапазона — «Норма устн.». Данные стандартные тексты задаются в каталоге сообщений para.msg, записи с ключами «multiinstance_ok_came_alarmtext» и «multiinstance_not_ok_came_alarmtext», и могут быть изменены или перезаписаны при формировании аларма. В том случае, если были заданы дополнительные значения, то содержание второго дополнительного значения (_alert_hdl.._add_value_2) может быть отображено в панели аларма для диапазона отклонения от нормы (см. attributesFromAddValues).
     
  • Текст СНЯТ: Данные поля предназначены для ввода текстов, отображаемых при выходе значения из пределов соответствующего аларм-диапазона (аларм СНЯТия). Тексты отображаются в панели алармов, например: «Измерительный зонд 2: содержание CO в норме». Текст СНЯТия для диапазона допустимых значений не будет отображаться в панели алармов, но может быть опрошен (например, для использования в качестве контекста enum). По умолчанию для аларма СНЯТия для диапазона отклонения от нормы используется текст «Отклон.снят», для допустимого диапазона — «Норма снят». Данные стандартные тексты задаются в каталоге сообщений para.msg, записи с ключами «multiinstance_ok_went_alarmtext» и «multiinstance_not_ok_went_alarmtext», и могут быть изменены или перезаписаны при формировании аларма. В том случае, если были заданы дополнительные значения, то содержание второго дополнительного значения (_alert_hdl.._add_value_2) может быть отображено в панели аларма для диапазона отклонения от нормы (см. attributesFromAddValues).

Вкладка «Параметры»

Вкладка «Параметры» аналогична вкладке Параметры панели обработки групповых алармов (за исключением настройки «Игнорировать алармы с приоритетом ниже«).

Обработка алармов для логических значений

Обработка алармов логических значений характеризуется тем, что появление аларма зависит от двух возможных состояний (ИСТИНА или ЛОЖЬ).

Рисунок. Обработка алармов элемента точки данных логического типа

Вкладка «Диапазоны»

  • Допустимый диапазон: Допустимый диапазон (Выкл. (0)) фиксирован для мультиэкземплярных алармов и не может быть изменен.
  • Цветовая индикация: красная зона представляет собой зону отклонения от нормы. Зеленая зона представляет собой диапазон допустимых значений, т.е. система работает надлежащим образом, формирование аларма не требуется.
  • Текст УСТН.: Данные поля предназначены для ввода текстов, отображаемых при входе значения в пределы соответствующего аларм-диапазона (1 (ИСТИНА) или 0 (ЛОЖЬ)). Текст УСТН. для диапазона отклонения от нормы будет отображаться в панели аларма при входе значения в данный диапазон. Текст УСТН. для диапазона допустимых значений не будет отображаться в панели алармов, но может быть опрошен (например, для использования в качестве контекста enum). По умолчанию для аларма УСТН. для диапазона отклонения от нормы используется текст «Отклон.устн.», для допустимого диапазона — «Норма устн.». Данные стандартные тексты задаются в каталоге сообщений para.msg, записи с ключами «multiinstance_ok_came_alarmtext» и «multiinstance_not_ok_came_alarmtext», и могут быть изменены или перезаписаны при формировании аларма. В том случае, если были заданы дополнительные значения, то содержание второго дополнительного значения (_alert_hdl.._add_value_2) может быть отображено в панели аларма для диапазона отклонения от нормы (см. attributesFromAddValues).
  • Аларм-класс: для диапазона отклонения от нормы необходимо либо выбрать один из предустановленных аларм-классов (см. раздел «_alert_class (Аларм-класс)«), либо выбрать отдельный пользовательский аларм-класс (используя для этого расположенный справа селектор точек данных).

Вкладка «Параметры»

Вкладка «Параметры» аналогична вкладке Параметры панели обработки групповых алармов (за исключением настройки «Игнорировать алармы с приоритетом ниже«).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *