Модуль: | FLibComplex1 |
Ім'я: | Бібліотека функцій сумісності зі SCADA Complex1. |
Тип: | Спеціальні |
Джерело: | spec_FLibComplex1.so |
Версія: | 1.1.0 |
Автор: | Роман Савоченко |
Опис: | Надає бібліотеку функцій сумісності із 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 |
Структура:
file:pid.png
Описание: Возведение в степень.
Формула:
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"])