EGS workflow скрипты — различия между версиями
Wikiadmin (обсуждение | вклад) (→По тревоге от любого устройства источника BaseObject отправка команды turn_on всем прожекторам StreetLighting в той же зоне) |
Ipe (обсуждение | вклад) (→Трансляция состояний в события (StateEvent)) |
||
(не показано 48 промежуточных версий 2 участников) | |||
Строка 8: | Строка 8: | ||
# Трансляция состояний в события (StateEvent) | # Трансляция состояний в события (StateEvent) | ||
# Трансляция состояний устройств в состояние зоны | # Трансляция состояний устройств в состояние зоны | ||
− | # | + | |
+ | == Описание == | ||
+ | |||
+ | Элементы EgsUnit соединяются между собой при помощи линка EgsFlow от пина EgsNext в пин следующего EgsPrev, что определяет направление потока исполнения.<br /> | ||
+ | |||
+ | Некоторые элементы, такие как EgsOnCreate и EgsOnUpdate, инициирующие исполнение естественным образом связаны с некоторым объектом графа - тем объектом, создание или изменение которого произошло. Этот объект передается далее по цепочке исполнения следующим юнитам. Однако он может быть изменен на другой объект, связанный с ним линками, либо прямо указанный по идентификатору. Для этого строка поиска должна быть указана в параметре path соответствующего линка EgsFlow. Поиск может найти более одного элемента графа, тогда поток выполнения разветвляется порождая по одной своей копии для каждого элемента из результата поиска. Так же в path можно указать ранее объявленную в alias и\или name переменную, однако такая переменная должна содержать элемент системы, а не просто какое-то значение.<br /> | ||
+ | |||
+ | Текущий объект юнита системы можно сохранить для передачи далее по потоку. Для этого необходимо задать имя переменной для него в параметрах юнита alias и\или name. Можно использовать русские буквы. Пробелы будут заменены на подчеркивание.<br /> | ||
+ | |||
+ | Началом работы сценария являются специальные элементы графа унаследованные от EgsOn и подключенные к EgsModule при помощи EgsLink. | ||
+ | Другие элементы системы сценариев подключаются к данным при помощи EgsFlow. | ||
+ | Элементы EgsOn могут быть включены или выключены при помощи параметра enabled. | ||
+ | На данный момент существует три элемента типа EgsOn: | ||
+ | EgsOnCreate - срабатывает по созданию элемента имеющего тип указанный в параметре typename. | ||
+ | EgsOnUpdate - срабатывает по изменению параметра с именем указанным в param у элемента имеющего тип указанный в typename. Имя параметра может быть указано в виде одной или нескольких строковых масок разделенных символом |. | ||
+ | EgsOnSchedule - срабатывает по расписанию указанному в параметре schedule в формате cron | ||
+ | EgsOnStart - срабатывает при запуске системы скриптов | ||
+ | EgsAfterPause - продолжает исполнение ветки после выхода паузы указанной в interval (не является наследником EgsOn, однако похож на них тем, что так же может начинать процесс исполнения ветки) | ||
+ | Формат расписания cron расширен секундами следующим образом: | ||
+ | [[File:schedule.jpg|центр]] | ||
+ | Строковые маски могут содержать следующие контрольные символы: | ||
+ | # ? - Любой одиночный символ. | ||
+ | # * - Ноль или более символов. | ||
+ | # # - Любая цифра от 0 до 9. | ||
+ | # [ charlist ] - Любой одиночный символ в charlist. | ||
+ | # [! charlist ] - Любой одиночный символ, не включенный в charlist. | ||
+ | После начала сценария контроль исполнения может быть передан в один или несколько элементов унаследованных от EgsIf для проверки серии условий: | ||
+ | |||
+ | # EgsIfMatches - проверяет, что строковое значение параметра указанного в param соответствует хотя бы одной из разделенных символом | масок указанных в параметре pattern. | ||
+ | # EgsIfMapped - проверяет, что строковое значение параметра указанного в param соответствует хотя бы одной из масок являющихся ключами в таблице из параметра mapping, причем в случае успеха так же выбирается соответствующее подошедшему ключу значение. EgsIfMapped отличается от других элементов тем, что в случае указания имени переменной в name (или alias), в качестве значения переменной сохраняется не текущий объект, а выбранное из таблицы значение. | ||
+ | # EgsIfElapsed - проверяет, что с момента последнего изменения параметра указанного в param прошло время указанное в timeout. | ||
+ | # EgsIfMeets - выполняет выражение expression и записывает его результат в переменную name (или alias), затем проверяет выполнение условия condition. | ||
+ | Элементы типа EgsIf имеют по два пина типа EgsNext: | ||
+ | # next - по этой ветке контроль исполнения передается в случае если результат проверки condition равен булевому значению указанному в параметре expected. | ||
+ | # other - по этой ветке контроль исполнения передается в случае если результат проверки condition не равен значению expected. | ||
+ | Если у входящего линка EgsFlow указана строка поиска path, то ее результатом может быть более одного элемента. В обычном режиме в таком случае происходит разветвление контроля исполнения, т.е. начиная с этого момента в том же потоке исполняется несколько веток разделяющих общий контекст, но более никак не связанных. Однако если у элемента EgsIf включен флаг joint, то контроль исполнения уходит только по последней ветке и только в том случае если все входящие элементы удовлетворяют заданному условию.<br /> | ||
+ | |||
+ | Для исполнения некоторого действия используются элементы унаследованные от EgsDo: | ||
+ | # EgsDoDelete - удаляет выбранный элемент. | ||
+ | # EgsDoUpdate - записывает в параметр указанный в param значение указанное в value и статус указанный в status. Значение value может быть выражением EGS либо просто строкой. Для изменения нескольких параметров к данному EgsDoUpdate можно по цепочке подключать следующие. | ||
+ | # EgsDoCreate - создает объект типа typename и заполняет его параметры соответствующими значениями из mapping (таблица соответствий, где ключ - имя параметра, а значение - выражение EGS либо строка). Объект создается на сервере указанном в параметре server, либо на том же сервере, где находится скрипт. Параметр timeout указывает таймаут на создание объекта. Если по выходу таймаута сервер ФФ не ответил положительно, то объект считается несозданным и дальнейшее выполнение прерывается. Если созданный объект является событием Event и в поле identity указано одно или несколько (разделенных запятой) имен параметров этого события, то такое событие запоминается с использованием параметров из identity в качестве ключа. В последующем события у которых значения параметров из identity совпадают с запомненным не создаются до тех пор пока не пройдет время указанное в interval, либо до тех пор пока у запомненного события не будет изменен хотя бы один из параметров указанных в novelty, т.е. до тех пор пока оно не будет подтверждено или отклонено оператором. | ||
+ | # EgsDoCallStored - отправляет запрос на сервер ФФ для вызова хранимой процедуры указанной в proc с разделенными запятыми параметрами указанными в args (выражения EGS). Затем ожидает ответа от сервера в течении timeout и записывает этот ответ в result в виде json.<br /> | ||
+ | |||
+ | Отладочные параметры: | ||
+ | # В поле error каждого юнита помещается текст ошибки исполнения потока если такая произошла. Перед началом следующего исполнения параметр обнуляется. Поэтому проверять наличие ошибки по нему можно только при помощи архива. Либо если в ручном режиме тестирования гарантируется одинарное исполнение потока и отсутствие ветвлений до данного юнита при помощи строки поиска связанных элементов. | ||
+ | # Если включить параметр debug то во время исполнения юнита будут заполнены отладочные параметры paramlog и exprlog. | ||
+ | # Лог обращений к параметрам объектов графа paramlog содержит список строк, в которых указан объект владелец, имя и значение параметра, а так же вид операции над параметром, которую совершил данный юнит во время своего исполнения. | ||
+ | # Лог выражений EGS exprlog содержит результат попытки компиляции значений специальных параметров юнитов, т.е. там указано распознала ли система в данном значении код либо посчитала его строкой. А так же этот лог содержит ошибку исполнения тех значений которые были успешно скомпилированы. | ||
+ | Обратите внимание, что включенный параметр debug даже у одного юнита может порождать довольно частые и большие команды на изменение графа, что может понизить работоспособность системы в случае если данный отладочный механизм забыли выключить. | ||
+ | |||
+ | Длинные строковые значения в отладочных параметрах обрезаются так чтобы иметь shrink символов в начале и shrink символов в конце. | ||
== Примеры == | == Примеры == | ||
=== Вызов хранимой процедуры БД (Чистка архива) по расписанию === | === Вызов хранимой процедуры БД (Чистка архива) по расписанию === | ||
− | Для этого необходимо добавить элементы в редакторе | + | Для этого необходимо добавить элементы в редакторе Скада: |
:1. Компьютер | :1. Компьютер | ||
:2. Acuario Manager | :2. Acuario Manager | ||
Строка 28: | Строка 78: | ||
:2. У EgsOnSchedule: | :2. У EgsOnSchedule: | ||
::2.1 Задействовать скрипт установив чекбокс - Включен(enabled) | ::2.1 Задействовать скрипт установив чекбокс - Включен(enabled) | ||
− | ::2.2 Имя | + | ::2.2 В параметре "Расписание"(schedule) указать желаемую дату и время запуска. |
− | ::2.3 В параметре "Расписание" указать желаемую дату и время запуска. | + | Пример расписания: |
+ | * * * * * * * - каждую секунду; | ||
+ | * 0 10 * * * * - раз в час когда минута будет = 10 (например: в 13часов 10минут 0 сек; 14часов 10минут 0сек) | ||
+ | * 0 0 9 * * * - каждый день в 13 часов (разница в 4 часа), т.е. для того чтобы запустить расписание в 13 часов необходимо добавить расписание 0 0 9 * * * | ||
+ | * 0 0 9 3 * * - каждого 3-го числа месяца раз в 13 часов; | ||
+ | * 0 0 9 3 6 *- запуск расписания 3 июня в 13 часов; | ||
+ | * 0 0 9 * * 0 - запуск расписания по воскресеньям в 13 часов; | ||
+ | :3. У EgsDoCallStored: | ||
+ | ::3.1 Имя хранимой процедуры БД(proc): graph.clearing_all_archive | ||
+ | ::3.2 Параметры хранимой процедуры БД(args): "ServerId", "1 month", где первым параметром является идентификатор сервера, на котором выполняется скрипт, а вторым - интервал времени, ранее которого будут удалены записи. Если задать следующий аргумент: "ServerId", "7 days", то будут сохранены записи за 7 дней от текущей даты, остальные будут очищены. | ||
+ | [[File:id_serv.jpg|400px|центр]] | ||
+ | ::3.3 Таймаут - ожидание ответа от сервера в течении указанного времени, после чего записывает этот ответ в Результат(result) в виде json | ||
+ | |||
+ | === Вызов хранимой процедуры БД (Снимок(snapshot) базы данных) по расписанию === | ||
+ | Данная схема предназначена для выполнения снепшотов через указанный интервал времени. | ||
+ | |||
+ | Для этого необходимо добавить элементы в редакторе Скада: | ||
+ | :1. Компьютер или сервер | ||
+ | :2. Acuario Manager | ||
+ | :3. EGS Модуль | ||
+ | :4. EgsOnSchedule | ||
+ | :5. EgsDoCallStored | ||
+ | : Добавить связи между элементами: | ||
+ | :1. Компьютер: Установленное ПО:SoftwareContainer + Менеджер устройств: ПО:SoftwareContent | ||
+ | :2. Менеджер устройств: Менеджер устройств: ManagingContainer + Egs Модуль: Привязка к менеджеру: ManagingContent | ||
+ | :3. EGS Модуль: Egs выход:EGSOutput + EgsOnSсhedule: Egs вход:EgsInput | ||
+ | :4. EgsOnShedule: Egs следующий:EGSNext + EgsDoCallStored: EGS предыдущий:EgsPrev | ||
+ | [[File:snapshot.jpg|700px|центр]] | ||
+ | : Настроить параметры элементов: | ||
+ | :1. Указать IP адрес компьютера | ||
+ | :2. У EgsOnSchedule: | ||
+ | ::2.1 Задействовать скрипт установив чекбокс - Включен(enabled) | ||
+ | ::2.2 В параметре "Расписание"(schedule) указать желаемую дату и время запуска. | ||
Пример расписания: | Пример расписания: | ||
* * * * * * * - каждую секунду; | * * * * * * * - каждую секунду; | ||
− | * | + | * 0 10 * * * * - раз в час когда минута будет = 10 (например: в 13часов 10минут 0 сек; 14часов 10минут 0сек) |
− | * | + | * 0 0 9 * * * - каждый день в 13 часов (разница в 4 часа), т.е. для того чтобы запустить расписание в 13 часов необходимо добавить расписание 0 0 9 * * * |
− | * * | + | * 0 0 9 3 * * - каждого 3-го числа месяца раз в 13 часов; |
− | * | + | * 0 0 9 3 6 *- запуск расписания 3 июня в 13 часов; |
− | * | + | * 0 0 9 * * 0 - запуск расписания по воскресеньям в 13 часов; |
:3. У EgsDoCallStored: | :3. У EgsDoCallStored: | ||
− | ::3.1 | + | ::3.1 Имя хранимой процедуры БД(proc): graph.get_time |
− | + | ::3.2 Параметры хранимой процедуры БД(args): "ServerId", "0", где первым является идентификатор сервера, на котором выполняется скрипт, а вторым - номер версии, с которой необходимо получать данные (в данном случае 0, т.е. весь снимок базы) | |
− | ::3. | + | [[File:args.jpg|400px|центр]] |
− | ::3. | + | ::3.3 Таймаут - ожидание ответа от сервера в течении указанного времени, после чего записывает этот ответ в Результат(result) в виде json |
+ | При успешном выполнении через указанный интервал времени в параметр результат (settings.result) будет записан результат в следующем виде: | ||
+ | |||
+ | { | ||
+ | "result": "ok" | ||
+ | } | ||
=== Копирование команд Включить(turn_on) и Выключить(turn_off) из StreetLighting в связанный с ним по LogicLink элемент StilSoftRelay === | === Копирование команд Включить(turn_on) и Выключить(turn_off) из StreetLighting в связанный с ним по LogicLink элемент StilSoftRelay === | ||
− | Для этого необходимо добавить элементы в редакторе | + | Для этого необходимо добавить элементы в редакторе Скада: |
− | :1. Компьютер | + | :1. Компьютер или сервер |
:2. Acuario Manager | :2. Acuario Manager | ||
:3. EGS Модуль | :3. EGS Модуль | ||
Строка 80: | Строка 167: | ||
:5. У линка, соединяющий EgsIfMatches с EgsDoUpdate указать в параметре Путь(path) - LogicInput/StilSoftRelay | :5. У линка, соединяющий EgsIfMatches с EgsDoUpdate указать в параметре Путь(path) - LogicInput/StilSoftRelay | ||
=== Копирование состояний ok_true, ok_false и error_defective из StilSoftRelay в связанный с ним по LogicLink элемент StreetLighting === | === Копирование состояний ok_true, ok_false и error_defective из StilSoftRelay в связанный с ним по LogicLink элемент StreetLighting === | ||
− | Для этого необходимо добавить элементы в редакторе | + | Для этого необходимо добавить элементы в редакторе Скада: |
− | :1. Компьютер | + | :1. Компьютер или сервер |
:2. Acuario Manager | :2. Acuario Manager | ||
:3. EGS Модуль | :3. EGS Модуль | ||
Строка 109: | Строка 196: | ||
::3.2 Установить чекбокс - Ожидаемый(expected) | ::3.2 Установить чекбокс - Ожидаемый(expected) | ||
::3.3 Параметр элемента(param) - state | ::3.3 Параметр элемента(param) - state | ||
− | ::3.4 Таблица соответствий (mapping) - { "ok_true": "ok_active", "ok_false": "ok_inactive", "error_defective": "error_defective" } | + | ::3.4 Таблица соответствий (mapping) - { "ok_true": "ok_active", "ok_false": "ok_inactive", "error_defective": "error_defective" }, где ok_true - это состояние Реле Стилсофт(StilSoftRelay), ok_active - Уличное освещение)StreetLighting |
:4. У EgsDoUpdate: | :4. У EgsDoUpdate: | ||
::4.1 Значение(value) - lampstate | ::4.1 Значение(value) - lampstate | ||
Строка 118: | Строка 205: | ||
− | === По тревоге от любого устройства источника BaseObject отправка команды turn_on всем прожекторам StreetLighting в той же зоне === | + | === По тревоге от любого устройства источника BaseObject(например: Ip видеокамера) отправка команды turn_on всем прожекторам StreetLighting в той же зоне === |
− | Для этого необходимо добавить элементы в редакторе | + | Для этого необходимо добавить элементы в редакторе Скада: |
− | :1. Компьютер | + | :1. Компьютер или сервер |
:2. Acuario Manager | :2. Acuario Manager | ||
:3. EGS Модуль | :3. EGS Модуль | ||
Строка 126: | Строка 213: | ||
:5. EgsIfMatches | :5. EgsIfMatches | ||
:6. EgsDoUpdate | :6. EgsDoUpdate | ||
− | :7. Уличное освещение (StreetLighting) | + | :7. Ip видеокамера |
− | : | + | :8. Уличное освещение(StreetLighting) |
+ | :9. Зона | ||
: Добавить связи между элементами: | : Добавить связи между элементами: | ||
:1. Компьютер: Установленное ПО:SoftwareContainer + Менеджер устройств: ПО:SoftwareContent | :1. Компьютер: Установленное ПО:SoftwareContainer + Менеджер устройств: ПО:SoftwareContent | ||
Строка 134: | Строка 222: | ||
:4. EgsOnUpdate:Egs следующий:EgsNext + EgsIfMatches:Egs предыдущий:EgsPrev | :4. EgsOnUpdate:Egs следующий:EgsNext + EgsIfMatches:Egs предыдущий:EgsPrev | ||
:5. EgsIfMatches:Egs следующий:EgsNext + EgsDoUpdate:Egs предыдущий:EgsPrev | :5. EgsIfMatches:Egs следующий:EgsNext + EgsDoUpdate:Egs предыдущий:EgsPrev | ||
− | :6. | + | [[File:on_light.jpg|центр]] |
+ | :6. Ip видеокамера:Привязка к зоне:ZoneInputPin + Зона:ZoneOutputPin | ||
+ | :7. Уличное освещение:Привязка к зоне:ZoneInputPin + Зона:ZoneOutputPin | ||
+ | [[File:зона камер.jpg|центр]] | ||
: Настроить параметры элементов: | : Настроить параметры элементов: | ||
:1. Указать IP адрес компьютера | :1. Указать IP адрес компьютера | ||
:2. У EgsOnUpdate: | :2. У EgsOnUpdate: | ||
::2.1 Задействовать скрипт установив чекбокс - Включен(enabled) | ::2.1 Задействовать скрипт установив чекбокс - Включен(enabled) | ||
− | ::2.2 Имя объекта(name) - state | + | ::2.2 Имя объекта(name) |
− | ::2. | + | ::2.3 Параметр элемента (param) - state |
+ | ::2.4 Тип элемента(typename) - BaseObject | ||
:3. У EgsIfMatches: | :3. У EgsIfMatches: | ||
− | ::3.1 Имя объекта(name) | + | ::3.1 Имя объекта(name) |
::3.2 Установить чекбокс - Ожидаемый(expected) | ::3.2 Установить чекбокс - Ожидаемый(expected) | ||
::3.3 Параметр элемента(param) - state | ::3.3 Параметр элемента(param) - state | ||
::3.4 Значение параметра(pattern) - alarm_* | ::3.4 Значение параметра(pattern) - alarm_* | ||
:4. У EgsDoUpdate: | :4. У EgsDoUpdate: | ||
− | ::4.1 Значение | + | ::4.1 Значение(value) - turn_on |
::4.2 Имя объекта(name) | ::4.2 Имя объекта(name) | ||
::4.3 Параметр объекта(param) - command | ::4.3 Параметр объекта(param) - command | ||
− | :5. У линка, соединяющий EgsIfMapped с EgsDoUpdate указать в параметре Путь(path) - Link/Zone/Link/ | + | :5. У линка, соединяющий EgsIfMatches с EgsDoUpdate указать в параметре Путь(path) - Link/Zone/Link/StreetLighting |
+ | |||
+ | === Отправка команды "Выключить" включенным прожекторам StreetLighting по истечении таймаута после включения и только в том случае, если не находится в тревоге ни одна из зон, в которых находятся другие прожекторы StreetLighting подключенные к одному и тому же исполнительному устройству StilSoftRelay === | ||
+ | Для этого необходимо добавить элементы в редакторе Скада: | ||
+ | :1. Компьютер или сервер | ||
+ | :2. Acuario Manager | ||
+ | :3. EGS Модуль | ||
+ | :4. EgsIfMatches(2шт) | ||
+ | :5. EgsIfElapsed | ||
+ | :6. EgsOnSchedule | ||
+ | :7. EgsDoUpdate | ||
+ | :9. Ip видеокамера | ||
+ | :10. Уличное освещение(StreetLighting) | ||
+ | :11. Реле Стилсофт | ||
+ | :12. Зона | ||
+ | : Добавить связи между элементами: | ||
+ | :1. Компьютер: Установленное ПО:SoftwareContainer + Менеджер устройств: ПО:SoftwareContent | ||
+ | :2. Менеджер устройств: Менеджер устройств: ManagingContainer + Egs Модуль: Привязка к менеджеру: ManagingContent | ||
+ | :3. EGS Модуль:Egs выход:EGSOutput + EgsOnSchedule:Egs вход:EgsInput | ||
+ | :4. EgsOnSchedule:Egs следующий:EgsNext + EgsIfMatches:Egs предыдущий:EgsPrev | ||
+ | :5. EgsIfMatches:Egs следующий:EgsNext + EgsIfElapsed:Egs предыдущий:EgsPrev | ||
+ | :6. EgsIfElapsed:Egs следующий:EgsNext + EgsIfMatches:Egs предыдущий:EgsPrev | ||
+ | :7. EgsIfMatches:Egs следующий:EgsNext + EgsDoUpdate:Egs предыдущий:EgsPrev | ||
+ | [[File:выкл прожекторов.jpg|центр]] | ||
+ | :8. Ip видеокамера:Привязка к зоне:ZoneInputPin + Зона:ZoneOutputPin | ||
+ | :9. Уличное освещение:Привязка к зоне:ZoneInputPin + Зона:ZoneOutputPin | ||
+ | :10. Реле Стилсофт:Логический выход:LogicOutput + Уличное освещение:Логический вход:LogicInput | ||
+ | [[File:выкл прожекторов2.jpg|центр]] | ||
+ | : Настроить параметры элементов: | ||
+ | :1. Указать IP адрес компьютера | ||
+ | :2. У EgsOnSchedule: | ||
+ | ::2.1 Задействовать скрипт установив чекбокс - Включен(enabled) | ||
+ | ::2.2 Имя объекта(name) | ||
+ | ::2.3 Указать в расписание желаемое время запуска | ||
+ | :3. У EgsIfMatches: | ||
+ | ::3.1 Имя объекта(name) - lamp | ||
+ | ::3.2 Установить чекбокс - Ожидаемый(expected) | ||
+ | ::3.3 Параметр элемента(param) - state | ||
+ | ::3.4 Значение параметра(pattern) - ok_active | ||
+ | :4. У EgsIfElapsed: | ||
+ | ::4.1 Параметр элемента - state | ||
+ | ::4.2 Таймаут - например 00:00:30. Т.е. если включается освещение, то только по истечении 30 секунд будет отправлена команда выключить. | ||
+ | :5. У EgsIfMatches: | ||
+ | ::5.1 Параметр элемента - state | ||
+ | ::5.2 Значение параметра - alarm_* | ||
+ | ::5.2 Задействовать чекбокс - Соединение | ||
+ | :6. У EgsDoUpdate: | ||
+ | ::6.1 Значение параметра(pattern) - turn_off | ||
+ | ::6.2 Имя объекта(name) | ||
+ | ::6.3 Параметр объекта(param) - command | ||
+ | :7. У линка, соединяющий EgsOnSchedule с EgsIfMatches указать в параметре Путь(path) - */StreetLighting | ||
+ | :8. У линка, соединяющий EgsIfElapsed с EgsIfMatches указать в параметре Путь(path) - LogicInput/StilSoftRelay/LogicOutput/StreetLighting/ZoneLink/Zone | ||
+ | :9. У линка, соединяющий EgsIfMatches с EgsDoUpdate указать в параметре Путь(path) - lamp | ||
+ | |||
+ | === Отправка команды Запустить(start) совместно с соответствующим параметром "Идентификатор файла(fileId)" на "Слаботочная сирена МЕТА(LowCurrentSirenMeta)" находящийся с датчиком источником либо в одном пространстве либо в одной зоне === | ||
+ | Для этого необходимо добавить элементы в редакторе Скада: | ||
+ | :1. Компьютер или сервер | ||
+ | :2. Acuario Manager | ||
+ | :3. EGS Модуль | ||
+ | :4. EgsOnUpdate | ||
+ | :5. EgsIfMapped | ||
+ | :6. EgsDoUpdate(2шт.) | ||
+ | :7. Слаботочная сирена МЕТА(LowCurrentSirenMeta) | ||
+ | :8. Болид Пожарная кнопка(BOLID_FireButton) | ||
+ | :9. Зона | ||
+ | : Добавить связи между элементами: | ||
+ | :1. Компьютер: Установленное ПО:SoftwareContainer + Менеджер устройств: ПО:SoftwareContent | ||
+ | :2. Менеджер устройств: Менеджер устройств: ManagingContainer + Egs Модуль: Привязка к менеджеру: ManagingContent | ||
+ | :3. EGS Модуль:Egs выход:EGSOutput + EgsOnUpdate:Egs вход:EgsInput | ||
+ | :4. EgsOnUpdate:Egs следующий:EgsNext + EgsIfMapped:Egs предыдущий:EgsPrev | ||
+ | :5. EgsIfMapped:Egs следующий:EgsNext + EgsDoUpdate:Egs предыдущий:EgsPrev | ||
+ | :6. EgsDoUpdate:Egs следующий:EgsNext + EgsDoUpdate:Egs предыдущий:EgsPrev | ||
+ | [[File:схема запуска сирены.jpg|центр]] | ||
+ | :7.Зона:Привязка к зоне:ZoneOutPutPin + Слаботочная сирена МЕТА:Привязка к зоне:ZoneInputPin | ||
+ | :8.Зона:Привязка к зоне:ZoneOutPutPin + Болид Пожарная кнопка:Привязка к зоне:ZoneInputPin | ||
+ | [[File:схема сирены.jpg|центр]] | ||
+ | : Настроить параметры элементов: | ||
+ | :1. Указать IP адрес компьютера | ||
+ | :2. У EgsOnUpdate: | ||
+ | ::2.1 Задействовать скрипт установив чекбокс - Включен(enabled) | ||
+ | ::2.2 Имя объекта(name) | ||
+ | ::2.3 Параметр элемента(param) - state | ||
+ | ::2.4 Тип элемента (typename) - BOLID_FireButton | ||
+ | :3. У EgsIfMapped: | ||
+ | ::3.1 Имя объекта(name) - fileId | ||
+ | ::3.2 Установить чекбокс - Ожидаемый(expected) | ||
+ | ::3.3 Параметр элемента(param) - state | ||
+ | ::3.4 Таблица соответствий(mapping) - {"alarm_*": "2", "error_*": "1" } | ||
+ | :4. У линка, соединяющий EgsIfMapped с EgsDoUpdate указать в параметре Путь(path) - Link/Space|Zone/Link/LowCurrentSirenMeta | ||
+ | :5. У EgsDoUpdate: | ||
+ | ::5.1 Параметр элемента(param) - fileId | ||
+ | ::5.2 Значение параметра(value) - fileId | ||
+ | :6. У EgsDoUpdate: | ||
+ | ::6.1 Параметр элемента(param) - command | ||
+ | ::6.2 Значение параметра(value) - start | ||
+ | === Трансляция состояний в события (StateEvent) === | ||
+ | Для этого необходимо добавить элементы в редакторе Скада: | ||
+ | :1. Компьютер или сервер | ||
+ | :2. Acuario Manager | ||
+ | :3. EGS Модуль | ||
+ | :4. EgsOnUpdate | ||
+ | :5. EgsIfMatches | ||
+ | :6. EgsDoCreate | ||
+ | : Добавить связи между элементами: | ||
+ | :1. Компьютер: Установленное ПО:SoftwareContainer + Менеджер устройств: ПО:SoftwareContent | ||
+ | :2. Менеджер устройств: Менеджер устройств: ManagingContainer + Egs Модуль: Привязка к менеджеру: ManagingContent | ||
+ | :3. EGS Модуль:Egs выход:EGSOutput + EgsOnUpdate:Egs вход:EgsInput | ||
+ | :4. EgsOnUpdate:Egs следующий:EgsNext + EgsIfMatches:Egs предыдущий:EgsPrev | ||
+ | :5. EgsIfMatches:Egs следующий:EgsNext + EgsDoCreate:Egs предыдущий:EgsPrev | ||
+ | [[File:state_event.jpg|800px|центр]] | ||
+ | : Настроить параметры элементов: | ||
+ | :1. Указать IP адрес компьютера | ||
+ | :2. У EgsOnUpdate: | ||
+ | ::2.1 Задействовать скрипт установив чекбокс - Включен(enabled) | ||
+ | ::2.2 Дополнительное имя(alias) - source | ||
+ | ::2.3 Параметр элемента(param) - state | ||
+ | ::2.4 Тип элемента (typename) - если необходимо получать событие состояния(state event) со всех типов датчиков на схеме, то указываем BaseObject, если только с одного типа датчика, то например IpVideoCamera, если с нескольких типов датчиков (например Видеокамера, Зона, Болид пожарный датчик), то добавить на схему количество элементов EgsOnUpdate = количеству типов датчиков с которых необходимо получать событие состояния. | ||
+ | [[File:EGSupdate.jpg|400px|центр]] | ||
+ | :3. У EgsIfMatches: | ||
+ | ::3.1 Значение параметра(pattern) - возможно указать как одно значение (например alarm_*), так и несколько (alarm_*|error_*) или полностью наименование (alarm_alarm), где: | ||
+ | :::alarm_* - все тревоги; | ||
+ | :::alarm_*|error_* - все тревоги и все ошибки; | ||
+ | :::alarm_alarm - только определенное значение (тревога). | ||
+ | ::3.2 Параметр элемента(param) - state | ||
+ | ::3.3 Соединение(joint) - дополнить описание | ||
+ | ::3.4 Ожидаемый (expected) - Да(true) | ||
+ | :4. У EgsDoCreate: | ||
+ | :4.1 Имена параметров(identity) - owner,state | ||
+ | :4.2 Обновляемые параметры(novelty) - event_status | ||
+ | :4.3 Сервер (server) - source.ServerId | ||
+ | :4.4 Таблица соответствий(mapping) - {"owner":"source.Id","server":"source.ServerId","position":"source.position","state":"source[\"state\"].Text?.Replace?('_', '.')","datetime":"source[\"state\"].DateTime","version":"source[\"state\"].Version","itemtype":"source.MyType","name":"source.name","alarm_info":"(source as Zone)?.alarm_info"} | ||
+ | :4.5 Тип элемента(typename) - StateEvent | ||
+ | |||
+ | === Открытие шлагбаума по sip при вхождении цели в зону === | ||
+ | Данная схема предназначена для открытия шлагбаума по sip при вхождении указанных целей. | ||
+ | Для создания данной схемы необходимо добавить следующие элементы: | ||
+ | # Компьютер или Сервер (Computer/Server) | ||
+ | # Менеджер устройств (AcuarioManager) | ||
+ | # EGS Модуль (EGSModule) | ||
+ | # Zone Controller (Скрипт необходимо скачать [http://maps.integra-s.com:5434/resources/typedef2017/egs/Zone%20Controller.put отсюда)] и импортировать в редакторе Скада | ||
+ | # EGS активация обновления (EgsOnUpdate) | ||
+ | # EGS обновление параметра (EgsDoUpdate) | ||
+ | # IntegraVideo7Sip | ||
+ | # Зона (Zone) - создать через редактор зон клиента Интегра планета Земля. Как это сделать, можно посмотреть по [http://wiki.integra-s.com:11111/index.php/Редактор_зон ссылке] | ||
+ | # Шлагбаум (Bascule_barrier) | ||
+ | Для того, чтобы импортировать скрипт необходимо в редакторе Скада нажать на меню Действия > Импорт элементов > выбрать сохраненный скрипт.<br /> | ||
+ | Необходимо добавить следующие связи: | ||
+ | # Компьютер или Сервер: Установленное ПО:SoftwareContainer + Менеджер устройств: ПО:SoftwareContent | ||
+ | # Менеджер устройств: Менеджер устройств: ManagingContainer + IntegraVideo7Sip: Привязка к менеджеру: ManagingContent | ||
+ | # IntegraVideo7Sip: Логический выход: LogicOutput + Шлагбаум: Логический вход: LogicInput | ||
+ | # Шлагбаум: Логический вход: LogicInput + Зона: Логический выход: LogicOutput | ||
+ | # Менеджер устройств: Менеджер устройств: ManagingContainer + EGS Модуль: Привязка к менеджеру: ManagingContent | ||
+ | # EGS Модуль: EGS Выход: EGSOutput + Zone Controler: EGS вход:EGSInput | ||
+ | # EGS Модуль: EGS Выход: EGSOutput + EgsOnUpdate: EGS вход:EGSInput | ||
+ | # EgsOnUpdate: Следующий:EgsNext + EgsDoUpdate: Предыдущий: EgsPrev | ||
+ | [[File:schemas_barrier.jpg|1200px|center]] | ||
+ | Далее необходимо настроить параметры элементов в свойствах элемента: | ||
+ | # Компьютер или Сервер - настроить сетевой адрес | ||
+ | #IntegraVideo7Sip - Сетевой адрес sip, пароль sip, порт sip, Адрес URL, Логин, Пароль. При отправке команды на шлагбаум если соответствующий номер прописан, на сервер Интегра-Видео VII sip будет послана команда "sip: invite" | ||
+ | #Zone Controller: | ||
+ | ## Настройки (settings): | ||
+ | ### values - числовые значения для некоторых приоритетов: | ||
+ | #### high - повышенный приоритет (1 < high < MaxValue) | ||
+ | #### low - пониженный приоритет (0 < low < 1) | ||
+ | #### server - строка содержащая либо гуид сервера, на который следует отправлять события, либо имя параметра самого события, содержащего этот гуид, например: server | ||
+ | # EgsOnUpdate: | ||
+ | ## Включен(enabled) | ||
+ | ## Параметр элемента(param) - trace_zones | ||
+ | ## Тип элемента(typename) - Тип движущегося объекта, например MoveableObject(все движущиеся объекты) | ||
+ | # EgsDoUpdate: | ||
+ | ## Значение(value) - open | ||
+ | ## Параметр элемента(param) - command | ||
+ | # EgsFlow (связь между EgsOnUpdate и EgsDoUpdate) - trace_zones/Zone/Pin/Bascule_barrier | ||
+ | # Зона(Zone): | ||
+ | ## Область обслуживания(area), высоты области(area_heights), дополнительный делитель числового приоритета для зоны(trace_factor) заполняются после создания зоны через редактор зон. | ||
+ | ## Настройки слежения по зоне(trace_settings) можно посмотреть по [http://wiki.integra-s.com:11111/index.php/Zone_Controller_(%D0%94%D0%B5%D1%82%D0%B5%D0%BA%D1%82%D0%BE%D1%80_%D1%81%D0%BB%D0%B5%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B7%D0%B0_%D1%86%D0%B5%D0%BB%D1%8F%D0%BC%D0%B8_%D0%B2_%D0%B7%D0%BE%D0%BD%D0%B5)#.D0.9D.D0.B0.D1.81.D1.82.D1.80.D0.BE.D0.B9.D0.BA.D0.B0_.D1.8D.D0.BB.D0.B5.D0.BC.D0.B5.D0.BD.D1.82.D0.BE.D0.B2 ссылке] | ||
+ | # Шлагбаум - высота, расположение, номер телефона для открытия шлагбаума. | ||
+ | При вхождении движущегося объекта в зону шлагбаума, отправляется команда "открыть" шлагбауму в этой зоне, так же у движущегося объекта заполняется параметр "Зоны слежения(trzce_zones)" значением гуида зоны, в которую выполнен вход. |
Текущая версия на 15:31, 1 февраля 2022
Содержание
- 1 Назначение
- 2 Описание
- 3 Примеры
- 3.1 Вызов хранимой процедуры БД (Чистка архива) по расписанию
- 3.2 Вызов хранимой процедуры БД (Снимок(snapshot) базы данных) по расписанию
- 3.3 Копирование команд Включить(turn_on) и Выключить(turn_off) из StreetLighting в связанный с ним по LogicLink элемент StilSoftRelay
- 3.4 Копирование состояний ok_true, ok_false и error_defective из StilSoftRelay в связанный с ним по LogicLink элемент StreetLighting
- 3.5 По тревоге от любого устройства источника BaseObject(например: Ip видеокамера) отправка команды turn_on всем прожекторам StreetLighting в той же зоне
- 3.6 Отправка команды "Выключить" включенным прожекторам StreetLighting по истечении таймаута после включения и только в том случае, если не находится в тревоге ни одна из зон, в которых находятся другие прожекторы StreetLighting подключенные к одному и тому же исполнительному устройству StilSoftRelay
- 3.7 Отправка команды Запустить(start) совместно с соответствующим параметром "Идентификатор файла(fileId)" на "Слаботочная сирена МЕТА(LowCurrentSirenMeta)" находящийся с датчиком источником либо в одном пространстве либо в одной зоне
- 3.8 Трансляция состояний в события (StateEvent)
- 3.9 Открытие шлагбаума по sip при вхождении цели в зону
Назначение
- Вызов хранимой процедуры Базы Данных по расписанию
- Копирование команд от элемента к элементу
- Копирование состояний от элемента к элементу
- Отправка команды при тревоге любого датчика
- Трансляция состояний в события (StateEvent)
- Трансляция состояний устройств в состояние зоны
Описание
Элементы EgsUnit соединяются между собой при помощи линка EgsFlow от пина EgsNext в пин следующего EgsPrev, что определяет направление потока исполнения.
Некоторые элементы, такие как EgsOnCreate и EgsOnUpdate, инициирующие исполнение естественным образом связаны с некоторым объектом графа - тем объектом, создание или изменение которого произошло. Этот объект передается далее по цепочке исполнения следующим юнитам. Однако он может быть изменен на другой объект, связанный с ним линками, либо прямо указанный по идентификатору. Для этого строка поиска должна быть указана в параметре path соответствующего линка EgsFlow. Поиск может найти более одного элемента графа, тогда поток выполнения разветвляется порождая по одной своей копии для каждого элемента из результата поиска. Так же в path можно указать ранее объявленную в alias и\или name переменную, однако такая переменная должна содержать элемент системы, а не просто какое-то значение.
Текущий объект юнита системы можно сохранить для передачи далее по потоку. Для этого необходимо задать имя переменной для него в параметрах юнита alias и\или name. Можно использовать русские буквы. Пробелы будут заменены на подчеркивание.
Началом работы сценария являются специальные элементы графа унаследованные от EgsOn и подключенные к EgsModule при помощи EgsLink. Другие элементы системы сценариев подключаются к данным при помощи EgsFlow. Элементы EgsOn могут быть включены или выключены при помощи параметра enabled. На данный момент существует три элемента типа EgsOn: EgsOnCreate - срабатывает по созданию элемента имеющего тип указанный в параметре typename. EgsOnUpdate - срабатывает по изменению параметра с именем указанным в param у элемента имеющего тип указанный в typename. Имя параметра может быть указано в виде одной или нескольких строковых масок разделенных символом |. EgsOnSchedule - срабатывает по расписанию указанному в параметре schedule в формате cron EgsOnStart - срабатывает при запуске системы скриптов EgsAfterPause - продолжает исполнение ветки после выхода паузы указанной в interval (не является наследником EgsOn, однако похож на них тем, что так же может начинать процесс исполнения ветки) Формат расписания cron расширен секундами следующим образом:
Строковые маски могут содержать следующие контрольные символы:
- ? - Любой одиночный символ.
- * - Ноль или более символов.
- # - Любая цифра от 0 до 9.
- [ charlist ] - Любой одиночный символ в charlist.
- [! charlist ] - Любой одиночный символ, не включенный в charlist.
После начала сценария контроль исполнения может быть передан в один или несколько элементов унаследованных от EgsIf для проверки серии условий:
- EgsIfMatches - проверяет, что строковое значение параметра указанного в param соответствует хотя бы одной из разделенных символом | масок указанных в параметре pattern.
- EgsIfMapped - проверяет, что строковое значение параметра указанного в param соответствует хотя бы одной из масок являющихся ключами в таблице из параметра mapping, причем в случае успеха так же выбирается соответствующее подошедшему ключу значение. EgsIfMapped отличается от других элементов тем, что в случае указания имени переменной в name (или alias), в качестве значения переменной сохраняется не текущий объект, а выбранное из таблицы значение.
- EgsIfElapsed - проверяет, что с момента последнего изменения параметра указанного в param прошло время указанное в timeout.
- EgsIfMeets - выполняет выражение expression и записывает его результат в переменную name (или alias), затем проверяет выполнение условия condition.
Элементы типа EgsIf имеют по два пина типа EgsNext:
- next - по этой ветке контроль исполнения передается в случае если результат проверки condition равен булевому значению указанному в параметре expected.
- other - по этой ветке контроль исполнения передается в случае если результат проверки condition не равен значению expected.
Если у входящего линка EgsFlow указана строка поиска path, то ее результатом может быть более одного элемента. В обычном режиме в таком случае происходит разветвление контроля исполнения, т.е. начиная с этого момента в том же потоке исполняется несколько веток разделяющих общий контекст, но более никак не связанных. Однако если у элемента EgsIf включен флаг joint, то контроль исполнения уходит только по последней ветке и только в том случае если все входящие элементы удовлетворяют заданному условию.
Для исполнения некоторого действия используются элементы унаследованные от EgsDo:
- EgsDoDelete - удаляет выбранный элемент.
- EgsDoUpdate - записывает в параметр указанный в param значение указанное в value и статус указанный в status. Значение value может быть выражением EGS либо просто строкой. Для изменения нескольких параметров к данному EgsDoUpdate можно по цепочке подключать следующие.
- EgsDoCreate - создает объект типа typename и заполняет его параметры соответствующими значениями из mapping (таблица соответствий, где ключ - имя параметра, а значение - выражение EGS либо строка). Объект создается на сервере указанном в параметре server, либо на том же сервере, где находится скрипт. Параметр timeout указывает таймаут на создание объекта. Если по выходу таймаута сервер ФФ не ответил положительно, то объект считается несозданным и дальнейшее выполнение прерывается. Если созданный объект является событием Event и в поле identity указано одно или несколько (разделенных запятой) имен параметров этого события, то такое событие запоминается с использованием параметров из identity в качестве ключа. В последующем события у которых значения параметров из identity совпадают с запомненным не создаются до тех пор пока не пройдет время указанное в interval, либо до тех пор пока у запомненного события не будет изменен хотя бы один из параметров указанных в novelty, т.е. до тех пор пока оно не будет подтверждено или отклонено оператором.
- EgsDoCallStored - отправляет запрос на сервер ФФ для вызова хранимой процедуры указанной в proc с разделенными запятыми параметрами указанными в args (выражения EGS). Затем ожидает ответа от сервера в течении timeout и записывает этот ответ в result в виде json.
Отладочные параметры:
- В поле error каждого юнита помещается текст ошибки исполнения потока если такая произошла. Перед началом следующего исполнения параметр обнуляется. Поэтому проверять наличие ошибки по нему можно только при помощи архива. Либо если в ручном режиме тестирования гарантируется одинарное исполнение потока и отсутствие ветвлений до данного юнита при помощи строки поиска связанных элементов.
- Если включить параметр debug то во время исполнения юнита будут заполнены отладочные параметры paramlog и exprlog.
- Лог обращений к параметрам объектов графа paramlog содержит список строк, в которых указан объект владелец, имя и значение параметра, а так же вид операции над параметром, которую совершил данный юнит во время своего исполнения.
- Лог выражений EGS exprlog содержит результат попытки компиляции значений специальных параметров юнитов, т.е. там указано распознала ли система в данном значении код либо посчитала его строкой. А так же этот лог содержит ошибку исполнения тех значений которые были успешно скомпилированы.
Обратите внимание, что включенный параметр debug даже у одного юнита может порождать довольно частые и большие команды на изменение графа, что может понизить работоспособность системы в случае если данный отладочный механизм забыли выключить.
Длинные строковые значения в отладочных параметрах обрезаются так чтобы иметь shrink символов в начале и shrink символов в конце.
Примеры
Вызов хранимой процедуры БД (Чистка архива) по расписанию
Для этого необходимо добавить элементы в редакторе Скада:
- 1. Компьютер
- 2. Acuario Manager
- 3. EGS Модуль
- 4. EgsOnSchedule
- 5. EgsDoCallStored
- Добавить связи между элементами:
- 1. Компьютер: Установленное ПО:SoftwareContainer + Менеджер устройств: ПО:SoftwareContent
- 2. Менеджер устройств: Менеджер устройств: ManagingContainer + Egs Модуль: Привязка к менеджеру: ManagingContent
- 3. EGS Модуль: Egs выход:EGSOutput + EgsOnSсhedule: Egs вход:EgsInput
- 4. EgsOnShedule: Egs следующий:EGSNext + EgsDoCallStored: EGS предыдущий:EgsPrev
- Настроить параметры элементов:
- 1. Указать IP адрес компьютера
- 2. У EgsOnSchedule:
- 2.1 Задействовать скрипт установив чекбокс - Включен(enabled)
- 2.2 В параметре "Расписание"(schedule) указать желаемую дату и время запуска.
Пример расписания:
- * * * * * * - каждую секунду;
- 0 10 * * * * - раз в час когда минута будет = 10 (например: в 13часов 10минут 0 сек; 14часов 10минут 0сек)
- 0 0 9 * * * - каждый день в 13 часов (разница в 4 часа), т.е. для того чтобы запустить расписание в 13 часов необходимо добавить расписание 0 0 9 * * *
- 0 0 9 3 * * - каждого 3-го числа месяца раз в 13 часов;
- 0 0 9 3 6 *- запуск расписания 3 июня в 13 часов;
- 0 0 9 * * 0 - запуск расписания по воскресеньям в 13 часов;
- 3. У EgsDoCallStored:
- 3.1 Имя хранимой процедуры БД(proc): graph.clearing_all_archive
- 3.2 Параметры хранимой процедуры БД(args): "ServerId", "1 month", где первым параметром является идентификатор сервера, на котором выполняется скрипт, а вторым - интервал времени, ранее которого будут удалены записи. Если задать следующий аргумент: "ServerId", "7 days", то будут сохранены записи за 7 дней от текущей даты, остальные будут очищены.
- 3.3 Таймаут - ожидание ответа от сервера в течении указанного времени, после чего записывает этот ответ в Результат(result) в виде json
Вызов хранимой процедуры БД (Снимок(snapshot) базы данных) по расписанию
Данная схема предназначена для выполнения снепшотов через указанный интервал времени.
Для этого необходимо добавить элементы в редакторе Скада:
- 1. Компьютер или сервер
- 2. Acuario Manager
- 3. EGS Модуль
- 4. EgsOnSchedule
- 5. EgsDoCallStored
- Добавить связи между элементами:
- 1. Компьютер: Установленное ПО:SoftwareContainer + Менеджер устройств: ПО:SoftwareContent
- 2. Менеджер устройств: Менеджер устройств: ManagingContainer + Egs Модуль: Привязка к менеджеру: ManagingContent
- 3. EGS Модуль: Egs выход:EGSOutput + EgsOnSсhedule: Egs вход:EgsInput
- 4. EgsOnShedule: Egs следующий:EGSNext + EgsDoCallStored: EGS предыдущий:EgsPrev
- Настроить параметры элементов:
- 1. Указать IP адрес компьютера
- 2. У EgsOnSchedule:
- 2.1 Задействовать скрипт установив чекбокс - Включен(enabled)
- 2.2 В параметре "Расписание"(schedule) указать желаемую дату и время запуска.
Пример расписания:
- * * * * * * - каждую секунду;
- 0 10 * * * * - раз в час когда минута будет = 10 (например: в 13часов 10минут 0 сек; 14часов 10минут 0сек)
- 0 0 9 * * * - каждый день в 13 часов (разница в 4 часа), т.е. для того чтобы запустить расписание в 13 часов необходимо добавить расписание 0 0 9 * * *
- 0 0 9 3 * * - каждого 3-го числа месяца раз в 13 часов;
- 0 0 9 3 6 *- запуск расписания 3 июня в 13 часов;
- 0 0 9 * * 0 - запуск расписания по воскресеньям в 13 часов;
- 3. У EgsDoCallStored:
- 3.1 Имя хранимой процедуры БД(proc): graph.get_time
- 3.2 Параметры хранимой процедуры БД(args): "ServerId", "0", где первым является идентификатор сервера, на котором выполняется скрипт, а вторым - номер версии, с которой необходимо получать данные (в данном случае 0, т.е. весь снимок базы)
- 3.3 Таймаут - ожидание ответа от сервера в течении указанного времени, после чего записывает этот ответ в Результат(result) в виде json
При успешном выполнении через указанный интервал времени в параметр результат (settings.result) будет записан результат в следующем виде:
{ "result": "ok" }
Копирование команд Включить(turn_on) и Выключить(turn_off) из StreetLighting в связанный с ним по LogicLink элемент StilSoftRelay
Для этого необходимо добавить элементы в редакторе Скада:
- 1. Компьютер или сервер
- 2. Acuario Manager
- 3. EGS Модуль
- 4. EgsOnUpdate
- 5. EgsIfMatches
- 6. EgsDoUpdate
- 7. Уличное освещение (StreetLighting)
- 8. Реле Стилсофт (StilSoftRelay)
- Добавить связи между элементами:
- 1. Компьютер: Установленное ПО:SoftwareContainer + Менеджер устройств: ПО:SoftwareContent
- 2. Менеджер устройств: Менеджер устройств: ManagingContainer + Egs Модуль: Привязка к менеджеру: ManagingContent
- 3. EGS Модуль:Egs выход:EGSOutput + EgsOnUpdate:Egs вход:EgsInput
- 4. EgsOnUpdate:Egs следующий:EGSNext + EgsIfMatches:EGS предыдущий:EgsPrev
- 5. EgsIfMatches:Egs следующий:EGSNext + EgsDoUpdate:EGS предыдущий:EgsPrev
- 6. Уличное освещение:Логический вход:LogicInput + Реле Стилсофт:Логический выход:LogicOutput
- Настроить параметры элементов:
- 1. Указать IP адрес компьютера
- 2. У EgsOnUpdate:
- 2.1 Задействовать скрипт установив чекбокс - Включен(enabled)
- 2.2 Имя объекта(name) - lamp
- 2.3 Параметр элемента(param) - command
- 2.4 Тип элемента(typename) - StreetLighting
- 3. У EgsIfMatches:
- 3.1 Значение параметра(pattern) - turn_*
- 3.2 Имя объекта(name)
- 3.3 Установить чекбокс - Ожидаемый(expected)
- 3.4 Параметр элемента(param) - command
- 4. У EgsDoUpdate:
- 4.1 Значение(value) - lamp.command, где lamp - это имя объекта указанное в EgsOnUpdate
- 4.2 Имя объекта(name)
- 4.3 Параметр объекта(param) - command
- 5. У линка, соединяющий EgsIfMatches с EgsDoUpdate указать в параметре Путь(path) - LogicInput/StilSoftRelay
Копирование состояний ok_true, ok_false и error_defective из StilSoftRelay в связанный с ним по LogicLink элемент StreetLighting
Для этого необходимо добавить элементы в редакторе Скада:
- 1. Компьютер или сервер
- 2. Acuario Manager
- 3. EGS Модуль
- 4. EgsOnUpdate
- 5. EgsIfMapped
- 6. EgsDoUpdate
- 7. Уличное освещение (StreetLighting)
- 8. Реле Стилсофт (StilSoftRelay)
- Добавить связи между элементами:
- 1. Компьютер: Установленное ПО:SoftwareContainer + Менеджер устройств: ПО:SoftwareContent
- 2. Менеджер устройств: Менеджер устройств: ManagingContainer + Egs Модуль: Привязка к менеджеру: ManagingContent
- 3. EGS Модуль:Egs выход:EGSOutput + EgsOnUpdate:Egs вход:EgsInput
- 4. EgsOnUpdate:Egs следующий:EGSNext + EgsIfMapped:EGS предыдущий:EgsPrev
- 5. EgsIfMapped:Egs следующий:EGSNext + EgsDoUpdate:EGS предыдущий:EgsPrev
- 6. Реле Стилсофт:Логический вход:LogicInput + Уличное освещение:Логический выход:LogicOutput
- Настроить параметры элементов:
- 1. Указать IP адрес компьютера
- 2. У EgsOnUpdate:
- 2.1 Задействовать скрипт установив чекбокс - Включен(enabled)
- 2.2 Имя объекта(name) - relay
- 2.3 Параметр элемента(param) - state
- 2.4 Тип элемента(typename) - StilSoftRelay
- 3. У EgsIfMapped:
- 3.1 Имя объекта(name) - lampstate
- 3.2 Установить чекбокс - Ожидаемый(expected)
- 3.3 Параметр элемента(param) - state
- 3.4 Таблица соответствий (mapping) - { "ok_true": "ok_active", "ok_false": "ok_inactive", "error_defective": "error_defective" }, где ok_true - это состояние Реле Стилсофт(StilSoftRelay), ok_active - Уличное освещение)StreetLighting
- 4. У EgsDoUpdate:
- 4.1 Значение(value) - lampstate
- 4.2 Имя объекта(name)
- 4.3 Параметр объекта(param) - state
- 5. У линка, соединяющий EgsIfMapped с EgsDoUpdate указать в параметре Путь(path) - LogicInput/StreetLighting
По тревоге от любого устройства источника BaseObject(например: Ip видеокамера) отправка команды turn_on всем прожекторам StreetLighting в той же зоне
Для этого необходимо добавить элементы в редакторе Скада:
- 1. Компьютер или сервер
- 2. Acuario Manager
- 3. EGS Модуль
- 4. EgsOnUpdate
- 5. EgsIfMatches
- 6. EgsDoUpdate
- 7. Ip видеокамера
- 8. Уличное освещение(StreetLighting)
- 9. Зона
- Добавить связи между элементами:
- 1. Компьютер: Установленное ПО:SoftwareContainer + Менеджер устройств: ПО:SoftwareContent
- 2. Менеджер устройств: Менеджер устройств: ManagingContainer + Egs Модуль: Привязка к менеджеру: ManagingContent
- 3. EGS Модуль:Egs выход:EGSOutput + EgsOnUpdate:Egs вход:EgsInput
- 4. EgsOnUpdate:Egs следующий:EgsNext + EgsIfMatches:Egs предыдущий:EgsPrev
- 5. EgsIfMatches:Egs следующий:EgsNext + EgsDoUpdate:Egs предыдущий:EgsPrev
- 6. Ip видеокамера:Привязка к зоне:ZoneInputPin + Зона:ZoneOutputPin
- 7. Уличное освещение:Привязка к зоне:ZoneInputPin + Зона:ZoneOutputPin
- Настроить параметры элементов:
- 1. Указать IP адрес компьютера
- 2. У EgsOnUpdate:
- 2.1 Задействовать скрипт установив чекбокс - Включен(enabled)
- 2.2 Имя объекта(name)
- 2.3 Параметр элемента (param) - state
- 2.4 Тип элемента(typename) - BaseObject
- 3. У EgsIfMatches:
- 3.1 Имя объекта(name)
- 3.2 Установить чекбокс - Ожидаемый(expected)
- 3.3 Параметр элемента(param) - state
- 3.4 Значение параметра(pattern) - alarm_*
- 4. У EgsDoUpdate:
- 4.1 Значение(value) - turn_on
- 4.2 Имя объекта(name)
- 4.3 Параметр объекта(param) - command
- 5. У линка, соединяющий EgsIfMatches с EgsDoUpdate указать в параметре Путь(path) - Link/Zone/Link/StreetLighting
Отправка команды "Выключить" включенным прожекторам StreetLighting по истечении таймаута после включения и только в том случае, если не находится в тревоге ни одна из зон, в которых находятся другие прожекторы StreetLighting подключенные к одному и тому же исполнительному устройству StilSoftRelay
Для этого необходимо добавить элементы в редакторе Скада:
- 1. Компьютер или сервер
- 2. Acuario Manager
- 3. EGS Модуль
- 4. EgsIfMatches(2шт)
- 5. EgsIfElapsed
- 6. EgsOnSchedule
- 7. EgsDoUpdate
- 9. Ip видеокамера
- 10. Уличное освещение(StreetLighting)
- 11. Реле Стилсофт
- 12. Зона
- Добавить связи между элементами:
- 1. Компьютер: Установленное ПО:SoftwareContainer + Менеджер устройств: ПО:SoftwareContent
- 2. Менеджер устройств: Менеджер устройств: ManagingContainer + Egs Модуль: Привязка к менеджеру: ManagingContent
- 3. EGS Модуль:Egs выход:EGSOutput + EgsOnSchedule:Egs вход:EgsInput
- 4. EgsOnSchedule:Egs следующий:EgsNext + EgsIfMatches:Egs предыдущий:EgsPrev
- 5. EgsIfMatches:Egs следующий:EgsNext + EgsIfElapsed:Egs предыдущий:EgsPrev
- 6. EgsIfElapsed:Egs следующий:EgsNext + EgsIfMatches:Egs предыдущий:EgsPrev
- 7. EgsIfMatches:Egs следующий:EgsNext + EgsDoUpdate:Egs предыдущий:EgsPrev
- 8. Ip видеокамера:Привязка к зоне:ZoneInputPin + Зона:ZoneOutputPin
- 9. Уличное освещение:Привязка к зоне:ZoneInputPin + Зона:ZoneOutputPin
- 10. Реле Стилсофт:Логический выход:LogicOutput + Уличное освещение:Логический вход:LogicInput
- Настроить параметры элементов:
- 1. Указать IP адрес компьютера
- 2. У EgsOnSchedule:
- 2.1 Задействовать скрипт установив чекбокс - Включен(enabled)
- 2.2 Имя объекта(name)
- 2.3 Указать в расписание желаемое время запуска
- 3. У EgsIfMatches:
- 3.1 Имя объекта(name) - lamp
- 3.2 Установить чекбокс - Ожидаемый(expected)
- 3.3 Параметр элемента(param) - state
- 3.4 Значение параметра(pattern) - ok_active
- 4. У EgsIfElapsed:
- 4.1 Параметр элемента - state
- 4.2 Таймаут - например 00:00:30. Т.е. если включается освещение, то только по истечении 30 секунд будет отправлена команда выключить.
- 5. У EgsIfMatches:
- 5.1 Параметр элемента - state
- 5.2 Значение параметра - alarm_*
- 5.2 Задействовать чекбокс - Соединение
- 6. У EgsDoUpdate:
- 6.1 Значение параметра(pattern) - turn_off
- 6.2 Имя объекта(name)
- 6.3 Параметр объекта(param) - command
- 7. У линка, соединяющий EgsOnSchedule с EgsIfMatches указать в параметре Путь(path) - */StreetLighting
- 8. У линка, соединяющий EgsIfElapsed с EgsIfMatches указать в параметре Путь(path) - LogicInput/StilSoftRelay/LogicOutput/StreetLighting/ZoneLink/Zone
- 9. У линка, соединяющий EgsIfMatches с EgsDoUpdate указать в параметре Путь(path) - lamp
Отправка команды Запустить(start) совместно с соответствующим параметром "Идентификатор файла(fileId)" на "Слаботочная сирена МЕТА(LowCurrentSirenMeta)" находящийся с датчиком источником либо в одном пространстве либо в одной зоне
Для этого необходимо добавить элементы в редакторе Скада:
- 1. Компьютер или сервер
- 2. Acuario Manager
- 3. EGS Модуль
- 4. EgsOnUpdate
- 5. EgsIfMapped
- 6. EgsDoUpdate(2шт.)
- 7. Слаботочная сирена МЕТА(LowCurrentSirenMeta)
- 8. Болид Пожарная кнопка(BOLID_FireButton)
- 9. Зона
- Добавить связи между элементами:
- 1. Компьютер: Установленное ПО:SoftwareContainer + Менеджер устройств: ПО:SoftwareContent
- 2. Менеджер устройств: Менеджер устройств: ManagingContainer + Egs Модуль: Привязка к менеджеру: ManagingContent
- 3. EGS Модуль:Egs выход:EGSOutput + EgsOnUpdate:Egs вход:EgsInput
- 4. EgsOnUpdate:Egs следующий:EgsNext + EgsIfMapped:Egs предыдущий:EgsPrev
- 5. EgsIfMapped:Egs следующий:EgsNext + EgsDoUpdate:Egs предыдущий:EgsPrev
- 6. EgsDoUpdate:Egs следующий:EgsNext + EgsDoUpdate:Egs предыдущий:EgsPrev
- 7.Зона:Привязка к зоне:ZoneOutPutPin + Слаботочная сирена МЕТА:Привязка к зоне:ZoneInputPin
- 8.Зона:Привязка к зоне:ZoneOutPutPin + Болид Пожарная кнопка:Привязка к зоне:ZoneInputPin
- Настроить параметры элементов:
- 1. Указать IP адрес компьютера
- 2. У EgsOnUpdate:
- 2.1 Задействовать скрипт установив чекбокс - Включен(enabled)
- 2.2 Имя объекта(name)
- 2.3 Параметр элемента(param) - state
- 2.4 Тип элемента (typename) - BOLID_FireButton
- 3. У EgsIfMapped:
- 3.1 Имя объекта(name) - fileId
- 3.2 Установить чекбокс - Ожидаемый(expected)
- 3.3 Параметр элемента(param) - state
- 3.4 Таблица соответствий(mapping) - {"alarm_*": "2", "error_*": "1" }
- 4. У линка, соединяющий EgsIfMapped с EgsDoUpdate указать в параметре Путь(path) - Link/Space|Zone/Link/LowCurrentSirenMeta
- 5. У EgsDoUpdate:
- 5.1 Параметр элемента(param) - fileId
- 5.2 Значение параметра(value) - fileId
- 6. У EgsDoUpdate:
- 6.1 Параметр элемента(param) - command
- 6.2 Значение параметра(value) - start
Трансляция состояний в события (StateEvent)
Для этого необходимо добавить элементы в редакторе Скада:
- 1. Компьютер или сервер
- 2. Acuario Manager
- 3. EGS Модуль
- 4. EgsOnUpdate
- 5. EgsIfMatches
- 6. EgsDoCreate
- Добавить связи между элементами:
- 1. Компьютер: Установленное ПО:SoftwareContainer + Менеджер устройств: ПО:SoftwareContent
- 2. Менеджер устройств: Менеджер устройств: ManagingContainer + Egs Модуль: Привязка к менеджеру: ManagingContent
- 3. EGS Модуль:Egs выход:EGSOutput + EgsOnUpdate:Egs вход:EgsInput
- 4. EgsOnUpdate:Egs следующий:EgsNext + EgsIfMatches:Egs предыдущий:EgsPrev
- 5. EgsIfMatches:Egs следующий:EgsNext + EgsDoCreate:Egs предыдущий:EgsPrev
- Настроить параметры элементов:
- 1. Указать IP адрес компьютера
- 2. У EgsOnUpdate:
- 2.1 Задействовать скрипт установив чекбокс - Включен(enabled)
- 2.2 Дополнительное имя(alias) - source
- 2.3 Параметр элемента(param) - state
- 2.4 Тип элемента (typename) - если необходимо получать событие состояния(state event) со всех типов датчиков на схеме, то указываем BaseObject, если только с одного типа датчика, то например IpVideoCamera, если с нескольких типов датчиков (например Видеокамера, Зона, Болид пожарный датчик), то добавить на схему количество элементов EgsOnUpdate = количеству типов датчиков с которых необходимо получать событие состояния.
- 3. У EgsIfMatches:
- 3.1 Значение параметра(pattern) - возможно указать как одно значение (например alarm_*), так и несколько (alarm_*|error_*) или полностью наименование (alarm_alarm), где:
- alarm_* - все тревоги;
- alarm_*|error_* - все тревоги и все ошибки;
- alarm_alarm - только определенное значение (тревога).
- 3.2 Параметр элемента(param) - state
- 3.3 Соединение(joint) - дополнить описание
- 3.4 Ожидаемый (expected) - Да(true)
- 3.1 Значение параметра(pattern) - возможно указать как одно значение (например alarm_*), так и несколько (alarm_*|error_*) или полностью наименование (alarm_alarm), где:
- 4. У EgsDoCreate:
- 4.1 Имена параметров(identity) - owner,state
- 4.2 Обновляемые параметры(novelty) - event_status
- 4.3 Сервер (server) - source.ServerId
- 4.4 Таблица соответствий(mapping) - {"owner":"source.Id","server":"source.ServerId","position":"source.position","state":"source[\"state\"].Text?.Replace?('_', '.')","datetime":"source[\"state\"].DateTime","version":"source[\"state\"].Version","itemtype":"source.MyType","name":"source.name","alarm_info":"(source as Zone)?.alarm_info"}
- 4.5 Тип элемента(typename) - StateEvent
Открытие шлагбаума по sip при вхождении цели в зону
Данная схема предназначена для открытия шлагбаума по sip при вхождении указанных целей. Для создания данной схемы необходимо добавить следующие элементы:
- Компьютер или Сервер (Computer/Server)
- Менеджер устройств (AcuarioManager)
- EGS Модуль (EGSModule)
- Zone Controller (Скрипт необходимо скачать отсюда) и импортировать в редакторе Скада
- EGS активация обновления (EgsOnUpdate)
- EGS обновление параметра (EgsDoUpdate)
- IntegraVideo7Sip
- Зона (Zone) - создать через редактор зон клиента Интегра планета Земля. Как это сделать, можно посмотреть по ссылке
- Шлагбаум (Bascule_barrier)
Для того, чтобы импортировать скрипт необходимо в редакторе Скада нажать на меню Действия > Импорт элементов > выбрать сохраненный скрипт.
Необходимо добавить следующие связи:
- Компьютер или Сервер: Установленное ПО:SoftwareContainer + Менеджер устройств: ПО:SoftwareContent
- Менеджер устройств: Менеджер устройств: ManagingContainer + IntegraVideo7Sip: Привязка к менеджеру: ManagingContent
- IntegraVideo7Sip: Логический выход: LogicOutput + Шлагбаум: Логический вход: LogicInput
- Шлагбаум: Логический вход: LogicInput + Зона: Логический выход: LogicOutput
- Менеджер устройств: Менеджер устройств: ManagingContainer + EGS Модуль: Привязка к менеджеру: ManagingContent
- EGS Модуль: EGS Выход: EGSOutput + Zone Controler: EGS вход:EGSInput
- EGS Модуль: EGS Выход: EGSOutput + EgsOnUpdate: EGS вход:EGSInput
- EgsOnUpdate: Следующий:EgsNext + EgsDoUpdate: Предыдущий: EgsPrev
Далее необходимо настроить параметры элементов в свойствах элемента:
- Компьютер или Сервер - настроить сетевой адрес
- IntegraVideo7Sip - Сетевой адрес sip, пароль sip, порт sip, Адрес URL, Логин, Пароль. При отправке команды на шлагбаум если соответствующий номер прописан, на сервер Интегра-Видео VII sip будет послана команда "sip: invite"
- Zone Controller:
- Настройки (settings):
- values - числовые значения для некоторых приоритетов:
- high - повышенный приоритет (1 < high < MaxValue)
- low - пониженный приоритет (0 < low < 1)
- server - строка содержащая либо гуид сервера, на который следует отправлять события, либо имя параметра самого события, содержащего этот гуид, например: server
- values - числовые значения для некоторых приоритетов:
- Настройки (settings):
- EgsOnUpdate:
- Включен(enabled)
- Параметр элемента(param) - trace_zones
- Тип элемента(typename) - Тип движущегося объекта, например MoveableObject(все движущиеся объекты)
- EgsDoUpdate:
- Значение(value) - open
- Параметр элемента(param) - command
- EgsFlow (связь между EgsOnUpdate и EgsDoUpdate) - trace_zones/Zone/Pin/Bascule_barrier
- Зона(Zone):
- Область обслуживания(area), высоты области(area_heights), дополнительный делитель числового приоритета для зоны(trace_factor) заполняются после создания зоны через редактор зон.
- Настройки слежения по зоне(trace_settings) можно посмотреть по ссылке
- Шлагбаум - высота, расположение, номер телефона для открытия шлагбаума.
При вхождении движущегося объекта в зону шлагбаума, отправляется команда "открыть" шлагбауму в этой зоне, так же у движущегося объекта заполняется параметр "Зоны слежения(trzce_zones)" значением гуида зоны, в которую выполнен вход.