Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: robotic7 от 02 Февраля 2017, 16:27:41

Название: Возможно ли создать отдельный скрипт с пользовательской функцией ?
Отправлено: robotic7 от 02 Февраля 2017, 16:27:41
Здравствуйте.

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

Условный пример:
Скрипт №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 нет ?
Название: Re: Возможно ли создать отдельный скрипт с пользовательской функцией ?
Отправлено: Simple-Scada от 02 Февраля 2017, 16:36:25
Здравствуйте.

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

Код
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.

В будущем обязательно добавим возможность создания отдельных скриптов.
Название: Re: Возможно ли создать отдельный скрипт с пользовательской функцией ?
Отправлено: robotic7 от 02 Февраля 2017, 16:40:52
Simple-Scada,
спасибо за консультацию.
Название: Re: Возможно ли создать отдельный скрипт с пользовательской функцией ?
Отправлено: midnight1979 от 05 Февраля 2017, 09:44:35
Вообще все таки нужен некий "глобальный модуль" ну или если проводить аналогию с Delphi (на который все уж очень похоже в скаде) возможность создавать глобальные функции и процедуры + события при запуске проекта (когда необходимо инициализировать что-либо в контексте всего проекта а не отдельно взятой страницы или окна).
Объект типа "Таймер" тоже был бы не плох или же программное создание тредов (потоков), потому как события onDataChange все таки привязываются к объекту в разрезе одной переменной (одного тэга с OPC) а необходимо под час "проехать" условиями сразу по нескольким тегам чтобы реализовать желаемую логику в полной мере.
Название: Re: Возможно ли создать отдельный скрипт с пользовательской функцией ?
Отправлено: Teodor от 06 Февраля 2017, 13:19:49
Вообще все таки нужен некий "глобальный модуль" ну или если проводить аналогию с Delphi (на который все уж очень похоже в скаде) возможность создавать глобальные функции и процедуры + события при запуске проекта (когда необходимо инициализировать что-либо в контексте всего проекта а не отдельно взятой страницы или окна).
Объект типа "Таймер" тоже был бы не плох или же программное создание тредов (потоков), потому как события onDataChange все таки привязываются к объекту в разрезе одной переменной (одного тэга с OPC) а необходимо под час "проехать" условиями сразу по нескольким тегам чтобы реализовать желаемую логику в полной мере.
Я себе устроил таймер по онченджу, заставивши лектус писать время в регистр. Частота опроса регистра и есть частотой таймера :P Как проехать по соседям уже написали выше.