Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: EvgeniySM от 13 Октября 2020, 07:08:31

Название: Скрипт по событию OnDataChangeEx
Отправлено: EvgeniySM от 13 Октября 2020, 07:08:31
Здравствуйте.
Никак не могу понять, как работает и работает ли вообще выполнение скриптов по событию OnDataChangeEx. Создаю 2 переменные типа BOOL. Создаю объект Shape (квадратную фигуру). Одну из переменных назначаю этой фигуре как основную, другую как дополнительную. Пишу 2 универсальных скрипта, один для поворота фигуры на 45 градусов, другой - на изменение цвета в зависимости от значений привязанных переменных. Назначаю эти скрипты на события OnDataChange и OnDataChangeEx Ниже привожу код скриптов:
Изменение угла поворота:
Код: (delphi)
begin
If Sender is TM_Object then
 with Sender as TM_Object do
  if AsInt = 1 Then
   Angle := 45
    Else
     Angle := 0;
end.

Изменение цвета:
Код: (delphi)
begin
If Sender is TM_Object then
 with Sender as TM_Object do
  if AsInt = 1 Then
   Color := ClRed
    Else
     Color := RGB(191,191,191);
end.
По моей логике должно работать так: изменяю основную переменную - фигура должна поворачиваться, изменяю дополнительную - фигура должна менять цвет. Эти события не должны зависеть друг от друга и срабатывать всякий раз, когда я меняю любую из привязанных переменных.

Вывожу на лист проекта эту фигуру и два поля, где можно менять привязанные переменные. При изменении основной переменной, которая отвечает за поворот фигуры скрипт отрабатывает без замечаний. А вот при изменении дополнительной переменной скрипт не работает совсем. Но однако, если я один раз меняю основную переменную, потом дополнительную, скрипт по событию OnDataChangeEx выполняется  один раз. Снова меняю дополнительную переменную - скрипт по событию OnDataChangeEx не выполняется. Что я делаю не так?

Версия SS2 - 2.3.6.7

Разобрался, немного почитав форум, в скрипте на событие OnDataChangeEx надо проверять условие на изменение дополнительной переменной, вот так:  if VariableEx.AsInt = 1 Then ... Тогда всё будет работать.
Название: Re: Скрипт по событию OnDataChangeEx
Отправлено: Simple_Scada от 13 Октября 2020, 09:25:57
Здравствуйте.

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