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

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

Автор Тема: Возможно ли создать отдельный скрипт с пользовательской функцией ?  (Прочитано 4819 раз)

robotic7

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Здравствуйте.

Есть ли возможность создать в редакторе скриптов(или иным способом) отдельный скрипт с пользовательской функцией или процедурой, который не связан с событиями, для возможности его вызова из других скриптов ?

Условный пример:
Скрипт №1
Код
// скрипт срабатывает, когда пользователь кликнул кнопку мышью 
procedure Button1_OnClik(Sender: TM_Control);
var 
  A, B, Summa: Integer;
begin
  ...
  ...

  Summa:=Sum(A, B); // вызов функции Sum из скрипта №2   
  ...
end.

Скрипт №2
Код
// пользовательская функция Sum, которая вычисляет сумму двух чисел A и B
function Sum(A, B: Integer): Integer;
begin
 Result:=A+B;
end;

Или такой возможности, как создание отдельного скрипта с функцией (Скрипт №2), в программах Simple-Scada нет ?
« Изменён: 02 Февраля 2017, 16:31:26 от Simple_Scada »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3214
    • Просмотр профиля
    • Simple-Scada
Здравствуйте.

Сейчас такой возможности нет и можно создавать только вложенные процедуры / функции, вот так:

Код
procedure Button1_OnClik(Sender: TM_Control);
  function Sum(A, B: Integer): Integer;
  begin
    Result := A + B;
  end;
begin
  MyVariable1.Value := Sum(10, 5);
  MyVariable2.Value := Sum(3, 18);
  MyVariable3.Value := Sum(16, 27);
end.

Либо вызывать события объектов (а событие повлечет за собой выполнение скрипта, который с ним связан), вот так:
Код
begin
  Button1.OnClick;
end.

В будущем обязательно добавим возможность создания отдельных скриптов.
« Изменён: 02 Февраля 2017, 16:36:56 от Simple-Scada »

robotic7

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Simple-Scada,
спасибо за консультацию.

midnight1979

  • Новичок
  • *
  • Сообщений: 25
    • Просмотр профиля
Вообще все таки нужен некий "глобальный модуль" ну или если проводить аналогию с Delphi (на который все уж очень похоже в скаде) возможность создавать глобальные функции и процедуры + события при запуске проекта (когда необходимо инициализировать что-либо в контексте всего проекта а не отдельно взятой страницы или окна).
Объект типа "Таймер" тоже был бы не плох или же программное создание тредов (потоков), потому как события onDataChange все таки привязываются к объекту в разрезе одной переменной (одного тэга с OPC) а необходимо под час "проехать" условиями сразу по нескольким тегам чтобы реализовать желаемую логику в полной мере.

Teodor

  • Старожил
  • ****
  • Сообщений: 256
    • Просмотр профиля
Вообще все таки нужен некий "глобальный модуль" ну или если проводить аналогию с Delphi (на который все уж очень похоже в скаде) возможность создавать глобальные функции и процедуры + события при запуске проекта (когда необходимо инициализировать что-либо в контексте всего проекта а не отдельно взятой страницы или окна).
Объект типа "Таймер" тоже был бы не плох или же программное создание тредов (потоков), потому как события onDataChange все таки привязываются к объекту в разрезе одной переменной (одного тэга с OPC) а необходимо под час "проехать" условиями сразу по нескольким тегам чтобы реализовать желаемую логику в полной мере.
Я себе устроил таймер по онченджу, заставивши лектус писать время в регистр. Частота опроса регистра и есть частотой таймера :P Как проехать по соседям уже написали выше.