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

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

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

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1165
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1305 : 01 Ноября 2021, 16:38:10 »
Да, масштабирование через настройку переменной подходит только для внешних переменных. В скриптах для этих целей нужно использовать функцию Scaling.

pan2000

  • Постоялец
  • ***
  • Сообщений: 170
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1306 : 02 Ноября 2021, 11:51:56 »
   Здравствуйте.

...Наверное, более элегантно мою задачу не решить  ???
Разобрать переменную на поля можно посредством пользовательского типа данных - записи:
Код: (delphi)
type TwoSmallint = record  SmallintLo, SmallintHi: Smallint; end;
var
  temp: TwoSmallint;
begin
    Longword(@temp)^ := LongWord(dwInput.AsInt);  // копирование "байт в байт" в переменную temp
    smiHi.Value := temp.SmallintHi;               // разбор данных по структуре записи
    smiLo.Value := temp.SmallintLo;
end.
Пример во вложении.

teplocom

  • Новичок
  • *
  • Сообщений: 40
  • с чувством уверенности в завтрашнем дне
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1307 : 02 Ноября 2021, 14:42:54 »
Спасибо, красиво получилось!
« Изменён: 03 Ноября 2021, 15:24:51 от Simple_Scada »

vigorts

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1308 : 04 Ноября 2021, 20:37:49 »
Здравствуйте! Подскажите пожалуйста.
В скрипте "изменились переменные"  есть битовая переменная, по изменению отправляется сообщение в телеграмм.
Как распаковать на булевые, что бы по их изменению отправлялись сообщения.
От программирования далёк, только начал вникать. Хорошо бы пример. Спасибо!

vigorts

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1309 : 05 Ноября 2021, 12:31:51 »
Разобрался.
« Изменён: 05 Ноября 2021, 21:39:08 от Simple_Scada »

Botsmall

  • Новичок
  • *
  • Сообщений: 39
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1310 : 11 Ноября 2021, 17:11:05 »
Добрый день. Вопрос немного похож на предыдущий в этой ветке.
Как с помощью внешней переменной типа Integer изменять свойство видимости Alpha типа Byte (С учетом масштабирования).
Не могу разобраться, как привести все к одному типу данных в пределах одного скрипта.

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1165
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1311 : 12 Ноября 2021, 22:48:29 »
Здравствуйте.

В каком диапазоне меняется переменная Integer? Если в том же, что и прозрачность 0-255, то можно записывать значение переменной напрямую в свойство Alpha. Если переменная Integer меняется в другом диапазоне, то можно использовать функцию Scaling, задав в ней диапазон в котором изменяется переменная Integer в качестве исходной шкалы и 0-255 в качестве целевой шкалы. В примере ниже переменная Integer изменяется в диапазоне 0-1000, используется скрипт по событию OnDataChange и переменная привязана к основной переменной объекта.
Код: (delphi)
begin
  if Sender is TM_Object then
    with Sender as TM_Object do
      Alpha := Trunc(Scaling(1000,0,255,0, Variable.AsInt));
end.
Это универсальный скрипт, его можно использовать для других подобных объектов, назначив на событие OnDataChange.

teplocom

  • Новичок
  • *
  • Сообщений: 40
  • с чувством уверенности в завтрашнем дне
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1312 : 20 Ноября 2021, 22:58:06 »
Приветствую.
Вопрос такой: Есть ли возможность написать скрипт перехода на страницу "Активных сообщений", подобно переходу:
Код: (delphi)
begin
  GoToMessagesAll; // переход в меню сообщений на всех клиентах                           
end.

И еще такое заметил (ни на что не влияет в принципе):
Такое не компилируется. При сохранении проекта выдает ошибку компиляции скриптов - не совпадение типов Integer и VOID в строке 3:
Код: (delphi)
begin
Text1.Text:=IntToStr(SysGet(SYS_UNCONFIRMED_COUNT)); //кол-во неподтвержденных сообщений
Text2.Text:=IntToStr(SysGet(SYS_ACTIVE_COUNT));  //кол-во активных сообщений
end.

А вот так все компилируется и работает:
Код: (delphi)
begin
Text1.Text:=IntToStr(SysGet(0)); // или SYS_UNCONFIRMED_COUNT  в аргументе, не важно
Text2.Text:=IntToStr(SysGet(1)); // допускает только const=1. SYS_ACTIVE_COUNT - ошибка при сохранении проекта
end.
« Изменён: 20 Ноября 2021, 23:40:41 от teplocom »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 2996
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1313 : 21 Ноября 2021, 20:20:44 »
Здравствуйте.

Сейчас нельзя перейти в группу "Активные" используя скрипты. В ближайшее обновление добавим такую возможность.

Цитировать
И еще такое заметил (ни на что не влияет в принципе):
Такое не компилируется. При сохранении проекта выдает ошибку компиляции скриптов - не совпадение типов Integer и VOID в строке 3:
У нас корректно компилируются и работают обе версии. Видимо причина в чем-то другом. Может быть в проекте есть объект (или процедура/функция) с именем как у константы SYS_ACTIVE_COUNT. Просьба выслать на support@simple-scada.com текущую версию проекта в которой воспроизводится проблема, тогда мы сможем указать точную причину из-за которой код не компилируется.

teplocom

  • Новичок
  • *
  • Сообщений: 40
  • с чувством уверенности в завтрашнем дне
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1314 : 22 Ноября 2021, 09:04:54 »
У нас корректно компилируются и работают обе версии. Видимо причина в чем-то другом. Может быть в проекте есть объект (или процедура/функция) с именем как у константы SYS_ACTIVE_COUNT.
Все верно, название скрипта было: SYS_ACTIVE_COUNT
 :-[

indevr

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1315 : 26 Ноября 2021, 14:40:20 »
Здравствуйте.
Необходим помощь со скриптом, который возвращает значение вчерашнюю дату при открытии проекта.
Использовал из примера скрипт :
Код: (delphi)
var
  aDate: TDateTime;
begin
  aDate:= Tomorrow;
end.
значение в поле показывает текущую дату.
« Изменён: 26 Ноября 2021, 15:15:08 от Simple_Scada »

Simple Scada

  • Глобальный модератор
  • *****
  • Сообщений: 152
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1316 : 26 Ноября 2021, 20:49:03 »
Здравствуйте.
Необходим помощь со скриптом, который возвращает значение вчерашнюю дату при открытии проекта.

Можно сделать без использования скриптов. Для этого нужно использовать внутреннюю переменную созданную через редактор переменных с типом данных "DateTime" и указать в "Начальное значение" "Yesterday"(Возвращает предыдущий день). Затем привязать эту переменную к необходимому полю. См. скриншот во вложении.

Или использовать скрипт на событие "Запуск проекта". Если "Поле" связано с переменной типа "DateTime", то скрипт будет такой:
Код: (delphi)
begin
  vrDate.Value := Yesterday;
end.
Где " vrDate" это переменная созданная через редактор переменных с типом данных "DateTime".

Если нужно вывести дату без использования переменной, то можно использовать скрипт на событие "Запуск проекта":
Код: (delphi)
begin
  Field1.Text := DateToStr(Yesterday);
end.
Где Field1 это поле в которое необходимо вывести дату.

Но, для вывода даты/времени удобнее всего использовать компонент "Календарь", у него можно задать необходимый формат отображения даты/времени, а также при необходимости настроить внешний вид аналогичный компоненту "Поле".
« Изменён: 26 Ноября 2021, 21:11:44 от Senpai »

indevr

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1317 : 29 Ноября 2021, 10:00:27 »
Большое спасибо, получилось. :)

Rindzin

  • Новичок
  • *
  • Сообщений: 36
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1318 : 29 Ноября 2021, 12:57:48 »
Добрый день.
Как добавить в редакторе скриптов в меню "Вставить код" свой код?

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1165
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1319 : 30 Ноября 2021, 10:06:18 »
Здравствуйте.

Свой код в данное меню добавить нельзя и добавление такой возможности не планируется.