Smart Zone
Назначение
- Трансляция состояний устройств в состояние зоны.
- Отсечение ложных срабатываний путем перевода зоны в тревогу по минимум двум тревожным устройствам.
- Трансляция команд от Зоны в устройства(При отправки команды "Снять с охраны/Взять под охрану" у зоны, всем устройствам подключенным к этой зоне будет так же транслироваться данная команда.)
Создание схемы
В редакторе СКАДА необходимо добавить элементы, для этого необходимо:
- 1. Перейти на вкладку "Типы элементов" и выбрать в списке элемент Компьютер (Computer).
- 2. Дважды нажать на элемент Компьютер, после чего появится окно для добавления элемента.
- 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.
Проверка
После запуска скрипта в параметре Хеш появится хеш текста скрипта, который должен быть равен тексту по следующей ссылке, в том случае если скрипт не был изменен.
Настройка
1. У компьютера/сервера должен быть настроен параметр сетевой адрес (ip).
2. Параметры Smart Zone:
- 1. Включен (enabled) - задействовать триггер.
- 2. Настройки (settings) - настройки скрипта имеют следующие параметры:
- 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:
- alarm_factor - значение параметра alarm_factor зоны.
- alarm_precedence - суммарный precedence (weight * precedence * importance) тревожных устройств зоны.
- state_before - предыдущее состояние зоны.
- state_after - текущее состояние зоны.
- members - информация об устройствах зоны со следующими полями:
- type - тип устройства.
- state - состояние устройства (текущее или последнее тревожное, если не вышел таймаут alarm_timeout).
- datetime - время перехода устройства в состояние указанное в state.
- weight - вес устройства в зоне, т.е. значение параметра weight линка ZoneLink соединяющего устройство с зоной.
- precedence - значение параметра precedence устройства.
- importance - важность состояния указанного в state в соответствии с таблицей settings.importance.
- alarm - флаг указывающий является ли состояние в state тревожным.
- 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 для всех зон вообще (это нужно для сброса "недавней" тревоги). Таким образом вне зависимости от частоты изменений состояний устройств зоны, управляя этими параметрами, можно добиться какой-то фиксированной нагрузки на сервер АМ. Так же пересчет состояний всех зон происходит при запуске скрипта. Ниже указаны параметры по изменению которых зона помечается как измененная и соответственно требующая пересчета своего состояния:
- state - состояние самой зоны либо какого-то устройства подключенного к ней.
- alarm_factor - параметр зоны.
- precedence - параметр устройства зоны.
- weight - параметр линка ZoneLink соединяющего зону с устройством.
- settings - параметр зоны, при изменении настроек скрипт пересобирается и перезапускается.
- 6. Важно при использовании отладочной настройки settings.alarm_info.changes_only не оставить ее в значении false, потому что в таком режиме параметр alarm_info зоны обновляется по таймеру в результате изменений указанных выше даже в том случае, если состояние зоны в результате пересчета не поменялось, например только в таком режиме возможно, чтобы alarm_info.state_before содержало такое же значение, что и alarm_info.state_after.
- 7. Информация о состоянии зоны в параметре alarm_info обновляется в тех случаях если:
- settings.changes_only == false.
- состояние зоны изменилось.
- alarm_info - пусто.
- в зоне новая тревога, т.е. тревога устройства зоны произошла позднее смены состояния зоны.
Пример работы
1. Когда суммарный вес(alarm_weight) датчиков для перехода зоны в тревогу > 0.
- Для построения схемы необходимо:
- 1. Создать схему по выше описанному алгоритму (см. Создание схемы).
- 2. Добавить элемент Зона и 3 IP видеокамеры, соединив пины "Зона:ZoneOutputPin" у Зоны и "Привязка к зоне:ZoneInputPin" у IP видеокамер.
- 3. В свойствах элемента Зона установить суммарный вес датчиков для перехода зоны в тревогу = 2.
- 4. Установить в 2 IP видеокамерах состояние "Тревога", в результате у Зоны устанавливается состояние "Тревога".
2. Когда суммарный вес(alarm_weight) датчиков для перехода зоны в тревогу = 0 а так же использование важности какого то определенного состояния.
- Для построения схемы необходимо:
- 1. Создать схему по выше описанному алгоритму (см. Создание схемы).
- 2. Добавить элемент Зона и 3 IP видеокамеры, соединив пины "Зона:ZoneOutputPin" у Зоны и "Привязка к зоне:ZoneInputPin" у IP видеокамер.
- 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.
- Результат: у зоны изменится состояние на Тревогу, т.к. был указан importance для состояния = "alarm_alarm": 2.0.
- 10. Изменить состояние на тревогу(alarm_alarm) у видеокамеры с приоритетом обработки = 60.
Так же если за время указанное в alarm_timeout в тревогу уйдут несколько устройств подключенные к зоне, то учитываться приоритет обработки будет общий от этих нескольких устройств.
Например:
- 1. Если видеокамере с приоритетом обработки = 60 установится тревожное состояние, то у зоны состояние будет = Вероятная тревога.
- 2. Если за время указанное в alarm_timeout установится тревожное состояние другой видеокамере с приоритетом обработки = 30, то состояние зоны обновится с вероятной тревоги на тревога, т.к. общий приоритет обработки = 90.