From OpenSCADAWiki
Jump to: navigation, search
This page is a translated version of the page Modules/FLibComplex1 and the translation is 100% complete.

Other languages:
English • ‎российский • ‎українська
Модуль Ім'я Версія Ліцензія Джерело Мови Платформи Тип Автор Опис
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)

Опис: Пропорційно-інтегрально-диференціальний регулятор.
Параметри:

Ідентифікатор Параметр Тип Режим По замовченню
var Змінна Реальний Вхід 0
sp Завдання Реальний Вихід 0
max Максимум шкали Реальний Вхід 100
min Мінімум шкали Реальний Вхід 0
manIn Ручний ввід, % Реальний Вхід 0
out Вихід, % Реальний Повернення 0
auto Режим автомат Логічний Вхід 0
casc Режим каскад Логічний Вхід 0
Kp Kп Реальний Вхід 1
Ti Ті, мілісекунди Цілий Вхід 1000
Kd Реальний Вхід 1
Td Тд, мілісекунди Цілий Вхід 0
Tzd Тд затр., мілісекунди Цілий Вхід 0
Hup Верхня границя виходу, % Реальний Вхід 100
Hdwn Нижня границя виходу, % Реальний Вхід 0
Zi Нечутливість, % Реальний Вхід 1
followSp Стежити завдання за змінною у ручному режимі Логічний Вхід 1
K1 К входу 1 Реальний Вхід 0
in1 Вхід 1 Реальний Вхід 0
K2 К входу 2 Реальний Вхід 0
in2 Вхід 2 Реальний Вхід 0
K3 К входу 3 Реальний Вхід 0
in3 Вхід 3 Реальний Вхід 0
K4 К входу 4 Реальний Вхід 0
in4 Вхід 4 Реальний Вхід 0
f_frq Частота обчислення, Гц Реальний Вхід 1

Структура:
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}>. Повертає результат викликаної функції.