Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Вопросы по скриптам в Simple-Scada 2  (Прочитано 208696 раз)

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 2706
    • Просмотр профиля
    • Simple-Scada
Вопросы по скриптам в Simple-Scada 2
« : 29 Января 2016, 15:19:20 »
В этой теме будут размещаться примеры с использованием скриптов Simple-Scada 2 и подробным описанием. Задавайте вопросы, если что-то непонятно.
« Изменён: 07 Марта 2017, 09:58:40 от Simple_Scada »

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 876
    • Просмотр профиля
Рассмотрим случай когда нам нужно изменять цвет объекта при изменении значения связанной с ним переменной.
  • В свойстве "Переменная" объекта выбираем нужную нам переменную.
  • В инспекторе объектов переходим на вкладку События и дважды кликаем по событию OnDataChange (изменение значения переменной связанной с объектом).
  • Пишем скрипт. Можно использовать if... then если у Вас будет одно условие, если условий несколько рекомендуем использовать case...of.  например для изменения цвета поля:
Код: (delphi)
begin
  // цвет можно указывать в виде констант цветов (например clRed), в виде HTML кода (например $FFFF00), в виде RGB (например RGB(0,0,255));
  case Field1.ValueAsInt of                  // если значение переменной поля равно:
    1..3: Field1.Color := clRed;             // от 1 до 3 - изменить цвет поля на красный;
    4   : Field1.BorderColor := clGreen;     // 4 - изменить цвет рамки поля на зеленый;
    5   : Field1.FontColor := $FFFF00;       // 5 - изменить цвет шрифта поля на желтый;
    6   : Field1.Color := RGB(0,0,255);      // 6 - изменить цвет поля на синий;
  end;
end.

Если Вам необходимо, например, чтобы множество однотипных объектов меняли цвет по одинаковым условиям не обязательно писать скрипт для каждого объекта отдельно. Для этого необходимо:
  • В свойстве "Переменная" одного из объектов выбрать требуемую переменную.
  • В инспекторе объектов перейти на вкладку События и кликнуть по событию OnDataChange.
  • Написать скрипт такого вида:
Код: (delphi)
begin
   // Sender - это тот объект который вызвал скрипт
   if Sender is TM_Object then                   // если Sender это компонент то(например - уровень, поле и т.д.)
       case TM_Object(Sender).ValueAsInt   of    // если значение переменной связанной с объектом равно:
           1..5: Sender.Color := clDarkBlue;     // от 1 до 5, то изменить цвет на темно синий
           6, 7: Sender.Color := clGray;         // 6 или 7 - изменить цвет на серый
           8   : Sender.Color := clYellow;       // 7 - изменить цвет на желтый
       end;
end.

Теперь можно любому объекту выбрать этот скрипт, для этого:
1. У любого объекта через инспектор объектов переходим на вкладку "События" .
2. В свойстве OnDataChange выбираем из списка наш созданный скрипт.

Теперь все объекты у которых в событии OnDataChange мы выбрали наш скрипт будут менять свой цвет в соответствии с условиями скрипта. Чтобы последний способ работал у Вас должна быть версия не позднее 29.01.2015.
« Изменён: 26 Мая 2018, 11:00:07 от Simple-Scada »

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 876
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #2 : 31 Января 2016, 10:52:34 »
Добавили несколько видеоуроков по созданию скриптов.  Задавайте вопросы если что-то непонятно.

Рассмотрено создание простых скриптов:


Рассмотрено создание универсального скрипта:
« Изменён: 31 Января 2016, 11:02:18 от Simple_Scada »

Andrey1883

  • Пользователь
  • **
  • Сообщений: 60
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #3 : 01 Февраля 2016, 14:18:01 »
Может глупый вопрос, но все же...А как помигать одним цветом?

toreto

  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #4 : 01 Февраля 2016, 15:29:24 »
По событию  OnDataChange пробую скрывать изображение с помощью прозрачности(Alpha) работает, а вот через событие видимость(Visible) нет.

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 2706
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #5 : 01 Февраля 2016, 17:16:55 »
Цитировать
через событие видимость(Visible) нет.
Проверяем.

Цитировать
Может глупый вопрос, но все же...А как помигать одним цветом?
В текущей версии мигания нет. Но мы добавим всем объектам новое свойство для мигания.
« Изменён: 01 Февраля 2016, 17:42:51 от Simple-Scada »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 2706
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #6 : 01 Февраля 2016, 17:42:41 »
Цитировать
а вот через событие видимость(Visible) нет.
Проверили, все работает вот так (изображение скрывается при изменении переменной, которая с ним связана):
Код: (delphi)
begin
  Image1.Visible := False;
end.
Можете написать подробнее о последовательности Ваших действий? Вы не забыли выбрать Переменную объекту, у которого пишите OnDataCahnge скрипт?
« Изменён: 26 Мая 2018, 10:19:37 от Simple-Scada »

toreto

  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #7 : 01 Февраля 2016, 17:58:18 »
Все работает, вопрос закрыт, мой косяк. Другой вопрос в окнах почему то скрипты не работают.

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 2706
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #8 : 01 Февраля 2016, 17:59:39 »
Какие именно? По какому событию? Если OnShow и OnClose, то они просто ограничены beta-версией

toreto

  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #9 : 01 Февраля 2016, 18:03:51 »
Про эти события я понял что ограничены, а не получается к примеру смена цвета по событию OnDataCahnge

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 876
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #10 : 01 Февраля 2016, 19:08:10 »
Теперь понятно. Да, действительно не работает - исправим!

TeNQ

  • Постоялец
  • ***
  • Сообщений: 199
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #11 : 01 Февраля 2016, 19:51:17 »
Событие OnDataChange привязано к конкретной переменной и объекту, а если мне надо использовать несколько переменных по изменению которых нужно изменить свойство объекта? Например, отобразить цвет красный на кнопке, если переменные изменились и равны M0= 1 или M1=1 соответственно  и цвет серый, если они равны 0. Или просто крутить в OnSecondTimer условие проверки и там менять цвет?

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 2706
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #12 : 01 Февраля 2016, 20:02:44 »
Самый правильный вариант - выделить под эту задачу третью переменную на контроллере. Эта переменная должна в итоге принимать только два состояния, для красного цвета (допустим значение 0) и для серого (допустим значение 1). Вот эту переменную и нужно использовать в скаде.

Но, к примеру, если Вы не можете сделать это на контроллере, то Вы должны создать виртуальную переменную в скаде и в OnSecondTimer описать условия по которым она будет принимать эти два состояния (как в примере выше). Затем эту переменную Вы связываете со всеми объектами, которые должны менять цвет и описываете смену цвета в OnDataChange. Для этого лучше всего написать один универсальный скрипт и поставить его всем объектам в OnDatachange.

На контроллере это делать правильнее. Вообще, по возможности, нужно делать так, чтобы скада работала с переменными состояний, а не с переменными из которых нужно вычислять состояния. Если такой возможности нет, то тогда уже использовать вариант 2.
« Изменён: 01 Февраля 2016, 20:03:56 от Simple-Scada »

TeNQ

  • Постоялец
  • ***
  • Сообщений: 199
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #13 : 01 Февраля 2016, 20:29:18 »
Спасибо, подробно и понятно, как в учебнике)

Andrey1883

  • Пользователь
  • **
  • Сообщений: 60
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #14 : 02 Февраля 2016, 09:19:39 »
Цитировать
В текущей версии мигания нет. Но мы добавим всем объектам новое свойство для мигания.

Спасибо!!Это свойство очень пригодится!!