Подсистема реакций и сценариев (Reflex Center) — различия между версиями
Материал из Integra-S Wiki
Wikiadmin (обсуждение | вклад) |
Wikiadmin (обсуждение | вклад) |
||
Строка 5: | Строка 5: | ||
# Выполнение действий с объектом приемником в соответствии с условием | # Выполнение действий с объектом приемником в соответствии с условием | ||
− | == | + | == Базовая схема == |
− | # Скрипт | + | В редакторе СКАДА необходимо добавить элементы:<br /> |
− | # | + | # Reflex Center (Скрипт необходимо импортировать отсюда http://maps.integra-s.com:5434/resources/typedef2017/egs/Reflex%20Center.put) |
− | # | + | ## Для того, чтобы импортировать скрипт необходимо сначала скопировать и вставить вышеуказанную ссылку в адресную строку браузера, нажать на клавиатуре Enter, в окне браузера нажать правой кнопкой мыши, в появившемся контекстном меню нажать на сохранить как и выбрать удобное для Вас местоположения сохранив скрипт с расширением .put. В редакторе СКАДА нажать на меню Действия > Импорт элементов > выбрать сохраненный скрипт |
− | # Модуль | + | # Компьютер или Сервер (Computer/Server) |
− | # Менеджер | + | # Менеджер устройств (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
Содержание
Назначение
- Отслеживание изменения параметра объекта источника
- Поиск связанного с источником объекта приемника
- Выполнение действий с объектом приемником в соответствии с условием
Базовая схема
В редакторе СКАДА необходимо добавить элементы:
- Reflex Center (Скрипт необходимо импортировать отсюда http://maps.integra-s.com:5434/resources/typedef2017/egs/Reflex%20Center.put)
- Для того, чтобы импортировать скрипт необходимо сначала скопировать и вставить вышеуказанную ссылку в адресную строку браузера, нажать на клавиатуре Enter, в окне браузера нажать правой кнопкой мыши, в появившемся контекстном меню нажать на сохранить как и выбрать удобное для Вас местоположения сохранив скрипт с расширением .put. В редакторе СКАДА нажать на меню Действия > Импорт элементов > выбрать сохраненный скрипт
- Компьютер или Сервер (Computer/Server)
- Менеджер устройств (AcuarioManager)
- EGS Модуль (EGSModule)
Необходимо добавить следующие связи:
- Reflex Center: EGS вход:EGSInput + EGS Модуль: EGS Выход: EGSOutput
- EGS Модуль: Привязка к менеджеру: ManagingContent + Менеджер устройств: Менеджер устройств: ManagingContainer
- Менеджер устройств: ПО:SoftwareContent + Компьютер или Сервер: Установленное ПО:SoftwareContainer
Настройка
- У компьютера должен быть настроен параметр ip
- Параметры триггера:
- Текст скрипта (script) - текст скрипта http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/Reflex%20Center.put&path=0/params/script/value
- Включен (enabled) - задействовать триггер
- Настройки (settings) - список сценариев, имеющих следующие параметры:
- enabled - включить/выключить сценарий
- source - список гуидов и/или имен типов объектов источников
- target - путь от объекта источника к объекту приемнику, см. Поиск связанных элементов
- condition - условия, применяемые к объекту источник (source)
- action - действия, применяемые к объекту приемника (target)
- params - список параметров рефлексов в виде таблицы ключ/значение, где ключ - имя параметра рефлекса, а значение - строковая форма значения параметра, подставляется в condition и action в виде {paramname}, где paramname - имя параметра
- tree - дерево из трех уровней где ключами являются значения числовых параметров condition и action, т.е. вида {0}, {1} и {2}, подходящей по смыслу ветки, где номер обозначает глубину, тогда как значение нижнего уровня подставляется вместо {3}
- operation - список указывающий операции сервера для запуска сценария:
- create - создание объекта
- update - изменение объекта
- delete - удаление объекта
- sсhedule - опциональный список расписаний для запуска скрипта (вместо запуска по событию) в расширенном формате cron:
- comment - комментарий пользователя, описание сценария
Замечания
- Скрипт запускается либо по расписанию (если указано), либо по событию
- Можно указывать несколько расписаний (так, например, можно настроить запуск действия во вторник в час дня и среду в два часа дня)
- Последним элементом target должен быть указан желаемый тип приемника (даже если он совпадает с источником)
- После запуска скрипта в параметре hash появится хеш текста скрипта, который должен быть равен тексту по следующей ссылке http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/Reflex%20Center.put&path=0/params/hash/value, в том случае если скрипт не был изменен
- Формат расписания cron расширен секундами следующим образом:
Скрипты:
Рассчитывание скорости и направление у движущегося объекта по предыдущему и текущему значению Расположения (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": "" }}