Посбіник по Control Expert
Функціональний блок HYST реалізує гістерезис. Приклад виклику блоку та діаграма його роботи показані на рис.6.17

Таблиця 6.12. Параметри функціонального блока HYST.
| Вхідні параметри | ||
|---|---|---|
| X | INT, DINT, UINT, UDINT, REAL | вхідне значення |
| HIGH | INT, DINT, UINT, UDINT, REAL | нижня межа |
| LOW | INT, DINT, UINT, UDINT, REAL | верхня межа |
| Вихідні параметри | ||
| IND | BOOL | індикатор досяжності верхньої межі |
Функціональний блок INDLIM призначений для відслідковування переходу вхідного значення через визначені межі. На рис.6.18 показана діаграма роботи блоку, а на рис.6.19 – приклад виклику.


Таблиця 6.13. Параметри функціонального блока INDLIM.
| Вхідні параметри | ||
|---|---|---|
| X | INT, DINT, UINT, UDINT, REAL | Вхідна змінна |
| MX_HIGH | INT, DINT, UINT, UDINT, REAL | Максимальна верхня межа |
| MX_LOW | INT, DINT, UINT, UDINT, REAL | Максимальна нижня межа |
| MN_LOW | INT, DINT, UINT, UDINT, REAL | Мінімальна нижня межа |
| MN_HIGH | INT, DINT, UINT, UDINT, REAL | Мінімальна верхня межа |
| Вихідні параметри | ||
| MX_IND | BOOL | Відображення досягнення верхньої межі |
| MN_IND | BOOL | Відображення досягнення нижньої межі |
Процедура LOOKUP_TABLE1 використовується для кусочно-лінійної інтерполяції. У залежності від входу X та заданої вузловими точками залежності XiYi (2 значення на кожну точку) формується вихід Y. Кількість вузлових точок варіюється до 15, кожна задається парою значень XiYij: перша для X (непарні номера j), друга для Y(парні номера j). Таким чином процедура може мати до 30+1 входів.
Аналітична залежність X від Y та заданих вузлових точок показана в (6.25)
(6.25)
Приклад програми з використанням LOOKUP_TABLE1 наведений в параграфі 6.8.2


Таблиця 6.14. Параметри процедури LOOKUP_TABLE1.
| Вхідні параметри | ||
|---|---|---|
| X | REAL | Вхідна змінна |
| XiYi1 | REAL | координата X1. |
| XiYi2 | REAL | координата Y1. |
| XiYi(n-1) | REAL | координата X n/2; n=max 30 |
| XiYi(n) | REAL | координата Y n/2; n=max 30 |
| Вихідні параметри | ||
| Y | REAL | Вихідна змінна |
| QXHI | BOOL | Індикація X > Xm |
| QXLO | BOOL | Індикація X < X1 |
Функція DEAD_ZONE забезпечує послаблення сигналу з коефіцієнтом GAIN в межах зони нечутливості, заданої діпазоном [-DZ;DZ] (рис.6.22).
(6.26)

Таблиця 6.15. Параметри функції DEAD_ZONE.
| Вхідні параметри | ||
|---|---|---|
| X | REAL | Вхідна змінна |
| DZ | REAL | Половинне значення зони нечутливості |
| GAIN | REAL | Коефіцієнт послаблення значення в зоні |
| Вихідні параметри | ||
| Y | REAL | Вихідна змінна |
Функціональний блок SAH по передньому фронті CLK запам’ятовує на виході OUT значення входу IN. При першому виклику блоку OUT=PV.

Таблиця 6.16. Параметри блоку SAH.
| Вхідні параметри | ||
|---|---|---|
| IN | ANY | Вхідне значення |
| CLK | BOOL | Вхід тактового сигналу |
| PV | ANY | Задане значення уставки |
| Вихідні параметри | ||
| OUT | ANY | Вихідне значення |
Функціональний блок AVGMV реалізовує алгоритм розрахунку фільтру ковзного середнього по формулі (6.27).
або
(6.27)
де N – кількість значень в буфері (ширина вікна), X – вхідне не фільтроване значення, Y – середнє вихідне (фільтроване) значення, Yold - значення виходу на попередньому виклику.

Таблиця 6.17. Параметри блоку AVGMV.
| Вхідні параметри | ||
|---|---|---|
| MAN | BOOL | 0 = Автоматичний режим; 1 = Ручний режим |
| X | REAL | Вхід |
| N | INT | Ширина вікна (кількість значень в буфері; максимум 50) |
| YMAN | REAL | Ручне значення |
| Вихідні параметри | ||
| Y | REAL | Середнє значення |
| RDY | BOOL | 1 = буфер заповнений (готовий); 0 = буфер не заповнений (не готовий) |
При ініціалізації функціонального блоку буфер скидується. З кожним викликом буфер наповнюється новими значеннями. Поки кількість значень в буфері не буде рівним N, буфер не буде готовий (RDY=FALSE) і фільтр працює з неповним буфером. Коли буфер заповниться (RDY=TRUE) блок буде видавати коректне відфільтроване значення.
Функціональний блок AVGMV_K реалізовує алгоритм розрахунку фільтру ковзного середнього з коректором К по формулі (6.28).
(6.28)
де X – вхідне не фільтроване значення, Y – середнє вихідне (фільтроване) значення, Yold - значення виходу на попередньому виклику, K - коректор.

Таблиця 6.18. Параметри блоку AVGMV_K.
| Вхідні параметри | ||
|---|---|---|
| MAN | BOOL | 0 = Автоматичний режим; 1 = Ручний режим |
| X | REAL | Вхід |
| K | INT | Коректор (макс 10000) |
| YMAN | REAL | Ручне значення |
| Вихідні параметри | ||
| Y | REAL | Середнє значення |
Об’ємна витрата може бути розрахована за наступними залежностями:
(6.29)
де Q-об’ємна витрата (м3/год), d – діаметр отвору (мм), p -густина (кг/м3), (p1-p2) – перепад тиску на звужуючому пристрої (кгс/м2), Е – коефіцієнт розширення (для рідин=1), a- коефіцієнт витрати який розраховується за формулою
(6.30)
Коефіцієнти розраховуються (підбираються) в залежності від середовища та типу звужуючого пристрою. Таким чином формулу для розрахунку можна записати:
(6.31)
де dP=P1-P2, К – ваговий коефіцієнт. Ваговий коефіцієнт К можна розрахувати або підібрати при відомих витратах на етапі налагодження.
У UNITY PRO для реалізації розрахункової формули 6.31 можна скористатися функцією SQRT (вилучення квадратного кореню), однак для цієї цілі зручніше використовувати спеціалізовану функцію K_SQRT або функціональний блок MFLOW.
Функція K_SQRT знаходиться в бібліотеці Control Library сімейства Mathematics. Приклад використання функції показаний на рис.6.26. Функція повертає:
(6.32)
Таким чином, крім вагового коефіцієнта К, функція враховує нижню межу вхідного значення CUTOFF. Тобто, якщо перепад тиску на вході є від’ємним або менше нижньої межі, то функція повертає 0, в той час як SQRT повернув би -1.#NAN, а це в свою чергу спрощує використання цієї функції для даної задачі.

Густина газів залежить від температури та тиску. Для врахування цих параметрів, треба їх ввести в розрахункову формулу для масової витрати:
(6.33)
Функціональний блок MFLOW сімейства Conditioning, призначений для розрахунку масової витрати газів з урахуванням їх температури та тиску згідно формули (6.34):
(6.34)
де PA-абсолютний тиск газу, TA – абсолютна температура в градусах Кельвіна.
Приклад використання функціонального блоку MFLOW показаний на рис.6.27. Вхід IN, вихід OUT та коефіцієнт К мають той же зміст, що і в попередньому варіанті. Параметри роботи блоку задаються на вході PARA.
Вхід PRES – це тиск, який може задаватися як в абсолютних одиницях так і відносно атмосферного. У випадку відносного тиску (PARA.pr_pa=FALSE), абсолютний тиск розраховується за формулою
PA=PRES+pu (6.35)
де pu задається в тій же структурі PARA.
Вхід TEMP, це температура, яка може задаватися в градусах Цельсія (PARA.tc_tf=FALSE) або Фаренгейта (PARA.tc_tf=TRUE). У блоці розраховується абсолютна температура TA в градусах Кельвіна.
Корекція по тиску активується параметром PARA.en_pres=TRUE, по температурі - PARA.en_temp=TRUE. Якщо PARA.en_sqrt=FALSE то добуток буде розраховуватись без квадратного кореня.

Функція MULDIV_W розраховує вихідне значення за формулою (6.36):
(6.36)
Таблиця 6.19. Параметри блоку MULDIV_W
| Вхідні параметри | ||
|---|---|---|
| IN1 | REAL | вхід1 |
| IN2 | REAL | вхід2 |
| IN3 | REAL | вхід3 |
| PARA | Para_MULDIV_W] | Параметри |
| Вихідні параметри | ||
| OUT | REAL | Результат розрахунку |
Таблиця 6.20. Опис структурного типу Para_MULDIV_W
| Поле | Тип | Пояснення |
|---|---|---|
| k | REAL | коефіцієнт |
| c1 | REAL | коефіцієнт |
| c2 | REAL | коефіцієнт |
| c3 | REAL | коефіцієнт |
| c4 | REAL | коефіцієнт |
Функція SUM_W розраховує вихідне значення за формулою (6.36):
(6.37)
Таблиця 6.21. Параметри блоку SUM_W
| Вхідні параметри | ||
|---|---|---|
| IN1 | REAL | вхід1 |
| IN2 | REAL | вхід2 |
| IN3 | REAL | вхід3 |
| PARA | Para_SUM_W | Параметри |
| Вихідні параметри | ||
| OUT | REAL | Результат розрахунку |
Таблиця 6.22. Опис структурного типу Para_SUM_W
| Поле | Тип | Пояснення |
|---|---|---|
| k1 | REAL | коефіцієнт |
| k2 | REAL | коефіцієнт |
| k3 | REAL | коефіцієнт |
| c1 | REAL | коефіцієнт |