Правила и расписания

Правила и расписания - одни из самых мощных инструментов, с помощью которых можно в реальном времени проводить обработку параметров и влиять на их состояние.
Правила определяют действия платформы над параметрами при выполнении заданных условий в реальном времени.
Правила могут выполняться как на сервере, так и на контроллере, это определяется значением атрибута правил. В случае выполнения условий правил, выполняются действия над параметрами контроллера.
Расписание - это правило, которое запускается строго по заданному временному расписанию и выполняет действие над сигнальным параметром «Включение/Выключение». Поскольку сигнальные параметры могут иметь только два состояния (0/1), этот механизм удобен для правил по включению/выключению таких устройств в заданные интервалы времени.Расписания выполняются только на контроллере.
Правила и Расписания связаны с типовой конфигурацией. Нельзя задать правило или расписание, которое работает в нескольких типовых конфигурациях. Все правила изолированы в рамках своей конфигурации.

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

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


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

  1. Индивидуальное расписание для параметра можно назначить после того, как типовое расписание назначено для контроллера (его отправка на контроллер не обязательна).
  2. При отправке расписания на контроллер, для тех параметров, которым были назначены индивидуальные расписания, проводится замена их типового расписания на индивидуальное.
  3. Если для параметра удаляется индивидуальное расписание, ему возвращается типовое расписание. При этом требуется отсылка измененного расписания на контроллер.

На диаграмме показан порядок определения правил и расписания.

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

Ниже представлено описание полей сущностей Правило, Действие, Событие.

Сущность Правило

Имя Описание Тип
rulename Наименование правила varchar 100
condition Логическое выражение для определения применимости правила varchar 500
ключ Идентификатор типовой конфигурации int4
location Место применения правила (0 - на контроллере, 1 - на сервере) int4
comment Примечание varchar 254
delaytime Допустимое время задержки выполнения правила (в минутах) int4
locked Признак блокировки выполнения правила на сервере (TRUE - правило заблокировано, FALSE - выполнение правила разрешено) bool
messages Сообщение с кодом 4006, которое контроллер отошлет на сервер после применения правила


Состав разрешенных операций в логических выражениях для определения применимости правила и их приоритеты приведены в разделе Арифметические и логические операции.
Измеряемые параметры в формуле Логического выражения записываются в формате: C<ID параметра> или D<ID параметра> и дублируются интерпретатором в виде формулы с названиями параметров:

Место применения Обозначение Примечание
Rule.Condition (для правила сервера) D<IdP>
C<IdC>
<IdP> - идентификатор параметра типовой конфигурации
<IdC> - идентификатор вычисляемого параметра
Rule.Condition (для правила контроллера) D<IdP> <IdP> - идентификатор параметра типовой конфигурации

Сущность Действие

Имя Описание Тип
ключ Идентификатор правила int4
ключ Идентификатор измеряемого параметра в типовой конфигурации int4
action Действие над параметром int4

Сущность Событие

Имя Описание Тип
eventid Идентификатор типа события int4
ruleid Идентификатор правила int4
message Текст сообщения varchar

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

  • Расписание меняется намного чаще, чем конфигурация контроллера.
  • Одна и та же модель контроллера может иметь разные требования к управлению.

Для настройки расписания необходимо в панели типовой конфигурации в разделе ссылок выбрать Расписание.
Выбираем создание нового расписания либо выбираем уже существующее. Для расписания нужно задать действия и правила. Не обязательно определять обе сущности, расписание может содержать только действия или только правила, но может содержать обе сущности.
Важно понимать, что в действиях по расписанию могут быть определены только сигнальные параметры, а правила могут быть только те, которые вы задали для этой типовой конфигурации в Правилах с атрибутом его местонахождения «Контроллер».

Описание сущности Действия по расписанию:

Имя Описание Тип
ключ Идентификатор сигнального параметра в типовой конфигурацииint4
ключ Идентификатор расписания int4
ключ Идентификатор шаблона расписания из справочника расписания int4

Описание сущности Правило по расписанию: Правило должно иметь режимы работы (расписание). Если правило не включено в расписание, оно не будет передано контроллеру для исполнения. Важно отметить, что для включения правил используются шаблоны из справочника расписаний. Фактически, при выборе правила для включения в расписание, достаточно просто назначить ему шаблон расписания. Пример смотрите на картинке ниже:

Индивидуальные расписания задаются для конкретных параметров. Задать индивидуальные расписания можно в списке параметров объекта, либо в приложении Карта.Ниже показан список параметров объекта:

Для параметров, в столбце которых стоит значок расписания с шестеренкой работают по типовому расписания. В карточке параметра активна ссылка «Типовое расписание». Для изменения типового расписания следует нажать ссылку «Типовое расписание» и в форме расписания изменить временные параметры и нажать кнопку «Сохранить».

Теперь в списке параметров объекта, параметр, для которого было изменено расписание, отмечен красным ромбом. Этот параметр работает по индивидуальному расписанию. Для удаления индивидуального расписания, необходимо в форме параметра объекта выбрать ссылку «Индивидуальное расписание» и в панели индивидуального расписания нажать кнопку «Удалить». Параметр перейдет на работу с типовым расписанием.

Аналогичные действия доступны в приложении «Карта» на вкладке «Управление параметрами».