Модуль: | FLibComplex1 |
Имя: | Библиотека функций совместимости со SCADA Complex1. |
Тип: | Специальные |
Источник: | spec_FLibComplex1.so |
Версия: | 1.1 |
Автор: | Роман Савоченко |
Описание: | Предоставляет библиотеку функций совместимых с SCADA Complex1 фирмы ООО НИП "ДІЯ". |
Лицензия: | GPL |
Специальный модуль 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 раз. Выборка производилась по наименьшему значению из пяти вычислений. Время заключается в угловые скобки и измеряется в микросекундах.
Описание: Установка признака сигнализации в случае выхода значения переменной за указанную границу.
Формула:
out = if(val>max || val<min) true; else false;
Описание: Операция ветвления в соответствии с условием "<".
Формула:
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;
Описание: Операция ветвления в соответствии с условием ">".
Формула:
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;
Описание: Полная проверка условия, включая больше, меньше и равно.
Формула:
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;
Описание: Функция содержит алгоритм управления сборками дискретных сигналов для задвижек и насосов, содержащих: признаки "Open", "Close" и команды "Open", "Close", "Stop". Функция поддерживает работу с импульсными командами, т.е. может снимать сигнал через указанный промежуток времени.
Параметры:
ID | Параметр | Тип | Режим |
cmdOpen | Команда "Открыть" | Bool | Выход |
cmdClose | Команда "Закрыть" | Bool | Выход |
cmdStop | Команда "Стоп" | Bool | Выход |
stOpen | Сотояние "Открыт" | Bool | Вход |
stClose | Состояние "Закрыт" | Bool | Вход |
tCmd | Command hold time (s) | Целый | Вход |
frq | Период обсчёта (мс) | Целый | Вход |
Описание: Производит деление сборок переменных.
Формула:
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);
Описание: Вычисление экспоненты над группой переменных.
Формула:
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) )
Описание: Вычисление расхода газа.
Формула:
f = K1*((K3+K4*x)^K2);
Описание: Итерационное вычисление с указанием приращения. Коэффициент приращения для разных направлений различный.
Формула:
out = if( in1 > in2 ) in2 + in3*(in1-in2);
else in2 - in4*(in2-in1);
Описание: Задержка изменения переменной. Практически это фильтр без привязки ко времени.
Формула:
y = y - Klag*( y - x );
Описание: Простое умножение с делением.
Формула:
out=(in1_1*in1_2*in1_3*in1_4*in1_5*in1_6)/
(in2_1*in2_2*in2_3*in2_4);
Описание: Разветвленное умножение+деление.
Формула:
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));
Описание: Пропорционально-интегрально-дифференциальный регулятор.
Параметры:
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 |
Структура:
Описание: Возведение в степень.
Формула:
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));
Описание: Выбор одного из четырёх вариантов.
Формула:
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;
Описание: Простое суммирование с умножением.
Формула:
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;
Описание: Суммирование с делением группы значений.
Формула:
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);
Описание: Суммирование с умножением группы значений.
Формула:
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);
Некоторые объекты модуля предоставляют функции пользовательского программирования.
Объект "Библиотека функций" (SYS.Special.FLibComplex1)
Объект "Пользовательская функция" (SYS.Special.FLibComplex1["funcID"])