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

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

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

deldemo

  • Старожил
  • ****
  • Сообщений: 308
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #300 : 11 Мая 2017, 10:02:42 »
Добрый день AllReal.
А Вы заданные шкалы прикрепили к переменным?
Сначала нужно создать шкалу с тем диапазоном который Вам нужен.



Затем прикрепить вновь созданную шкалу к нужнаму тегу.
« Изменён: 21 Июня 2017, 21:28:29 от Simple-Scada »

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1178
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #301 : 11 Мая 2017, 10:06:28 »
Здравствуйте, AllReal!

Проблема может быть в:
  • неправильно выбранной шкале переменной. Вы перезапускали проект на сервере после изменения шкалы переменной?
  • неправильном использовании масштабирования или сдвига запятой.
  • перезаписи переменной из скриптов.
Если не разберетесь пришлите проект на support@simple-scada.com с указанием проблемной переменной.
« Изменён: 11 Мая 2017, 10:08:15 от Simple_Scada »

AllReal

  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #302 : 11 Мая 2017, 10:31:29 »
может быть проблема, в шкале? у меня не выбрана единица измерения, если да, то что выбрать? диапазон от -70000 до 70000

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1178
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #303 : 11 Мая 2017, 10:32:47 »
Нет, дело не в единице измерения. Пришлите проект на support@simple-scada.com с указанием проблемной переменной.

AllReal

  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #304 : 11 Мая 2017, 10:45:09 »
Спасибо, отправил.

igorigor07

  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #305 : 14 Мая 2017, 16:01:38 »
Добрый день!

Подскажите, как можно менять положение окна (x и y) из скрипта? Если это свойство "read only", то вопрос почему? Можно дать возможность его все-таки задавать для создания универсальных окон, появляющихся в нужном месте при нажатии мышкой на объекте?

Использую пока свойство положения "по координатам объекта", но вопрос актуален...
« Изменён: 14 Мая 2017, 16:04:52 от igorigor07 »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3000
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #306 : 14 Мая 2017, 22:26:03 »
Здравствуйте.

Цитировать
Подскажите, как можно менять положение окна (x и y) из скрипта? Если это свойство "read only", то вопрос почему?
В будущих обновлениях откроем данные свойства для записи.

LIM_IA

  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #307 : 17 Мая 2017, 07:22:53 »
Здравствуйте!

Ситуация следующая - есть некое командное слово, в нем, по нажатию кнопки, должны менять два бита. Пишу следующий код:
Код
1 begin
2  if BUT_bit2_3.Value
3   then
4    begin
5     CMD_RUN.Value:=SetBit(CMD_RUN.Value,2,true) ;
6     CMD_RUN.Value:=SetBit(CMD_RUN.Value,3,true) ;
7    end
8  else
9    begin
10   CMD_RUN.Value:=SetBit(CMD_RUN.Value,2,False) ;
11   CMD_RUN.Value:=SetBit(CMD_RUN.Value,3,False) ;
12  end
13 end.

При запуске клиента принципиально игнорируются строки 5 и 10.
Переменная BUT_bit2_3 - локальная и связана с кнопкой
Переменная CMD_RUN - подтягивается с OPC сервера и является командным словом.

Подскажите почему не отрабатывает составной оператор "begin...end"?
« Изменён: 17 Мая 2017, 07:30:48 от LIM_IA »

godygadu

  • Новичок
  • *
  • Сообщений: 42
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #308 : 17 Мая 2017, 08:18:56 »
Здравствуйте!

Ситуация следующая - есть некое командное слово, в нем, по нажатию кнопки, должны менять два бита. Пишу следующий код:
Код
1 begin
2  if BUT_bit2_3.Value
3   then
4    begin
5     CMD_RUN.Value:=SetBit(CMD_RUN.Value,2,true) ;
6     CMD_RUN.Value:=SetBit(CMD_RUN.Value,3,true) ;
7    end
8  else
9    begin
10   CMD_RUN.Value:=SetBit(CMD_RUN.Value,2,False) ;
11   CMD_RUN.Value:=SetBit(CMD_RUN.Value,3,False) ;
12  end
13 end.

При запуске клиента принципиально игнорируются строки 5 и 10.
Переменная BUT_bit2_3 - локальная и связана с кнопкой
Переменная CMD_RUN - подтягивается с OPC сервера и является командным словом.

Подскажите почему не отрабатывает составной оператор "begin...end"?

Проверьте синтаксис.

LIM_IA

  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #309 : 17 Мая 2017, 08:34:39 »
godygadu, добрый день!

Синтаксис верный, потому что компилятор ошибок не выдаёт. Если вы копируете код то копируйте без нумерации строк(я их написал для наглядности описания), то есть код выглядит так:
Код
 begin
  if BUT_bit2_3.Value
   then
    begin
     CMD_RUN.Value:=SetBit(CMD_RUN.Value,2,true) ;
     CMD_RUN.Value:=SetBit(CMD_RUN.Value,3,true) ;
    end
  else
   begin
   CMD_RUN.Value:=SetBit(CMD_RUN.Value,2,False) ;
   CMD_RUN.Value:=SetBit(CMD_RUN.Value,3,False) ;
  end
end.

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3000
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #310 : 17 Мая 2017, 09:09:37 »
Здравствуйте.

Переменная CMD_RUN приходит с OPC-сервера. Соответственно и смена значения происходит через OPC-сервер. Поэтому, когда Вы пишите "CMD_RUN.Value := SetBit(CMD_RUN.Value,2,true);" на OPC-сервер отправляется "запрос" на присвоение переменной нового значения и реальное изменение значения произойдет с мелкой задержкой. Поэтому можно в начале скрипта получить значение CMD_RUN в локальную переменную скрипта и в скрипте работать с ней. А в конце скрипта выполнить запрос на присвоение. Такой способ также сократит количество запросов к OPC-серверу.

Правильный код будет таким:
Код
var
  aValue: Integer;
begin
  aValue := CMD_RUN.AsInt;

  if BUT_bit2_3.Value then
  begin
    aValue := SetBit(aValue, 2, true);
    aValue := SetBit(aValue, 3, true);
  end else
    begin
      aValue := SetBit(aValue, 2, False);
      aValue := SetBit(aValue, 3, False);
    end;

  CMD_RUN.Value := aValue;
end.

В будущем постараемся сделать так, чтобы все операции с внешними переменными в ходе скрипта делались в оперативной памяти и выполнялось одно присвоение после выполнения скрипта.
« Изменён: 17 Мая 2017, 09:33:08 от Simple-Scada »

LIM_IA

  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #311 : 17 Мая 2017, 12:40:15 »
Спасибо, идею понял, заработало!

теперь усложнил код:
Код
var
  aValue: Integer;
begin
  aValue := CMD_RUN.AsInt;

  if
   BUT_bit1_2.Value
   then
    begin
      aValue := SetBit(aValue, 1, true);
      aValue := SetBit(aValue, 2, true);
      Button11.Enabled:=true;
      image2.Color:=RGB(255,0,0);
      Button11.Color:=RGB(255,0,0);
    end
  else
   begin
     aValue := SetBit(aValue, 1, False);
     aValue := SetBit(aValue, 2, False);
     Button11.Enabled:=false;
     image2.Color:=RGB(0,100,0) ;
     Button11.Color:=RGB(0,100,0) ;
  end ;

       CMD_RUN.Value :=   aValue;
end.

Почему не меняется цвет кнопки  Button11.Color ? причем цвет картинки image2.Color меняется нормально

Teodor

  • Старожил
  • ****
  • Сообщений: 256
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #312 : 17 Мая 2017, 12:52:36 »
А вы попробуйте поменять цвет кнопки в нужном состоянии (нажата/отпущена).

Button11.States[0].Color:=RGB(0,100,0) ;
Button11.States[1].Color:=RGB(0,100,100) ;
 

LIM_IA

  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #313 : 17 Мая 2017, 13:00:12 »
Teodor, здравствуйте!

Идея немного в другом, есть две кнопки Button10 и Button11. Когда НЕнажата Button10 блокируется  Button11, и я хочу что б это сопровождалось цветом. То есть когда Button11 заблокирована что б она была красной, а когда разблокирована зеленой(цвет образно, можно любой другой)

deldemo

  • Старожил
  • ****
  • Сообщений: 308
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #314 : 17 Мая 2017, 13:31:59 »
Здравствуйте. Как ранее уже сказал Teodor необходимо указать в каком состоянии кнопки будет изменятся ее цвет.
Код: (delphi)
var
  aValue: Integer;
begin
  aValue := CMD_RUN.AsInt;

  if BUT_bit1_2.Value then
    begin
      aValue := SetBit(aValue, 1, true);
      aValue := SetBit(aValue, 2, true);
      Button11.Enabled:=true;
      image2.Color:=RGB(255,0,0);
      Button11.States[0].Color:=RGB(255,0,0);
    end
  else
   begin
     aValue := SetBit(aValue, 1, False);
     aValue := SetBit(aValue, 2, False);
     Button11.Enabled:=false;
     image2.Color:=RGB(0,100,0) ;
     Button11.States[0].Color:=RGB(0,100,0) ;
  end ;

   CMD_RUN.Value :=   aValue;
end.
« Изменён: 28 Ноября 2018, 11:22:10 от Simple-Scada »