OpenSCADAWiki: Doc/F Lib Complex1 ...

Home | Index | Changes | Comments | Users | Registration | Login  Password:  
 
English (1 Кб) English
Ukrainian (1 Кб) Українська
 (2 Кб) Страница заморожена, актуальная тут.

Модуль <FLibComplex1> подсистемы "Специальные"

Модуль: FLibComplex1
Имя: Библиотека функций совместимости со SCADA Complex1.
Тип: Специальные
Источник: spec_FLibComplex1.so
Версия: 1.1
Автор: Роман Савоченко
Описание: Предоставляет библиотеку функций совместимых с SCADA Complex1 фирмы ООО НИП "ДІЯ".
Лицензия: GPL


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Вход
tCmdCommand 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
KpKpВеществен.Вход1
TiТи (мс)ЦелыйВход1000
KdKdВеществен.Вход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

Структура:
Структура PID-регулятора. (57 Kb)

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"])

Ссылки

Referring pages: Doc
Doc/DAQ
Doc/FLibComplex1


 
There are 4 files on this page.[Display files/form]
Comments [Hide comments/form]