Пожалуйста, включите 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.