Из Википедии:
Частотно-регулируемый привод (частотно-управляемый привод, ЧУП, Variable Frequency Drive, VFD) — система управления частотой вращения ротора асинхронного (или синхронного) электродвигателя. Состоит из собственно электродвигателя и частотного преобразователя.
Рассмотрим систему теплоснабжения с одним потребителем тепла.
К - водогрейный котёл, Н - насос с ЧРП, М - электропривод, Р - расходомер, РБ - расширительный бак, РК - регулирующий клапан с электроприводом, П - потребитель тепла, БУ - блок управления, У - уставка по расходу. Красным цветом обозначены трубопроводы прямой сетевой воды (горячая вода), синим - обратной сетевой воды (холодная вода).
Давление на всасе насоса задаётся давлением в расширительном баке. В нашем случае абсолютные значения давления в различных точках системы не имеют значения. Для нас важно то, что для каждого режима работы (величины расхода теплоносителя) потери давления в системе равны напору насоса.
Расход в системе зависит как от параметров насоса, так и от свойств гидравлической сети. Расход можно регулировать изменяя гидравлическое сопротивление сети или изменяя частоту вращения вала насоса. Гидравлическое сопротивление сети изменяется путём изменения гидравлического сопротивления регулирующего клапана. При уменьшении площади проходного сечения РК (при прикрытии) его гидравлическое сопротивление увеличивается, и наоборот, при увеличении площади проходного сечения РК (при открытии) - гидравлическое сопротивление уменьшается.
Гидравлическое сопротивление находится по формуле $R = \Delta H/ Q^2$, где $\Delta H$ - потери давления (напора); $Q$ - расход при котором имеют место потери давления $\Delta H$. Характеристика гидравлической сети - парабола (см. [1]).
Частота вращения вала насоса регулируется посредством изменения частоты переменного тока в обмотке статора электродвигателя. Примем, что на выходе частотного преобразователя (далее - ЧП) частота переменного тока может изменяться в диапазоне от 25 Гц до 50 Гц. Если для привода насоса используется асинхронный электродвигатель, то частота вращения вала насоса будет ниже частоты переменного тока на выходе ЧП. Будем считать, что при изменении частоты тока на $n$% частота вращения вала насоса так же изменится на $n$%.
Изменение подачи насоса прямо пропорционально изменению частоты вращения его вала, напора насоса - квадрату изменения частоты вращения вала (см. [2]).
Если частота переменного тока на выходе ЧП составляет 25 Гц, то величина подачи насоса составляет 50% от величины подачи при частоте 50 Гц (0,5 = 25 /50 ), а напор - 25% от напора при 50 Гц (0,25 = 0,5^2).
import numpy as np # работа с массивами
from scipy.interpolate import interp1d # интерполяция/экстраполяция
Насос характеризуется напорной характеристикой. В качестве рассматриваемого насоса взят Grundfos CR 3-3 (см. [3]).
# Моделирование характеристик насоса Grundfos CR 3-3
# Напорная характеристика насоса
# Возьмём несколько точек с напорной характеристики (включая две крайних)
Qs = np.array([1.19, 2, 3, 4, 4.43])
Hs = np.array([18.01, 16.55, 13.64, 8.91, 6.14])
f_head = interp1d(Qs, Hs, kind = 'cubic') # интерполирующая функция для напора
# КПД насоса при расходе Qs
effs = [0.13, 0.19, 0.23, 0.21, 0.184]
f_eff = interp1d(Qs, effs, kind = 'cubic') # интерполирующая функция для КПД
# Набор значений Q для построения графиков
Qs_int = np.linspace(Qs[0], Qs[-1])
import matplotlib.pyplot as plt
plt.rcParams['font.size'] = 12.0
fig, ax = plt.subplots(figsize = (10, 5))
ax.set_xlabel('$Q,\,м^3/ч$');
ax.set_ylabel('$H,\,м$')
ax.plot(Qs_int, list(map(f_head, Qs_int)), label = 'Напор, м');
ax.grid()
ax.set_title("Характеристики насосного агрегата (насос + электродвигатель)")
ax.set_xlim(1., 4.5); ax.set_ylim(6, 18);
ax2 = ax.twinx();
ax2.plot(Qs_int, np.array(list(map(f_eff, Qs_int))) * 100, label = 'КПД, %', color = 'red');
ax2.set_ylim(12, 24);
ax2.set_ylabel('$\eta,\ \%$');
# Объединение легенд двух графиков в одну общую
h1, l1 = ax.get_legend_handles_labels()
h2, l2 = ax2.get_legend_handles_labels()
ax.legend(h1+h2, l1+l2, loc=6);
Установившийся в сети рабочий режим (пара значений подачи (расхода) и напора (потери давления )) - это точка пересечения напорной характеристики насоса и характеристики гидравлической сети.
Насос должен быть подобран таким образом, чтобы все возможные режимы его работы находились внутри рабочего (допустимого) диапазона подач. Вне рабочего диапазона допускается только кратковременная работа.
Так как насос у нас уже есть, то найдём для него граничные характеристики гидравлической сети.
from pipeline import Pipeline # см. [1]
# Гидравлическая сеть с максимальным допустимым сопротивлением
# (является левой границей допустимого диапазона работы насоса)
pl_Rmax = Pipeline(Qs[0], Hs[0])
# Гидравлическая сеть с минимальным допустимым сопротивлением
# (является правой границей допустимого диапазона работы насоса)
pl_Rmin = Pipeline(Qs[-1], Hs[-1])
f_nom = 50 # номинальная частота тока в сети, Гц
f_min = 25 # минимальная частота тока на выходе ЧРП, Гц (макимальная частота 50 Гц)
k_f = f_min / f_nom
# См. график внизу
Q_4 = Qs[0]
H_4 = f_head (Qs[0] * f_nom / f_min) * k_f * k_f
Найдём рабочую область насоса с ЧРП.
fig, ax = plt.subplots(figsize = (10, 5))
ax.plot(Qs_int, list(map(f_head, Qs_int)), label = 'Напорная хар-ка (50 Гц)')
ax.plot(Qs_int * k_f, np.array(list(map(f_head, Qs_int)))* k_f * k_f, label = 'Напорная хар-ка (25 Гц)')
# * перед get_curve - это распаковка кортежа, возвращаемого get_curve
ax.plot(*pl_Rmax.get_curve(0., Qs[0]), label = '$R_{max}$ (левая граница)')
ax.plot(*pl_Rmin.get_curve(0., Qs[-1]), label = '$R_{min}$ (правая граница)')
ax.set_title("Рабочая область насоса c ЧРП")
plt.text(4.4, 5, '1'); plt.text(2.2, 0.5, '3'); plt.text(0.5, 4.5, '5'); plt.text(1.05, 17.6, '2')
ax.plot(Q_4, H_4, 'o', color = 'black'); plt.text(Q_4-0.03, H_4+0.5, '4')
ax.set_xlabel('$Q,\,м^3/ч$');
ax.set_ylabel('$H,\,\Delta H,\,м$')
ax.set_xlim(0, 4.5); ax.set_ylim(0, 20); ax.grid(); ax.legend();
Красная линия соответствует системе с полностью открытым РК (гидравлическое сопротивление системы минимальное $R_{min}$), линия касается правой границы допустимого диапазона напорной характеристики насоса, зелёная ($R_{max}$) - касается левой границы допустимого диапазона напорной характеристики. Если $R_{min}$ - это действительно минимальное гидравлическое сопротивление системы, то $R_{max}$ - это сопротивление системы при котором подача насоса будет равна минимально допустимому значению (левая граница рабочего диапазона). Максимальное гидравлическое сопротивление будет иметь место при полностью закрытом РК и равно бесконечности, расход в системе при этом будет нулевым.
Синяя линия - напорная характеристика насоса при частоте переменного тока на выходе ЧП $f = 50$ Гц, жёлтая - напорная характеристика при $f = 25$ Гц.
Рассмотрим ситуацию при которой необходимо плавно снижать расход в системе от $Q_1$ (максимального) до $Q_2$ = $Q_4$. В блок управления (см. рис. 1) передаётся значение требуемого расхода теплоносителя (уставка), БУ сравнивает значение уставки с измеренным расходомером значением расхода и, при их несовпадении, воздействует на ЧРП насоса или на электропривод РК с целью изменения величины расхода теплоносителя в нужном направлении.
В варианте регулирования расхода с помощью РК при прикрытии РК гидравлическое сопротивление системы возрастает, в связи с чем расход уменьшается. Увеличение гидравлического сопротивления графически изображается проведением более крутой (смещённой влево) параболы, которая пересечёт напорную характеристику насоса (синюю линию) в точке с меньшим значением подачи $Q$.
Таким образом, уменьшение с помощью РК расхода с $Q_1$ до $Q_2$ представляет собой движение точки пересечения изменяющейся при прикрытии РК характеристики гидравлической сети с напорной характеристикой насоса (синяя линия) от точки 1 до точки 2.
При уменьшении частоты вращения вала насоса напорная характеристика насоса смещается влево/вниз. Снижение частоты переменного тока на выходе ЧП от 50 Гц до 25 Гц графически представляется как движение синей линии к жёлтой.
При достижении частоты переменного тока на выходе ЧП минимально допустимого значения (в нашем случае принято $f_{min} = 25$ Гц) дальнейшее снижение расхода в системе происходит за счёт прикрытия РК.
Таким образом, при наличии ЧРП снижение расхода с $Q_1$ до $Q_4 = Q_2$ происходит в два этапа. На первом этапе расход снижается за счёт уменьшения частоты вращения вала насоса (траектория 1 - 3). После снижения $f$ до значения 25 Гц дальнейшее уменьшение расхода происходит за счёт прикрытия РК (траектория 3 - 4).
Как видно из рисунка выше, использование ЧРП совместно с РК позволяет расширить рабочий диапазон насоса за счёт сдвига левой границы рабочего диапазона на величину $Q_4 - Q_5$.
Теперь произведём оценку величины экономии электроэнергии при регулирования расхода с применением ЧРП совместно с РК по сравнению с регулированием только с помощью РК.
Потребляемая электродвигателем насоса мощность определяется по формуле
$$P = \rho gHq / \eta$$где $P$ - потребляемая электрическая мощность, Вт; $\rho$ - плотность перекачиваемой жидкости, кг/м3; $g$ = 9,81 м/с2 - ускорение свободного падения; $H$ - напор насоса, м; $q=Q/3600$ - подача насоса, м3/с; $Q$ - подача насоса, м3/ч; $\eta$ - КПД насосного агрегата (насос + электродвигатель).
Примем, что с изменением частоты переменного тока на выходе ЧП КПД насосного агрегата меняется следующим образом:
# КПД при изменении частоты вращения вала
def f1_eff(Q, f):
if f_min > f > f_nom:
raise ValueError('f должно находиться в диапазоне [25; 50]')
# При снижении частоты вращения вала насоса на 40% КПД снижается относительно на 5/75 * 100%
return f_eff(Q) * (1. - 5 / 75 / 0.4 * (1 - f/f_nom))
fig, ax = plt.subplots(figsize = (10, 5))
for f in [50, 40, 30, 25]:
# ax.plot(Qs_int * f/f_nom, np.array(list(map(f_eff, Qs_int))) * 100, label = str(f) + ' Гц')
ax.plot(Qs_int * f/f_nom, 100 * np.array([f1_eff(Q, f) for Q in Qs_int]), label = str(f) + ' Гц')
ax.set_title("КПД насосного агрегата при различной частоте тока на выходе ЧП")
ax.set_xlabel('$Q,\,м^3/ч$'); ax.set_ylabel('$\eta,\ \%$')
ax.set_xlim(0.5, 4.5); ax.grid(); ax.legend() ; ax.set_ylim(10, 24);
Для значений подач из рабочего диапазона определим какая доля от величины электроэнергии, потребляемой насосным агрегатом при регулировании расхода только с помощью РК, потребляется при применении ЧРП.
# Нужны для расчёта потребляемой насосом мощности
dens = 998.2 # потность воды при 20 С, кг/м3
g = 9.81 # ускорение свободного падения, м/с2
# Траектория 4 - 3
Q1s = np.linspace(Qs[0], Qs[-1] * k_f)
P1s = Q1s * [f_head(Q / k_f) * k_f ** 2 / f1_eff(Q / k_f, f_min) for Q in Q1s]
# Траектория 3 - 1
Q2s = np.linspace(Qs[-1] * k_f, Qs[-1])
P2s = Q2s * [f_head(Qs[-1]) * (Q / Qs[-1]) ** 2 / f1_eff(Qs[-1], f_nom * Q / Qs[-1]) for Q in Q2s]
# Объединение массивов
Qs_чрп = np.append(Q1s, Q2s)
Ps_чрп = np.append(P1s, P2s)
Ps_рк = np.array([Q * f_head(Q) / f_eff(Q) for Q in Qs_чрп])
# Ps_чрп/Ps_рк - отношение потребляемой насосом с ЧРП электрической мощности
# к потребляемой насосом без ЧРП электрической мощности
fig, ax = plt.subplots(figsize = (10, 5))
ax.plot(Qs_чрп, Ps_чрп * dens * g / 3600, label = '$P_{чрп}$')
ax.plot(Qs_чрп, Ps_рк * dens * g / 3600, label = '$P_{рк}$')
ax.set_title("Потребляемая насосным агрегатом электрическая мощность")
#ax.plot(Qs_чрп, Ps_чрп/Ps_рк * 100)
ax2 = ax.twinx();
ax2.plot(Qs_чрп, Ps_чрп/Ps_рк * 100, color = 'green', label = '$P_{чрп}/P_{рк}$')
ax.set_xlabel('$Q,\,м^3/ч$'); ax.set_ylabel('$P,\ Вт$')
ax2.set_ylim(0, 100); ax2.set_ylabel('$P_{чрп}/P_{рк},\ \%$'); ax.grid();
ax.set_xlim(1, 4.5); ax.legend() ; ax.set_ylim(0, 500);
h1, l1 = ax.get_legend_handles_labels()
h2, l2 = ax2.get_legend_handles_labels()
ax.legend(h1+h2, l1+l2, loc=6);
Приведённые выше графики построены в предположении, что ЧРП имеет КПД 100%. Если КПД ЧРП известен, то потребляемая мощность насосного агрегата с ЧРП будет больше в $1/КПД_{чрп}$ раз.
Схема с ЧРП и РК позволяет:
Применение ЧРП без РК значительно сужает ширину рабочего диапазона насосного агрегата. В нашем случае рабочий диапазон подач уменьшится (см. рис. 3) с $[Q_5; Q_1]$ до $[Q_3; Q_1]$.
В качестве проверки построим график зависимости КПД насосного агрегата от подачи для двух схем регулирования расхода. Получившийся график должен корелироваться с графиком "КПД насосного агрегата при различной частоте тока на выходе ЧП".
Q1s = np.linspace(Qs[0] * k_f, Qs[-1] * k_f)
eff1s = np.array([f1_eff(Q / k_f, f_min) for Q in Q1s])
Q2s = np.linspace(Qs[-1] * k_f, Qs[-1])
eff2s = np.array([f1_eff(Qs[-1], f_nom * Q / Qs[-1]) for Q in Q2s])
Q1s = np.append(Q1s, Q2s)
eff1s = np.append(eff1s, eff2s)
fig, ax = plt.subplots(figsize = (10, 5))
ax.plot(Q1s, eff1s * 100, label = 'ЧРП + РК')
ax.plot(Qs_int, np.array(list(map(f_eff, Qs_int))) * 100, label = 'РК')
ax.set_title("Зависимость КПД насосного агрегата от подачи")
ax.set_xlabel('$Q,\,м^3/ч$'); ax.set_ylabel('$\eta,\ \%$')
ax.set_xlim(0.5, 4.5); ax.grid(); ax.legend(); ax.set_ylim(10, 24);
Инженерные расчёты на Python, С.В. Медведев, 2020-2022
Использование Python и Jupyter Notebook для инженерных расчётов, С.В. Медведев, 2020-2022