Добрый день.
Возможно вопрос уже задавался.
Каким образом отобразить видимость объекта (например фигуры) по условию значений больше двух переменных.
Например видимость фигуры Shape1 по условию tag1.AsBool = true and tag2.AsBool = true and tag3.AsBool = true.
Сейчас делаю так. Есть внутренний битовый тег var_Blink_1s, состояние которого меняется 1 раз в секунду (скрипт). Этот тег привязываю к объекту
и по изменению этого тега на событие OnDataChange исполняется скрипт
begin
If (tag1.AsBool = true) and (tag2.AsBool = true) and (tag3.AsBool = true)
then Sender.Visible := true else Sender.Visible := false;
end.
Но как то кажется кривоватый способ. Может есть решение получше.
Спасибо.
Здравствуйте.
К объекту можно привязать только две переменные (основная и доп. переменная) и отслеживать их изменение. Отслеживать изменение более двух переменных можно только в скрипте с типом события "Изменились переменные (https://simple-scada.com/help/script/changed-the-variables.html)".
Самый простой и правильный способ для описанной задачи – это создать на ПЛК отдельную Boolean переменную, которая будет менять свое значение в зависимости от значений указанных трех переменных. Затем использовать полученную переменную в скада-системе для изменения видимости объекта.
Если на ПЛК это сделать не получается, то можно попробовать реализовать то же самое в скада-системе через скрипт "Изменились переменные (https://simple-scada.com/help/script/changed-the-variables.html)" и затем использовать полученную переменную для изменения видимости объекта.
Для этого необходимо создать скрипт с типом события "Изменились переменные (https://simple-scada.com/help/script/changed-the-variables.html)", добавить в него переменные "tag1", "tag2", "tag3" и использовать следующий код:
begin
vrBlink.Value := (tag1.AsBool) and (tag2.AsBool) and (tag3.AsBool);
end.
Далее переменную "vrBlink" нужно связать с требуемым объектом и на событие "OnDataChange (https://simple-scada.com/help/script/general-events.html)" использовать скрипт:
begin
if Sender is TM_Object then // проверяем, что Sender это объект
with Sender as TM_Object do // приводим Sender к типу "TM_Object"
Visible := AsBool; // изменить видимость объекта в зависимости от значения связанной с ним переменной
end.