Модуль | Имя | Версия | Лицензия | Источник | Языки | Платформы | Тип | Автор | Описание |
---|---|---|---|---|---|---|---|---|---|
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} — идентификатор функции в библиотеке.
Ниже приведено описание каждой функции библиотеки.
Contents
- 1 Сигнал (alarm)
- 2 Условие '<' (cond_lt)
- 3 Условие '>' (cond_gt)
- 4 Полное условие (cond_full)
- 5 Дискретный блок (digitBlock)
- 6 Деление (div)
- 7 Экспонента (exp)
- 8 Расход (flow)
- 9 Итератор (increment)
- 10 Задержка (lag)
- 11 Простое умножение (mult)
- 12 Умножение и деление (multDiv)
- 13 ПИД регулятор (pid)
- 14 Степень (pow)
- 15 Выбор (select)
- 16 Простой сумматор (sum)
- 17 Сумма с делением (sum_div)
- 18 Сумма и умножение (sum_mult)
- 19 API пользовательского программирования
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 | Kд | Веществен. | Вход | 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 |
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}>. Возвращает результат вызываемой функции.