---
title: "Руководство пользователя Библиотека paControls"
product: "Полигон"
document_number: "№ 1-RU-135602-1.1"
version: "1.1"
language: "ru"
source: "https://docs.owen.ru/product/poligon/doc/1214"
pdf: "https://docs.owen.ru/download/pdf/sv9Kz.rp_biblioteka+pacontrols_1-ru-135602-1.1.pdf"
generated: "2026-10-11"
---

# Руководство пользователя Библиотека paControls

## Содержание

- [Используемые термины и сокращения](#topic-95871)
- [Введение](#topic-95872)
- [Библиотека paControls](#topic-95873)
  - [Регуляторы](#topic-95874)
    - [Выдача данных с задержкой (DelayV)](#topic-95875)
    - [Накапливающий сумматор со сбросом и инициализацией (fSum)](#topic-95876)
    - [Интегратор (fIntT)](#topic-95877)
    - [Апериодическое звено (fExpT)](#topic-95878)
    - [Задатчик (SetPoint)](#topic-95879)
    - [Линейный регулятор (Lcontr)](#topic-95880)
    - [Программное изменение уставки с заданным темпом (SetValue)](#topic-95881)
    - [Упрощенный ПД-регулятор (ImpUst)](#topic-95882)
    - [Управление задвижкой (ZD)](#topic-95883)
    - [Блок приоритетов управления (Prior)](#topic-95884)
    - [Блок управления агрегатом (BUA)](#topic-95885)
    - [Импульсный ПИД (ImpPid)](#topic-95886)
    - [Управление реле (SetSW)](#topic-95887)
    - [Многорежимный генератор импульсов (AdvPulse)](#topic-95888)
    - [Интегрирующий задатчик (TrackSum)](#topic-95889)
    - [Идеальное/реальное дифференцирующее звено (Deriv_new)](#topic-95890)
    - [Ограничитель ресурсов управления сервоприводом (LimUpr)](#topic-95891)
    - [Выбор режима (Mode)](#topic-95892)
    - [Интегральный формирователь (IforP)](#topic-95893)
    - [ПД-формирователь (fPDT)](#topic-95894)
    - [Импульсный регулятор (DCtrl)](#topic-95895)
    - [ПИ-регулятор (PIC)](#topic-95896)
    - [ПИД-регулятор (PID)](#topic-95897)
    - [Импульсный ПИ-регулятор (IPIC)](#topic-95898)
    - [Импульсный ПД-регулятор с балансировкой (IPDC)](#topic-95899)
    - [Интегрирующий задатчик (TrackRamp)](#topic-95900)
    - [Идеальное/реальное дифференцирующее звено с балансировкой (rDIF)](#topic-95901)
    - [Многорежимный генератор импульсов с балансировкой (AdvPulseB)](#topic-95902)
  - [Обработка сигналов](#topic-95903)
    - [Фильтр Баттерворта 3-го порядка (fBatt)](#topic-95904)
    - [Преобразование int-аналоговый вход во float с масштабированием (Sensor)](#topic-95905)
    - [Преобразование 4…20 мА в реальные единицы измерения (asensor)](#topic-95906)
    - [Апериодический фильтр 2-го порядка (fFlt2T)](#topic-95907)
    - [Блок компенсации запаздывания сигнала (LEADLAG)](#topic-95908)

<a id="topic-95871"></a>

## Используемые термины и сокращения

**ПД-регулятор** – пропорциональный регулятор с дифференциальной составляющей.

**ПИ-регулятор** – пропорционально-интегральный регулятор.

**ПИД-регулятор** – пропорционально-интегральный регулятор с дифференциальной составляющей.

**ШИМ** – широтно-импульсная модуляция.

<a id="topic-95872"></a>

## Введение

Настоящее руководство описывает блоки библиотеки <b>*paControls*</b>, реализующей алгоритмы управления реального времени. Подразумевается, что читатель обладает базовыми навыками работы в среде **Полигон**, поэтому общие вопросы (например, создание и загрузка проектов) в данном документе не рассматриваются – они подробно описаны в документах [Руководство по программированию. Библиотека paCore](https://owen.ru/product/polygon/documentation) и [Быстрый старт](https://owen.ru/product/polygon/documentation).

Данный документ актуален для версии среды **Полигон** – **1921**, версии библиотеки <b>*paControls*</b> – **942** и выше.

<a id="topic-95873"></a>

## Библиотека paControls

<b>*paControls*</b> – библиотека, которая обеспечивает обработку сигналов датчиков и реализует управление технологическими процессами.

Для добавления библиотеки <b>*paControls*</b> в проект следует:

1. Перейти в меню <b>*Окна/Проекты*</b>. В появившемся окне отобразится текущий проект и добавленные библиотеки.

   ![Добавление библиотеки pa Controls в проект](https://docs.owen.ru/book_img/1933/135532.png)

   *Добавление библиотеки paControls в проект*

2. Нажать кнопку <b>*Открыть*</b> и перейти в папку с файлами библиотеки, которую необходимо добавить. Затем в выпадающем списке выбрать тип файла <b>*Библиотека Полигон 2 (\*.*</b><b>*ll*</b><b>*2)*</b>.

   ![Добавление библиотеки pa Controls в проект 2](https://docs.owen.ru/book_img/1933/135531.png)

   *Добавление библиотеки paControls в проект*

3. В окне появится файл библиотеки с расширением **.****ll****2**. Следует выбрать его и нажать **Открыть**.

   ![Добавление библиотеки pa Controls в проект 3](https://docs.owen.ru/book_img/1933/135530.png)

   <i>**Добавление библиотеки** paControls **в проект**</i>

Добавленная библиотека отобразится в окне <b>*Проекты*</b>.

<a id="topic-95874"></a>

### Регуляторы

<a id="topic-95875"></a>

#### Выдача данных с задержкой (DelayV)

Блок <b>*DelayV*</b> находится в разделе библиотеки <b>*Регуляторы*</b>. <b>*DelayV*</b> повторяет на выходе **out** значение входа **in** через заданный интервал времени.

Данный блок можно разместить только в <b>*Таймере*</b>.

**Назначение входов и выходов DelayV**

**Входы**

| Элемент | Описание |
| --- | --- |
| dsk | Значение дискретизации времени, должно быть кратно таймерному циклу |
| dl | Время задержки в мс, должно быть кратно **dsk** |
| mdl | Время запоминания входного значения в мс, должно быть больше, чем **dl** |
| in | Входное значение |

**Выходы**

| Элемент | Описание |
| --- | --- |
| out | Выходное значение, инициализируется **0** |

![Алгоритм Delay V](https://docs.owen.ru/book_img/1933/135529.png)

*Алгоритм DelayV*

![Выдача данных с задержкой (Delay V)](https://docs.owen.ru/book_img/1933/135528.png)

*Выдача данных с задержкой (DelayV)*

<a id="topic-95876"></a>

#### Накапливающий сумматор со сбросом и инициализацией (fSum)

Блок <b>*fSum*</b> является накапливающим сумматором. Раздел библиотеки: <b>*Регуляторы*</b>.

**Назначение входов и выходов fSum**

**Входы**

| Элемент | Описание |
| --- | --- |
| inp | Приращение выхода на текущем таймерном интервале |
| upr | Текущая величина инициализации сумматора |
| bal | Разрешение режима инициализации |

**Выходы**

| Элемент | Описание |
| --- | --- |
| out | Текущее значение сумматора, инициализируется **upr** |

Алгоритм:

```
bal = 0: out_i = out_(i-1) + inp_i;
bal = 1: out_i = upr
```

![Накапливающий сумматор со сбросом и инициализацией (f Sum)](https://docs.owen.ru/book_img/1933/135527.png)

<i>**Накапливающий сумматор со сбросом и инициализацией (fSum)**</i>

<a id="topic-95877"></a>

#### Интегратор (fIntT)

Блок <b>*fIntT*</b> является интегратором с постоянной времени **Ti**. Раздел библиотеки: <b>*Регуляторы*</b>.

**Назначение входов и выходов fIntT**

**Входы**

| Элемент | Описание |
| --- | --- |
| inp | Вход интегратора |
| Ti | Постоянная времени интегратора в секундах |
| upr | Текущая величина инициализации интегратора |
| bal | Разрешение режима инициализации |

**Выходы**

| Элемент | Описание |
| --- | --- |
| out | Текущее значение интегратора, инициализируется **upr** |

Алгоритм:

```
bal = 0: out_i = out_(i-1) + inp_i ∙ t⁄Ti;
bal = 1: out_i = upr
```

Передаточная функция **inp → out**:

```
G(s) = 1/(Ti ∙ s)
```

![Интегратор (f Int T)](https://docs.owen.ru/book_img/1933/135526.png)

<i>**Интегратор (fIntT)**</i>

<a id="topic-95878"></a>

#### Апериодическое звено (fExpT)

Блок <b>*fExpT*</b> является апериодическим звеном первого порядка с постоянной времени **Tf**. Раздел библиотеки: <b>*Регуляторы*</b>.

**Назначение входов и выходов fExpT**

**Входы**

| Элемент | Описание |
| --- | --- |
| inp | Вход апериодического звена |
| Tf | Постоянная времени апериодического звена в секундах |
| bal | Разрешение режима балансировки |

**Выходы**

| Элемент | Описание |
| --- | --- |
| out | Значение выхода апериодического звена, инициализируется **inp** |
| dif | Значение дифференциальной составляющей, инициализируется **0** |

Алгоритм:

```
bal = 0: out_i = out_(i-1) + (inp_i - out_(i-1)) ∙ (1 - exp(-t⁄Tf)),
dif_i = inp_i - out_(i - 1);
bal = 1: out_i = inp_i;
dif_i = 0
```

Передаточные функции:

```
inp → out: G(s) = 1/(Tf ∙ s + 1);
inp → dif: G(s) = Tf ∙ s/(Tf ∙ s + 1)
```

![Апериодическое звено (f Exp T)](https://docs.owen.ru/book_img/1933/135525.png)

*Апериодическое звено (fExpT)*

<a id="topic-95879"></a>

#### Задатчик (SetPoint)

Блок <b>*SetPoint*</b> является задатчиком управляющего сигнала. Сигнал формируется с учетом ограничений на величину и скорость изменения. Раздел библиотеки: <b>*Регуляторы*</b>.

**Назначение входов и выходов SetPoint**

**Входы**

| Элемент | Описание |
| --- | --- |
| inp | Текущее приращение задания |
| inc | Команда на увеличение задания |
| dec | Команда на уменьшение задания |
| Tx | Время перекладки задания по командам **inc** и **dec** |
| max | Верхнее ограничение задания |
| min | Нижнее ограничение задания |
| upr | Текущая величина балансировки задатчика |
| bal | Разрешение балансировки |
| res | Команда сброса задатчика |

**Выходы**

| Элемент | Описание |
| --- | --- |
| out | Текущее задание, инициализируется **0** |
| uf | Признак достижения задатчиком верхнего ограничения, инициализируется **0** |
| lf | Признак достижения задатчиком нижнего ограничения, инициализируется **0** |

Алгоритм:

```
res = 0:
bal = 0: если dec = 1 → out+ = (min - max) ∙ t0/Tx,
иначе если inc_i = 1 → out+ = (max - min) ∙ t0/Tx,
иначе out+ = inp_i,
если out > max → out = max, uf = 1,
если out < min → out = min, lf = 1;
bal = 1: out = upr,
uf = lf = 0;
res = 1: out = 0,
uf = lf = 0
```

![Задатчик (Set Point)](https://docs.owen.ru/book_img/1933/135524.png)

*Задатчик (SetPoint)*

<a id="topic-95880"></a>

#### Линейный регулятор (Lcontr)

Блок <b>*Lcontr*</b> является линейным регулятором. Раздел библиотеки: <b>*Регуляторы*</b>.

**Назначение входов и выходов Lcontr**

**Входы**

| Элемент | Описание |
| --- | --- |
| U | Вход |
| Us | Уставка |
| eps | Гистерезис |
| incr | Ручное увеличение |
| decr | Ручное уменьшение |
| man | Ручной режим |

**Выходы**

| Элемент | Описание |
| --- | --- |
| incr | Увеличить, инициализируется **0** |
| decr | Уменьшить, инициализируется **0** |

В зависимости от состояния входа **man** блок может функционировать в одном из двух режимов.

Если **man = 0**, то блок работает в режиме автоматического регулирования. Регулируемый параметр **U** сравнивается с уставкой **Us**: если рассогласование превышает величину **eps** (гистерезис), то выдается единица на один из выходов **decr** или **incr**, в зависимости от знака величины рассогласования.

Если **man = 1**, то блок работает в режиме ручного регулирования. В этом режиме регулируемая величина и ее уставка игнорируются, а состояние выходов напрямую задается состоянием входов **decr** и **incr**.

![Линейный регулятор (Lcontr)](https://docs.owen.ru/book_img/1933/135523.png)

*Линейный регулятор (Lcontr)*

<a id="topic-95881"></a>

#### Программное изменение уставки с заданным темпом (SetValue)

Блок <b>*SetValue*</b> производит постепенное изменение выходного значения **out** от **val** до **aim** с заданным темпом **temp**, контролируя статическое **mse** и динамическое **mde** отклонение сигнала **out** от значения **aim**. Раздел библиотеки: <b>*Регуляторы*</b>.

**Назначение входов и выходов SetValue**

**Входы**

| Элемент | Описание |
| --- | --- |
| val | Начальное значение |
| temp | Приращение |
| aim | Конечное значение |
| mde | Максимальная динамическая ошибка |
| mse | Максимальная статическая ошибка |
| enbl | Разрешение на работу |

**Выходы**

| Элемент | Описание |
| --- | --- |
| out | Выход, инициализируется **val** |
| err | Флаг наличия динамической ошибки, инициализируется **0** |
| fin | Конец, инициализируется **0** |

Алгоритм:

```
enbl = 1:
если |out - aim| > mse → out = out + temp/(таймерный интервал), fin = 0,
если |out - aim| > mde → err = 1,
иначе out = aim, err = 0, fin = 1,
иначе out = val, err = 0, fin = 0
```

![Программное изменение уставки с заданным темпом (Set Value)](https://docs.owen.ru/book_img/1933/135542.png)

*Программное изменение уставки с заданным темпом (SetValue)*

<a id="topic-95882"></a>

#### Упрощенный ПД-регулятор (ImpUst)

Блок <b>*ImpUst*</b> выдает управляющие сигналы открытия **opn** и закрытия **cls** на двигатель (задвижку) с текущим положением **P** так, чтобы значение на входе приблизилось к значению уставки. Раздел библиотеки: <b>*Регуляторы*</b>.

**Назначение входов и выходов ImpUst**

**Входы**

| Элемент | Описание |
| --- | --- |
| in | Текущее значение регулируемого параметра |
| ust | Значение уставки |
| dTm | Время таймерного интервала |
| T1 | Время дискретизации управления (с таким интервалом будет производится выдача нового управления на выходы) |
| Kp | Коэффициент пропорциональности |
| Ti | Коэффициент изменения |
| Tv | Не используется |
| P | Текущее значение положения задвижки |
| dP | Гистерезис выставления положения |

**Выходы**

| Элемент | Описание |
| --- | --- |
| opn | Команда открыть, инициализируется **0** |
| cls | Команда закрыть, инициализируется **0** |
| Pust | Рассчитанная уставка положения, инициализируется **0** |

Алгоритм:

```
Q = (in - ust)/dTm,
dC = -(Kp ∙ Q + Ti ∙ (Q - Qпредыдущее)) ∙ 100,
Pust = P + dC
```

В зависимости от значений **Pust**, **P** и **dP** выдается управление на выходы аналогично блоку [Линейный регулятор](#topic-95880).

![Упрощенный ПД-регулятор (Imp Ust)](https://docs.owen.ru/book_img/1933/135541.png)

*Упрощенный ПД-регулятор (ImpUst)*

<a id="topic-95883"></a>

#### Управление задвижкой (ZD)

Блок <b>*ZD*</b> осуществляет импульсное управление задвижкой с помощью команд открыть **o_o**, закрыть **o****\_****c** и стоп **o_s**. Длина выходного импульса для всех команд задается входом **t_i** в мс. Раздел библиотеки: <b>*Регуляторы*</b>.

**Назначение входов и выходов ZD**

**Входы**

| Элемент | Описание |
| --- | --- |
| enbl | Разрешение на работу |
| c_o | Команда открыть |
| c_c | Команда закрыть |
| c_s | Команда стоп |
| a_o | Сигнал задвижка открыта |
| a_c | Сигнал задвижка закрыта |
| M | Местное управление |
| D | Автоматическое управление |
| alrm | Неисправность |
| rdy | Готовность |
| rst | Сброс |
| t_o | Время перекладки |
| t_i | Длина импульса, мс |
| t_ch | Пауза открытия/закрытия |
| typ | Не используется |

**Выходы**

| Элемент | Описание |
| --- | --- |
| o_o | Открыть |
| o_c | Закрыть |
| o_s | Стоп |
| s_o | Задвижка открыта |
| s_c | Задвижка закрыта |
| s_p_o | Открывается |
| s_p_c | Закрывается |
| f_to | Таймаут |
| f_fo | Самоход на открытие |
| f_fc | Самоход на закрытие |
| f_f | Авария |
| f_DM | Ошибка местное-автоматическое управление |
| f_ard | Ошибка авария-готовность |
| f_ao | Ошибка концевых выключателей |
| f_c | Ошибка команд |

Входные команды **c_o**, **c_c**, **c_s** передаются на выход, если задвижка готова к работе в автоматическом режиме: **enbl = 1**, **D = 1**, **rdy = 1**, **alrm = 0**, и отсутствуют (т.е. равны **0**) ошибки **f_DM**, **f_ard**, **f_ao**, **f_c**.

Команда на открытие выдается при **c_o = 1** и отсутствии концевого выключателя открытия **a_o = 0**. Затем при появлении концевого выключателя открытия **a_o = 1**, выдается команда стоп **o****\_****s**. Аналогично обрабатывается команда закрытия.

Если во время открытия приходит команда на закрытие, то выдается команда стоп **o****\_****s** и закрытие начинается через время **t_ch** в мс, и наоборот.

Если при открытии или закрытии соответствующий концевой выключатель не достигнут в течение времени **t_o**, то выдается ошибка таймаута **f_to = 1** и команда стоп **o****\_****s**.

Обработка ошибок:

- **f_DM = 1**, если **M = D**;
- **f_ard = 1**, если **alrm = rdy**;
- **f_ao = 1**, если **a_o = a_c = 1**;
- **f_c = 1**, если одновременно присутствуют две **1** на входах **c_o**, **c_c**, **c_s**.

![Управление задвижкой (ZD)](https://docs.owen.ru/book_img/1933/135540.png)

*Управление задвижкой (ZD)*

<a id="topic-95884"></a>

#### Блок приоритетов управления (Prior)

Блок <b>*Prior*</b> принимает управляющие команды от нескольких задач и выдает на выход команды приоритетной из активных задач (задача **0** имеет самый высокий приоритет). Раздел библиотеки: <b>*Регуляторы*</b>.

**Назначение входов и выходов Prior**

**Входы**

| Элемент | Описание |
| --- | --- |
| b_o | Блокировка открытия (циклический) |
| b_c | Блокировка закрытия (циклический) |
| act | Задача активна (циклический) |
| c_o | Команда открыть (циклический) |
| c_c | Команда закрыть (циклический) |
| c_s | Команда стоп (циклический) |

**Выходы**

| Элемент | Описание |
| --- | --- |
| c_o | Команда открыть |
| c_c | Команда закрыть |
| c_s | Команда стоп |
| b_o | Блокировка открытия (циклический) |
| b_c | Блокировка закрытия (циклический) |

Задача **i** является активной, если вход **acti = 1**.

Команда открыть **c_oi** и команда закрыть **c_ci** передаются на выходы **c_o** и **c_c**, если отсутствуют (т. е. равны **0**) соответствующие блокировки **b_oi** и **b_ci**, команда стоп **c_si** передается на выход **c_s**, где **i** – номер приоритетной активной задачи.

Значения блокировок всегда транслируются на выходы соответствующей задачи **b_oi** и **b_ci** без изменений.

![Блок приоритетов управления (Prior)](https://docs.owen.ru/book_img/1933/135539.png)

*Блок приоритетов управления (Prior)*

<a id="topic-95885"></a>

#### Блок управления агрегатом (BUA)

Блок <b>*BUA*</b> объединяет обработку блокировок, ошибок и ответных сигналов при управлении агрегатом конвейера. Раздел библиотеки: <b>*Регуляторы*</b>.

**Назначение входов и выходов BUA**

**Входы**

| Элемент | Описание |
| --- | --- |
| pusk | Пуск |
| stop | Стоп |
| blk | Блокировка |
| rst | Сброс ошибок |
| SA | Разрешение |
| RD | Готовность |
| K | Включен |
| BD | Блокировка |
| S | Авария ленты |
| Tblk | Нижнее ограничение регулируемой величины |
| TR | Таймаут включен |
| TS | Таймаут ленты |
| Mdl | Симуляция |
| itr | Инициализация наработки |
| rtr | Сброс наработки |

**Выходы**

| Элемент | Описание |
| --- | --- |
| Psk | Включить |
| K | Включен |
| Err | Ошибка |
| Sts | Статус |
| Blk | Блокировка |
| ready | Готовность |
| otr | Наработка |

![Блок управления агрегатом (BUA)](https://docs.owen.ru/book_img/1933/135538.png)

*Блок управления агрегатом (BUA)*

<a id="topic-95886"></a>

#### Импульсный ПИД (ImpPid)

Блок <b>*ImpPid*</b> представляет собой ПИД-регулятор с коэффициентами **Kp**, **Ki**, **Kd** и постоянной времени интегрирования **Ti**. Раздел библиотеки: <b>*Регуляторы*</b>.

**Назначение входов и выходов ImpPid**

**Входы**

| Элемент | Описание |
| --- | --- |
| in | Текущее значение |
| ust | Уставка |
| T1 | Время дискретизации |
| Kp | Пропорциональная составляющая |
| Ki | Интегральная составляющая |
| Kd | Дифференциальная составляющая |
| Ti | Время интегрирования |
| P | Положение |
| dP | Гистерезис положения |
| en | Разрешение работы |

**Выходы**

| Элемент | Описание |
| --- | --- |
| opn | Открыть |
| cls | Закрыть |
| Pust | Уставка положения |

Регулятор стремится приблизить значение измеряемого параметра **in** к значению уставки **ust** за счет открытия **opn** и закрытия **cls** управляющего органа, текущее положение которого подается на вход **P**.

При разности в значениях **in** и **ust** менее **5 %** от уставки на выход **Pust** подается значение гистерезиса положения. В противном случае к значению **Pust** добавляются рассчитанные пропорциональная, интегральная и дифференциальная составляющие.

![Импульсный ПИД (Imp Pid)](https://docs.owen.ru/book_img/1933/135537.png)

*Импульсный ПИД (ImpPid)*

<a id="topic-95887"></a>

#### Управление реле (SetSW)

Блок <b>*SetSW*</b> осуществляет потенциальное и импульсное управление реле с обратной связью. Раздел библиотеки: <b>*Регуляторы*</b>.

**Назначение входов и выходов SetSW**

**Входы**

| Элемент | Описание |
| --- | --- |
| inp | Управление |
| ret | Обратная связь |
| cnt | Таймер ошибки |
| enb | Разрешение |

**Выходы**

| Элемент | Описание |
| --- | --- |
| out | Потенциальное управление |
| on | Включить (импульсное) |
| off | Выключить (импульсное) |
| err | Ошибка |

Выход потенциального управления **out** выставляется в **1**, если управление **inp** и разрешение **enb** равны **1**.

На выходах импульсного управления **on** и **off** выдаются импульсы длиной в один таймерный интервал (если блок находится в **Таймере**) соответственно при включении и выключении выхода **out**.

Ошибка **err** выдается, если обратный сигнал **ret** не появился в течение таймаута **cnt** (задается в миллисекундах). Для правильной работы таймера ошибки данный блок следует размещать в <b>*Таймере*</b>, а значения **cnt** задавать кратными времени таймерного цикла.

![Управление реле (Set SW)](https://docs.owen.ru/book_img/1933/135536.png)

*Управление реле (SetSW)*

<a id="topic-95888"></a>

#### Многорежимный генератор импульсов (AdvPulse)

Блок <b>*AdvPulse*</b> представляет собой таймер с несколькими режимами работы. Раздел библиотеки: <b>*Регуляторы*</b>.

**Назначение входов и выходов AdvPulse**

**Входы**

| Элемент | Описание |
| --- | --- |
| x | Входной сигнал |
| T | Временная задержка в секундах |
| mod | Номер режима работы |

**Выходы**

| Элемент | Описание |
| --- | --- |
| q | Выходной сигнал, инициализируется **0** |

Если **Mod = 0**, то по фронту **x** выставляется **q = 1** на период **T**. По истечении **T** значение **q** сбрасывается на **0**.

Если **Mod = 1** (или любое другое значение кроме **0** и **2**), то по фронту **x** выставляется **q = 1** на период **T**. Спад **x** не влияет на состояние выхода. Повторное появление фронта **x** во время **q = 1** не влияет на отсчет времени задержки.

Если **Mod = 2**, то по фронту **x** выставляется **q = 1** на период **T**. Спад **x** не влияет на состояние выхода. Повторное появление фронта **x** во время **q = 1** перезапускает отсчет времени задержки.

![Многорежимный генератор импульсов (Adv Pulse)](https://docs.owen.ru/book_img/1933/135535.png)

*Многорежимный генератор импульсов (AdvPulse)*

<a id="topic-95889"></a>

#### Интегрирующий задатчик (TrackSum)

Блок <b>*TrackSum*</b> представляет собой интегрирующий задатчик. Раздел библиотеки: <b>*Регуляторы*</b>.

Для адекватной работы данного блока следует размещать его только в <b>*Таймере*</b>.

**Назначение входов и выходов TrackSum**

**Входы**

| Элемент | Описание |
| --- | --- |
| x | Заданное значение |
| LU | Верхний предел интегрирования |
| LL | Нижний предел интегрирования |
| SV | Балансировочное значение выхода |
| TU | Время интегрирования от **LL** до **LU** в секундах |
| TD | Время интегрирования от **LU** до **LL** в секундах |
| CU | Бит включения интегрирования «вверх» |
| CD | Бит включения интегрирования «вниз» |
| CF | Бит включения задатчика |
| S | Бит включения балансировки |

**Выходы**

| Элемент | Описание |
| --- | --- |
| Y | Текущее значение на выходе задатчика, инициализируется **0** |
| YA | Приращение **Y** за таймерный цикл, инициализируется **0** |
| QE | Бит индикации достижения **x**, инициализируется **0** |
| QU | Бит индикации достижения **LU**, инициализируется **0** |
| QL | Бит индикации достижения **LL**, инициализируется **0** |

При установленном бите **CF** производится достижение заданного значения **x** путем интегрирования «вверх» или «вниз» с заданным темпом (параметры **TU** или **TD**), если текущее значение выхода **Y** соответственно меньше или больше **x**. Если **CF = 0**, можно производить интегрирование от **LL** до **LU** или от **LU** до **LL** с заданным темпом (**TU** или **TD**), устанавливая биты **CU** или **CD**. Установка бита **S** позволяет остановить интегратор и получить на выходе значение, равное входному **SV**.

![Интегрирующий задатчик (Track Sum)](https://docs.owen.ru/book_img/1933/135534.png)

*Интегрирующий задатчик (TrackSum)*

<a id="topic-95890"></a>

#### Идеальное/реальное дифференцирующее звено (Deriv_new)

Блок <b>*Deriv*</b><b>*\_*</b><b>*new*</b> представляет собой идеальное или реальное дифференцирующее звено, в зависимости от величины **Ta**. Раздел библиотеки: <b>*Регуляторы*</b>.

**Назначение входов и выходов Deriv_new**

**Входы**

| Элемент | Описание |
| --- | --- |
| x | Входная величина |
| Kd | Коэффициент усиления |
| Ta | Постоянная времени дифференцирования в секундах |

**Выходы**

| Элемент | Описание |
| --- | --- |
| D | Выходная величина, инициализируется **0** |

При **Ta > 2,5** **величины таймерного цикла** блок работает как реальное дифференцирующее звено с передаточной функцией:

```
G(s) = Kd ∙ s/(Ta ∙ s + 1)
```

При **Ta ≤ 2,5** **величины таймерного цикла** блок работает близко к идеальному дифференцирующему звену с передаточной функцией:

```
G(s) = Kd ∙ s
```

![Идеальное-реальное дифференцирующее звено (Deriv new)](https://docs.owen.ru/book_img/1933/135533.png)

*Идеальное/реальное дифференцирующее звено (Deriv_new)*

<a id="topic-95891"></a>

#### Ограничитель ресурсов управления сервоприводом (LimUpr)

Блок <b>*LimUpr*</b> является ограничителем ресурсов управления, вычисляющим допустимый диапазон приращений сигнала управления сервоприводом с учетом ограничений на положение и скорость перемещения последнего. Раздел библиотеки: <b>*Регуляторы*</b>.

**Назначение входов и выходов LimUpr**

**Входы**

| Элемент | Описание |
| --- | --- |
| H | Верхнее ограничение положения сервопривода в относительных единицах |
| Int | Текущее задание управления сервоприводом в относительных единицах |
| L | Нижнее ограничение положения сервопривода в относительных единицах |
| Srv | Текущее положение сервопривода в относительных единицах |
| R | Допустимое рассогласование текущего задания и текущего положения сервопривода в относительных единицах |
| Ts | Минимальное время перекладки сервопривода в секундах |

**Выходы**

| Элемент | Описание |
| --- | --- |
| O_r | Ресурс управления на открытие |
| C_r | Ресурс управления на закрытие |
| O_u | Признак выхода сервопривода на верхнее ограничение |
| C_u | Признак выхода сервопривода на нижнее ограничение |

Расчет состоит из последовательности операций сравнения и присваивания (по результатам сравнения) и выполняется с учетом следующих приоритетов:

- скорость изменения задание управления ограничивается **Ts**,
- верхнее ограничение **H** имеет приоритет над нижним **L**,
- допустимое рассогласование ограничивается **R**.

![Ограничитель ресурсов управления сервоприводом (Lim Upr)](https://docs.owen.ru/book_img/1933/135562.png)

*Ограничитель ресурсов управления сервоприводом (LimUpr)*

<a id="topic-95892"></a>

#### Выбор режима (Mode)

Блок <b>*Mode*</b> осуществляет переключение режимов. Раздел библиотеки: <b>*Регуляторы*</b>.

**Назначение входов и выходов Mode**

**Входы**

| Элемент | Описание |
| --- | --- |
| EN | Разрешение на работу блока |
| I | Управляющий бит (циклический) |

**Выходы**

| Элемент | Описание |
| --- | --- |
| QC | Сигнализация о смене режима |
| Q | Выходной бит (циклический) |

![Выбор режима (Mode)](https://docs.owen.ru/book_img/1933/135561.png)

*Выбор режима (Mode)*

<a id="topic-95893"></a>

#### Интегральный формирователь (IforP)

Блок <b>*IforP*</b> является нелинейным интегральным формирователем приращений, который отрабатывает допустимую величину приращения выходного сигнала. Раздел библиотеки: <b>*Регуляторы*</b>.

**Назначение входов и выходов IforP**

**Входы**

| Элемент | Описание |
| --- | --- |
| inp | Вход формирователя |
| Ti | Постоянная времени интегрирования в секундах |
| min | Текущий ресурс на уменьшение |
| max | Текущий ресурс на увеличение |

**Выходы**

| Элемент | Описание |
| --- | --- |
| I | Значение приращения выхода, инициализируется **0** |
| min | Остаточный ресурс на уменьшение, инициализируется **0** |
| max | Остаточный ресурс на увеличение, инициализируется **0** |

Алгоритм:

```
I_i = inp_i ∙ t_0/Ti;
если I_i > max → I_i = max,
если I_i < min → I_i = min,
min_i = min - I_i,
max_i = max - I_i
```

Передаточная функция **inp****→** **I**:

```
G(s) = 1/(Ti ∙ s)
```

![Интегральный формирователь (Ifor P)](https://docs.owen.ru/book_img/1933/135560.png)

*Интегральный формирователь (IforP)*

<a id="topic-95894"></a>

#### ПД-формирователь (fPDT)

Блок <b>*fPDT*</b> является модификацией блока [Апериодическое звено](#topic-95878). Раздел библиотеки: <b>*Регуляторы*</b>.

**Назначение входов и выходов fPDT**

**Входы**

| Элемент | Описание |
| --- | --- |
| inp | Вход формирователя |
| Tf | Постоянная времени фильтра в секундах |
| Tv | Постоянная времени дифференцирования в секундах |
| bal | Разрешение режима балансировки |

**Выходы**

| Элемент | Описание |
| --- | --- |
| out | Значение пропорциональной составляющей, инициализируется **inp** |
| dif | Значение дифференциальной составляющей, инициализируется **0** |

Алгоритм:

```
bal = 0: out_i = out_(i - 1) + (inp_i - out_(i - 1)) ∙ (1 - exp(-t⁄Tf)),
dif_i = (inp_i - out_(I - 1)) ∙ Tv⁄Tf;
bal = 1: out_i = inp_i;
dif_i = 0
```

Передаточные функции:

```
inp → out: G(s) = 1/(Tf ∙ s + 1);
inp → dif: G(s) = Tv ∙ s/(Tf ∙ s + 1)
```

![ПД формирователь (f PDT)](https://docs.owen.ru/book_img/1933/135559.png)

*ПД-формирователь (fPDT)*

<a id="topic-95895"></a>

#### Импульсный регулятор (DCtrl)

Блок <b>*DCtrl*</b> реализует ПД-регулятор с импульсными выходными сигналами. Раздел библиотеки: <b>*Регуляторы*</b>.

**Назначение входов и выходов DCtrl**

**Входы**

| Элемент | Описание |
| --- | --- |
| inp | Рассогласование на входе в регулятор |
| dz | Мертвая зона обработки рассогласования |
| Kp | Коэффициент усиления пропорциональной составляющей ПД-регулятора |
| Kd | Коэффициент усиления дифференциальной составляющей ПД-регулятора |
| Td | Постоянная времени регулятора (реального дифференциатора) |
| H | Регулируемая величина на верхнем ограничении |
| L | Регулируемая величина на нижнем ограничении |
| Vlim | Регулируемая величина |
| maxV | Верхнее ограничение регулируемой величины |
| minV | Нижнее ограничение регулируемой величины |
| Kv | Коэффициент усиления ограничительного регулятора |
| dl | Гистерезис ограничения |
| T | Время периода одного импульса |
| tmin | Минимальное время выходного импульса |
| Smax | Максимальная скважность выходного импульса |
| Enbl | Разрешение работы блока |
| her | Рассогласование, считающееся ошибкой после переходного процесса |
| Ter | Постоянная времени апериодического процесса накопления ошибки |
| Rer | Сброс ошибки |

**Выходы**

| Элемент | Описание |
| --- | --- |
| Up | Импульсы на увеличение регулируемой величины |
| Dw | Импульсы на уменьшение регулируемой величины |
| PrY | Пропорциональная составляющая выходного сигнала регулятора |
| DfY | Дифференциальная составляющая выходного сигнала регулятора |
| LmU | Регулируемая величина на верхнем ограничении |
| LmD | Регулируемая величина на нижнем ограничении |
| Err | Ошибка регулирования (неотработка) |

При наличии сигнала на входе **Enbl** вычисления внутри блока не производятся (за исключением вычисления суммарной накопленной ошибки **Serr**), а **LmU**, **LmD = 0**. **Err** выставляется, если накопленная ошибка **Serr** (внутренняя переменная) становится больше, чем **her**. **Serr** накапливается по апериодическому закону с постоянной времени **Ter**. Если регулируемая величина находится на верхнем или нижнем ограничении (**LmU**, **LmD**), то **Serr** не накапливается. Как только сигнал поступает, **Rer**, **Err** и **Serr** сбрасываются до **0**.

![Импульсный регулятор (DCtrl)](https://docs.owen.ru/book_img/1933/135558.png)

*Импульсный регулятор (DCtrl)*

<a id="topic-95896"></a>

#### ПИ-регулятор (PIC)

Блок <b>*PIC*</b> реализует ПИ-регулятор. Раздел библиотеки: <b>*Регуляторы*</b>.

Для адекватной работы блока необходимо размещать его только в <b>*Таймере*</b>.

**Назначение входов и выходов PIC**

**Входы**

| Элемент | Описание |
| --- | --- |
| SP | Внешнее корректирующее значение в % |
| ERR | Рассогласование регулируемой величины с заданием в % |
| MAX | Максимальное значение на выходе **Y** в % |
| MIN | Минимальное значение на выходе **Y** в % |
| SV | Балансировочное значение выхода |
| SET | Бит включения балансировки |
| KP | Коэффициент пропорциональности ПИ-регулятора |
| TI | Постоянная времени интегратора в секундах |
| KSP | Коэффициент усиления в ветви **SP** |
| HIN | Бит остановки интегратора |

**Выходы**

| Элемент | Описание |
| --- | --- |
| Y | Выходное значение регулятора, инициализируется **0** |
| YI | Выходное значение с интегратора регулятора, инициализируется **0** |
| QU | Бит индикации достижения **MAX**, инициализируется **0** |
| QL | Бит индикации достижения **MIN**, инициализируется **0** |

![ПИ-регулятор (PIC)](https://docs.owen.ru/book_img/1933/135557.png)

*ПИ-регулятор (PIC)*

<a id="topic-95897"></a>

#### ПИД-регулятор (PID)

Блок <b>*PID*</b> реализует ПИД-регулятор. Раздел библиотеки: <b>*Регуляторы*</b>.

Для адекватной работы блока необходимо размещать его только в <b>*Таймере*</b>.

**Назначение входов и выходов PID**

**Входы**

| Элемент | Описание |
| --- | --- |
| E | Разрешение на работу блока (в выключенном состоянии на выход блока подается значение, заданное на входе **Poff**) |
| Pv | Текущее значение регулируемой величины |
| Sp | Заданное значение регулируемой величины |
| Rr | Режим работы регулятора:<br>**0** – нагреватель;<br>**1** – холодильник |
| Poff | Выходная мощность в выключенном состоянии: **0…100** **%**, по умолчанию **20** |
| d | Дельта ошибки. Если **\|Sp - Pv\| > d**, то блок продолжает расчет коэффициентов, по умолчанию **0** |
| hys | Гистерезис. Если **\|Sp - Pv\| < hys**, то блок передает на выход прошлую рассчитанную мощность, должен быть меньше или равен дельте ошибки **d**, по умолчанию **0** |
| Kp | Пропорциональный коэффициент, с которым работает ПИД-регулятор, по умолчанию **2** |
| Ki | Интегральный коэффициент, с которым работает ПИД-регулятор, по умолчанию **0****,****01** |
| Kd | Дифференциальный коэффициент, с которым работает ПИД-регулятор, по умолчанию **0****,****01** |
| Min | Минимальная мощность, нижнее ограничение выдаваемой мощности: **0…100 %**, по умолчанию **20** |
| Max | Максимальная мощность, верхнее ограничение выдаваемой мощности: **0…100 %**, по умолчанию **80** |

**Выходы**

| Элемент | Описание |
| --- | --- |
| out | Выходная мощность, **0…100 %**. При выключенном блоке (**Е = 0**) на выход подается значение **Poff** |
| st | Статус ошибок:<br>**0** – нормальная работа;<br>**1** – выходная мощность в выключенном состоянии не в допуске;<br>**2** – пропорциональный коэффициент не в допуске;<br>**3** – значения **Min** и/или **Max** не в допуске и/или значение **Min** больше значения **Max** |
| P | Пропорциональная составляющая |
| I | Интегральная составляющая |
| D | Дифференциальная составляющая |

Для настройки регулятора нужно варьировать коэффициенты:

- при увеличении **Kp** увеличивается скорость выхода на установленное значение, увеличивается управляющий сигнал. Чисто математически система не может прийти ровно к заданному значению, так как при приближении к уставке **Sp** составляющая пропорционально уменьшается. При дальнейшем увеличении **Kp** реальная система теряет устойчивость и начинаются колебания;
- при увеличении **Ki** растет скорость компенсации накопившейся ошибки, что позволяет вывести систему точно к заданному значению с течением времени. Если система медленная, а **Ki** слишком большой – интегральная сумма сильно вырастет и произойдет перерегулирование, которое может иметь характер незатухающих колебаний с большим периодом. Поэтому интегральную сумму в алгоритме регулятора часто ограничивают, чтобы она не могла увеличиваться и уменьшаться до бесконечности;
- при увеличении **Kd** растет стабильность системы, она не дает системе меняться слишком быстро. В то же время **Kd** может стать причиной неадекватного поведения системы и постоянных скачков управляющего сигнала, если значение с датчика «шумит».

![ПИД-регулятор (PID)](https://docs.owen.ru/book_img/1933/135556.png)

*ПИД-регулятор (PID)*

<a id="topic-95898"></a>

#### Импульсный ПИ-регулятор (IPIC)

Блок <b>*IPIC*</b> реализует импульсный ПИ-регулятор. Применяется с интегрирующими исполнительными механизмами и служит для управления техническими процессами с помощью двоичных управляющих сигналов «больше-меньше». Раздел библиотеки: <b>*Регуляторы*</b>.

Для адекватной работы блока необходимо размещать его только в <b>*Таймере*</b>.

**Назначение входов и выходов IPIC**

**Входы**

| Элемент | Описание |
| --- | --- |
| Enbl | Бит разрешения работы блока |
| COM_RST | Бит сброса и перезагрузки регулятора |
| H | Сигнал верхнего ограничения управляемого исполнительного элемента |
| L | Сигнал нижнего ограничения управляемого исполнительного элемента |
| LMNRS_ON | Разрешение имитации датчика положения управляемого исполнительного элемента |
| LMNRSVAL | Начальное значение имитируемого положения в % |
| LMNS_ON | Разрешение действия внешних команд «больше-меньше» |
| LMNUP | Внешний сигнал управления «больше» |
| LMNDN | Внешний сигнал управления «меньше» |
| inp | Рассогласование регулируемой величины в % от базового значения |
| Dband | Ширина зоны нечувствительности в % от базового значения |
| KP | Коэффициент пропорциональной составляющей |
| TI | Постоянная времени интегральной составляющей в секундах |
| PULSE_TM | Минимальная длительность импульса управления в секундах |
| BREAK_TM | Минимальная длительность паузы в секундах |
| MTR_TM | Время полного хода привода между крайними положениями в секундах |
| DISV | Вход дополнительного внешнего возмущающего воздействия: **-100,0...100,0 %** |
| SV_YI | Значение балансировки интегральной составляющей в % |
| SET | Команда балансировки интегральной составляющей |

**Выходы**

| Элемент | Описание |
| --- | --- |
| UP | Импульсы на открытие управляемого элемента, инициализируется **0** |
| DN | Импульсы на закрытие управляемого элемента, инициализируется **0** |
| PrY | Значение пропорциональной составляющей выходного сигнала регулятора в %, инициализируется **0** |
| YI | Значение интегральной составляющей выходного сигнала регулятора в %, инициализируется **0** |
| OPEN | Бит индикации достижения открытого положения управляемого элемента, инициализируется **0** |
| CLOSE | Бит индикации достижения закрытого положения управляемого элемента, инициализируется **0** |
| Err_V | Значение ошибки регулирования с учетом зоны нечувствительности в %, инициализируется **0** |
| LMNR_SIM | Имитированное значение обратной связи по положению арматуры в % |
| Q_dInteg | Приращение интегратора за цикл в % |
| Q_TI | Фактическое значение постоянной интегрирования в секундах |
| Q_dThrStIn | Значение на входе трех-порогового элемента в % |
| Q_sThrOn | Порог включения в % |
| Q_rThrOff | Порог отключения в % |
| Q_stImpDauer | Обратный отсчет минимальной длительности импульса в секундах |
| Q_stPausDauer | Обратный отсчет минимальной длительности паузы в секундах |

![Импульсный ПИ-регулятор (IPIC)](https://docs.owen.ru/book_img/1933/135555.png)

*Импульсный ПИ-регулятор (IPIC)*

<a id="topic-95899"></a>

#### Импульсный ПД-регулятор с балансировкой (IPDC)

Блок <b>*IPDC*</b> реализует ПД-регулятор с импульсными выходными сигналами, формируемыми генератором ШИМ. Раздел библиотеки: <b>*Регуляторы*</b>.

Для адекватной работы блока необходимо размещать его только в <b>*Таймере*</b>.

**Назначение входов и выходов IPDC**

**Входы**

| Элемент | Описание |
| --- | --- |
| inp | Рассогласование на входе в регулятор в % от базовой величины |
| dz | Мертвая зона обработки рассогласования в % от базовой величины |
| Kp | Коэффициент усиления пропорциональной составляющей ПД-регулятора |
| Kd | Коэффициент усиления дифференциальной составляющей ПД-регулятора |
| Ta | Постоянная времени апериодического звена реального дифференциатора в секундах |
| H | Регулируемая величина на верхнем ограничении |
| L | Регулируемая величина на нижнем ограничении |
| Vlim | Регулируемая величина |
| maxV | Верхнее ограничение регулируемой величины |
| minV | Нижнее ограничение регулируемой величины |
| Kv | Коэффициент усиления ограничительного П-регулятора |
| dl | Гистерезис ограничения |
| T | Время периода одного импульса ШИМ в секундах |
| tmin | Минимальное время выходного импульса в секундах |
| Smax | Максимальная скважность выходного импульса от **tmin/T** до **1** |
| Enbl | Разрешение работы блока |
| her | Рассогласование, считающееся ошибкой после переходного процесса |
| Ter | Постоянная времени апериодического процесса накопления ошибки |
| Rer | Сброс накопления ошибки |
| SV | Значение балансировки апериодического звена реального дифференциатора |
| SET | Команда балансировки |

**Выходы**

| Элемент | Описание |
| --- | --- |
| Up | Импульсы на увеличение регулируемой величины |
| Dw | Импульсы на уменьшение регулируемой величины |
| PrY | Пропорциональная составляющая выходного сигнала регулятора |
| DfY | Дифференциальная составляющая выходного сигнала регулятора |
| AperY | Выходной сигнал апериодического звена реального дифференциатора |
| LmH | Регулируемая величина на верхнем ограничении |
| LmL | Регулируемая величина на нижнем ограничении |
| LmU | Сработал ограничительный регулятор на повышение |
| LmD | Сработал ограничительный регулятор на понижение |
| Err | Наличие ошибки регулирования (неотработки) |

При наличии на входе регулятора значения рассогласования вне заданной мертвой зоны производится расчет выходного сигнала регулятора в виде суммы пропорциональной и дифференциальной составляющих. Далее выходной сигнал регулятора подается на вход ШИМ-генератора, который преобразует данный сигнал в сигналы управления «больше-меньше» с длительностью в пределах заданного периода ШИМ.

При наличии сигнала на входе **Enbl** вычисления внутри блока не производятся (за исключением вычисления суммарной накопленной ошибки **Serr**), а **LmU** и **LmD = 0**. **Err** выставляется, если накопленная ошибка **Serr** (внутренняя переменная) становится больше, чем **her**. **Serr** накапливается по апериодическому закону с постоянной времени **Ter**. Если регулируемая величина находится на верхнем или нижнем ограничении (**LmU**, **LmD**), то **Serr** не накапливается. При поступлении сигнала **Rer**, **Err** и **Serr** сбрасываются в **0**.

![Импульсный ПД-регулятор с балансировкой (IPDC)](https://docs.owen.ru/book_img/1933/135554.png)

*Импульсный ПД-регулятор с балансировкой (IPDC)*

<a id="topic-95900"></a>

#### Интегрирующий задатчик (TrackRamp)

Блок <b>*TrackRamp*</b> представляет собой интегрирующий задатчик. Раздел библиотеки: <b>*Регуляторы*</b>.

Для адекватной работы данного блока необходимо размещать его только в <b>*Таймере*</b>.

**Назначение входов и выходов TrackRamp**

**Входы**

| Элемент | Описание |
| --- | --- |
| x | Заданное значение |
| LU | Верхний предел интегрирования |
| LL | Нижний предел интегрирования |
| SV | Балансировочное значение выхода |
| RU | Темп интегрирования от **LL** до **LU**, параметр/секунда |
| RD | Темп интегрирования от **LU** до **LL**, параметр/секунда |
| CU | Бит включения интегрирования «вверх» |
| CD | Бит включения интегрирования «вниз» |
| CF | Бит включения задатчика |
| S | Бит включения балансировки |

**Выходы**

| Элемент | Описание |
| --- | --- |
| Y | Текущее значение на выходе задатчика, инициализируется **0** |
| YA | Приращение **Y** за таймерный цикл, инициализируется **0** |
| QE | Бит индикации достижения **x**, инициализируется **0** |
| QU | Бит индикации достижения **LU**, инициализируется **0** |
| QL | Бит индикации достижения **LL**, инициализируется **0** |

При установленном бите **CF** производится достижение заданного значения **x** путем интегрирования «вверх» или «вниз» с заданным темпом (параметры **RU** или **RD**), если текущее значение выхода **Y** соответственно меньше или больше **x**. Если **CF = 0**, можно производить интегрирование от **LL** до **LU** или от **LU** до **LL** с заданным темпом (**R****U** или **R****D**), устанавливая биты **CU** или **CD**. Установка бита **S** позволяет остановить интегратор и получить на выходе значение, равное входному **SV**.

![Интегрирующий задатчик (Track Ramp)](https://docs.owen.ru/book_img/1933/135553.png)

*Интегрирующий задатчик (TrackRamp)*

<a id="topic-95901"></a>

#### Идеальное/реальное дифференцирующее звено с балансировкой (rDIF)

Блок **rDIF** представляет собой реальное или идеальное дифференцирующее звено, в зависимости от величины **Ta**. Раздел библиотеки: <b>*Регуляторы*</b>.

Для адекватной работы блока необходимо размещать его только в <b>*Таймере*</b>.

**Назначение входов и выходов rDIF**

**Входы**

| Элемент | Описание |
| --- | --- |
| x | Входная величина |
| Kd | Коэффициент усиления по производной |
| Ta | Постоянная времени апериодического звена в секундах |
| Bal | Бит балансировки апериодического звена |

**Выходы**

| Элемент | Описание |
| --- | --- |
| Y_diff | Выходной сигнал производной в **X****/сек** |
| Y_aper | Выходной сигнал апериодического звена |

При **Ta > 2,5 величины таймерного цикла** блок работает как реальное дифференцирующее звено с передаточными функциями:

```
x → Y_diff: Kd ∙ s/(Ta ∙ s + 1),
x → Y_aper: 1/(Ta ∙ s + 1)
```

При **Ta ≤ 2,5 величины таймерного цикла** блок работает близко к идеальному дифференцирующему звену с передаточной функцией:

```
G(s) = Kd ∙ s
```

При подаче активного логического сигнала на вход **Bal** выход апериодического звена **Y_aper** балансируется значением входного сигнала **X**.

![Идеальное-реальное дифференцирующее звено с балансировкой (r DIF)](https://docs.owen.ru/book_img/1933/135582.png)

<i>**Идеальное/реальное дифференцирующее звено с балансировкой (rDIF)**</i>

<a id="topic-95902"></a>

#### Многорежимный генератор импульсов с балансировкой (AdvPulseB)

Блок **AdvPulseB** представляет собой таймер с несколькими режимами работы. Раздел библиотеки: <b>*Регуляторы*</b>.

Для адекватной работы блока необходимо размещать его только в <b>*Таймере*</b>.

**Назначение входов и выходов AdvPulseB**

**Входы**

| Элемент | Описание |
| --- | --- |
| x | Входной сигнал |
| T | Временная задержка в секундах (должно быть кратным таймерному циклу) |
| mod | Номер режима работы |
| S_RT | Значение балансировки оставшейся длительности импульса в секундах |
| bal | Бит балансировки |

**Выходы**

| Элемент | Описание |
| --- | --- |
| q | Выходной сигнал, инициализируется **0** |
| Rem_T | Оставшееся значение длительности импульса в секундах (счетчик обратного отсчета) |

Если **Mod = 0**, то по фронту **x** выставляется **q = 1** на период **T**. По истечении **T** выход сбрасывается в **0**.

Если **Mod = 1** (или любое другое значение кроме **0** и **2**), то по фронту **x** выставляется **q = 1** на период **T**. Спад **x** не влияет на состояние выхода. Повторное появление фронта **x** не влияет на отсчет времени задержки, пока **q = 1**.

Если **Mod = 2**, по фронту **x** выставляется **q = 1** на период **T**. Спад **x** не влияет на состояние выхода. Повторное появление фронта **x** при **q = 1** перезапускает отсчет времени задержки.

При подаче на вход **bal** активного логического сигнала выход **q** балансируется значением на входного сигнала **x**, а значение счетчика обратного отсчета длительности импульса балансируется значением на входе **S_RT**.

![Многорежимный генератор импульсов с балансировкой (Adv Pulse B)](https://docs.owen.ru/book_img/1933/135581.png)

*Многорежимный генератор импульсов с балансировкой (AdvPulseB)*

<a id="topic-95903"></a>

### Обработка сигналов

<a id="topic-95904"></a>

#### Фильтр Баттерворта 3-го порядка (fBatt)

Блок **fBatt** является колебательным звеном третьего порядка c постоянной времени **Ti**. Раздел библиотеки: <b>*Обработка сигналов*</b>.

Для адекватной работы фильтра необходимо размещать данный блок в <b>*Таймере*</b>.

**Назначение входов и выходов fBatt**

**Входы**

| Элемент | Описание |
| --- | --- |
| inp | Вход фильтра |
| Ti | Постоянная времени фильтра в секундах |
| bal | Разрешение режима балансировки |

**Выходы**

| Элемент | Описание |
| --- | --- |
| o3 | Значение выхода фильтра Баттерворта 3-го порядка, инициализируется **inp** |
| out | Значение выхода апериодического звена первого порядка, инициализируется **inp** |

Алгоритм:

```
bal = 0: out_i = out_(i-1) + (inp_i – out_(i-1)) ∙ (1 – exp(-t⁄Ti));
bal = 1: out_i = out3_i = inp_i
```

Передаточная функция **inp → out**:

```
G(s) = 1/(Tf ∙ s + 1)
```

Передаточная функция **inp → o3**:

```
G(s) = (Tf ∙ s + 1)/(Tf^2 ∙ s^2 + sqrt(2) ∙ Tf ∙ s + 1)
```

![Фильтр Баттерворта 3-го порядка (f Batt)](https://docs.owen.ru/book_img/1933/135580.png)

*Фильтр Баттерворта 3-го порядка (fBatt)*

<a id="topic-95905"></a>

#### Преобразование int-аналоговый вход во float с масштабированием
(Sensor)

Блок <b>*Sensor*</b> осуществляет масштабирование входного сигнала **I** из интервала **\[minx...maxx\]** в интервал **\[miny…maxy\]** и фильтрацию сигнала с помощью Фильтра Баттерворта 3-го порядка с постоянной времени **Т**. Раздел библиотеки: <b>*Обработка сигналов*</b>.

**Назначение входов и выходов Sensor**

**Входы**

| Элемент | Описание |
| --- | --- |
| I | Сигнал от датчика |
| err | Не используется |
| Terr | Не используется |
| minx | Минимум входа |
| maxx | Максимум входа |
| miny | Минимум |
| maxy | Максимум |
| minr | Минимальный достоверный |
| maxr | Максимальный достоверный |
| T | Постоянная времени |
| bal | Балансировка |
| simv | Значение симуляции |
| simi | Симуляция |

**Выходы**

| Элемент | Описание |
| --- | --- |
| val | Текущее значение сумматора, инициализируется **upr** |
| err | Не используется |
| uf | Сигнал – значение больше **maxr** |
| if | Сигнал – значение меньше **minr** |
| simo | Режим симуляции |
| vals | Текущее значение после масштабирования |

В блоке предусмотрен режим симуляции (включен при **simi = 1**), при котором значение **simv** передается на выход **val** без обработки.

Значение **val**, полученное после обработки и симуляции, проверяется на соответствие интервалу достоверности **\[minr…maxr\]**. Если **val < minr**, **lf = 1**. Если **val > maxr**, **uf = 1**.

![Преобразование int-аналоговый вход во float с масштабированием (Sensor)](https://docs.owen.ru/book_img/1933/135579.png)

*Преобразование int-аналоговый вход во float с масштабированием (Sensor)*

<a id="topic-95906"></a>

#### Преобразование 4…20 мА в реальные единицы измерения (asensor)

Блок <b>*asensor*</b> используется для обработки сигнала 4…20 мА. Блок масштабирует входной ток в реальные единицы измерения, формирует предупредительные и аварийные сигналы при выходе масштабированного сигнала за диапазон. Раздел библиотеки: <b>*Обработка сигналов*</b>.

**Назначение входов и выходов asensor**

**Входы**

| Элемент | Описание |
| --- | --- |
| val | Входное значение в мА |
| Tf | Постоянная времени фильтра в секундах |
| max | Калибровка при 20 мА (значение **out** при **val = 20 мА**) |
| min | Калибровка при 4 мА (значение **out** при **val = 4 мА**) |
| hist | Гистерезис для формирования уставок **hi**, **lo** и т. д. |
| hi | Уставка высокого уровня срабатывания |
| hihi | Уставка аварийно-высокого уровня срабатывания |
| lo | Уставка низкого уровня срабатывания |
| lolo | Уставка аварийно-низкого уровня срабатывания |
| dtAI | Время срабатывания **hi**, **lo**, **err**, мс |
| dtTr | Время срабатывания **hihi**, **lolo**, **err**, мс |
| err | Ошибка измерения |
| link | Не используется |
| init | Инициализация |

**Выходы**

| Элемент | Описание |
| --- | --- |
| I | Трансляция входа **val** |
| ouF | Откалиброванное значение по **min…max** |
| eri | Трансляция входа **err** |
| Thi | Сигнал достижения уставки **hi** после задержки **dtAI** |
| Tahi | Сигнал достижения уставки **hihi** после задержки **dtTr** |
| Tlo | Сигнал достижения уставки **lo** после задержки **dtAI** |
| Talo | Сигнал достижения уставки **lolo** после задержки **dtTr** |

![Преобразователь 4-20 м А в реальные единицы измерения (asensor)](https://docs.owen.ru/book_img/1933/135578.png)

*Преобразователь 4…20 мА в реальные единицы измерения (asensor)*

<a id="topic-95907"></a>

#### Апериодический фильтр 2-го порядка (fFlt2T)

Блок <b>*fFlt*</b><b>*2*</b><b>*T*</b> является апериодическим звеном второго порядка c постоянной времени **Ti**. Раздел библиотеки: <b>*Обработка сигналов*</b>.

Для адекватной работы фильтра необходимо размещать данный блок в <b>*Таймере*</b>.

**Назначение входов и выходов fFlt2T**

**Входы**

| Элемент | Описание |
| --- | --- |
| inp | Вход апериодического звена |
| Tf | Постоянная времени апериодического звена в секундах |
| bal | Разрешение режима балансировки |

**Выходы**

| Элемент | Описание |
| --- | --- |
| o2 | Значение выхода апериодического звена второго порядка, инициализируется **inp** |
| out | Значение выхода апериодического звена, инициализируется **inp** |

Алгоритм:

```
bal = 0: out_i = out_(i-1) + (inp_i - out_(i-1)) ∙ (1 - exp(-t⁄Tf)),
o2_i = o2_(i-1) + (out_i – o2_(i-1)) ∙ (1 - exp(-t⁄Tf)),
bal = 1: out_i = o2_i = inp_i
```

Передаточные функции:

```
inp → out: G(s) = 1/(Tf ∙ s + 1);
inp → o2: G(s) = 1/(Tf^2 ∙ s^2 + Tf ∙ s + 1)
```

![Апериодический фильтр 2-го порядка (f Flt2T)](https://docs.owen.ru/book_img/1933/135577.png)

*Апериодический фильтр 2-го порядка (fFlt2T)*

<a id="topic-95908"></a>

#### Блок компенсации запаздывания сигнала (LEADLAG)

Блок <b>*LEADLAG*</b> представляет собой параллельное соединение реального дифференцирующего звена и апериодического звена первого порядка. Раздел библиотеки: <b>*Обработка сигналов*</b>.

Для адекватной работы фильтра необходимо размещать данный блок в <b>*Таймере*</b>.

**Назначение входов и выходов LEADLAG**

**Входы**

| Элемент | Описание |
| --- | --- |
| x | Входная величина |
| Kd | Коэффициент усиления по производной |
| Ta | Постоянная времени апериодического звена в секундах |
| Bal | Бит балансировки апериодического звена |

**Выходы**

| Элемент | Описание |
| --- | --- |
| Y | Выходной сигнал |
| Y_diff | Выходной сигнал производной, **x****/с** |
| Y_aper | Выходной сигнал апериодического звена |

Апериодическое звено реального дифференциатора и параллельное апериодическое звено имеют одинаковые постоянные времени **Та**.

Входная величина **x** подается на вход идеального дифференциатора с динамической задержкой, равной постоянной времени сглаживания **Tа** (выход **Y_diff**), а также на вход апериодического звена с постоянной времени сглаживания **Tа** (выход **Y_aper**).

Выходная величина **Y_diff** идеального дифференциатора пропорциональна скорости изменения производной **Y_aper**, помноженной на коэффициент воздействия по производной **Kd**. Выходной сигнал блока **Y** образуется сложением значений **Y_aper** и **Y_diff**.

При **Та > 2,5** **величины таймерного цикла** блок работает с передаточными функциями:

```
x → Y_diff: G(s) = Kd ∙ (S)/(Ta ∙ s + 1);
x → Y_aper: G(s) = 1/(1 + Ta ∙ s);
x → Y: G(s) = Y_aper + Y_diff = [Kd ∙ (S)/(Ta ∙ s + 1)] +
+ [1/(1 + Ta ∙ s)] = (1 + Kd ∙ s)/(1 + Ta ∙ s)
```

Блок компенсирует запаздывание изменения входного сигнала (например, с датчика) относительно его реальной величины.

При **Та** **≤** **2,5** в**еличины таймерного цикла** блок работает близко к ПД-регулятору с коэффициентом пропорциональности **kp = 1** и передаточной функцией:

```
G(s) = (1 + Kd ∙ s)
```

![Блок компенсации запаздывания сигнала (LEADLAG)](https://docs.owen.ru/book_img/1933/135576.png)

*Блок компенсации запаздывания сигнала (LEADLAG)*
