1
Ваши вопросы / Re: Видимость объекта по условию значений больше двух переменных
« : 12 Августа 2026, 14:51:05 »
Здравствуйте.
К объекту можно привязать только две переменные (основная и доп. переменная) и отслеживать их изменение. Отслеживать изменение более двух переменных можно только в скрипте с типом события "Изменились переменные".
Самый простой и правильный способ для описанной задачи – это создать на ПЛК отдельную Boolean переменную, которая будет менять свое значение в зависимости от значений указанных трех переменных. Затем использовать полученную переменную в скада-системе для изменения видимости объекта.
Если на ПЛК это сделать не получается, то можно попробовать реализовать то же самое в скада-системе через скрипт "Изменились переменные" и затем использовать полученную переменную для изменения видимости объекта.
Для этого необходимо создать скрипт с типом события "Изменились переменные", добавить в него переменные "tag1", "tag2", "tag3" и использовать следующий код:
Далее переменную "vrBlink" нужно связать с требуемым объектом и на событие "OnDataChange" использовать скрипт:
К объекту можно привязать только две переменные (основная и доп. переменная) и отслеживать их изменение. Отслеживать изменение более двух переменных можно только в скрипте с типом события "Изменились переменные".
Самый простой и правильный способ для описанной задачи – это создать на ПЛК отдельную Boolean переменную, которая будет менять свое значение в зависимости от значений указанных трех переменных. Затем использовать полученную переменную в скада-системе для изменения видимости объекта.
Если на ПЛК это сделать не получается, то можно попробовать реализовать то же самое в скада-системе через скрипт "Изменились переменные" и затем использовать полученную переменную для изменения видимости объекта.
Для этого необходимо создать скрипт с типом события "Изменились переменные", добавить в него переменные "tag1", "tag2", "tag3" и использовать следующий код:
Код: (delphi)
begin
vrBlink.Value := (tag1.AsBool) and (tag2.AsBool) and (tag3.AsBool);
end.
Код: (delphi)
begin
if Sender is TM_Object then // проверяем, что Sender это объект
with Sender as TM_Object do // приводим Sender к типу "TM_Object"
Visible := AsBool; // изменить видимость объекта в зависимости от значения связанной с ним переменной
end.