Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: borische от 12 Августа 2026, 13:53:51

Название: Видимость объекта по условию значений больше двух переменных
Отправлено: borische от 12 Августа 2026, 13:53:51
Добрый день.
Возможно вопрос уже задавался.
Каким образом отобразить видимость объекта (например фигуры) по условию значений больше двух переменных.
Например видимость фигуры Shape1 по условию tag1.AsBool = true and tag2.AsBool = true and tag3.AsBool = true.
Сейчас делаю так. Есть внутренний битовый тег var_Blink_1s, состояние которого меняется 1 раз в секунду (скрипт). Этот тег привязываю к объекту
и по изменению этого тега на событие OnDataChange исполняется скрипт
Код: (delphi)
begin
  If (tag1.AsBool = true) and (tag2.AsBool = true) and (tag3.AsBool = true)
    then Sender.Visible := true else Sender.Visible := false;
end.
Но как то кажется кривоватый способ. Может есть решение получше.

Спасибо.
Название: Re: Видимость объекта по условию значений больше двух переменных
Отправлено: Simple Scada от 12 Августа 2026, 14:51:05
Здравствуйте.

К объекту можно привязать только две переменные (основная и доп. переменная) и отслеживать их изменение. Отслеживать изменение более двух переменных можно только в скрипте с типом события "Изменились переменные (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" и использовать следующий код:
Код: (delphi)
begin
  vrBlink.Value := (tag1.AsBool) and (tag2.AsBool) and (tag3.AsBool);
end.
Далее переменную "vrBlink" нужно связать с требуемым объектом и на событие "OnDataChange (https://simple-scada.com/help/script/general-events.html)" использовать скрипт:
Код: (delphi)
begin
  if Sender is TM_Object then    // проверяем, что Sender это объект
    with Sender as TM_Object do  // приводим Sender к типу "TM_Object"
      Visible := AsBool;         // изменить видимость объекта в зависимости от значения связанной с ним переменной
end.