OpenSCADAWiki: Home Page Uk/Doc/F Lib Complex1 ...

Home | Index | Changes | Comments | Users | Registration | Login  Password:  
 
This is an old revision of HomePageUk/Doc/FLibComplex1 from 2016-11-15 19:38:28..
English (1 Kb) English
Russian (1 Kb) Русская
 (2 Kb) Переклад

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

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

Структура:
file:pid.png

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: HomePageUk/Doc
HomePageUk/Doc/DAQ
HomePageUk/Doc/FLibComplex1


 
There are no files on this page.[Display files/form]
There is no comment on this page. [Display comments/form]