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

Материал из Integra-S Wiki
Перейти к: навигация, поиск
Строка 5: Строка 5:
 
# Выполнение действий с объектом приемником в соответствии с условием
 
# Выполнение действий с объектом приемником в соответствии с условием
  
== Описание ==
+
== Базовая схема ==
# Скрипт можно импортировать отсюда http://maps.integra-s.com:5434/resources/typedef2017/egs/Reflex%20Center.put
+
В редакторе СКАДА необходимо добавить элементы:<br />
# Скрипт должен исполняться в триггере EgsScenario в процессе менеджера AcuarioManager
+
# Reflex Center (Скрипт необходимо импортировать отсюда http://maps.integra-s.com:5434/resources/typedef2017/egs/Reflex%20Center.put)
# Триггер должен быть подключен к модулю EgsModule
+
## Для того, чтобы импортировать скрипт необходимо сначала скопировать и вставить вышеуказанную ссылку в адресную строку браузера, нажать на клавиатуре Enter, в окне браузера нажать правой кнопкой мыши, в появившемся контекстном меню нажать на сохранить как и выбрать удобное для Вас местоположения сохранив скрипт с расширением .put. В редакторе СКАДА нажать на меню Действия > Импорт элементов > выбрать сохраненный скрипт
# Модуль должен быть подключен к менеджеру AcuarioManager
+
# Компьютер или Сервер (Computer/Server)
# Менеджер должен быть подключен к компьютеру Computer
+
# Менеджер устройств (AcuarioManager)
 +
# EGS Модуль (EGSModule)
 +
 
 +
Необходимо добавить следующие связи:<br />
 +
#Reflex Center: EGS вход:EGSInput + EGS Модуль: EGS Выход: EGSOutput<br />
 +
#EGS Модуль: Привязка к менеджеру: ManagingContent + Менеджер устройств: Менеджер устройств: ManagingContainer<br />
 +
#Менеджер устройств: ПО:SoftwareContent + Компьютер или Сервер: Установленное ПО:SoftwareContainer<br />
 +
[[Файл:base connection reflex.jpg|центр]]
 +
== Настройка ==
 
# У компьютера должен быть настроен параметр ip
 
# У компьютера должен быть настроен параметр ip
 
# Параметры триггера:
 
# Параметры триггера:
Строка 36: Строка 44:
 
# Формат расписания cron расширен секундами следующим образом:
 
# Формат расписания cron расширен секундами следующим образом:
 
[[File:cron.jpg|350px| центр]]
 
[[File:cron.jpg|350px| центр]]
== Сценарии: ==
+
== Скрипты: ==
 
==== Рассчитывание скорости и направление у движущегося объекта по предыдущему и текущему значению Расположения (position) ====
 
==== Рассчитывание скорости и направление у движущегося объекта по предыдущему и текущему значению Расположения (position) ====
 
  {"speed and heading": {
 
  {"speed and heading": {

Версия 16:25, 6 марта 2020

Назначение

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

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

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

  1. Reflex Center (Скрипт необходимо импортировать отсюда http://maps.integra-s.com:5434/resources/typedef2017/egs/Reflex%20Center.put)
    1. Для того, чтобы импортировать скрипт необходимо сначала скопировать и вставить вышеуказанную ссылку в адресную строку браузера, нажать на клавиатуре Enter, в окне браузера нажать правой кнопкой мыши, в появившемся контекстном меню нажать на сохранить как и выбрать удобное для Вас местоположения сохранив скрипт с расширением .put. В редакторе СКАДА нажать на меню Действия > Импорт элементов > выбрать сохраненный скрипт
  2. Компьютер или Сервер (Computer/Server)
  3. Менеджер устройств (AcuarioManager)
  4. EGS Модуль (EGSModule)

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

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

Настройка

  1. У компьютера должен быть настроен параметр ip
  2. Параметры триггера:
    1. Текст скрипта (script) - текст скрипта http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/Reflex%20Center.put&path=0/params/script/value
    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 появится хеш текста скрипта, который должен быть равен тексту по следующей ссылке http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/Reflex%20Center.put&path=0/params/hash/value, в том случае если скрипт не был изменен
  5. Формат расписания cron расширен секундами следующим образом:
Cron.jpg

Скрипты:

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

{"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": "" 
 }}