Трансляция состояний устройств в состояние зоны (Smart Zone)

Материал из Integra-S Wiki
Версия от 14:23, 2 февраля 2022; Ipe (обсуждение | вклад) (Дополнительно)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Назначение

  1. Трансляция состояний устройств в состояние зоны.
  2. Отсечение ложных срабатываний путем перевода зоны в тревогу по минимум двум тревожным устройствам.
  3. Трансляция команд от Зоны в устройства(При отправки команды "Снять с охраны/Взять под охрану" у зоны, всем устройствам подключенным к этой зоне будет так же транслироваться данная команда.)

Создание схемы

В редакторе СКАДА необходимо добавить элементы, для этого необходимо:

1. Перейти на вкладку "Типы элементов" и выбрать в списке элемент Компьютер (Computer).
Computer.jpg
2. Дважды нажать на элемент Компьютер, после чего появится окно для добавления элемента.
Add element.jpg
3. Нажать кнопку "Добавить". Элемент появится на рабочей области.
4. Аналогично пункту 2 добавить элементы: Менеджер устройств (AcuarioManager), EGS Модуль (EGSModule).
5. Smart Zone (Скрипт необходимо сохранить отсюда Smart Zone). Для того, чтобы импортировать скрипт необходимо в редакторе СКАДА нажать на меню Действия > Импорт элементов > выбрать сохраненный скрипт.

Необходимо добавить следующие связи:

1. Smart Zone: EGS вход:EGSInput + EGS Модуль: EGS Выход:EGSOutput.
2. Менеджер устройств: Менеджер устройств:ManagingContainer + EGS Модуль: Привязка к менеджеру:ManagingContent.
3. Менеджер устройств: ПО:SoftwareContent + Компьютер или Сервер: Установленное ПО:SoftwareContainer.
Базовая схема умнойЗоны.jpg

Проверка

После запуска скрипта в параметре Хеш появится хеш текста скрипта, который должен быть равен тексту по следующей ссылке, в том случае если скрипт не был изменен.

Настройка

1. У компьютера/сервера должен быть настроен параметр сетевой адрес (ip).
2. Параметры Smart Zone:

1. Включен (enabled) - задействовать триггер.
2. Настройки (settings) - настройки скрипта имеют следующие параметры:
Настройки скрипта.jpg
1. alarm_timeout - интервал в течении которого датчик подключенный к зоне считается тревожным, даже если тревожное состояние уже сброшено.
2. interval - фиксированный интервал пересчета состояния зоны.
3. precedence - типы тревожных состояний зоны, с указанием минимальных значений суммарного precedence(приоритет обработки) для перехода зоны в это состояние.
4. alarm_info - информация о состоянии зоны:
1. alarms_only - информировать только о тревожных датчиках.
2. changes_only - информировать только при смене состояния зоны.
5. importance - таблица соответствия типа члена зоны маске состояния данного типа и далее числовому значению importance (важности) этого состояния. В данном параметре указываются типы элементов и их состояния с числовым значением.

3. У зоны должны быть настроены следующие параметры:

1. Суммарный вес датчиков для перехода зону в тревогу (alarm_weight), если:
1. У зоны суммарный вес > 0, то означает минимальный необходимый суммарный вес входящих в зону датчиков для перевода зоны в состояние Тревога(alarm.alarm). Вес датчика определяется параметром Вес(weight) у Связь с зоной(ZoneLink) соединяющим датчик с зоной.
2. У зоны суммарный вес = 0, то используется алгоритм с тремя тревожными состояниями Маловероятная тревога(alarm.unlikely), Вероятная тревога(alarm.likely) и Тревога(alarm.alarm), вес которых указывается в настройках Smart Zone(precedence). Вес датчика рассчитывается по формуле: вес * приоритет обработки датчика * importance.
2. Область (area) - заполняется при создании зоны через клиент Интегра планета Земля.

4. У линка ZoneLink, соединяющего датчик с зоной, должны быть настроены следующие параметры:

1. weight - вес данного датчика в зоне, по умолчанию: 1.

Дополнительно


1. Информация о состоянии зоны в параметре alarm_info:

  1. alarm_factor - значение параметра alarm_factor зоны.
  2. alarm_precedence - суммарный precedence (weight * precedence * importance) тревожных устройств зоны.
  3. state_before - предыдущее состояние зоны.
  4. state_after - текущее состояние зоны.
  5. members - информация об устройствах зоны со следующими полями:
  1. type - тип устройства.
  2. state - состояние устройства (текущее или последнее тревожное, если не вышел таймаут alarm_timeout).
  3. datetime - время перехода устройства в состояние указанное в state.
  4. weight - вес устройства в зоне, т.е. значение параметра weight линка ZoneLink соединяющего устройство с зоной.
  5. precedence - значение параметра precedence устройства.
  6. importance - важность состояния указанного в state в соответствии с таблицей settings.importance.
  7. alarm - флаг указывающий является ли состояние в state тревожным.
  8. value - реальное текущее значение состояния устройства, может отличаться от значения в state в том случае, если state указывает на недавнюю, но уже сброшенную тревогу.

2. Таблица соответствия порогов тревожных приоритетов тревожным состояниям зоны settings.precedence:

Конфигурация использующая все три тревожных состояния зоны:

 "precedence": {
   "alarm_unlikely": 10.0,
   "alarm_likely": 60,
   "alarm_alarm": 90
 },

где 10, 60, 90 - это значения параметра приоритет обработки устройств подключенные к зоне.
Если устройство подключенное к зоне ушло в тревогу со значением приоритета обработки:

1. От 0-9, то трансляция состояния устройства в состояние зоны не выполнится, значит Зона не изменит свое состояние.
2. От 10-59, то трансляция состояния устройства в состояние зоны выполнится и у зоны состояние будет = Маловероятная тревога(alarm_unlikely).
3. От 60-89, то трансляция состояния устройства в состояние зоны выполнится и у зоны состояние будет = Вероятная тревога(alarm_likely).
4. От 90 и выше, то трансляция состояния устройства в состояние зоны выполнится и у зоны состояние будет = Тревога(alarm_alarm).

При необходимости можно убирать или добавлять тревожные состояния зоны:

 "precedence": {
   "alarm_alarm": 90
 },

Таблица важности состояний settings.importance для типа BOLID_ContactSensor (устройство может быть и другим) отключить тревогу по тревожному состоянию alarm_openCase, а для состояния alarm_longOpen наоборот повысить "тревожность" вдвое. В данном блоке возможно указать типы устройств с их состояниями, которые не будут учитываться тревожными для зон или увеличить у таких устройств приоритет обработки:

 "importance": {
   "BOLID_ContactSensor": {
     "alarm_openCase": 0.0,
     "alarm_longOpen": 2.0
   }

Если устройству BOLID_ContactSensor подключенного к зоне установилось состояние = alarm_openCase, то Зона не будет учитывать состояние этого устройства.
Если устройству BOLID_ContactSensor подключенного к зоне установилось состояние = alarm_longOpen, то приоритет обработки(например = 30) этого устройства * 2.0 (значение у alarm_longOpen), получая итоговое значение = 60, которое повлияет на состояние Зоны(будет не маловероятная тревога а вероятная тревога(т.к. приоритет обработки от 60-89)).

Не учитывать состояние всех датчиков типа StreetLighting:

 "importance": {
   "StreetLighting": {
     "*": 0.0,
   }
3. Если в зоне нет ни одного устройства, состояние зоны устанавливается в Неизвестно (none.unknown).
4. Команды activate и deactivate транслируются в соответствующие команды устройств зоны с ненулевым весом.
5. Пересчет состояния зон происходит не по изменению параметров самих зон либо их устройств, но по таймеру с частотой не превышающей settings.interval для зон которых что-то поменялось с последнего пересчета, а так же с частотой не превышающей settings.alarm_timeout для всех зон вообще (это нужно для сброса "недавней" тревоги). Таким образом вне зависимости от частоты изменений состояний устройств зоны, управляя этими параметрами, можно добиться какой-то фиксированной нагрузки на сервер АМ. Так же пересчет состояний всех зон происходит при запуске скрипта. Ниже указаны параметры по изменению которых зона помечается как измененная и соответственно требующая пересчета своего состояния:
  1. state - состояние самой зоны либо какого-то устройства подключенного к ней.
  2. alarm_factor - параметр зоны.
  3. precedence - параметр устройства зоны.
  4. weight - параметр линка ZoneLink соединяющего зону с устройством.
  5. settings - параметр зоны, при изменении настроек скрипт пересобирается и перезапускается.
6. Важно при использовании отладочной настройки settings.alarm_info.changes_only не оставить ее в значении false, потому что в таком режиме параметр alarm_info зоны обновляется по таймеру в результате изменений указанных выше даже в том случае, если состояние зоны в результате пересчета не поменялось, например только в таком режиме возможно, чтобы alarm_info.state_before содержало такое же значение, что и alarm_info.state_after.
7. Информация о состоянии зоны в параметре alarm_info обновляется в тех случаях если:
  1. settings.changes_only == false.
  2. состояние зоны изменилось.
  3. alarm_info - пусто.
  4. в зоне новая тревога, т.е. тревога устройства зоны произошла позднее смены состояния зоны.

Пример работы

1. Когда суммарный вес(alarm_weight) датчиков для перехода зоны в тревогу > 0.

Для построения схемы необходимо:
1. Создать схему по выше описанному алгоритму (см. Создание схемы).
2. Добавить элемент Зона и 3 IP видеокамеры, соединив пины "Зона:ZoneOutputPin" у Зоны и "Привязка к зоне:ZoneInputPin" у IP видеокамер.
Добавлена зона.jpg
3. В свойствах элемента Зона установить суммарный вес датчиков для перехода зоны в тревогу = 2.
Sum zone.jpg
4. Установить в 2 IP видеокамерах состояние "Тревога", в результате у Зоны устанавливается состояние "Тревога".
State zone.jpg

2. Когда суммарный вес(alarm_weight) датчиков для перехода зоны в тревогу = 0 а так же использование важности какого то определенного состояния.

Для построения схемы необходимо:
1. Создать схему по выше описанному алгоритму (см. Создание схемы).
2. Добавить элемент Зона и 3 IP видеокамеры, соединив пины "Зона:ZoneOutputPin" у Зоны и "Привязка к зоне:ZoneInputPin" у IP видеокамер.
Добавлена зона.jpg
3. В свойствах элемента Зона установить суммарный вес датчиков для перехода зоны в тревогу = 0.
4. В настройках скрипта smart zone установить желаемые значения для:
"precedence": {
  "alarm_unlikely": 10.0,
  "alarm_likely": 60,
  "alarm_alarm": 90
}
5. Установить значение параметру приоритет обработки у 3-х видеокамер: 10, 60, 90.
6. Изменить состояние на тревогу у видеокамеры с приоритетом обработки = 10.
Результат: у зоны изменится состояние на Маловероятную тревогу. Далее вернуть видеокамере состояние в норму, чтобы зоне установилось состояние В Норме.
7. Изменить состояние на тревогу у видеокамеры с приоритетом обработки = 60.
Результат: у зоны изменится состояние на Вероятную тревогу. Далее вернуть видеокамере состояние в норму, чтобы зоне установилось состояние В Норме.
8. Изменить состояние на тревогу у видеокамеры с приоритетом обработки = 90.
Результат: у зоны изменится состояние на Тревогу. Далее вернуть видеокамере состояние в норму, чтобы зоне установилось состояние В Норме.
9. В настройках smart zone установить важность определенному состоянию для увеличения приоритета обработки устройству:
"importance": {
  "VideoCamera": {
     "alarm_dmDisconnected": 0.0,
     "alarm_alarm": 2.0
  }
10. Изменить состояние на тревогу(alarm_alarm) у видеокамеры с приоритетом обработки = 60.
Результат: у зоны изменится состояние на Тревогу, т.к. был указан importance для состояния = "alarm_alarm": 2.0.

Так же если за время указанное в alarm_timeout в тревогу уйдут несколько устройств подключенные к зоне, то учитываться приоритет обработки будет общий от этих нескольких устройств.
Например:

1. Если видеокамере с приоритетом обработки = 60 установится тревожное состояние, то у зоны состояние будет = Вероятная тревога.
2. Если за время указанное в alarm_timeout установится тревожное состояние другой видеокамере с приоритетом обработки = 30, то состояние зоны обновится с вероятной тревоги на тревога, т.к. общий приоритет обработки = 90.