Пожалуйста, включите JavaScript для просмотра этого сайта.

Скрипты Simple-Scada

В скриптах с типом события "Нарушена граница" можно использовать функции IsFirstChange, PrevAsBool, PrevAsInt, PrevAsFloat, PrevAsStr.

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

Описание

Данный тип события хорошо подходит для реализации отправки уведомлений (Telegram / E-mail / SMS, или просто сообщений) о нарушении границ переменной. Для быстрого поиска требуемых переменных можно использовать опцию "Фильтр".

Скрипт будет вызван при нарушении границы любой переменной из заданного списка. Скрипт имеет параметр Variable - переменная, нарушение границы которой привело к выполнению скрипта. Событие учитывает зону нечувствительности заданную каждой переменной, что позволяет исключить лишние срабатывания, когда значение переменной колеблется в зоне соприкосновения двух границ (предупредительной и аварийной, или предупредительной и нормальной). Также, событие не срабатывает при переходе значения из аварийной зоны в предупредительную (т.к. условия улучшились, а не ухудшились).

Пример скрипта

Допустим, требуется отправлять Telegram-сообщения при нарушении предупредительных или аварийных границ переменных, а также отправлять сообщение, когда значение переменной вернулось в норму. Для решения задачи достаточно написать один универсальный скрипт по событию "Нарушена граница" и добавить в список скрипта требуемые переменные:

begin
  if not IsFirstChange then // пропускаем первое изменение, чтобы сообщения не выдавались при перезапусках проекта
  // отправляем сообщение в зависимости от того, в какой зоне находится значение переменной
  case Variable.GetValueZone of
   -2: SendTelegram('Нарушена НА граница переменной ' + Variable.Name + '. Значение: ' + Variable.AsStr);
   -1: SendTelegram('Нарушена НП граница переменной ' + Variable.Name + '. Значение: ' + Variable.AsStr);
    0: SendTelegram('Значение вернулось в норму '     + Variable.Name + '. Значение: ' + Variable.AsStr);
    1: SendTelegram('Нарушена ВП граница переменной ' + Variable.Name + '. Значение: ' + Variable.AsStr);
    2: SendTelegram('Нарушена ВА граница переменной ' + Variable.Name + '. Значение: ' + Variable.AsStr);
  end;
end.