Не отправлять сообщение, если переменная изменилась первый раз и отправлять во всех остальных случаях. Если есть привязка к объектам на мнемосхеме, то можно делать отметку о изменении переменной в свойство Tag (https://simple-scada.com/help/script/tag.html) объекта. Либо можно создать доп. внутренние переменные в которые записывать было ли изменение основной переменной, или нет. Третий вариант использовать локальную переменную скрипта для этой цели. Допустим в проекте есть скрипт OnDataChange по переменной myVariable и в нём выполняется отправка sms при нулевом значении:
begin
if myVariable.AsInt = 0 then
SendSMS('7928456789', 'Авария котла!');
end.
Тогда можно изменить его так, чтобы первая отправка игнорировалась:
var
aSkipped: Boolean; // после запуска проекта эта переменная будет равна False
begin
if aSkipped then // если одна отправка уже была игнорирована
if myVariable.AsInt = 0 then // если значение равно 0
SendSMS('7928456789', 'Авария котла!'); // то отправляем sms
{ отмечаем, что отправка была пропущена и теперь можно отправлять все сообщения }
aSkipped := True;
end.
Но наиболее правильным вариантом будет не использовать нулевое состояние для отправки sms, для выдачи аварийных/предупреждающих сообщений и для отправки e-mail. Нулевое состояние всегда должно означать нормальное состояние, когда не требуется вмешательство пользователя и выдача уведомлений. Тогда и пропускать отправку не придется.
Но наиболее правильным вариантом будет не использовать нулевое состояние для отправки sms, для выдачи аварийных/предупреждающих сообщений и для отправки e-mail. Нулевое состояние всегда должно означать нормальное состояние, когда не требуется вмешательство пользователя и выдача уведомлений. Тогда и пропускать отправку не придется.
А вот тэг с контактора имеет значение = 0 => "контактор разомкнут"
значение = 1 => "контактор замкнут"
begin
if Sender is TM_Object then
case TM_Object(Sender).AsInt of
0: SendSMS ('78888888848', '9QF ввод Т4 отключен');
1: SendSMS ('78888888848', '9QF ввод Т4 включен');
end;
end.
Таких контакторов 58 штук....
перезапуск проекта - и пошло 58 СМСок перечислять , что замкнуто, а что разомкнуто.....