VfdGroupPidCascade — группа агрегатов с общим регулятором
VfdGroupPidCascade выбирает рабочие агрегаты и рассчитывает для них общее задание частоты. Компонент предназначен для группы однотипных агрегатов с ПЧ, таких как насосы и вентиляторы. Если одного агрегата не хватает, каскад добавляет следующий. При аварии выбирает исправный резерв, а по наработке чередует оборудование.
Для каждого агрегата нужен VfdGroupEngineUnit: он управляет своим ПЧ и контролирует запуск. Этот компонент отвечает за группу целиком. Если общего регулирования частоты нет, достаточно Cascade.
Как устроен узел
Каждым насосом управляет отдельный VfdGroupEngineUnit. Группа выбирает насосы и задаёт им частоту; сброс аварий и наработки насоса выполняется через его CascadeUnit.
Первое подключение
Заполняйте пример в таблице «Параметры» (Params) добавленного компонента. Как добавить компонент и где искать настройки.
В группе K3 два насоса — K31 и K32. Один работает, второй в резерве; нужно поддерживать давление 4,5 бар. Sensor PT101 уже настроен в барах.
1. Подключите группу
| Параметр | Значение для примера |
|---|---|
Id |
K3 |
Comment |
Группа насосов повышения давления |
Parent |
CabinetController_Inst |
Enable |
bPressureDemand |
CasPV |
PT101_SensFilter_Inst.out_fY |
CasPVErr |
PT101_Sensor_Inst.out_bError |
UnitId1 |
K31 |
UnitId2 |
K32 |
UnitId3 — UnitId16 |
Пусто |
bPressureDemand — команда работы группы из вашего проекта. Один и тот же результат измерения PT101 используется и для выбора числа насосов, и для регулирования частоты. Сам Sensor этим узлом не создаётся. От Parent группа получает только сброс наработки для своих расчётов. Питание и экстренный останов подключаются к родителю каждого насоса.
2. Подключите два насоса
| Параметр VfdGroupEngineUnit | Насос K31 | Насос K32 |
|---|---|---|
Id |
K31 |
K32 |
GroupId |
K3 |
K3 |
StartCmd |
K3_Cascade_Inst.out_Unit1_bCmd |
K3_Cascade_Inst.out_Unit2_bCmd |
RegSensorError |
PT101_Sensor_Inst.out_bError |
PT101_Sensor_Inst.out_bError |
Parent |
CabinetController_Inst |
CabinetController_Inst |
Каждому насосу задайте свои подтверждение работы, пусковой и аналоговый выходы по руководству VfdGroupEngineUnit. У всех ПЧ частота должна использовать одинаковые единицы. Состояние насоса возвращается в каскад через встроенный CascadeUnit.
3. Настройте один рабочий насос
| Настройка | Значение для примера | Назначение |
|---|---|---|
Conf.K3_Cascade_iWorkCount |
1 |
Минимум один насос |
Conf.K3_Cascade_iMaxWorkCount |
1 |
Не включать второй для увеличения подачи |
Conf.K3_Cascade_bPowerControlEnable |
false |
Пока не учитывать нагрузку при выборе количества |
Conf.K3_PID_fSP |
4.5 |
Требуемое давление, бар |
Conf.K3_PID_fDB |
0.2 |
Зона без изменения частоты, бар |
Conf.K3_PID_fYMin / Conf.K3_PID_fYMax |
0.0 / 50.0 |
Полный диапазон частоты, Гц |
Conf.K3_PID_fYLoLimit / Conf.K3_PID_fYHiLimit |
20.0 / 50.0 |
Рабочие пределы автоматического регулирования, Гц |
Conf.K3_PID_fOffValue |
0.0 |
Частота выключенного насоса, Гц |
Коэффициенты и период PID подберите по реакции системы, как описано в PID. При положительном Kp снижение давления увеличивает частоту.
4. Как это будет работать
При включении группы каскад выберет доступный насос с меньшей наработкой и сразу выдаст ему пуск. Второй останется в резерве. Общий PID начнёт расчёт после появления хотя бы одной команды подключения; фактическую работу двигателя проверяет его VfdGroupEngineUnit.
Если рабочий насос сообщит об аварии или станет недоступен, каскад выберет готовый резерв. В автоматическом режиме все включённые насосы получают одинаковое задание общего PID.
Если одного насоса недостаточно
Разрешите максимум два насоса и задайте пороги изменения количества:
| Настройка | Значение для примера |
|---|---|
Conf.K3_Cascade_iWorkCount |
1 |
Conf.K3_Cascade_iMaxWorkCount |
2 |
Conf.K3_Cascade_fSP |
4.5 бар |
Conf.K3_Cascade_fHys |
0.2 бар |
Conf.K3_Cascade_diConnectionDelay |
10 с |
Conf.K3_Cascade_diDisconnectionDelay |
10 с |
Давление ниже 4,3 бар в течение 10 секунд добавит второй насос. Давление выше 4,7 бар в течение 10 секунд позволит отключить один, сохранив минимум. Между порогами количество не меняется, если оно уже находится в заданных пределах.
У группы две отдельные уставки. PID_fSP задаёт давление, которое поддерживается изменением частоты. Cascade_fSP задаёт середину порогов добавления и отключения насосов. Автоматически друг за другом они не следуют; в примере обе равны 4,5 бар.
Количество выбирается по давлению и допустимому диапазону. Дополнительно можно учитывать частоту: передайте её через Power насосов, включите bPowerControlEnable и задайте пределы в герцах. Тогда обычное добавление разрешается только при высокой нагрузке основного насоса, а отключение — при низкой. Первый пуск и быстрая замена потерянного основного насоса выполняются без ожидания мощности.
Резерв и чередование
Каскад выбирает свободный готовый насос с меньшей наработкой. При равных часах предпочтение получает более раннее место списка. Основным становится последний подключённый насос; при уменьшении количества первым снимается он.
Через diSwitchPeriod часов сравнивается наработка с резервом. При подходящем резерве выполняется смена. Значение 0 отключает периодическое чередование. Общий сброс наработки от родителя начинает отсчёт заново.
При смене команда прежнему насосу снимается без ожидания подтверждения запуска резервного. Если больше всех наработал не основной насос, сначала отключается он; пополнение группы затем идёт по обычным правилам количества и давления. Подробные правила приведены в Cascade.
Останов, ошибка датчика и ручное управление
При Enable = FALSE или CasPVErr = TRUE все команды каскада снимаются. В автоматическом режиме PID выдаёт fOffValue. После восстановления разрешения и исправности измерения каскад снова может выбрать доступные насосы.
Чтобы ошибка общего датчика фиксировалась в каждом насосе до сброса, подключите тот же сигнал к RegSensorError каждого VfdGroupEngineUnit. У группы нет собственного фильтра с запоминанием ошибки: CasPVErr действует, пока сигнал TRUE.
Отдельный насос в ручном режиме управляется своими пуском и частотой. Отключение Enable группы не является командой ручного останова этого насоса.
У общего PID также есть ручной режим выхода. Он задаёт одну частоту всем насосам, которые работают от группы автоматически. Сам каскад при этом продолжает выбирать количество по давлению. Ручное значение PID сохраняется и при снятом его разрешении, но команды каскада при останове группы снимаются.
Какие значения смотреть
out_iConnectedCount показывает число выданных команд пуска. out_iWorkingCount — число насосов, уже подтвердивших работу, включая ручные. Они могут различаться, например во время запуска. Минимум и максимум ограничивают число команд каскада.
Результат общего регулятора — K3_PID_Inst.out_fYS. Выход out_fY является отдельным результатом расчёта коррекции; насосы получают именно out_fYS.
Общие настройки
Через CasConf можно использовать общие настройки выбора количества и чередования для нескольких групп. Настройки PID этой группы всегда имеют её Id: например, Conf.K3_PID_fSP. Отдельного PIDConf у VfdGroupPidCascade нет.
Состав узла
Эти части уже соединены внутри компонента; добавлять их повторно не нужно.
| Экземпляр для примера | Описание части | Для чего нужен |
|---|---|---|
K3_Cascade_Inst |
Cascade | Выбирает рабочие и резервные агрегаты. |
K3_PID_Inst |
PID | Рассчитывает числовое задание по измерению. |
Параметры компонента — Params
| Параметр | По умолчанию | Назначение |
|---|---|---|
Id |
_ID_ |
ID узла. По нему создаются имена его состояний, команд и индивидуальных настроек. |
Comment |
Комментарий |
Название конкретного насоса, клапана или группы. |
Parent |
CabinetController_Inst |
Источник out_bWorktimeReset: сбрасывает период чередования и историю расчёта PID. Питание и экстренный останов насосы получают через своих родителей. |
CasPV |
0.0 |
Измерение общего датчика: например, давление после насосов. |
CasPVErr |
FALSE |
Ошибка общего измерения. TRUE снимает команды каскада и разрешение автоматического ПИД-регулирования. |
Enable |
true |
Включение автоматической работы всей группы. |
$Cas |
Каскад |
Название раздела параметров; также используется в комментариях. |
CasConf |
Пусто | ID набора настроек этого раздела. Пусто — использовать Id узла; одинаковый ID — общие настройки. |
CasConfComment |
Пусто | Название набора настроек. При пустом поле используется название узла и, где предусмотрено, раздела. |
UnitId1 |
_ID_ |
ID насоса на месте 1. Пусто — место не используется. |
UnitId2 |
Пусто | ID насоса на месте 2. Пусто — место не используется. |
UnitId3 |
Пусто | ID насоса на месте 3. Пусто — место не используется. |
UnitId4 |
Пусто | ID насоса на месте 4. Пусто — место не используется. |
UnitId5 |
Пусто | ID насоса на месте 5. Пусто — место не используется. |
UnitId6 |
Пусто | ID насоса на месте 6. Пусто — место не используется. |
UnitId7 |
Пусто | ID насоса на месте 7. Пусто — место не используется. |
UnitId8 |
Пусто | ID насоса на месте 8. Пусто — место не используется. |
UnitId9 |
Пусто | ID насоса на месте 9. Пусто — место не используется. |
UnitId10 |
Пусто | ID насоса на месте 10. Пусто — место не используется. |
UnitId11 |
Пусто | ID насоса на месте 11. Пусто — место не используется. |
UnitId12 |
Пусто | ID насоса на месте 12. Пусто — место не используется. |
UnitId13 |
Пусто | ID насоса на месте 13. Пусто — место не используется. |
UnitId14 |
Пусто | ID насоса на месте 14. Пусто — место не используется. |
UnitId15 |
Пусто | ID насоса на месте 15. Пусто — место не используется. |
UnitId16 |
Пусто | ID насоса на месте 16. Пусто — место не используется. |
$PID |
Регулятор |
Название раздела параметров; также используется в комментариях. |
Настройки во время работы — Conf
Полные имена приведены для Id = K3 и пустых полей выбора общих настроек. В таблице указаны начальные значения. Для примера выше задайте значения из шагов подключения.
| Настройка | Тип | Начальное значение | Единицы | Назначение |
|---|---|---|---|---|
Conf.K3_Cascade_iWorkCount |
INT |
1 |
шт. | Минимальное число насосов, которым каскад выдаёт команду. |
Conf.K3_Cascade_iMaxWorkCount |
INT |
1 |
шт. | Максимальное число насосов, которым каскад выдаёт команду. |
Conf.K3_Cascade_fSP |
REAL |
0.0 |
ед. измерения | Уставка для добавления и отключения насосов; задаётся отдельно от уставки PID. |
Conf.K3_Cascade_fHys |
REAL |
0.0 |
ед. измерения | Расстояние от уставки до каждого порога переключения. |
Conf.K3_Cascade_diConnectionDelay |
DINT |
1 |
с | Задержка обычного добавления насоса. |
Conf.K3_Cascade_diDisconnectionDelay |
DINT |
1 |
с | Задержка обычного отключения насоса. |
Conf.K3_Cascade_bPowerControlEnable |
BOOL |
false |
— | Дополнительно учитывать нагрузку основного насоса при изменении количества. |
Conf.K3_Cascade_fPowerLoLimit |
REAL |
0.0 |
ед. Power | Нижний порог нагрузки для отключения основного насоса. |
Conf.K3_Cascade_fPowerHiLimit |
REAL |
0.0 |
ед. Power | Верхний порог нагрузки для подключения следующего насоса. |
Conf.K3_Cascade_diSwitchPeriod |
DINT |
36 |
ч | Период сравнения наработки для чередования. 0 отключает чередование. |
Conf.K3_PID_fSP |
REAL |
0.0 |
ед. измерения | Значение, которое нужно поддерживать. |
Conf.K3_PID_fDB |
REAL |
0.0 |
ед. измерения | Полная ширина зоны около уставки, внутри которой регулятор не меняет задание. |
Conf.K3_PID_fSR |
REAL |
3.0 |
с | Период расчёта, с; должен быть больше нуля. |
Conf.K3_PID_fKp |
REAL |
1.0 |
— | Сила реакции регулятора на отклонение. Знак определяет направление регулирования. |
Conf.K3_PID_fTi |
REAL |
0.0 |
с | Параметр усиления реакции на сохраняющееся отклонение. 0 отключает эту составляющую. |
Conf.K3_PID_fTd |
REAL |
0.0 |
с | Реакция на изменение отклонения. 0 отключает эту составляющую. |
Conf.K3_PID_fYMin |
REAL |
0.0 |
ед. задания | Нижняя граница задания; соответствует нижней границе аналогового выхода. |
Conf.K3_PID_fYMax |
REAL |
100.0 |
ед. задания | Верхняя граница задания; соответствует верхней границе аналогового выхода. |
Conf.K3_PID_fYLoLimit |
REAL |
0.0 |
ед. задания | Нижний предел задания при автоматическом регулировании. |
Conf.K3_PID_fYHiLimit |
REAL |
100.0 |
ед. задания | Верхний предел задания при автоматическом регулировании. |
Conf.K3_PID_fOffValue |
REAL |
0.0 |
ед. задания | Задание при отключённом автоматическом регулировании. Особенности ручного режима описаны выше. |
Команды оператора — View
| Тег | Тип | Действие |
|---|---|---|
View.K3_PID_Inst_inout_bYManual |
BOOL |
TRUE — ручное задание, FALSE — автоматическое. |
View.K3_PID_Inst_inout_fYManual |
REAL |
Задание оператора в единицах выхода: например, % или Гц. |
Состояния и результаты для программы
| Поле экземпляра | Тип | Назначение |
|---|---|---|
K3_Cascade_Inst.out_Unit1_bCmd |
BOOL |
Команда насосу на месте UnitId1; остальные места — out_Unit2_bCmd … out_Unit16_bCmd. |
K3_Cascade_Inst.out_Unit1_bMaster |
BOOL |
Насос на месте 1 выбран основным; такие же признаки есть для мест 2–16. |
K3_Cascade_Inst.out_iConnectedCount |
INT |
Количество выданных команд пуска. |
K3_Cascade_Inst.out_iWorkingCount |
INT |
Количество насосов с подтверждением работы. |
K3_Cascade_Inst.out_iReadyCount |
INT |
Количество доступных исправных насосов. |
K3_Cascade_Inst.out_iCurMaster |
INT |
Индекс основного: 0 — место 1, 1 — место 2; −1 — не выбран. |
K3_Cascade_Inst.out_iMinWorkTime |
INT |
Индекс свободного готового насоса с меньшей наработкой, кроме основного; −1 — нет. |
K3_Cascade_Inst.out_iMaxWorkTime |
INT |
Индекс подключённого готового насоса с большей наработкой, кроме основного; −1 — нет. |
K3_PID_Inst.out_fYS |
REAL |
Итоговое задание PID в единицах выхода. |
K3_PID_Inst.out_fY |
REAL |
Отдельный результат расчёта коррекции; для задания оборудованию используется out_fYS. |