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

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

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

ООО "БЛС инжинеринг"

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #705 : 10 Сентября 2018, 22:41:30 »
Спасибо работает.

ООО "БЛС инжинеринг"

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #706 : 12 Сентября 2018, 18:32:08 »
Здравствуйте!

Как можно написать скрипт для задачи:
При открытии определённой странице включить по переднему фронту БИТ?
« Изменён: 12 Сентября 2018, 18:33:07 от ООО "БЛС инжинеринг" »

George

  • Новичок
  • *
  • Сообщений: 28
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #707 : 12 Сентября 2018, 19:03:33 »
Добрый день.
Каким образом можно обработать значение, полученное с ОПС-Сервера и отобразить его в поле?
В настоящий момент приходится использовать 2 переменные - одна получает значение из ОПС-Сервера, другая (виртуальная) получает обработанное значение и выводится на экран.
Т.е. создаю скрипт, где выбираю переменную с ОПС-данными и в скрипте указываю виртуальную переменную и какое значение она должна получить...
 Пример моего скрипта:  vvar1(вирт.перем.) := 20/16384 * Tag1(тег с ОПС).  И эту "vvar1" отображаю на экране.

... и так приходится делать с каждой переменной :(

Есть к-либо более грамотное решение такой задачки?

Спасибо.

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 2998
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #708 : 12 Сентября 2018, 22:04:07 »
Как можно написать скрипт для задачи:
При открытии определённой странице включить по переднему фронту БИТ?
У страницы есть событие "OnEnter" которое выполняется каждый раз, когда пользователь переходит на страницу. Для включения бита переменной нужно использовать функцию SetBit, например:
Код: (delphi)
begin
  VarName.Value := SetBit(VarName.AsInt, 3, True); // записать 1 (true) в 4 бит переменной "VarName"     
end.

Пример моего скрипта:  vvar1(вирт.перем.) := 20/16384 * Tag1(тег с ОПС).  И эту "vvar1" отображаю на экране.
Есть к-либо более грамотное решение такой задачки?
Можно обойтись одним универсальным скриптом, но у вас ведь выполняется линейное изменение переменной, т.е. значение тега просто умножается на число 20/16384 = 0,00122. А значит можно обойтись вовсе без скриптов. Допустим Ваш OPC-тег имеет шкалу 0-100 и нужно умножать его на 0,00122. Тогда откройте его для редактирования в Редакторе и на вкладке "Дополнительные" включите режим масштабирования и рассчитайте визуальный минимум и визуальный максимум. Для этого просто берём текущую шкалу 0-100 и умножаем её на 0.00122. Получаем, виз. минимум: 0 * 0.00122 = 0. Виз. максимум: 100 * 0.00122 = 0.122. Теперь скада будет автоматически выполнять пересчет, причем это работает и в обратную сторону - при записи в OPC.
« Изменён: 12 Сентября 2018, 22:53:16 от Simple_Scada »

George

  • Новичок
  • *
  • Сообщений: 28
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #709 : 13 Сентября 2018, 17:24:56 »
Спасибо за ответ...  Вы сказали, что "...Можно обойтись одним универсальным скриптом..."

Если не затруднит, дайте пример универсального скрипта для моего случая...
Спасибо.

 " Для этого просто берём текущую шкалу 0-100 и умножаем её на 0.00122. Получаем, виз. минимум: 0 * 0.00122 = 0. Виз. максимум: 100 * 0.00122 = 0.122. Теперь скада будет автоматически выполнять пересчет, причем это работает и в обратную сторону - при записи в OPC."

Сделал все в точности, как было сказано...   Отображаются не совсем верные данные...  :(
Придется воспользоваться Вашим универсальным скриптом....
Спасибо.

ООО "БЛС инжинеринг"

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #710 : 13 Сентября 2018, 19:39:02 »
Спасибо работает ;)

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 2998
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #711 : 13 Сентября 2018, 21:52:26 »
George, универсальный скрипт все же будет хуже во всём, чем использование визуальной шкалы, для универсального скрипта придется именовать переменные определённым образом и использовать поиск по имени, хотя задачу можно решить без скриптов.

Цитировать
Сделал все в точности, как было сказано... Отображаются не совсем верные данные...
Напишите что именно не так с результатом? Не хватает знаков после запятой? Может быть результат сильно округлён? Вышлите проект (или пример проекта) на support@simple-scada.com в котором расчеты выполняются неверно, мы исправим, если что-то не так.

George

  • Новичок
  • *
  • Сообщений: 28
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #712 : 14 Сентября 2018, 15:48:12 »
Прошу прощения.., был не прав... (были вбиты разные цифры для расчета...)
Все работает должным образом, как Вы и сказали.
Спасибо.

alan54

  • Постоялец
  • ***
  • Сообщений: 145
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #713 : 25 Сентября 2018, 17:53:22 »
Недавно начал осваивать демо-версию Simple-Scada. Перелопатил все руководства, но не нашел ответа на вопрос такого характера. В проекте я создал переменную vrCounter (счетчик) с архивацией, но каждый раз при запуске проекта он начинает считать с нуля, а хотелось бы с последнего заархивированного значения. Есть наверно простое решение, но в Delphi я новичок. Подскажите, плз, чтобы не изобретать велосипед.

Victor_P.

  • Пользователь
  • **
  • Сообщений: 69
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #714 : 25 Сентября 2018, 19:55:49 »
...а хотелось бы с последнего заархивированного значения...
При выходе сохраняете значение в файл или БД, при запуске восстанавливаете значение.

alan54

  • Постоялец
  • ***
  • Сообщений: 145
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #715 : 25 Сентября 2018, 20:02:39 »
Спасибо, до этого я додумался сам. Но неужели нет более красивого решения, ведь переменная архивируется. Почему она обнуляется, ведь в скрипте она не переобъявляется?
Код: (delphi)
begin
  if Field1.Variable.AsInt = 1 then   
    vrCounter.Value := vrCounter.Value +1;
    Field7.Text := IntToStr(vrCounter.Value);
end.     
 

« Изменён: 26 Сентября 2018, 09:35:59 от Simple_Scada »

Victor_P.

  • Пользователь
  • **
  • Сообщений: 69
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #716 : 26 Сентября 2018, 07:45:26 »
Подозреваю, что при запуске проекта на сервере все переменные инициализируются, а с retentive переменными симплскада работать не умеет.
Кстати, было бы не плохо добавить свойство retentive переменным и хранить все их значения в каком-то зашифровааном файле в папке проекта.

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 2998
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #717 : 26 Сентября 2018, 09:58:25 »
Цитировать
ведь переменная архивируется. Почему она обнуляется, ведь в скрипте она не переобъявляется?
Архивация используется для отображения трендов по переменным и не влияет на значение переменной после перезапуска.

Цитировать
Кстати, было бы не плохо добавить свойство retentive переменным
В ближайших обновлениях добавим возможность инициализации внутренних переменных любым значением при старте, а также возможность восстановления значения.

alan54

  • Постоялец
  • ***
  • Сообщений: 145
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #718 : 27 Сентября 2018, 18:26:58 »
Еще вопрос - пытаюсь создать свой отчет в демо-версии, но похоже, что это невозможно. Так?

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 2998
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #719 : 27 Сентября 2018, 20:39:17 »
Еще вопрос - пытаюсь создать свой отчет в демо-версии, но похоже, что это невозможно. Так?
В двух демо-версиях можно протестировать систему отчетов. В версии DEMO-64 можно построить отчет не более 5 раз после каждого перезапуска сервера скады. В версии DEMO-TIME не более 32 раз. Возможно у Вас отчет просто содержит какие-то ошибки и его не удается построить. Если это так, то Вы должны увидеть соответствующие сообщения о неудачном построении в журнале сервера.
« Изменён: 27 Сентября 2018, 20:43:22 от Simple_Scada »