Здравствуйте.
Есть ли возможность формировать сообщение при возвращении значения переменной в допустимые пределы?
Для решения данной задачи можно использовать функцию GetValueZone (https://simple-scada.com/help/script/getvaluezone.html), которая возвращает номер нарушенной границы. Нужно создать новый скрипт с событием "Нарушена граница (https://simple-scada.com/help/script/borderviol.html)", добавить в список скрипта нужные переменные (как это описано в примере (https://simple-scada.com/help/script/changemulvar.html)) и написать такой код:
begin
if Variable.GetValueZone = 0 then
AddMessage(Now, mkMessage, 'Сообщение', True, False);
end.
Добрый день!
Необходимо чтобы по превышению аварийных уставок становилось видимой форма ( прямоугольник),
небольшой скрипт "Нарушена граница":
begin
if not IsFirstChange then
Shape5.Visible := True
else if temperatura.GetValueZone = 0 then
begin
Shape5.Visible := False;
AddMessage(Now, mkMessage, 'Температура в норме ', True, False);
end;
end.
Проблема в том что форма остается видимой на экране, даже при том что значение переменной ушло в допустимые пределы.
upd:
begin
if not IsFirstChange then
begin
if temperatura.GetValueZone = 2 then
Shape5.Visible := True
else if temperatura.GetValueZone = 0 then
Shape5.Visible := False;
end;
end.
Работает так. И немного поменял % зоны нечувствительности
В продолжение предыдущего поста :
Столкнулся с непонятной ситуацией : в скрипте я описывал ситуацию, при изменении Верхней аварийной границы появляется баннер, но баннер пропадает только если
Предупредительная граница не нарушена. Прописывал условие для предупредительной границы -1 и +1. Ниже скрипт, но не помогает это условие:
begin
if not IsFirstChange then
begin
if temperatura.GetValueZone = 2 then
Shape5.Visible := True
else if temperatura.GetValueZone = 0 or
temperatura.GetValueZone = 1 or
temperatura.GetValueZone = -1 then
Shape5.Visible := False;
end;
end.
Да, наверно запутал))
Вот текущий скрипт:
Суть такая: если значение переменной выходит за пределы Аварийных границ как HH или LL - баннер появляется, при выходе переменной из аварийных уставок баннер пропадает.
Но! У меня баннер не пропадает пока он находиться между HighHigh и High уставкой, хотя предупреждение отключено (Нigh)
begin
if IsFirstChange then // Выход, если это первое изменение
Exit;
if power1.Value < 100 then // Выход, если мощность меньше 100
Exit;
// Основная логика (выполняется только если IsFirstChange=False и power1 >= 100)
if (Pressure.GetValueZone = 2) or
(temperatura.GetValueZone = 2) or
(Pressure.GetValueZone = -2) or
(temperatura.GetValueZone = -2) then
Shape5.Visible := True
else if (Pressure.GetValueZone >= 0) or (temperatura.GetValueZone >= 0) then
Shape5.Visible := False;
end.
Пока нет не помогло
Здравствуйте.
Появление баннера при нарушении "Верхней аварийной" границы и пропадание по выходу из зоны нечувствительности:
1.Если для прочих нужд проекта не используется "Верхняя предупредительная" граница, скрипт "Нарушена граница":begin
Shape5.Visible := Variable.GetValueZone = 2;
end.
, в вариациях задания зоны нечувствительности:
- "Только аварийные" границы - сама "Зона нечувствительности";
- "Аварийные и предупредительные" границы - либо нижняя граница зоны нечувствительности задается "Верхней предупредительной" границей при "Зоне нечувствительности"=0, либо "Зоной нечувствительности" при "Верхней предупредительной"="Верхней аварийной".
2. Без использования стандартной процедуры контроля границ, скрипт "Изменилась переменная":
- с нулевой зоной:begin
Shape5.Visible := Variable.AsFloat >= Variable.HighAlarm;
end.
- с ненулевой зоной:const hist = 4.00; // величина зоны в единицах измерения переменной
begin
if (Variable.AsFloat >= Variable.HighAlarm) then Shape5.Visible := true;
if Shape5.Visible and (Variable.AsFloat < (Variable.HighAlarm - hist)) then Shape5.Visible := false;
end.
.
Вариант 1 более предпочтительный, т.к. и скрипт проще, и событий меньше. Примеры для некоторых вариантов во вложении.