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}>. Возвращает результат вызываемой функции.