Здравствуйте!
asnik, для решения этой задачи создадим внутреннюю переменную (назовем ее, например Time_Count) с типом данных Word. Далее, необходимо создать скрипт с типом события (https://simple-scada.com/help/script/event-types.html) "Прошла секунда" и написать скрипт:
begin
Time_Count.Value := Time_Count.Value + 1; // увеличиваем счетчик на 1
if Time_Count.AsInt >= 5 then // если прошло 5 секунд
if (MyVar1.AsInt > 99) or (MyVar2.AsInt < 35) or (MyVar3.AsInt = 55) then // если любое из условий выполнилось, то
Shape1.Color := clRed // изменить цвет фигуры на красный
else // иначе
Shape1.Color := clGreen // изменить цвет фигуры на зеленый
end.
Вместо MyVar1, MyVar2, MyVar3 подставьте свои переменные. В приведенном примере условия будут проверяться раз в пять секунд - можно изменить этот интервал в соответствии с требованиями Вашего проекта.
Спасибо за помощь. Пока ждал ответов, городил свой огород. По аварии отдельного механизма, взводилась общая авария объекта, куда входил этот механизм. Вроде получилось, можно ли эту конструкцию упростить:
begin
SetFlashInterval(fit500ms); // изменить частоту мигания на 500мс
if Sender is TM_Object then // проверяем, что Sender это объект
with Sender as TM_Object do // приводим Sender к типу "TM_Object"
if AsInt = 1 then // если значение переменной объекта равно 1, то
begin
obob_avar.value := true; // обобщенной аварии присвоить 1
FlashColor := clRed; // изменить цвет объекта и моргать красным
end else // иначе
begin
obob_avar.value := false;
FlashColor := clNone; // отменить моргание
end;
end.