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

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

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

pan2000

  • Постоялец
  • ***
  • Сообщений: 226
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1275 : 13 Сентября 2021, 13:13:32 »
   Здравствуйте.
В такой реализации аварийное сообщение о потере связи генерируется постоянно (в течении всего времени отсутствия связи).
Подскажите как реализовать однократное появление сообщения при потере связи и подобное сообщение когда связь восстановилась?
В качестве флажка однократного действия можно использовать свойство ping_plc.color
Код: (delphi)
begin
  if pingdata.Result then begin
    if ping_plc.color <> clgreen then <действия при восстановлении связи>;
    ping_plc.color := clgreen;
  end
  else begin
    if ping_plc.color <> clred then AddMessage (Now, mkAlarm, 'Отсутствие связи с контроллером', true, false);
    ping_plc.color := clred;
  end;
end.
« Изменён: 13 Сентября 2021, 13:38:07 от pan2000 »

KungLao

  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1276 : 13 Сентября 2021, 14:45:11 »
Спасибо, все работает именно так как нужно.

strs

  • Новичок
  • *
  • Сообщений: 36
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1277 : 14 Сентября 2021, 09:24:48 »
Вопрос к разработчикам.
Имеется несколько 16-битных переменных, которые нужно распаковать на булевы через функцию GetBit. Скажите пожалуйста, как будет рациональнее по использованию вычислительных ресурсов - сделать для каждой по отдельному скрипту "изменились переменные", либо сделать один скрипт и проверять, какая изменилась через "if variable.Name = 'xxx' "?

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1400
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1278 : 15 Сентября 2021, 11:24:48 »
Здравствуйте.

Компоненты "Кнопка" и "Флажок" могут работать с битами напрямую - см. свойство "Бит". Поэтому, если требуется работа с битами в данных компонентах, то в этом случае можно обойтись без скриптов. Сообщения также могут работать с битами переменной.

Если требуется распаковать переменные на биты, например для изменения цвета объекта, скорости анимации и других целей, то лучше всего использовать однотипные имена переменных/объектов и один скрипт "Изменились переменные" с применением функций поиска, к примеру как описано в этом сообщении. Данный способ будет наиболее производительным.
« Изменён: 15 Сентября 2021, 13:18:14 от Simple-Scada »

strs

  • Новичок
  • *
  • Сообщений: 36
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1279 : 01 Октября 2021, 16:28:15 »
Здравствуйте!

Подскажите, можно ли перебрать несколько однотипных переменных (объявленных в редакторе переменных) по имени в цикле?

Например, есть переменные temp0, temp1, temp2 ... temp23 типа integer, нужно в цикле for сложить их значения.

Массивы ведь на запись использовать нельзя, или я путаю?

Simple Scada

  • Глобальный модератор
  • *****
  • Сообщений: 285
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1280 : 01 Октября 2021, 20:54:06 »
Например:
Код: (delphi)
var
  I: integer;
  Sum: Int64;
  aVar: TM_Variable;
begin
  Sum := 0;
  for I := 0 to 23 do
  begin
    aVar := GetVariableByName('temp' + IntToStr(I));
    if aVar <> nil then
      Sum := Sum + aVar.AsInt;
  end;

  tempSum.Value := Sum;
end.
В результате выполнения данного скрипта, в переменную "tempSum", запишется сумма переменных temp0 ... temp23.

Про массивы см. по ссылке.

« Изменён: 01 Октября 2021, 23:01:39 от Simple-Scada »

strs

  • Новичок
  • *
  • Сообщений: 36
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1281 : 04 Октября 2021, 08:16:31 »
Понял, спасибо!
« Изменён: 06 Октября 2021, 11:02:27 от Simple_Scada »

2s19

  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1282 : 07 Октября 2021, 11:35:50 »
Товарищи помогите пожалуйста дилетанту, есть шкала от одного до 100 надо чтобы при изменении на 20 нажималось пять кнопоккрутил вертел шаблонные скрипты никак не могу кнопке значение 1 присвоить жалуется при компиляции. Хотел что то типа этого изобразить. Но пальцы кривые, извилины ровные...
begin
  case Level1.AsInt of                   // если значение переменной поля равно:
    1..20  Button1.Value = 1 else Button1.value= 0;         
    21..40   : Button2.Value = 1 else Button2.value= 0; ; 
    41..60  : Button3.Value = 1 else Button3.value= 0; ;   
    61..80   : Button4.Value = 1 else Button4.value= 0; ; 
    81..100 : Button5.Value = 1 else Button5.value= 0; ;
  end;
end.

Victor_P.

  • Пользователь
  • **
  • Сообщений: 69
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1283 : 07 Октября 2021, 13:34:05 »
2s19, стандартный компилятор своим заменил? Если нет, то в case никаких else нет и небыло никогда.
Присваивай всем кнопкам 0, а потом по кейсу нужным ставь 1.

Botsmall

  • Новичок
  • *
  • Сообщений: 39
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1284 : 07 Октября 2021, 16:03:00 »
Добрый день. Возник вопрос.

Имеется шаблон, в котором есть картинка, анимация которой происходит один раз по нажатию на нее.
Написал универсальный скрипт: при нажатии frame = 0; animspeed = 40;
Свойства картинки: циклиность 0, кадр 0.
Все работает, но проблема в том, что если нажал на изображение, после чего перешел на другую страницу и вернулся обратно,
произойдет 1 цикл анимации, что и логично т.к. при первом нажатии я изменил animspeed = 40;

Как красиво решить проблему?

pan2000

  • Постоялец
  • ***
  • Сообщений: 226
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1285 : 07 Октября 2021, 22:45:19 »
   Здравствуйте.

Все работает, но проблема в том, что если нажал на изображение, после чего перешел на другую страницу и вернулся обратно,
произойдет 1 цикл анимации, что и логично т.к. при первом нажатии я изменил animspeed = 40;
Установить свойство animspeed в 0 можно при уходе со страницы. Сообщить экземпляру шаблона об этом можно посредством переменной, изменяющейся (доп.переменная) или вызывая событие по изменению основной при уходе со страницы.
Пример во вложении. 

Botsmall

  • Новичок
  • *
  • Сообщений: 39
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1286 : 08 Октября 2021, 11:24:06 »
Спасибо за ответ.
Проблема в том, что я использую шаблон, и эта картинка уже использует свойства "переменная" и "доп. переменная" в собственных нуждах.

pan2000

  • Постоялец
  • ***
  • Сообщений: 226
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1287 : 08 Октября 2021, 12:22:30 »
Это не проблема. :)  Можно не использовать переменные изображения, но добавить в шаблон объект связанный с переменной сброса animspeed. Правда для версий не младше  2.5.8.0 См. вложение.

Botsmall

  • Новичок
  • *
  • Сообщений: 39
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1288 : 08 Октября 2021, 12:36:10 »
Цитировать
Это не проблема. :)  Можно не использовать переменные изображения, но добавить в шаблон объект связанный с переменной сброса animspeed. Правда для версий не младше  2.5.8.0 См. вложение.
Ого, вот оно как. Понял логику. Спасибо большое.
« Изменён: 09 Октября 2021, 21:51:28 от Simple-Scada »

Botsmall

  • Новичок
  • *
  • Сообщений: 39
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1289 : 12 Октября 2021, 12:26:40 »
Еще глупый вопрос. Можно ли скрыть целиком шаблон, встроенный в окно?