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