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

Home | Index | Changes | Comments | Users | Registration | Login  Password:  
 
English (1 Кб) English
Russian (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 Вхід
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
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

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


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