Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: vasiabel08 от 07 Июня 2024, 09:49:42

Название: скрипт изменения цвета трубопровода
Отправлено: vasiabel08 от 07 Июня 2024, 09:49:42
Добрый день, не могу создать скрипт изменения цвета трубопровода по двум битовым переменным (Boolean). На трубопроводе два насоса, нужно менять цвет в зависимости какой насос включен, завел один насос на основную переменную, второй на дополнительную. Пробывал скрипты с примеров, при компиляции проблем нет, начинаю сохранять проект ругается на неправильно скомпилированный скрипт. Может кто выложить пример скрипта?
Название: Re: скрипт изменения цвета трубопровода
Отправлено: pan2000 от 07 Июня 2024, 11:19:26
    Здравствйте.

В зависимости от желаемого правила изменения можно менять цвет с учетом двух переменных (один скрипт на оба события изменения переменных):
Код: (delphi)
begin
  with Sender as TM_Object do
    case SetBit(SetBit(0, 0, AsBool), 1, VariableEx.AsBool) of
    0: Color := clGray;     // оба выключены
    1: Color := clLime;     // насос с управлением по основной переменной
    2: Color := clYellow;   // насос с управлением по дополнительной переменной
    3: Color := clRed;      // а это - оба сразу !
    end;
end.
или независимо по каждой переменной:
Код: (delphi)
begin
  with Sender as TM_Object do
    if AsBool then Color := clLime else Color := clGray;
end.
Код: (delphi)
begin
  with Sender as TM_Object do
    if VariableEx.AsBool then Color := clYellow else Color := clGray;
end.
Пример во вложении.
Название: Re: скрипт изменения цвета трубопровода
Отправлено: Simple Scada от 07 Июня 2024, 11:37:11
Здравствуйте.

Для работы с дополнительной переменной необходимо использовать свойство переменной VariableEx (https://simple-scada.com/help/script/variableex.html). Также, Вы можете ознакомиться с этим разделом руководства (https://simple-scada.com/help/script/debugscripts.html) - в нем рассмотрены частые ошибки при работе со скриптами, в том числе и ошибки в скриптах по событию OnDataChangeEx (https://simple-scada.com/help/script/debugscripts.html?anchor=errdatachangeex).

Если Вы используете две отдельные Boolean переменные, то можно создать скрипт (https://simple-scada.com/help/script/via-script-editor.html) с типом события "Универсальный скрипт (https://simple-scada.com/help/script/universal-event.html)" и использовать следующий код:
Код: (delphi)
begin
  if Sender is TM_Object then   // проверяем, что Sender это объект
    with Sender as TM_Object do // приводим Sender к типу "TM_Object"
      if (AsBool) or (VariableEx.AsBool) then   // если значение основной или дополнительной переменной объекта равно True, то
        Color := clGreen        // изменить цвет объекта на зеленый
      else                      // иначе
        Color := clRed;         // изменить цвет объекта на красный
end.
Далее назначить этот скрипт (https://clck.ru/3B8SW2) на события "OnDataChange" и "OnDataChangeEx" (https://simple-scada.com/help/script/general-events.html) для трубопровода. Теперь, если одна из переменных будет True, то трубопровод будет зеленым, иначе – красным.
Название: Re: скрипт изменения цвета трубопровода
Отправлено: vasiabel08 от 08 Июня 2024, 07:19:27
Всем большое спасибо, просто в скриптах я пока не сильно разбираюсь)))