Q_CH4 = 50e6 # низшая теплота сгорания метана, Дж/кг
Q_кт = 25e3 # тепловая мощность традиционного котла, Вт
КПД_кт = 0.929 # КПД традиционного котла
G_дгк = 0.017 # массовый расход дымовых газов из каталога производителя
t_дг = 135 # температура дымовых газов из котла, С
alfa = 1.83 # коэффициент избытка воздуха
Q_т = Q_кт / КПД_кт # тепловая мощность выделяемая при сгорании топлива, Вт
Q_т # Вт
26910.656620021527
G_CH4 = Q_т / Q_CH4 # расход метана, кг/с
G_CH4 # кг/с
0.0005382131324004305
g_возд = 17.39 # количество воздуха, необходимое для полного для сжигания 1 кг метана, кг/кг
G_дг = G_CH4 * (1 + alfa * g_возд) # расчётное значение массового расхода дымовых газов, кг/с
G_дг # кг/с
0.017666146393972012
(G_дг - G_дгк) / G_дгк * 100 # невязка расходов дымовых газов, %
3.9185081998353564
Далее в качестве величины расхода дымовых газов будем использовать G_дг
c_дг = 1006 # теплоёмкость дымовых газов, Дж/кг/К
t_пр = 80; t_обр = 60 # температура прямой и обратной воды, С
#dt_вых = 15 # температурный напор на холодном конце экономайзера, С
# Обратным счётом найдём температуру продуктов сгорания в камере сгорания котла
t_кс = Q_кт / c_дг / G_дг + t_дг
t_кс
1541.6958394891547
# Тепловая мощность от охлаждения дымовых газов
def fQ(t_обр, dt_вых = 15):
return (t_кс - (t_обр + dt_вых)) * c_дг * G_дг
Q_dt15 = fQ(t_обр)
Q_dt15
26066.328596340154
Дополнительная тепловая мощность может быть принята посредством увеличения расхода теплоносителя при неизменных значениях температуры прямой и обратной сетевой воды либо увеличением степени нагрева воды при неизменном расходе.
# Увеличения расхода теплоносителя при неизменной степени нагрева в котле
(Q_dt15 - Q_кт) / Q_кт
0.04265314385360616
# Увеличение нагрева сетевой воды при неизменном расходе, С
(t_пр - t_обр) * (Q_dt15 - Q_кт) / Q_кт
0.8530628770721232
Величина тепловой мощности, передаваемой от горячего потока (дымовые газы) холодному потоку (сетевая вода) находится по формуле: $$Q = k \overline{\Delta t} F\qquad \qquad $$ где $Q$ - тепловая мощность, подводимая к сетевой воде от дымовых газов, Вт; $k$ - коэффициент теплопередачи, $Вт/(м^2\cdot K)$; $F$ - площадь поверхности теплообмена, $м^2$; $\overline{\Delta t}$ - cреднелогарифмический температурный напор $$\overline{\Delta t} = \frac{\Delta t_{нач} - \Delta t_{кон}}{\ln(\Delta t_{нач}/\Delta t_{кон})}$$ Для теплообменника прямоточного типа $$\Delta t_{нач} = t_г^{вх} - t_{х}^{вх};\, \Delta t_{кон} = t_г^{вых} - t_{х}^{вых}$$ Для теплообменника противоточного типа $$\Delta t_{нач} = t_г^{вх} - t_{х}^{вых};\, \Delta t_{кон} = t_г^{вых} - t_{х}^{вх}$$
где $t_х^{вх}$ - температура холодного потока на входе в теплообменник, C; $t_х^{вых}$ - температура холодного потока на выходе из теплообменника, C; $t_г^{вх}$ - температура горячего потока на входе в теплообменник, C; $t_г^{вых}$ - температура горячего потока на выходе из теплообменника, C.
Среднелогорифмический температурный напор пропорционален отношению тепловой мощности к площади поверхности теплообмена
$$\overline{\Delta t} \sim Q / F$$Определим зависимость среднелогорифмического температурного напора от температуры дымовых газов на выходе котла исходя из предположения, что в газовом котле используется противоточный теплообменник.
from math import log
# Функция для расчёта среднелогорифмического температурного напора
def fdt_ср(dt_кон = t_дг - t_обр):
if dt_кон <= 0: raise ValueError('Температура дымовых газов должна быть выше температуры обратной воды')
dt_нач = t_кс - t_пр
return (dt_нач - dt_кон) / log(dt_нач / dt_кон)
import numpy as np # библиотека для работы с массивами
ts_дг = np.linspace(t_обр + 15, 300)
ts_ср = np.zeros_like(ts_дг)
for i, t in enumerate(ts_дг):
ts_ср[i] = fdt_ср(ts_дг[i] - t_обр)
import matplotlib.pyplot as plt # библиотека для построения графиков
plt.rcParams['font.size'] = 12.0
fig, ax = plt.subplots(figsize = (10,5))
ax.set_title("Среднелогарифмический температурный напор (режим 80/60)")
ax.set_xlabel('$t_{дг}$, $^\circ C$'); ax.set_ylabel('$\overline{\Delta t}, ^\circ C \sim Q / F$')
# ax.plot([p1_x, p2_x], [p1_y, p2_y], label = "$d(Q/F)=const$")
#ax.plot(ts_дг, ts_ср, label = "Реальный котёл")
ax.plot(ts_дг, ts_ср)
ax.grid(); ax.set_xlim(ts_дг[0], ts_дг[-1]); ax.set_ylim(300,); # ax.legend();
v_O2 = 0.21; v_N2 = 1 - v_O2 # объёмные доли кислорода и азота в воздухе
# Молярные массы компонентов воздуха и метана, г/моль
H = 1; C = 12; N = 14; O = 16
mus = {'N2': N*2, 'O2': O*2, 'CO2': C+O*2, 'H2O': H*2+O, 'CH4' : C+H*4}
mus
{'N2': 28, 'O2': 32, 'CO2': 44, 'H2O': 18, 'CH4': 16}
Реакция горение менана: CH4 + 2O2 = CO2 + 2H2O
# Состав дымовых газов при сжигатии 1 моль CH4, коэффмцмент избытка воздуха alfa
Vs_дг = {'CO2': 1, 'H2O': 2, 'N2': 2 * v_N2 / v_O2 * alfa, 'O2': 2 * (alfa - 1)}
Vs_дг
{'CO2': 1, 'H2O': 2, 'N2': 13.76857142857143, 'O2': 1.6600000000000001}
# количество молей дымовых газов при сжигании моля CH4 с заданным alfa
сум = sum(Vs_дг.values())
сум
18.42857142857143
vs_дг = {} # мольные (объёмные) доли
for elem in Vs_дг.keys():
vs_дг[elem] = Vs_дг[elem] / сум
vs_дг
{'CO2': 0.05426356589147286, 'H2O': 0.10852713178294572, 'N2': 0.7471317829457365, 'O2': 0.09007751937984496}
# Молярная масса дымовых газов
mu_дг = 0
for elem in vs_дг.keys():
mu_дг += mus[elem] * vs_дг[elem]
mu_дг # г/моль
28.14325581395349
# Объёмный расход дымовых газов
Q_дг = G_дг * 1000 / mu_дг
Q_дг # моль/с
0.6277221978422659
# Массовый расход водяного пара, г/с
Q_дг * vs_дг['H2O'] * mus['H2O']
1.2262480143895425
dh_конд = 2500e3 # скрытая теплота парообразования, Дж/кг
# Тепловая мощность, выделяемая при конденсации всего водяного пара, содержащенгося в дымовых газах
dQ_к = Q_дг * vs_дг['H2O'] * mus['H2O'] / 1000 * dh_конд
dQ_к # Вт
3065.620035973856
p_дг = 1e5 # давление дымовых газов (атмосферное давление), Па
# Парциальное давление пара
p_H2O = vs_дг['H2O'] * p_дг
p_H2O
10852.713178294573
# Определим температуру точки росы дымовых газов
from wetairprops import calc_t_s, calc_p_s # см. [2]
t_тр = calc_t_s(p_H2O)
t_тр # градусы Цельсия
47.41965122525831
v_дг_без_H20 = 1. - vs_дг['H2O']
# Уменьшение давления дымовых газов при конденсации пара учитывать не будем
ts_дг1 = np.linspace(5, t_тр-0.01) # у ГВС температурный режим 60/5
dQs_охл = [] # Дополнительная тепловая мощтсть от более глубокого охлаждения дымовых газов
dQs_конд = [] # Дополнительная тепловая мощность от конденсации водяного пара
for t in ts_дг1:
v_H2O = calc_p_s(t) / p_дг # при уменьшенном расходе
v_H2O = v_дг_без_H20 / (1 - v_H2O) * v_H2O # относительно изначального расхода
dv_H2O = vs_дг['H2O'] - v_H2O
dm_H2O = dv_H2O * Q_дг * mus['H2O'] / 1000
dQs_охл.append((t_дг - t) * c_дг * G_дг)
dQs_конд.append(dm_H2O * dh_конд)
dQs_охл = np.array(dQs_охл); dQs_конд = np.array(dQs_конд)
fig, ax = plt.subplots(figsize = (10,5))
ax.set_title("Дополнительная тепловая мощность")
ax.set_xlabel('$t_{дг}$, $^\circ C$'); ax.set_ylabel('$\Delta Q$, кВт')
ax.plot(ts_дг1, dQs_охл / 1000, label = "Охлаждение")
ax.plot(ts_дг1, dQs_конд / 1000, label = "Конденсация")
ax.plot(ts_дг1, (dQs_охл + dQs_конд) / 1000, label = "Суммарно")
ax.grid(); ax.set_xlim(ts_дг1[0], ts_дг1[-1]); ax.set_ylim(0,); ax.legend();
# Функция для расчёта среднелогорифмического температурного напора
t_пр = 50; t_обр = 30
def fdt_ср1(dt_кон):
if dt_кон <= 0: raise ValueError('Температура дымовых газов должна быть выше температуры обратной воды')
dt_нач = t_кс - t_пр
return (dt_нач - dt_кон) / log(dt_нач / dt_кон)
ts_дг = np.linspace(t_обр + 5, 300)
ts_ср = np.zeros_like(ts_дг)
for i, t in enumerate(ts_дг):
ts_ср[i] = fdt_ср1(ts_дг[i] - t_обр)
fig, ax = plt.subplots(figsize = (10,5))
ax.set_title("Среднелогарифмический температурный напор (режим 50 / 30)")
ax.set_xlabel('$t_{дг}$, $^\circ C$'); ax.set_ylabel('$\overline{\Delta t}, ^\circ C \sim Q / F$')
# ax.plot([p1_x, p2_x], [p1_y, p2_y], label = "$d(Q/F)=const$")
#ax.plot(ts_дг, ts_ср, label = "Реальный котёл")
ax.plot(ts_дг, ts_ср)
ax.grid(); ax.set_xlim(ts_дг[0], ts_дг[-1]); ax.set_ylim(250,); # ax.legend();
# Количество теплоты выделемой при горении метана в камере сгорания котла, Вт
# может быть любым значением кроме нуля, т.к. сокращается в формуле для КПД
Q_гор = 25000
t_гор_CH4 = 1900; T_гор_CH4 = t_гор_CH4 + 273.15 # температура горения метана
t_ос = -2.2; T_ос = t_ос + 273.15 # cредняя температура наружного воздуха за отопительный период в Москве
t_1_т = (80 + 60) / 2; T_1_т = t_1_т + 273.15 # средняя температура сетевой воды на режиме 80/60
t_1_к = (50 + 30) / 2; T_1_к = t_1_к + 273.15 # средняя температура сетевой воды на режиме 50/30
КПД_т = 0.9; КПД_к = 1. # КПД традиционного и конденсационного котлов
Ex_CH4 = Q_гор * (T_гор_CH4 - T_ос) / T_гор_CH4 # эксергия теплоты сгорания метана
Ex_т = Q_гор * КПД_т * (T_1_т - T_ос) / T_1_т # эксергия теплоты прямой воды традиционного котла
Ex_к = Q_гор * КПД_к * (T_1_к - T_ос) / T_1_к # эксергия теплоты прямой воды конденсационного котла
Ex_CH4, Ex_т, Ex_к # эксергия, Вт
(21882.980926305132, 4734.081305551507, 3368.9924956091327)
Ex_т / Ex_CH4, Ex_к / Ex_CH4 # эксергетический КПД
(0.2163362167839188, 0.15395491624083665)
T_ос
270.95
# Эксергетический КПД электрообогревателя
t_1_эл = 60; T_1_эл = t_1_эл + 273.15 # температура электрообогревателя
Q_эл = Q_гор # тепловая мощность электрообогревателя
Ex_эл = Q_эл * (T_1_эл - T_ос) / T_1_эл
Ex_эл / Q_эл # эксергетический КПД
0.18670268647756263
Инженерные расчёты на Python, С.В. Медведев, 2020-2024
Использование Python и Jupyter Notebook для инженерных расчётов, С.В. Медведев, 2020-2024