Модуль: | 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 | Час утримання команди (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"])