Модули/FLibComplex1

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

Other languages:
English • ‎российский • ‎українська
Constr.png The translation checking and actualizing
Модуль Имя Версия Лицензия Источник Языки Платформы Тип Автор Описание
FLibComplex1 Библиотека функций совместимости со SCADA Complex1 1.1 GPL2 spec_FLibComplex1.so en,uk,ru,de x86,x86_64,ARM Специальные Роман Савоченко Предоставляет библиотеку функций совместимых с SCADA Complex1 фирмы ООО НИП "ДІЯ".

Contents

Специальный модуль FLibComplex1 предоставляет в систему OpenSCADA статическую библиотеку функций совместимости со SCADA Complex1 фирмы НИП "DIYA". Эти функции использовались в SCADA системе Complex1 в виде алгоблоков для создания внутрисистемных вычислений на основе виртуального контроллера. Предоставление библиотеки этих функций позволяет выполнять перенос вычислительных алгоритмов из системы Complex1.

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

Ниже приведено описание каждой функции библиотеки. Для каждой функции производилась оценка времени исполнения. Измерение производилось на системе со следующими параметрами: Athlon 64 3000+ (ALTLinux 3.0(32бит)) путём замера общего времени исполнения функции при вызове её 1000 раз. Выборка производилась по наименьшему значению из пяти вычислений. Время заключается в угловые скобки и измеряется в микросекундах.

1 Сигнал (alarm) <111>

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

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

2 Условие '<' (cond_lt) <239>

Описание: Операция ветвления в соответствии с условием "<".
Формула:

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) <240>

Описание: Операция ветвления в соответствии с условием ">".
Формула:

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) <513>

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

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) <252>

Описание: Функция содержит алгоритм управления сборками дискретных сигналов для задвижек и насосов, содержащих: признаки "Open", "Close" и команды "Open", "Close", "Stop". Функция поддерживает работу с импульсными командами, т.е. может снимать сигнал через указанный промежуток времени.
Параметры:

ID Параметр Тип Режим
cmdOpen Команда "Открыть" Bool Выход
cmdClose Команда "Закрыть" Bool Выход
cmdStop Команда "Стоп" Bool Выход
stOpen Сотояние "Открыт" Bool Вход
stClose Состояние "Закрыт" Bool Вход
tCmd Command hold time (s) Целый Вход
frq Период обсчёта (мс) Целый Вход

6 Деление (div) <526>

Описание: Производит деление сборок переменных.
Формула:

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) <476>

Описание: Вычисление экспоненты над группой переменных.
Формула:

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) <235>

Описание: Вычисление расхода газа.
Формула:

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

9 Итератор (increment) <181>

Описание: Итерационное вычисление с указанием приращения. Коэффициент приращения для разных направлений различный.
Формула:

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

10 Задержка (lag) <121>

Описание: Задержка изменения переменной. Практически это фильтр без привязки ко времени.
Формула:

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

11 Простое умножение(mult) <259>

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

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

12 Умножение+деление(multDiv) <468>

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

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) <745>

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

ID Параметр Тип Режим По умолчанию
var Переменная Веществен. Вход 0
sp Задание Веществен. Выход 0
max Макс. шкалы Веществен. Вход 100
min Мин. шкалы Веществен. Вход 0
manIn Ручной ввод (%) Веществен. Вход 0
out Выход (%) Веществен. Возврат 0
auto Автомат Логический Вход 0
casc Каскад Логический Вход 0
Kp Kp Веществен. Вход 1
Ti Ти (мс) Целый Вход 1000
Kd 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) <564>

Описание: Возведение в степень.
Формула:

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) <156>

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

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) <404>

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

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) <518>

Описание: Суммирование с делением группы значений.
Формула:

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) <483>

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

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)

Объект "Пользовательская функция" (SYS.Special.FLibComplex1["funcID"])