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

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

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

int2246

  • Новичок
  • *
  • Сообщений: 26
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #60 : 08 Апреля 2016, 08:54:07 »
Нет, в данном случае Вы по сути хотите вставить в окно скады другое приложение. Это не получится из-за особенностей отрисовки скады. Добавить такую возможность - можно, но это может привести к появлению недостатков связанных со скоростью и стабильностью работы и добавит в скаду несколько уязвимостей.
Если вы сможете добавить какую возможность то это будет ВАУ  ::) 

deldemo

  • Старожил
  • ****
  • Сообщений: 308
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #61 : 10 Апреля 2016, 11:53:37 »
Здравствуйте.
Не получается реализовать скрипт с координатами мыши. Ошибка при компиляции.



Вопрос ? Что я делаю не так
« Изменён: 21 Июня 2017, 21:27:19 от Simple-Scada »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 2998
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #62 : 10 Апреля 2016, 11:56:28 »
deldemo, Вы всё делаете верно, но некоторое время назад мы исключили функции Mouse_X, Mouse_Y из скриптов (а из справки удалить забыли), т.к. они вернут координаты курсора мыши сервера, а не клиента, что может привести к разным заблуждениям и бессмысленности этих функций.
« Изменён: 10 Апреля 2016, 11:57:44 от Simple-Scada »

deldemo

  • Старожил
  • ****
  • Сообщений: 308
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #63 : 10 Апреля 2016, 12:18:02 »
Жаль, можно было бы первоАпрельские шутки реализовать для операторов (ну естественно не нарушая ТБ)  ;D

Вообще ,конечно если серьезно, то задумка была прикольная. Можно было бы в связки планшета с шаговым двигателем реализовать какой нибудь станочек по художественному вырезанию.(прямо онлайн)
« Изменён: 10 Апреля 2016, 12:33:08 от deldemo »

int2246

  • Новичок
  • *
  • Сообщений: 26
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #64 : 25 Апреля 2016, 10:24:35 »
Здравствуйте, подскажите пожалуйста, можно ли как то сделать воспроизведения собственной аудио записи по событию?

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 2998
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #65 : 25 Апреля 2016, 10:55:23 »
int2246, это будет возможно если мы вынесем в скрипты соответствующие процедуры. Постараемся сделать это в ближайшее время.

int2246

  • Новичок
  • *
  • Сообщений: 26
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #66 : 25 Апреля 2016, 10:56:40 »
спасибо

Evgen4ik

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #67 : 01 Мая 2016, 11:11:23 »
Добрый день! Возник вопрос, Можно ли написать скрипт для того чтобы при превышении параметра (температуры) издавался звуковой сигнал. Извиняюсь возможно за глупый вопрос но совсем недавно в этой теме.

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1173
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #68 : 01 Мая 2016, 11:35:38 »
Для включения звукового сигнала:
У Поля или Уровня, в котором отображается температура переходим в Инспекторе объектов в "События", кликаем два раза ЛКМ на OnDataChange (изменилось значение переменной связанной с объектом) и пишем скрипт:
Код
begin
 // Field1 - поле с которым связанна переменная температуры.
 // Ниже приведены варианты звуковых сообщений - выберите какое требуется Вам.
  case Field1.ValueAsInt of
    20..30: PlayMessageSoundClient(GetClientName);  // проиграть звук сообщения на текущем клиенте, если значение в диапазоне от 20 до 30.
    31..40: PlayWarningSoundClient(GetClientName);  // проиграть звук предупреждения на текущем клиенте, если значение в диапазоне от 31 до 40.
    41..50: PlayAlarmSoundClient(GetClientName);    // проиграть звук аварии на текущем клиенте, если значение в диапазоне от 41 до 50.
  end;
end.

Можно сделать кнопку, которая будет останавливать проигрывание звука:
Ставим кнопку, переходим в события, кликаем по событию OnClick (пользователь кликнул по объекту);
Код
begin
  StopSoundClient(GetClientName); // остановить проигрывание звука на текущем клиенте.
end.
« Изменён: 01 Мая 2016, 14:45:52 от Simple-Scada »

Хитрый

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #69 : 12 Мая 2016, 13:17:13 »
Здравствуйте.
Можно ли написать скрипт так, чтоб при изменении переменной поля, если она меньше определенного значения, то ее значение приравнивалось к нулю и выводилось в поле?
Пробовал писать такой скрипт, но данные в этом же поле не менялись, но при этом по этому условию можно менять данные в другом поле...

Олег

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #70 : 12 Мая 2016, 16:53:32 »
Добрый день!

Подскажите как вывести текущую  время и дату, попробовал из примера руководства но не компилится.
А так же хотелось бы узнать можно как то  реализовать, что бы при нажатии на кнопку не закрывая сеанса(тоесть вся система активна) блокировался экран до введения заданного логина и пароля.

TeNQ

  • Постоялец
  • ***
  • Сообщений: 199
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #71 : 12 Мая 2016, 18:05:48 »
Можно ли написать скрипт так, чтоб при изменении переменной поля, если она меньше определенного значения, то ее значение приравнивалось к нулю и выводилось в поле?
   Попробуйте использовать скрипт по окончанию ввода для этого поля.
   Я создал внутренний тег Test типа Integer. Создал поле Field1. Привязал переменную к этому полю и в Событиях для этого поля выбрал скрипт OnDoneInput
Код
begin
  if Field1.Value < -10 then
    Field1.Value := 0;
end.           
Если вы введете значение меньше -10, то оно будет приравнено к нулю и выведено в поле. Это контроль по вводу с клавиатуры.
   А если значение переменной меняется не с клавиатуры, и вы хотите решить ту же задачу, то используйте скрипт OnDataChange. С тем же кодом.

Цитировать
Подскажите как вывести текущую  время и дату, попробовал из примера руководства но не компилится.
Создал объект Text1. В меню Проект-Скрипты использую скрипт OnSecondTimer
Код
begin
  Text1.Text := DateTimeToStr(Now);
end.     
Т.е. просто преобразую текущее время/дату - Now из формата TDateTime в формат String и присваиваю полю Text объекта Text1 и каждую секунду оно будет обновляться.

Цитировать
А так же хотелось бы узнать можно как то  реализовать, что бы при нажатии на кнопку не закрывая сеанса(тоесть вся система активна) блокировался экран до введения заданного логина и пароля.
А вот это надо в предложения внести. Сейчас если вы вошли в учетную запись, вы из нее никак не выйдете. Только сможете перейти в другую учетку или закрыть клиент.
« Изменён: 12 Мая 2016, 19:22:20 от TeNQ »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 2998
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #72 : 12 Мая 2016, 19:31:13 »
Цитировать
Подскажите как вывести текущую  время и дату, попробовал из примера руководства но не компилится.
Как и написал TeNQ.

Цитировать
Можно ли написать скрипт так, чтоб при изменении переменной поля, если она меньше определенного значения, то ее значение приравнивалось к нулю и выводилось в поле?
Подобные проверки безусловно должны быть сделаны на контроллере. Но если такой возможности нет и нужно сделать именно в скаде, то:

Для внешней переменной (с OPC-сервера):
Можно сделать это по событию OnDataChange объекта, который связан с данной переменной, или по событию OnDoneInput, как предложил TeNQ (это подойдет если переменную меняет именно пользователь).

Для виртуальной переменной:
правильнее делать эту проверку в OneSecondTimer или по событию OnDoneInput, как описано выше. Но по событию OnDataChange такого делать нельзя, т.к. скрипт будет зациклен сам на себя и приведет к плохим последствиям. Описать этот процесс можно так:
  • вы создаете новый объект "O" и связываете его с переменной "V";
  • теперь, когда переменная "V" изменится - будет вызван скрипт OnDataChange объекта "O";
  • если в скрипте вы присвоите переменной "V' другое значение, то скрипт OnDataChange будет вызван снова. т.к. значение переменной изменится;
  • и вот скрипт вызывается и снова меняет значение переменной, что приводит к ещё одному вызову OnDataChange;
  • и так повторяется бесконечно долго
т.к. любое присваивание в виртуальную переменную сейчас приводит к вызову события OnDataChange. Постараемся уйти от этого в ближайшее время.

А вот это надо в предложения внести. Сейчас если вы вошли в учетную запись, вы из нее никак не выйдете. Только сможете перейти в другую учетку или закрыть клиент.
Добавим в скрипты функции авторизации и закрытия сессии в ближайшем или следующем после него обновлении.
« Изменён: 12 Мая 2016, 19:33:21 от Simple-Scada »

deldemo

  • Старожил
  • ****
  • Сообщений: 308
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #73 : 14 Мая 2016, 11:26:47 »
Здравствуйте!
Есть небольшое неудобство при написании скриптов.
Если печатать длинный текст в скрипте (ну например как на скришоте ) он уходит за область и достать его от туда нельзя. А при переносе половины текста на строку ниже (скрин №2) сбивается форматирование в окне где этот текст отображается, ну и в редакторе скриптов как то не эстетично все это смотрится  без подсветки синтаксиса.
Просто у меня ноут +FHD монитор. Иногда приходится работать с экрана ноутбука а там 1366x768 и тут становится не очень комфортно в редакторе .
Вообщем хотелось бы какие то горизонтальные ползунки ну или любой другой вариант для передвижения по экрану в горизонтальном положении. 

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 2998
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #74 : 14 Мая 2016, 11:34:40 »
deldemo, чтобы текст в коде располагался в несколько строк, нужно писать так, как показано на картинке. Также не забывайте, что можно менять размер шрифта, если нужно. Может быть на вашем мониторе удобнее будет работать с более мелким шрифтом.
« Изменён: 14 Мая 2016, 11:36:34 от Simple-Scada »