Модулі/FLibComplex1 - OpenSCADAWiki

# Модулі/FLibComplex1

This page is a translated version of the page Modules/FLibComplex1 and the translation is 100% complete.

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)

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

Ідентифікатор | Параметр | Тип | Режим | По замовченню
--- | --- | --- | --- | ---
var | Змінна | Реальний | Вхід | 0
sp | Завдання | Реальний | Вихід | 0
max | Максимум шкали | Реальний | Вхід | 100
min | Мінімум шкали | Реальний | Вхід | 0
manIn | Ручний ввід, % | Реальний | Вхід | 0
out | Вихід, % | Реальний | Повернення | 0
auto | Режим автомат | Логічний | Вхід | 0
casc | Режим каскад | Логічний | Вхід | 0
Kp | Kп | Реальний | Вхід | 1
Ti | Ті, мілісекунди | Цілий | Вхід | 1000
Kd | Kд | Реальний | Вхід | 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

Структура:

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

Modules/FLibComplex1/uk - GFDL | July 2026 | OpenSCADA 1+r3070