Подсистема реакций и сценариев (Reflex Center) — различия между версиями

Материал из Integra-S Wiki
Перейти к: навигация, поиск
(Схема "Трансляция состояний (StateEvent) в менеджер событий ")
(Схема "Трансляция состояний в события (State Event) ")
Строка 79: Строка 79:
  
 
==== Схема "Трансляция состояний в события (State Event) " ====
 
==== Схема "Трансляция состояний в события (State Event) " ====
Отслеживание изменений состояния элементов, соответствующих по типу или гуиду какому либо фильтру состояний из таблицы соответствия.<br />
+
Отслеживание изменений состояния элементов.<br />
 
Трансляция состояний, удовлетворяющих выбранному фильтру, в события типа StateEvent.<br />
 
Трансляция состояний, удовлетворяющих выбранному фильтру, в события типа StateEvent.<br />
 
Пример трансляции состояний двух элементов :<br />
 
Пример трансляции состояний двух элементов :<br />
 
Для создания данной схемы необходимо добавить элементы и связи как описано в [[#Базовая схема| Базовой схеме]], так же элемент IpVideoCamera.
 
Для создания данной схемы необходимо добавить элементы и связи как описано в [[#Базовая схема| Базовой схеме]], так же элемент IpVideoCamera.
В параметре Настройки (settings) элемента Reflex Center удалить присутствующий сценарий и добавить следующий:<br />
+
В параметре Настройки (settings) элемента Reflex Center добавить следующий сценарий:<br />
  
 
  {
 
  {
Строка 115: Строка 115:
 
   }
 
   }
 
  }
 
  }
В "tree": {0} - это IpVideoCamera, Computer, {1} - состояние элемента, транслируемое в менеджер событий (alarm_*, error_*).
+
где {0} - это IpVideoCamera, Computer, {1} - состояние элемента, транслируемое в менеджер событий (alarm_*, error_*).

Версия 09:44, 16 марта 2020

Назначение

  1. Отслеживание изменения параметра объекта источника.
  2. Поиск связанного с источником объекта приемника.
  3. Выполнение действий с объектом приемником в соответствии с условием.

Настройка

  1. У компьютера/сервера должен быть настроен параметр сетевой адрес (ip).
  2. Параметры триггера:
    1. Текст скрипта (script).
    2. Включен (enabled) - задействовать триггер.
    3. Настройки (settings) - список сценариев, имеющих следующие параметры:
      1. enabled - включить/выключить сценарий;
      2. source - список гуидов и/или имен типов объектов источников;
      3. target - путь от объекта источника к объекту приемнику;
      4. condition - условия, применяемые к объекту источник (source);
      5. action - действия, применяемые к объекту приемника (target);
      6. params - список параметров рефлексов в виде таблицы ключ/значение, где ключ - имя параметра рефлекса, а значение - строковая форма значения параметра, подставляется в condition и action в виде {paramname}, где paramname - имя параметра;
      7. tree - дерево из трех уровней где ключами являются значения числовых параметров condition и action, т.е. вида {0}, {1} и {2}, подходящей по смыслу ветки, где номер обозначает глубину, тогда как значение нижнего уровня подставляется вместо {3};
      8. operation - список указывающий операции сервера для запуска сценария:
        1. create - создание объекта;
        2. update - изменение объекта;
        3. delete - удаление объекта;
  3. sсhedule - опциональный список расписаний для запуска скрипта (вместо запуска по событию) в расширенном формате cron;
  4. comment - комментарий пользователя, описание сценария.

Замечания

  1. Скрипт запускается либо по расписанию (если указано), либо по событию.
  2. Можно указывать несколько расписаний (так, например, можно настроить запуск действия во вторник в час дня и среду в два часа дня).
  3. Последним элементом target должен быть указан желаемый тип приемника (даже если он совпадает с источником).
  4. После запуска скрипта в параметре hash появится хеш текста скрипта, который должен быть равен тексту по следующей ссылке ХEШ, в том случае если скрипт не был изменен.
  5. В Reflex Center может быть не один сценарий, но имена должны отличаться друг от друга.
  6. Формат расписания cron расширен секундами следующим образом:
Cron.jpg

Базовая схема

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

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

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

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

Сценарии:

Схема "Рассчитывание скорости и направления у движущегося объекта по предыдущему и текущему значению Расположения (position)"

Пример работы:
Версия Acuario Manager не ниже 2.11.1.229. Для создания данной схемы необходимо добавить элементы и связи как описано в Базовой схеме, так же элементы Автобус (Bus), Симулятор движения (Position Simulator 1),описание которого приведено на странице Симулятор движения (Position simulator 1), и настроить в свойствах Симулятора движения параметры.
В параметре Настройки (settings) элемента Reflex Center удалить присутствующий сценарий и добавить следующий:

{"speed and heading": {
   "enabled": true,
   "source": [
     "MoveableObject" 
   ],
   "target": [
     "MoveableObject" 
   ],
   "condition": "position; true",
   "action": "let pos0 = it[\"position\"].Trace(0) \r\nlet pos1 = it[\"position\"].Trace(1)\r\nlet secs = (pos0.DateTime - pos1.DateTime).TotalSeconds\r\nlet pos0 = try GeoPoint(string(pos0.Value)) else GeoPoint(double.NaN) \r\nlet pos1 = try GeoPoint(string(pos1.Value)) else GeoPoint(double.NaN) \r\n\r\nspeed   = pos1.Distance(pos0) / secs\r\nheading = pos1.RhumbBearing(pos0) ",
   "params": {},
   "tree": {},
   "operation": [
     "update" 
   ],
   "schedule": [],
   "comment": "" 
 }}


Далее необходимо запустить Acuario Manager. В клиенте Интегра планета Земля у движущегося объекта будет отображаться Скорость (speed) а так же направление в зависимости от изменения расположения.

Speed bus.jpg

Схема "Трансляция состояний в события (State Event) "

Отслеживание изменений состояния элементов.
Трансляция состояний, удовлетворяющих выбранному фильтру, в события типа StateEvent.
Пример трансляции состояний двух элементов :
Для создания данной схемы необходимо добавить элементы и связи как описано в Базовой схеме, так же элемент IpVideoCamera. В параметре Настройки (settings) элемента Reflex Center добавить следующий сценарий:

{
 "state event": {
   "enabled": true,
   "source": [
     "BaseObject"
   ],
   "target": [
     "StateEvent"
   ],
   "condition": "(it is {0}) and (it[\"state\"].Text like \"{1}\")",
   "action": "owner = string(source.Id); server = string(source.ServerId); position = source.position; state = source[\"state\"].Text?.Replace?('_', '.'); datetime = source[\"state\"].DateTime; version  = source.Version; itemtype = source.GetType().Name; name = source.name\r\n",
   "params": {
     "server": "server"
   },
   "tree": {
     "IpVideoCamera": {
       "alarm_*": {},
       "error_*": {}
     },
     "Computer": {
       "alarm_*": {}
     }
   },
   "operation": [
     "update"
   ],
   "schedule": [],
   "comment": ""
 }
}

где {0} - это IpVideoCamera, Computer, {1} - состояние элемента, транслируемое в менеджер событий (alarm_*, error_*).