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

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

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

Labotrays

  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #780 : 14 Декабря 2018, 05:15:50 »
что за манера вопросом на вопрос отвечать? я спросил - есть или нет? если нет то буду из кнопок городить
« Изменён: 14 Декабря 2018, 11:38:04 от Simple_Scada »

asutpvit

  • Новичок
  • *
  • Сообщений: 48
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #781 : 14 Декабря 2018, 05:45:54 »
если нет то буду из кнопок городить
Простите великодушно ;)
Но Ваш ник и Ваша манера так же отвечать, говорят сами за себя.
П.с. кнопка с фиксацией выполняет роль переключателя. Или вам графический элемент нужен с анимацией.....?

pan2000

  • Постоялец
  • ***
  • Сообщений: 225
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #782 : 14 Декабря 2018, 07:06:46 »
делается для операторов бабулек и высока вероятность принять включено за включить.

При данных условиях вполне подходит переключатель из объекта "Уровень" при условии, что его переменная доступа целого типа со шкалой [0-1].
Процесс переключения заключается в перемещении указателя мыши на движок, захвата движка и его перемещении более чем на половину шкалы, что более сложно, чем просто переместить указатель на объект и нажать ЛКМ.
"Пример" во вложении.

alan54

  • Постоялец
  • ***
  • Сообщений: 145
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #783 : 16 Декабря 2018, 16:22:35 »
Хотел задать свой вопрос, но нашел аналогичный полуторалетней давности и ответ на него.

...При этом мы хорошо понимаем, что описанные Вами функции будут очень полезны даже при решении небольших задач, поэтому пункты 1, 2, 4 (касаемо глобальных классов) и 7 будут реализованы в будущих обновлениях...
Можно узнать, когда они (глобальные процедуры) будут реализованы? Надоело один и тот же кусок кода размножать по нескольким скриптам...
« Изменён: 17 Декабря 2018, 09:40:47 от Simple-Scada »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3210
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #784 : 17 Декабря 2018, 09:41:51 »
alan54, скорее всего в одном из двух ближайших обновлений добавим глобальные модули.

emoxristov

  • Пользователь
  • **
  • Сообщений: 53
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #785 : 24 Декабря 2018, 19:20:07 »
Simple-Scada У меня есть несколько кнопок.
Button123
Button124
Button125
У меня есть один выход PWM  ArduinoSerial0_D2
Как изменить этот скрипт, чтобы получить другое напряжение на выходе ArduinoSerial0_D2 а нет променя цвета.

Код: (delphi)
begin
// Sender - это объект, который вызвал скрипт(например поле, изображение и т.д.)
   if Button123 is TM_Object then     // проверяем, что Sender это объект
     with Button123 as TM_Object do   // приводим Sender к типу "TM_Object"
       case AsInt of               // если значение переменной связанной с объектом равно:
         1..25: Color := clYellow;     // от 1 до 5 - изменить цвет на красный
         26..50: Color := clChartreuse;   // 6 или 7 - изменить цвет на зеленый
         51..255  : Color := clRed;  // 8 - изменить цвет на желтый
       end;
end. 

   Нажатие кнопки Button123 на    ArduinoSerial0_D2 примерно 1волт
   Нажатие кнопки Button124 на    ArduinoSerial0_D2 примерно 2волт
   Нажатие кнопки Button125 на    ArduinoSerial0_D2 примерно 2волт
« Изменён: 24 Декабря 2018, 20:11:17 от Simple_Scada »

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1385
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #786 : 24 Декабря 2018, 20:17:09 »
Если требуется изменять значение переменной, то нужно использовать свойство переменной Value. Например:

Код: (delphi)
begin
  { записываем значение 15 в переменную ArduinoSerial0_D2}
  ArduinoSerial0_D2.Value := 15;
end.

emoxristov

  • Пользователь
  • **
  • Сообщений: 53
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #787 : 25 Декабря 2018, 12:42:43 »
Simple-Scada  скрипт не работает правильно.
Я хочу, чтобы при нажатии кнопки остальные не включались и на выходе имели, например, 1 вольт. Когда я нажимал вторую кнопку, первая выключалась, а вторая - на выходе, например, 2 вольт.

Мне действительно нужна эта опция, пожалуйста, настройте мой проект, который я вам отправляю.

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1385
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #788 : 25 Декабря 2018, 17:36:30 »
Здравствуйте.

У Вас в проекте к кнопкам привязана одна и та же переменная "ArduinoSerial0_D2" и для каждой кнопки написан скрипт по событию OnDataChange, в котором меняется значение той же переменной "ArduinoSerial0_D2". Т.е., при нажатии на любую кнопку будут выполняться все скрипты, так как значение переменной "ArduinoSerial0_D2" изменится. Это неправильно.

Если Вам требуется при нажатии на первую кнопку записать в переменную "ArduinoSerial0_D2" значение 15, при нажатии на вторую кнопку значение 50, на третью 70 и т.д., то это можно сделать без использования скриптов. Оставьте у кнопки только одно состояние и установите для каждой кнопки необходимое значение - см. скриншот во вложении. Проект с примером во вложении.

emoxristov

  • Пользователь
  • **
  • Сообщений: 53
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #789 : 26 Декабря 2018, 11:10:13 »
Simple-Scada
Это именно то, что мне нужно, но мне нужно получить нулевое значение при повторном нажатии кнопки.
Как это можно сделать, но кнопки имеют две позиции, например, когда вы нажимаете один раз, значение равно 75, а при повторном нажатии значение равно нулю?

pan2000

  • Постоялец
  • ***
  • Сообщений: 225
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #790 : 26 Декабря 2018, 16:26:47 »
emoxristov!
 
Возможно Вам подойдет "радиокнопка", в примере два варианта алгоритма:
- не более одной нажатой кнопки (см. этот);
- только одна нажатая кнопка.

Кнопки с фиксацией и управляются битами переменной iButtons, тег кнопки равен битовой маске.
Переменная кнопок модифицируется скриптами по событию "Пользователь кликнул объект мышью"
Код
begin
  iButtons.Value := Sender.Tag and iButtons.AsInt;   //  не более одной нажатой кнопки
// действия по кнопкам
  case iButtons.AsInt of
      . . .
  end;
end.

Код
begin
  iButtons.Value := Sender.Tag;   // только одна нажатая кнопка
// действия по кнопкам
  case iButtons.AsInt of
      . . .
  end;
end.


emoxristov

  • Пользователь
  • **
  • Сообщений: 53
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #791 : 26 Декабря 2018, 21:44:26 »
emoxristov!
 
Возможно Вам подойдет "радиокнопка", в примере два варианта алгоритма:
- не более одной нажатой кнопки (см. этот);
- только одна нажатая кнопка.

Кнопки с фиксацией и управляются битами переменной iButtons, тег кнопки равен битовой маске.
Переменная кнопок модифицируется скриптами по событию "Пользователь кликнул объект мышью"
Код
begin
  iButtons.Value := Sender.Tag and iButtons.AsInt;   //  не более одной нажатой кнопки
// действия по кнопкам
  case iButtons.AsInt of
      . . .
  end;
end.

Код
begin
  iButtons.Value := Sender.Tag;   // только одна нажатая кнопка
// действия по кнопкам
  case iButtons.AsInt of
      . . .
  end;
end.

А где поставил переменная ArduinoSerial0_D2 ?

pan2000

  • Постоялец
  • ***
  • Сообщений: 225
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #792 : 27 Декабря 2018, 04:28:48 »
А где поставил переменная ArduinoSerial0_D2 ?

Присвоение значений переменной ArduinoSerial0_D2:
Код
var i:integer;
begin
  iButtons.Value := Sender.Tag and iButtons.AsInt;   //  не более одной нажатой кнопки
// действия по кнопкам
  case iButtons.AsInt of
    2: i := 15;  // значения взяты из примера Button_without_scripts
    4: i := 50;
    8: i := 75;
   16: i := 200;
  else
    i := 0;
  end;
  ArduinoSerial0_D2.Value := i;
end.

vyacheslav

  • Новичок
  • *
  • Сообщений: 40
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #793 : 17 Января 2019, 12:35:50 »
Добрый день, подскажите как в этом скрипте:
Код: (delphi)
begin
  ReportView('my_client', 'Текущие данные');
end.
вместо определенного клиента, любой клиент нажавший на кнопку сформировать отчет получал его ?
« Изменён: 17 Января 2019, 12:53:35 от Simple_Scada »

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1385
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #794 : 17 Января 2019, 12:55:58 »
Здравствуйте.

Для этого нужно использовать функцию GetClientName, которая возвращает имя клиента, который вызвал скрипт:
Код: (delphi)
begin
  ReportView(GetClientName, 'Текущие данные');
end.