Модуль автоматического управления

Обзор

Модуль автоматического управления - это дополнительный модуль для приложения Сервер, который отправляет команды и генерирует события при выполнении определённых условий. Модуль позволяет реализовать различные алгоритмы управления и рассылку уведомлений без необходимости программирования, посредством пользовательского интерфейса. На следующем рисунке показана форма для настройки модуля.

Модуль автоматического управления

Информация о срабатывании триггеров, отправленных командах и событиях записывается в файл журнала модуля ModAutoControl.log, который можно просмотреть с помощью приложения Администратор или любого текстового редактора.

Установка

Модуль автоматического управления устанавливается по инструкции. Последовательность установки модуля стандартная.

Конфигурирование

Настройка модуля заключается в создании триггеров, которые срабатывают при выполнении определённых условий. Триггеры могут быть различных типов, рассмотренных далее. При срабатывании триггера модуль отправляет команды и генерирует события, которые относятся к этому триггеру.

Чтобы открыть форму для настройки модуля, на странице Сервер > Модули выберите модуль ModAutoControl и нажмите кнопку Свойства. Модуль должен находиться в списке активных модулей. Конфигурация модуля сохраняется в файл ModAutoControl.xml.

Триггеры

Триггер на данные канала

Триггер на данные канала срабатывает, когда значение и статус канала соответствует условиям, заданным в параметрах триггера. При запуске модуль заполняет список каналов, удовлетворяющих фильтру каналов. Выполнение условий проверяется индивидуально для каждого канала из этого списка. Если фильтр каналов пуст, то триггер работает для всех активных каналов входного типа.

Триггер имеет состояние, которое позволяет реализовать задержку и повтор сработки триггера. Состояние триггера сохраняется в процессе работы модуля и загружается при запуске Сервера.

Триггер на данные канала

Триггер на данные нескольких каналов

Этот тип триггера используется, если условие должно учитывать значения более, чем одного канала. Если статус какого-либо из указанных каналов не определён, то считается, что условие для этого канала не выполняется. Состояние триггера сохраняется и загружается модулем.

Триггер на данные нескольких каналов

Триггер на изменение данных канала

Триггер срабатывает, если значение или статус указанного канала изменились. Для ограничения частоты срабатывания триггера предназначен соответствующий параметр.

Триггер на изменение данных канала

Триггер на событие

Триггер на событие срабатывает, если возникшее в системе событие удовлетворяет указанным условиям. Триггер в том числе срабатывает на события, которые генерируются самим модулем. При срабатывании триггера новые события не могут быть сгенерированы, чтобы избежать бесконечного цикла.

Триггер на событие

Триггер по времени

Триггер по времени может срабатывать каждый день в указанные моменты времени, в определённые дни недели, дни месяца или в конкретную дату.

Триггер по времени

Триггер на команду

Триггер на команду удобно использовать в тех случаях, когда по одной команде необходимо отправить серию команд. Если для триггера задано условие проверки данных, то данные поступающих команд преобразуются в строку, используя кодировку UTF8, а затем проверяются на соответствие условию.

Триггер срабатывает в том числе на команды, отправленные самим модулем. Максимальная глубина рекурсии ограничена 10 уровнями.

Триггер на команду

Команды

На рисунке ниже показаны параметры команды, которая отправляется при сработке или нормализации триггера. Команда может быть отправлена на канал или сразу на устройство. Если команда отправляется на канал, для команды будет выполнена проверка прав и рассчитана выходная формула. Если команда отправляется на устройство, то она будет добавлена в очередь на отправку клиентам как есть без дополнительной обработки. При отправке команды на устройство необходимо указать номер или код команды.

Параметры команды

Если установлена галочка Копировать значение, значение отправляемой команды будет скопировано из значения канала или команды, на которое сработал триггер, если это применимо для данного типа триггера. Строковые данные команд могут содержать переменные, о которых написано ниже.

События

На следующем рисунке показаны параметры события, которое генерируется при сработке или нормализации триггера.

Параметры события

Если в конфигурации модуля серьёзность события установлена по умолчанию (равна 0), то она присваивается Сервером на основе статуса канала. Если серьёзность не нулевая, то событие создаётся с указанным значением серьёзности.

Если галочка Требуется квитирование не установлена, но статус канала в базе конфигурации имеет установленное поле Квитирование, то признак необходимости квитирования события присваивается Сервером на основе статуса.

Пользовательский текст создаваемого события статический без поддержки переменных.

Переменные

Строковые данные команд, которые отправляются при сработке триггеров, могут содержать переменные. Переменные записываются в фигурных скобках.

Поддерживаются следующие переменные:

Переменная Описание
Для триггеров всех типов
{n} Текущее значение канала n, форматированное, с размерностью. Если n = 0, используется канал триггера (если применимо)
{Now} Текущие дата и время в часовом поясе сервера
{NowUtc} Текущие дата и время UTC
{Time} Время сработки триггера в часовом поясе сервера
{TimeUtc} Время сработки триггера UTC
Для триггеров на данные канала
{CnlNum} Номер канала
{CnlName} Наименование канала
{ObjNum} Номер объекта
{ObjName} Наименование объекта
{DevNum} Номер устройства
{DevName} Наименование устройства
{LoLo} Нижняя аварийная граница канала
{Low} Нижняя граница канала
{High} Верхняя граница канала
{HiHi} Верхняя аварийная граница канала
{CnlVal} Значение канала, на котором сработал триггер
{CnlStat} Статус канала, на котором сработал триггер
Для триггеров на события
{EvID} Идентификатор события
{EvTime} Время события в часовом поясе сервера
{EvObjNum} Номер объекта события
{EvObj} Наименование объекта события
{EvDevNum} Номер устройства события
{EvDev} Наименование устройства события
{EvCnlNum} Номер канала события
{EvCnl} Наименование канала события
{EvText} Отображаемый текст события
{EvSev} Отображаемая серьёзность события
Для триггеров на команды
{CmdVal} Значение команды, на котором сработал триггер
{CmdDataStr} Данные команды в строковом виде
{CmdDataHex} Данные команды в 16-ричном виде