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

Материал из Integra-S Wiki
Перейти к: навигация, поиск
Строка 1: Строка 1:
 
__FORCETOC__
 
__FORCETOC__
 
== Назначение ==
 
== Назначение ==
# Отслеживание изменения параметра объекта источника
+
# Отслеживание изменения параметра объекта источника.
# Поиск связанного с источником объекта приемника
+
# Поиск связанного с источником объекта приемника.
# Выполнение действий с объектом приемником в соответствии с условием
+
# Выполнение действий с объектом приемником в соответствии с условием.
  
 
== Базовая схема ==
 
== Базовая схема ==
 
В редакторе СКАДА необходимо добавить элементы:<br />
 
В редакторе СКАДА необходимо добавить элементы:<br />
# Reflex Center (Скрипт необходимо импортировать отсюда [http://maps.integra-s.com:5434/resources/typedef2017/egs/Reflex%20Center.put Reflex Center])
+
# Reflex Center (Скрипт необходимо импортировать отсюда [http://maps.integra-s.com:5434/resources/typedef2017/egs/Reflex%20Center.put Reflex Center]).
## Для того, чтобы импортировать скрипт необходимо сначала скопировать и вставить вышеуказанную ссылку в адресную строку браузера, нажать на клавиатуре Enter, в окне браузера нажать правой кнопкой мыши, в появившемся контекстном меню нажать на сохранить как и выбрать удобное для Вас местоположения сохранив скрипт с расширением .put. В редакторе СКАДА нажать на меню Действия > Импорт элементов > выбрать сохраненный скрипт
+
## Для того, чтобы импортировать скрипт необходимо сначала скопировать и вставить вышеуказанную ссылку в адресную строку браузера, нажать на клавиатуре Enter, в окне браузера нажать правой кнопкой мыши, в появившемся контекстном меню нажать на сохранить как и выбрать удобное для Вас местоположения сохранив скрипт с расширением .put. В редакторе СКАДА нажать на меню Действия > Импорт элементов > выбрать сохраненный скрипт.
# Компьютер или Сервер (Computer/Server)
+
# Компьютер или Сервер (Computer/Server).
# Менеджер устройств (AcuarioManager)
+
# Менеджер устройств (AcuarioManager).
# EGS Модуль (EGSModule)
+
# EGS Модуль (EGSModule).
  
 
Необходимо добавить следующие связи:<br />
 
Необходимо добавить следующие связи:<br />
#Reflex Center: EGS вход:EGSInput + EGS Модуль: EGS Выход: EGSOutput<br />
+
#Reflex Center: EGS вход:EGSInput + EGS Модуль: EGS Выход: EGSOutput.<br />
#EGS Модуль: Привязка к менеджеру: ManagingContent + Менеджер устройств: Менеджер устройств: ManagingContainer<br />
+
#EGS Модуль: Привязка к менеджеру: ManagingContent + Менеджер устройств: Менеджер устройств: ManagingContainer.<br />
#Менеджер устройств: ПО:SoftwareContent + Компьютер или Сервер: Установленное ПО:SoftwareContainer<br />
+
#Менеджер устройств: ПО:SoftwareContent + Компьютер или Сервер: Установленное ПО:SoftwareContainer.<br />
 
[[File:base connection reflex.jpg|центр]]
 
[[File:base connection reflex.jpg|центр]]
  
 
== Настройка ==
 
== Настройка ==
# У компьютера/сервера должен быть настроен параметр сетевой адрес (ip)
+
# У компьютера/сервера должен быть настроен параметр сетевой адрес (ip).
 
# Параметры триггера:
 
# Параметры триггера:
## [http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/Reflex%20Center.put&path=0/params/script/value Текст скрипта (script)]
+
## [http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/Reflex%20Center.put&path=0/params/script/value Текст скрипта (script)].
## Включен (enabled) - задействовать триггер
+
## Включен (enabled) - задействовать триггер.
 
## Настройки (settings) - список сценариев, имеющих следующие параметры:
 
## Настройки (settings) - список сценариев, имеющих следующие параметры:
### enabled - включить/выключить сценарий
+
### enabled - включить/выключить сценарий;
### source - список гуидов и/или имен типов объектов источников
+
### source - список гуидов и/или имен типов объектов источников;
### target - путь от объекта источника к объекту приемнику
+
### target - путь от объекта источника к объекту приемнику;
### condition - условия, применяемые к объекту источник (source)
+
### condition - условия, применяемые к объекту источник (source);
### action - действия, применяемые к объекту приемника (target)
+
### action - действия, применяемые к объекту приемника (target);
### params - список параметров рефлексов в виде таблицы ключ/значение, где ключ - имя параметра рефлекса, а значение - строковая форма значения параметра, подставляется в condition и action в виде {paramname}, где paramname - имя параметра
+
### params - список параметров рефлексов в виде таблицы ключ/значение, где ключ - имя параметра рефлекса, а значение - строковая форма значения параметра, подставляется в condition и action в виде {paramname}, где paramname - имя параметра;
### tree - дерево из трех уровней где ключами являются значения числовых параметров condition и action, т.е. вида {0}, {1} и {2}, подходящей по смыслу ветки, где номер обозначает глубину, тогда как значение нижнего уровня подставляется вместо {3}
+
### tree - дерево из трех уровней где ключами являются значения числовых параметров condition и action, т.е. вида {0}, {1} и {2}, подходящей по смыслу ветки, где номер обозначает глубину, тогда как значение нижнего уровня подставляется вместо {3};
 
### operation - список указывающий операции сервера для запуска сценария:
 
### operation - список указывающий операции сервера для запуска сценария:
#### create - создание объекта
+
#### create - создание объекта;
#### update - изменение объекта
+
#### update - изменение объекта;
#### delete - удаление объекта
+
#### delete - удаление объекта;
# sсhedule - опциональный список расписаний для запуска скрипта (вместо запуска по событию) в расширенном формате cron:
+
# sсhedule - опциональный список расписаний для запуска скрипта (вместо запуска по событию) в расширенном формате cron;
# comment - комментарий пользователя, описание сценария
+
# comment - комментарий пользователя, описание сценария.
  
 
== Замечания ==
 
== Замечания ==
# Скрипт запускается либо по расписанию (если указано), либо по событию
+
# Скрипт запускается либо по расписанию (если указано), либо по событию.
# Можно указывать несколько расписаний (так, например, можно настроить запуск действия во вторник в час дня и среду в два часа дня)
+
# Можно указывать несколько расписаний (так, например, можно настроить запуск действия во вторник в час дня и среду в два часа дня).
# Последним элементом target должен быть указан желаемый тип приемника (даже если он совпадает с источником)
+
# Последним элементом target должен быть указан желаемый тип приемника (даже если он совпадает с источником).
# После запуска скрипта в параметре hash появится хеш текста скрипта, который должен быть равен тексту по следующей ссылке [http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/Reflex%20Center.put&path=0/params/hash/value ХEШ], в том случае если скрипт не был изменен
+
# После запуска скрипта в параметре hash появится хеш текста скрипта, который должен быть равен тексту по следующей ссылке [http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/Reflex%20Center.put&path=0/params/hash/value ХEШ], в том случае если скрипт не был изменен.
 
# Формат расписания cron расширен секундами следующим образом:
 
# Формат расписания cron расширен секундами следующим образом:
 
[[File:cron.jpg|центр]]
 
[[File:cron.jpg|центр]]
Строка 50: Строка 50:
 
==== Схема "Рассчитывание скорости и направления у движущегося объекта по предыдущему и текущему значению Расположения (position)" ====
 
==== Схема "Рассчитывание скорости и направления у движущегося объекта по предыдущему и текущему значению Расположения (position)" ====
 
Пример работы:<br />
 
Пример работы:<br />
Версия Acuario Manager не ниже 2.11.1.229
+
Версия Acuario Manager не ниже 2.11.1.229.
Для создания данной схемы необходимо добавить элементы и связи как описано в [[#Базовая схема| Базовой схеме]], так же элементы Автобус (Bus), Симулятор движения (Position Simulator 1),описание которого приведено на странице [[Симулятор движения (Position simulator 1)]], и настроить в свойствах Симулятора движения параметры:<br />
+
Для создания данной схемы необходимо добавить элементы и связи как описано в [[#Базовая схема| Базовой схеме]], так же элементы Автобус (Bus), Симулятор движения (Position Simulator 1),описание которого приведено на странице [[Симулятор движения (Position simulator 1)]], и настроить в свойствах Симулятора движения параметры.<br />
Данные о движении объекта:
 
<br />
 
Нажать на Настройки > (settings.input) (широта, долгота, высота):<br />
 
50.21979884154713,53.23603280606231,124 50.21992758757987,53.236084301430914,124 50.2200241471044,53.23613257828248,124 50.220136799883,53.236164762819776,124 50.22022263057147,53.23619372888256,124 50.22028700358784,53.23621303958015,124 50.22035137660421,53.2362387871633,124 50.220447936128735,53.236280626952755,124 50.2214349890462,53.23690500046691,124 50.220496215891025,53.23744568766287,124 50.21941260344898,53.23688247168483,124 50.22066251284994,53.23696936835009,124 50.220539131235235,53.23689856367324,124 50.22052303798115,53.23685994289082,124 50.22046939380084,53.23681810367033,124 50.220383563112364,53.23676660918871,124 50.22027091033376,53.236705459408626,124 50.22021190173542,53.236682930521006,128 50.22007242686663,53.23665396479085,128 50.21994368083395,53.236621780623125,128 50.2198632145635,53.236589596431095,128 50.21978811271108,53.2365702859042,128 50.21973446853077,53.23656063063748,128 50.21964327342427,53.23653488324884,128 50.21950379855548,53.23649626213669,128 50.21922484881795,53.23643189353865,128<br />
 
Цель (гуид движущегося объекта (в данном примере 4858fbeb-c619-4849-b01f-e56f46465f11)). Для того чтобы узнать гуид элемента необходимо перейти в меню Редактирование > Настройки > включить Расширенный режим, далее выбрать свойство необходимого элемента, нажать ЛКМ на название элемента, после чего выполнится копирование гуида в буфер обмена.
 
[[Файл:Гуид элемента.png|центр]]<br />
 
 
В параметре Настройки (settings) элемента Reflex Center удалить присутствующий сценарий и добавить следующий:<br />
 
В параметре Настройки (settings) элемента Reflex Center удалить присутствующий сценарий и добавить следующий:<br />
 
  {"speed and heading": {
 
  {"speed and heading": {

Версия 17:13, 10 марта 2020

Назначение

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

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

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

  1. Reflex Center (Скрипт необходимо импортировать отсюда Reflex Center).
    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).
    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. Формат расписания cron расширен секундами следующим образом:
Cron.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