From OpenSCADAWiki
Jump to: navigation, search
(Updating to match new version of source page)
(Updating to match new version of source page)
Line 10: Line 10:
 
| Специальные || Роман Савоченко || Предоставляет библиотеку функций совместимых со SCADA Complex1 фирмы НИП "ДІЯ".
 
| Специальные || Роман Савоченко || Предоставляет библиотеку функций совместимых со SCADA Complex1 фирмы НИП "ДІЯ".
 
|}
 
|}
 
__TOC__
 
  
 
Модуль предоставляет в OpenSCADA статическую библиотеку функций совместимости со SCADA Complex1 фирмы НИП "DIYA". Эти функции использовались в Complex1 в виде алгоблоков для создания внутрисистемных вычислений на основе виртуального контроллера. Предоставление библиотеки этих функций позволяет выполнять перенос вычислительных алгоритмов из Complex1.
 
Модуль предоставляет в OpenSCADA статическую библиотеку функций совместимости со SCADA Complex1 фирмы НИП "DIYA". Эти функции использовались в Complex1 в виде алгоблоков для создания внутрисистемных вычислений на основе виртуального контроллера. Предоставление библиотеки этих функций позволяет выполнять перенос вычислительных алгоритмов из Complex1.
Line 117: Line 115:
 
       (in4_1*in4_2*in4_3*in4_4*in4_5));</pre>
 
       (in4_1*in4_2*in4_3*in4_4*in4_5));</pre>
  
== ПИД регулятор (pid) ==
+
== {{Anch|PID|PID regulator (pid)}} ==
''Описание:'' Пропорционально-интегрально-дифференциальный регулятор.<br/>
+
''Description:'' Proportional-integral-differential regulator.<br/>
''Параметры:''
+
''Parameters:''
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! Идентификатор !! Параметр !! Тип !! Режим !! По умолчанию
+
! Identifier !! Parameter !! Type !! Mode !! By defaults
 
|-
 
|-
| var || Переменная || Веществен. || Вход || 0
+
| var || Variable || Real || Input || 0
 
|-
 
|-
| sp || Задание || Веществен. || Выход || 0
+
| sp || Setpoint || Real || Output || 0
 
|-
 
|-
| max || Максимум шкалы || Веществен. || Вход || 100
+
| max || Maximum of the scale || Real || Input || 100
 
|-
 
|-
| min || Минимум шкалы || Веществен. || Вход || 0
+
| min || Minimum of the scale || Real || Input || 0
 
|-
 
|-
| manIn || Ручной ввод, % || Веществен. || Вход || 0
+
| manIn || Manual input, % || Real || Input || 0
 
|-
 
|-
| out || Выход, % || Веществен. || Возврат || 0
+
| out || Out, % || Real || Return || 0
 
|-
 
|-
| auto || Режим Автомат || Логический || Вход || 0
+
| auto || Auto mode || Bool || Input || 0
 
|-
 
|-
| casc || Режим Каскад || Логический || Вход || 0
+
| casc || Cascade mode || Bool || Input || 0
 
|-
 
|-
| Kp || Kп || Веществен. || Вход || 1
+
| Kp || Kp || Real || Input || 1
 
|-
 
|-
| Ti || Ти, миллисекунды || Целый || Вход || 1000
+
| Ti || Ti, milliseconds || Integer || Input || 1000
 
|-
 
|-
| Kd || || Веществен. || Вход || 1
+
| Kd || Kd || Real || Input || 1
 
|-
 
|-
| Td || Тд, миллисекунды || Целый || Вход || 0
+
| Td || Td, milliseconds || Integer || Input || 0
 
|-
 
|-
| Tzd || Тд задержка, миллисекунды || Целый || Вход || 0
+
| Tzd || Td lag, milliseconds || Integer || Input || 0
 
|-
 
|-
| Hup || Верхняя граница выхода, % || Веществен. || Вход || 100
+
| Hup || Upper limit of the out, % || Real || Input || 100
 
|-
 
|-
| Hdwn || Нижняя граница выхода, % || Веществен. || Вход || 0
+
| Hdwn || Lower limit of the out, % || Real || Input || 0
 
|-
 
|-
| Zi || Нечувствительность, % || Веществен. || Вход || 1
+
| Zi || Insensitivity, % || Real || Input || 1
 
|-
 
|-
| followSp || Следить задание за переменной в ручном режиме ||Логический || Вход || 1
+
| followSp || Follow setpoint from variable on the manual mode || Bool || Input || 1
 
|-
 
|-
| K1 || К входа 1 || Веществен. || Вход || 0
+
| K1 || K input 1 || Real || Input || 0
 
|-
 
|-
| in1 || Вход 1 || Веществен. || Вход || 0
+
| in1 || Input 1 || Real || Input || 0
 
|-
 
|-
| K2 || К входа 2 || Веществен. || Вход || 0
+
| K2 || K input 2 || Real || Input || 0
 
|-
 
|-
| in2 || Вход 2 || Веществен. || Вход || 0
+
| in2 || Input 2 || Real || Input || 0
 
|-
 
|-
| K3 || К входа 3 || Веществен. || Вход || 0
+
| K3 || K input 3 || Real || Input || 0
 
|-
 
|-
| in3 || Вход 3 || Веществен. || Вход || 0
+
| in3 || Input 3 || Real || Input || 0
 
|-
 
|-
| K4 || К входа 4 || Веществен. || Вход || 0
+
| K4 || K input 4 || Real || Input || 0
 
|-
 
|-
| in4 || Вход 4 || Веществен. || Вход || 0
+
| in4 || Input 4 || Real || Input || 0
 
|-
 
|-
| f_frq || Частота вычисления, Гц || Вещественный || Вход || 1
+
| f_frq || Frequency of the calculating, Hz || Real || Input || 1
 
|}
 
|}
''Структура:''<br/>
+
''Structure:''<br/>
 
[[file:FLibComplex1_PID.png]]
 
[[file:FLibComplex1_PID.png]]
  

Revision as of 13:16, 22 March 2020

Other languages:
English • ‎mRussian • ‎Українська
Модуль Имя Версия Лицензия Источник Языки Платформы Тип Автор Описание
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} — идентификатор функции в библиотеке.

Ниже приведено описание каждой функции библиотеки.

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 regulator (pid)

Description: Proportional-integral-differential regulator.
Parameters:

Identifier Parameter Type Mode By defaults
var Variable Real Input 0
sp Setpoint Real Output 0
max Maximum of the scale Real Input 100
min Minimum of the scale Real Input 0
manIn Manual input, % Real Input 0
out Out, % Real Return 0
auto Auto mode Bool Input 0
casc Cascade mode Bool Input 0
Kp Kp Real Input 1
Ti Ti, milliseconds Integer Input 1000
Kd Kd Real Input 1
Td Td, milliseconds Integer Input 0
Tzd Td lag, milliseconds Integer Input 0
Hup Upper limit of the out, % Real Input 100
Hdwn Lower limit of the out, % Real Input 0
Zi Insensitivity, % Real Input 1
followSp Follow setpoint from variable on the manual mode Bool Input 1
K1 K input 1 Real Input 0
in1 Input 1 Real Input 0
K2 K input 2 Real Input 0
in2 Input 2 Real Input 0
K3 K input 3 Real Input 0
in3 Input 3 Real Input 0
K4 K input 4 Real Input 0
in4 Input 4 Real Input 0
f_frq Frequency of the calculating, Hz Real Input 1

Structure:
FLibComplex1 PID.png

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}>. Возвращает результат вызываемой функции.