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:48: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 Вхід
tCmd Час утримання команди (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]