From OpenSCADAWiki
< Modules
Revision as of 13:16, 22 March 2020 by FuzzyBot (Talk | contribs) (Updating to match new version of source page)

Jump to: navigation, search
Other languages:
English • ‎mRussian • ‎Українська
Модуль Ім'я Версія Ліцензія Джерело Мови Платформи Тип Автор Опис
FLibComplex1 Функції Complex1 1.2 GPL2 spec_FLibComplex1.so en,uk,ru,de x86,x86_64,ARM Спеціальні Роман Савоченко Надає бібліотеку функцій сумісності зі SCADA Complex1 фірми НІП "ДІЯ".

Модуль надає до OpenSCADA статичну бібліотеку функцій сумісності із SCADA Complex1 фірми НІП "DIYA". Ці функції використовувалися у Complex1 у вигляді алгоблоків для створення внутрішньосистемних обчислень на основі віртуального контролера. Надання бібліотеки цих функцій дозволяє здійснити перенос обчислювальних алгоритмів із Complex1.

Для адресації до функцій цієї бібліотеки можна використовувати статичну адресу виклику Special.FLibComplex1.{Func}() або динамічну SYS.Special.FLibComplex1["{Func}"].call(), SYS.Special.FLibComplex1.{Func}(). Де {Func} — ідентифікатор функції у бібліотеці.

Нижче наведено опис кожної функції бібліотеки.

1 Сигнал (alarm)

Опис: Установка ознаки сигналізації у випадку виходу значення змінної за вказану границю.
Формула:

out = if(val>max || val<min) true; else false;

2 Умова '<' (cond_lt)

Опис: Операція розгалуження відповідно до умови "менше".
Формула:

out = if(in1<(in2_1*in2_2*in2_3*in2_4)) in3_1*in3_2*in3_3*in3_4;
      else in4_1*in4_2*in4_3*in4_4;

3 Умова '>' (cond_gt)

Опис: Операція розгалуження відповідно до умови "більше".
Формула:

out = if(in1>(in2_1*in2_2*in2_3*in2_4)) in3_1*in3_2*in3_3*in3_4;
      else in4_1*in4_2*in4_3*in4_4;

4 Повна умова (cond_full)

Опис: Повна перевірка умови включаючи більше, менше та дорівнює.
Формула:

out = if(in1<(in2_1*in2_2*in2_3*in2_4)) in3_1*in3_2*in3_3*in3_4;
      else if( in1>(in4_1*in4_2*in4_3*in4_4) in5_1*in5_2*in5_3*in5_4;
      else in6_1*in6_2*in6_3*in6_4;

5 Дискретний блок (digitBlock)

Опис: Функція містить алгоритм управління збірками дискретних сигналів для засувок та насосів, які містять: ознаки "Відкрито", "Закрито" та команди "Открыть", "Закрыть", "Стоп". Функція підтримує роботу з імпульсними командами, тобто може знімати сигнал через вказаний проміжок часу.
Параметри:

Ідентифікатор Параметр Тип Режим
cmdOpen Команда "Відкрити" Логічний Вихід
cmdClose Команда "Закрити" Логічний Вихід
cmdStop Команда "Стоп" Логічний Вихід
stOpen Стан "Відкрито" Логічний Вхід
stClose Стан "Закрито" Логічний Вхід
tCmd Час утримання команди, секунд Цілий Вхід
frq Частота обчислення, Гц Цілий Вхід

6 Ділення (div)

Опис: Здійснює ділення збірок змінних.
Формула:

out = (in1_1*in1_2*in1_3*in1_4*in1_5 + in2_1*in2_2*in2_3*in2_4*in2_5 + in3) /
      (in4_1*in4_2*in4_3*in4_4*in4_5 + in5_1*in5_2*in5_3*in5_4*in5_5 + in6);

7 Експонента (exp)

Опис: Обчислення експоненти над групою змінних.
Формула:

out = exp (in1_1*in1_2*in1_3*in1_4*in1_5 + (in2_1*in2_2*in2_3*in2_4*in2_5+in3) /
          (in4_1*in4_2*in4_3*in4_4*in4_5+in5) )

8 Витрати (flow)

Опис: Обчислення витрат газу.
Формула:

f = K1*((K3+K4*x)^K2);

9 Ітератор (increment)

Опис: Ітераційне обчислення з вказаним прирощенням, коефіцієнт прирощення для різних напрямків різний.
Формула:

out = if( in1 > in2 ) in2 + in3*(in1-in2); 
      else in2 - in4*(in2-in1);

10 Затримка (lag)

Опис: Затримка зміни змінної, практично це фільтр без прив'язки до часу.
Формула:

y = y - Klag*( y - x );

11 Просте множення (mult)

Опис: Просте множення з діленням.
Формула:

out = (in1_1*in1_2*in1_3*in1_4*in1_5*in1_6)/
      (in2_1*in2_2*in2_3*in2_4);

12 Множення та ділення (multDiv)

Опис: Розгалужене множення та ділення.
Формула:

out = in1_1*in1_2*in1_3*in1_4*in1_5*
      (in2_1*in2_2*in2_3*in2_4*in2_5+(in3_1*in3_2*in3_3*in3_4*in3_5)/
      (in4_1*in4_2*in4_3*in4_4*in4_5));

13 PID regulator (pid)

Description: Proportional-integral-differential regulator.
Parameters:

Identifier Parameter Type Mode By defaults
var Variable Real Input 0
sp Setpoint Real Output 0
max Maximum of the scale Real Input 100
min Minimum of the scale Real Input 0
manIn Manual input, % Real Input 0
out Out, % Real Return 0
auto Auto mode Bool Input 0
casc Cascade mode Bool Input 0
Kp Kp Real Input 1
Ti Ti, milliseconds Integer Input 1000
Kd Kd Real Input 1
Td Td, milliseconds Integer Input 0
Tzd Td lag, milliseconds Integer Input 0
Hup Upper limit of the out, % Real Input 100
Hdwn Lower limit of the out, % Real Input 0
Zi Insensitivity, % Real Input 1
followSp Follow setpoint from variable on the manual mode Bool Input 1
K1 K input 1 Real Input 0
in1 Input 1 Real Input 0
K2 K input 2 Real Input 0
in2 Input 2 Real Input 0
K3 K input 3 Real Input 0
in3 Input 3 Real Input 0
K4 K input 4 Real Input 0
in4 Input 4 Real Input 0
f_frq Frequency of the calculating, Hz Real Input 1

Structure:
FLibComplex1 PID.png

14 Ступінь (pow)

Опис: Зведення у ступінь.
Формула:

out = (in1_1*in1_2*in1_3*in1_4*in1_5)^
      (in2_1*in2_2*in2_3*in2_4*in2_5 + (in3_1*in3_2*in3_3*in3_4*in3_5)/
      (in4_1*in4_2*in4_3*in4_4*in4_5));

15 Вибір (select)

Опис: Вибір одного з чотирьох варіантів.
Формула:

out = if(sel = 1) in1_1*in1_2*in1_3*in1_4;
      if(sel = 2) in2_1*in2_2*in2_3*in2_4;
      if(sel = 3) in3_1*in3_2*in3_3*in3_4;
      if(sel = 4) in4_1*in4_2*in4_3*in4_4;

16 Простий суматор (sum)

Опис: Простий суматор з множенням.
Формула:

out = in1_1*in1_2+in2_1*in2_2+in3_1*in3_2+in4_1*in4_2
      + in5_1*in5_2+in6_1*in6_2+in7_1*in7_2+in8_1*in8_2;

17 Сума та ділення (sum_div)

Опис: Сума з діленням групи значень.
Формула:

out = in1_1*in1_2*(in1_3+in1_4/in1_5) + 
      in2_1*in2_2*(in2_3+in2_4/in2_5) +
      in3_1*in3_2*(in3_3+in3_4/in3_5) + 
      in4_1*in4_2*(in4_3+in4_4/in4_5);

18 Сума та множення (sum_mult)

Опис: Сума з множенням групи значень.
Формула:

out = in1_1*in1_2*(in1_3*in1_4+in1_5) + 
      in2_1*in2_2*(in2_3*in2_4+in2_5) +
      in3_1*in3_2*(in3_3*in3_4+in3_5) + 
      in4_1*in4_2*(in4_3*in4_4+in4_5);

19 API користувацького програмування

Модуль, як об'єкт, надає функції користувацького програмування.

Об'єкт "Бібліотека функцій" (SYS.Special.FLibComplex1)

  • ElTp {funcID}(ElTp prm1, ...) — виклик функції бібліотеки {funcID}. Повертає результат викликаної функції.

Об'єкт "Користувацька функція" (SYS.Special.FLibComplex1["funcID"])

  • ElTp call(ElTp prm1, ...) — виклик цієї функції з параметрами <prm{N}>. Повертає результат викликаної функції.