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

Скрипты Simple-Scada

История: Примеры скриптов

Отправка E-mail/SMS/Telegram/Max

Пред. Вверх След. Еще

Для отправки сообщений можно использовать соответствующие методы: SendMail, SendTelegram, SendMax, SendSMS. Если требуется отправить сообщение группе пользователей (например, всем пользователям группы "Операторы"), то используйте методы SendMail, SendTelegram, SendMax, SendSMS для группы.

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

begin
  if MyVar.AsInt > 10 then SendMail('Simple-Scada''Авария котла!''Превышена максимальная температура!');
end.

, в нем сообщение будет отправляться, когда значение переменной станет больше 10. Но если данный код вызывается, к примеру в скрипте с типом события "Таймер", то сообщение будет отправляться каждую секунду, пока значение переменной не станет меньше 10. Чтобы избежать этого, имеется несколько способов:

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

2. Если требуется отправлять сообщения по Boolean переменным, то нужно использовать скрипт с типом события "Изменились переменные", добавив в список скрипта нужные переменные и написав такой код:

begin
  // пропускаем первое изменение переменной, чтобы скрипт не выполнялся при перезапусках проекта
  // и если значение переменной изменилось на True, то отправляем сообщение
  if (not IsFirstChange) and (Variable.AsBool) then
  // при необходимости добавляем в сообщение нужную информацию, например имя и описание переменной
    SendTelegram('Авария! Переменная: ' + Variable.Name + ', Описание переменной: ' + Variable.Description);
end.

, данный скрипт будет отправлять сообщение только при изменении значения переменной с False на True. Если требуется отправлять сообщение при обратном условии (True -> False), то можно заменить первую строчку на "if Variable.AsBool = False then".

3. Если требуется отправлять сообщения по каким-то уникальным условиям и первые два варианта не подходят, то в скрипт отправки сообщения нужно добавить дополнительную проверку. Например, если нужно отправить сообщение только один раз при выполнении условия, то нужно создать внутреннюю переменную для контроля отправки, к примеру с именем SendControl с типом Boolean и добавить в скрипт проверку:

begin
  if (MyVar_1.AsInt < 1and (MyVar_2.AsInt >= 15then
    begin
      if not SendControl.AsBool then // если сообщение еще не отправлялось, то...
        begin
          SendTelegram ('Авария!');  // отправляем сообщение
          SendControl.Value := True; // помечаем, что сообщение было отправлено
        end;
    end else
      SendControl.Value := False;     
end

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