Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Диплом 2013.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
918.85 Кб
Скачать

Додаток а

Програма розрахунку нагріву металу

DECLARE FUNCTION Cgas! (CO2!, H2O!, N2!, O2!, Tgas!)

DECLARE FUNCTION Enter1! (Nt%, xt!(), yt!(), xxt!)

DECLARE SUB Teplc (N%, dr!, dt!, Tc!, Alf!, Cpr!, Lam!(), RoC!(), T!())

DECLARE SUB Koren4 (A!, B!, D!, X!, dx!)

CLS

OPEN "kolcp3.txt" FOR OUTPUT AS #1

N% = 20 'Число узлов сетки

Nzon% = 4 'Число зон

DIM T(N%), Lam(N%), RoC(N%)

DIM Lz(5), Tzon(5, 2), Cgkm(5), Alf(5)

DIM Btopl(5), Qpot.z(5)

DIM tau.z(5), tp.z(5), dt.z(5), tsr.z(5)

G = 80 'Производительность печи, т/ч

D = .46 'Диаметр заготовки, м

l = 2! 'Длина заготовки,m

nr = 2 'Число рядов заготовок

M = 2 'Число диаметров между осями заготовок

T0 = 20 'Начальная температура заготовок, °C

PRINT #1, "Производительность печи G ="; G; "т/ч"

PRINT #1, "Диаметр заготовки D ="; D; "м"

PRINT #1, "Длина заготовки l ="; l; "м"

PRINT #1, "Число рядов заготовок nr ="; nr

PRINT #1, "Число диаметров между осями заготовок M ="; M

PRINT #1, "Начальная температура заготовок T0 ="; T0; "oC"

PRINT #1,

'Длины зон, м

Lzon(1) = 17.1: Lzon(2) = 18.63: Lzon(3) = 15.91: Lzon(4) = 13.82

PRINT #1, "Длина зоны 1 Lz1 ="; Lzon(1); "м"

PRINT #1, "Длина зоны 2 Lz2 ="; Lzon(2); "м"

PRINT #1, "Длина зоны 3 Lz3 ="; Lzon(3); "м"

PRINT #1, "Длина зоны 4 Lz4 ="; Lzon(4); "м"

PRINT #1,

Tzon(1, 1) = 750: Tzon(1, 2) = 1230 'Температуры в начале и конце зоны 1

Tzon(2, 1) = 1230: Tzon(2, 2) = 1230 'Температуры в начале и конце зоны 2

Tzon(3, 1) = 1290: Tzon(3, 2) = 1290 'Температуры в начале и конце зоны 3

Tzon(4, 1) = 1290: Tzon(4, 2) = 1290 'Температуры в начале и конце зоны 4

PRINT #1, "Температуры в начале и конце зоны 1 ="; Tzon(1, 1); Tzon(1, 2)

PRINT #1, "Температуры в начале и конце зоны 2 ="; Tzon(2, 1); Tzon(2, 2)

PRINT #1, "Температуры в начале и конце зоны 3 ="; Tzon(3, 1); Tzon(3, 2)

PRINT #1, "Температуры в начале и конце зоны 4 ="; Tzon(4, 1); Tzon(4, 2)

PRINT #1,

'Тепловые потери по зонам печи, МВт

Qpot.z(1) = .5: Qpot.z(2) = .7: Qpot.z(3) = .5: Qpot.z(4) = .5

PRINT #1, "Тепловые потери зоны 1, МВт Qpot1 ="; Qpot.z(1)

PRINT #1, "Тепловые потери зоны 2, МВт Qpot2 ="; Qpot.z(2)

PRINT #1, "Тепловые потери зоны 3, МВт Qpot1 ="; Qpot.z(3)

PRINT #1, "Тепловые потери зоны 4, МВт Qpot1 ="; Qpot.z(4)

PRINT #1,

'Приведенные коэффициенты излучения по зонам печи, Вт/м^2*К^4

Cgkm(1) = 2.41

Cgkm(2) = 2.41

Cgkm(3) = 2.41

Cgkm(4) = 2.41

PRINT #1, "Приведенные коэффициенты излучения по зонам печи"

PRINT #1, "Cgkm1 ="; Cgkm(1); "Вт/м^2*К^4"

PRINT #1, "Cgkm2 ="; Cgkm(2); "Вт/м^2*К^4"

PRINT #1, "Cgkm3 ="; Cgkm(3); "Вт/м^2*К^4"

PRINT #1, "Cgkm4 ="; Cgkm(4); "Вт/м^2*К^4"

PRINT #1,

Qnr = 35000 'Теплота сгорания топлива, кДж/м^3

CO2 = 8.14 'содержание CO2, %

H2O = 16.22 'содержание H2O, %

N2 = 72.7 'содержание N2, %

O2 = 2.94 'содержание O2, %

Lv = 11.28 'Удельный расход воздуха, м^3/м^3

Vd = 12.24 'Удельный выход дыма, м^3/м^3

PRINT #1, "Теплота сгорания топлива Qnr ="; Qnr; "кДж/м^3"

PRINT #1, "Удельный расход воздуха Lv = "; Lv; "м^3/м^3"

PRINT #1, "Удельный выход дыма, Vd ="; Vd; "м^3/м^3"

PRINT #1, "Cодержание CO2 ="; CO2; "%"

PRINT #1, "Cодержание H2O ="; H2O; "%"

PRINT #1,

tv = 300 'Температура подогрева воздха в рекуператоре, град. Ц.

PRINT #1, "Температура подогрева воздха в рекуператоре tv ="; tv; " oC"

PRINT #1,

dt = 30 'Шаг расчета по времени, с

'Теплофизические свойства стали

' Температуры, при которых заданы теплопроводность и теплосодержание стали

DIM TTab(14)

TTab(1) = 20

FOR i% = 2 TO 14

TTab(i%) = 100 * (i% - 1)

NEXT i%

' Теплопроводность стали

DIM LamTab(14)

DATA 51.9,51,48.5,44.4,42.7,39.3,35.5

DATA 31.9,25.9,26.4,27.7,28.5,29.8,30.1

FOR i% = 1 TO 14

READ LamTab(i%)

NEXT i%

' Теплосодержание стали, кДж/кг

DIM ITab(14)

DATA 9,46.5,95.9,150.,206.,267.,340.,420.

DATA 543.,631.,702.,773.,845.,916.

FOR i% = 1 TO 14

READ ITab(i%)

NEXT i%

'Теплоемкость стали, Дж/кг*К

DIM CTab(14)

FOR i% = 1 TO 14

CTab(i%) = ITab(i%) / TTab(i%)

NEXT i%

' Плотность стали ,кг/м^3

Ro.m = 7500

PRINT #1,

PRINT #1, "Расчет"

PRINT #1,

Cv = Cgas(0, 0, 79, 21, tv)

R = D / 2

'Шаг по координате

dr = R / (N% - 1)

'Перевод в кг/с

G1 = G / 3.6

PRINT #1, "Масса одной заготовки"

Mz = Ro.m * l * 3.1416 * D * D / 4

PRINT #1, "Mz = Ro.m * l * 3.14 * D^2 / 4 ="; Mz; "кг"

PRINT #1,

PRINT #1, "Скорость движения заготовки, м/c"

w = G1 * M * D / (Mz * nr)

PRINT #1, "w = G1 * M * D / (Mz * nr) =";

PRINT #1, USING "##.####"; w

PRINT #1,

FOR i% = 1 TO N%

T(i%) = T0

NEXT i%

tau.n = 0 'Счетчик времени нагрева, c

tau = 0 'Счетчик времени нагрева в зоне, c

taup = 0 'Счетчик времени печати, c

tauprin = 360 'Интервал печати, с

numz% = 1 'Номер текущей зоны

sz = 0 'Путь, пройденный заготовкой в зоне, m

PRINT #1,

PRINT #1, "Расчет нагрева"

PRINT #1,

PRINT #1, SPC(2); "tau Tg Tp Tc Tsr dT q"

PRINT #1,

DO WHILE numz% <= Nzon%

'Температура дыма над рассматриваемой заготовкой

Tc = Tzon(numz%, 1) + (Tzon(numz%, 2) - Tzon(numz%, 1)) * sz / Lzon(numz%)

'Теплопроводность в узлах сетки

FOR i% = 1 TO N%

Lam(i%) = Enter1(14, TTab(), LamTab(), T(i%))

Cm = 1000 * Enter1(14, TTab(), CTab(), T(i%))

RoC(i%) = Ro.m * Cm

NEXT i%

'Расчет прогрева цилиндра за один шаг по времени

CALL Teplc(N%, dr, dt, Tc, Alf(numz%), Cgkm(numz%), Lam(), RoC(), T())

'

tau.n = tau.n + dt

tau = tau + dt

taup = taup + dt

sz = sz + w * dt

'Вывод текущих результатов рачета

IF taup >= tauprin THEN

'средняя

Sum = 0

FOR i% = 2 TO N% - 1

ri = dr * (i% - 1)

Sum = Sum + ri * T(i%)

NEXT i%

cc1 = 2 * dr * Sum

cc2 = T(1) * dr * dr / 4

cc3 = T(N%) * dr * (R - dr / 4)

tsr = (cc1 + cc2 + cc3) / R ^ 2

PRINT "Зона "; numz%; " tau ="; tau.n; "c"; " tsr ="; tsr

FOR i% = 1 TO N%

PRINT USING "#####"; T(i%);

NEXT i%

PRINT

delt = T(N%) - T(1)

q = Cgkm(numz%) * (((Tc + 273) / 100!) ^ 4 - ((T(N%) + 273) / 100!) ^ 4)

PRINT #1, USING "##.##"; tau.n / 3600;

PRINT #1, ";";

PRINT #1, USING "######"; Tc;

PRINT #1, ";";

PRINT #1, USING "#####.#"; T(N%);

PRINT #1, ";";

PRINT #1, USING "#####.#"; T(1);

PRINT #1, ";";

PRINT #1, USING "#####.#"; tsr;

PRINT #1, ";";

PRINT #1, USING "#####.#"; delt;

PRINT #1, ";";

PRINT #1, USING "########"; q

PRINT #1,

taup = 0

END IF

IF sz >= Lzon(numz%) THEN

' Температура металла в конце текущей зоны:

'поверхности

tp.z(numz%) = T(N%)

'перепад

dt.z(numz%) = T(N%) - T(1)

'средняя для цилиндра

Sum = 0

FOR i% = 2 TO N% - 1

ri = dr * (i% - 1)

Sum = Sum + ri * T(i%)

NEXT i%

cc1 = 2 * dr * Sum

cc2 = T(1) * dr * dr / 4

cc3 = T(N%) * dr * (R - dr / 4)

tsr.z(numz%) = (cc1 + cc2 + cc3) / R ^ 2

'Время нагрева в текущей зоне

tau.z(numz%) = tau / 3600

tau = 0

'Счетчик зон

numz% = numz% + 1

sz = 0

'Пауза для просмотра результатов (ожидание нажатия любой клавиши)

DO WHILE INKEY$ = "": LOOP

END IF

LOOP

'Определение теплового баланса и расходов топлива по зонам

V1 = 0 'Расход дыма, уходящего из следующей зоны

tsr.z(0) = T0

FOR i% = Nzon% TO 1 STEP -1

'Температура дыма, вносимого из следующей по ходу металла зоны

IF i% = Nzon% THEN

Tzon.next = 0

ELSE

Tzon.next = Tzon(i% + 1, 1)

END IF

'Тепло на нагрев металла в зоне

Cm1 = 1000 * Enter1(14, TTab(), CTab(), tsr.z(i% - 1))

Cm2 = 1000 * Enter1(14, TTab(), CTab(), tsr.z(i%))

dQm = G1 * (Cm2 * tsr.z(i%) - Cm1 * tsr.z(i% - 1))

'Тепло, оставляемое в зоне дымом, входящим из следующей зоны

Cd1 = Cgas(CO2, H2O, N2, O2, Tzon.next)

Cd2 = Cgas(CO2, H2O, N2, O2, Tzon(i%, 1))

dQd = V1 * (Cd2 * Tzon(i%, 1) - Cd1 * Tzon.next)

'Расход топлива на зону, м^3/c

Bd = (dQm + dQd + Qpot.z(i%) * 1000000) / (Qnr * 1000 + Lv * Cv * tv - Vd * Cd2 * Tzon(i%, 1))

'Расход топлива на зону, м^3/ч

Btopl(i%) = Bd * 3600

PRINT

PRINT "Баланс для зоны "; i%

PRINT

PRINT "Приход тепла, МВт"

PRINT "-----------------"

Qtopl = Bd * Qnr / 1000

PRINT "Тепло топлива "; Qtopl

Qv = Bd * Lv * Cv * tv / 1000000

PRINT "Тепло воздуха"; Qv

Qdim = V1 * Cd1 * Tzon.next / 1000000

PRINT "Тепло дыма из след. зоны "; Qdim

Qprih = Qtopl + Qdim + Qv

PRINT "Общий приход "; Qprih

PRINT

PRINT #1,

PRINT #1, "Баланс для зоны "; i%

PRINT #1,

PRINT #1, "Приход тепла, МВт"

PRINT #1, "-----------------"

PRINT #1, "Тепло топлива "; Qtopl

PRINT #1, "Тепло воздуха"; Qv

PRINT #1, "Тепло дыма из след. зоны "; Qdim

PRINT #1, "Общий приход "; Qprih

PRINT #1,

PRINT "Расход тепла, МВт"

PRINT "-----------------"

dQmet = dQm / 1000000

PRINT "Тепло нагретого металла "; dQmet

V1 = V1 + Bd * Vd

Quh = V1 * Cd2 * Tzon(i%, 1) / 1000000

PRINT "Тепло уходящих газов "; Quh

PRINT "Потери через кладку и окна печи "; Qpot.z(i%)

Qrash = dQmet + Quh + Qpot.z(i%)

PRINT "Общий расход "; Qrash

PRINT

PRINT #1, "Расход тепла, МВт"

PRINT "-----------------"

PRINT #1, "Тепло нагретого металла "; dQmet

PRINT #1, "Тепло уходящих газов "; Quh

PRINT #1, "Потери через кладку и окна печи "; Qpot.z(i%)

PRINT #1, "Общий расход "; Qrash

PRINT #1,

'Пауза для просмотра результатов

DO WHILE INKEY$ = "": LOOP

NEXT i%

PRINT

'PRINT "Показатели процесса нагрева"

PRINT "------------------------------------------------"

PRINT "Зона tau, ч. tпов,°C dt,°C B, м.куб/ч"

PRINT "------------------------------------------------"

FOR i% = 1 TO Nzon%

PRINT i%; SPC(3);

PRINT USING "##.##"; tau.z(i%); SPC(6);

PRINT USING "####"; tp.z(i%); SPC(7);

PRINT USING "###"; dt.z(i%); SPC(6);

PRINT USING "#####.#"; Btopl(i%)

NEXT i%

PRINT #1,

PRINT #1, "Показатели процесса нагрева"

PRINT #1, "------------------------------------------------"

PRINT #1, "Зона tau, ч. tпов,°C dt,°C B, м.куб/ч"

PRINT #1, "------------------------------------------------"

FOR i% = 1 TO Nzon%

PRINT #1, i%; SPC(3);

PRINT #1, USING "##.##"; tau.z(i%); SPC(6);

PRINT #1, USING "####"; tp.z(i%); SPC(7);

PRINT #1, USING "###"; dt.z(i%); SPC(6);

PRINT #1, USING "#####.#"; Btopl(i%)

NEXT i%

PRINT #1,

DO WHILE INKEY$ = "": LOOP

PRINT

PRINT "Показатели тепловой работы печи"

PRINT "------------------------------------------------"

PRINT #1,

PRINT #1, "Показатели тепловой работы печи"

PRINT #1, "------------------------------------------------"

tau.ob = 0

B.ob = 0

FOR i% = 1 TO Nzon%

B.ob = B.ob + Btopl(i%)

tau.ob = tau.ob + tau.z(i%)

NEXT i%

PRINT " Время нагрева tau.общ = ";

PRINT USING "##.##"; tau.ob;

PRINT SPC(2); "час"

PRINT " Общий расход топлива B = ";

PRINT USING "#####.#"; B.ob;

PRINT SPC(2); "м.куб/час"

PRINT #1, " Время нагрева tau.общ = ";

PRINT #1, USING "##.##"; tau.ob;

PRINT #1, SPC(2); "час"

PRINT #1, " Общий расход топлива B = ";

PRINT #1, USING "#####.#"; B.ob;

PRINT #1, SPC(2); "м.куб/час"

M.ob = (B.ob / 3600) * (Qnr / 1000)

PRINT " Общая тепловая мощность Мобщ = ";

PRINT USING "###.##"; M.ob;

PRINT SPC(2); "МВт"

PRINT #1, " Общая тепловая мощность Мобщ = ";

PRINT #1, USING "###.##"; M.ob;

PRINT #1, SPC(2); "МВт"

bTepl = M.ob / G1

PRINT " Удельный расход тепла b = ";

PRINT USING "###.##"; bTepl;

PRINT SPC(2); "МДж/кг"

PRINT #1, " Удельный расход тепла b = ";

PRINT #1, USING "###.##"; bTepl;

PRINT #1, SPC(2); "МДж/кг"

busl = bTepl * 1000 / 29.4

PRINT " Удельный расход у.т. bусл = ";

PRINT USING "###.##"; busl;

PRINT SPC(2); "кг у.т./т"

PRINT #1, " Удельный расход у.т. bусл = ";

PRINT #1, USING "###.##"; busl;

PRINT #1, SPC(2); "кг у.т./т"

Cm1 = 1000 * Enter1(14, TTab(), CTab(), T0)

Cm2 = 1000 * Enter1(14, TTab(), CTab(), tsr.z(Nzon%))

kpd = G1 * (Cm2 * tsr.z(Nzon%) - Cm1 * T0) / (10000 * M.ob)

PRINT " К.п.д. печи = ";

PRINT USING "###.#"; kpd;

PRINT SPC(2); "%"

PRINT #1, " К.п.д. печи = ";

PRINT #1, USING "###.#"; kpd;

PRINT #1, SPC(2); "%"

Cd2 = Cgas(CO2, H2O, N2, O2, Tzon(1, 1))

kit = 100 * (Qnr + .001 * Lv * Cv * tv - .001 * Vd * Cd2 * Tzon(1, 1)) / Qnr

PRINT " К.и.т. печи к.и.т. =";

PRINT USING "###.#"; kit;

PRINT SPC(2); "%"

PRINT #1, " К.и.т. печи к.и.т. =";

PRINT #1, USING "###.#"; kit;

PRINT #1, SPC(2); "%"

CLOSE

END

FUNCTION Cgas (CO2, H2O, N2, O2, Tgas)

'=============================================

'= Расчет средней объемной теплоемкости газа =

'= Входные данные: Компоненты газа,%: =

'= CO2, H2O, N2, O2 =

'= Tgas -температура газа, C =

'= Выходные данные: Cgas, Дж/(М^3*K) =

'=============================================

DIM A(4), B(4), C(4), D(4), E(4)

A(1) = 1.72625: A(2) = 1.436346: A(3) = 1.247706: A(4) = 1.291398

B(1) = .061363: B(2) = .030644: B(3) = .016527: B(4) = .02291

D(1) = -.001336: D(2) = -.000213: D(3) = -.000239: D(4) = -.000457

E(1) = -1.011556: E(2) = .460588: E(3) = .371348: E(4) = .089236

Sum = ABS(CO2) + ABS(H2O) + ABS(N2) + ABS(O2) + ABS(CO) + ABS(H2)

T = Tgas

IF T < 0! THEN T = 0!

IF T > 2500! THEN T = 2500!

T = .01 * T

FOR i% = 1 TO 4

C(i%) = A(i%) + B(i%) * T + D(i%) * T * T + E(i%) / (T * T + 5.463 * T + 7.46)

C(i%) = 1000 * C(i%)

NEXT

Cgas = .01 * (CO2 * C(1) + H2O * C(2) + N2 * C(3) + O2 * C(4))

END FUNCTION

FUNCTION Enter1 (Nt%, xt(), yt(), xxt)

'=================================================

'= Интерполяция табличной функции.

'= Nt% - число точек (экспериментов)

'= Xt(Nt%) - значения аргументов в точках (дол-

'= жны быть упорядочены по возрастанию)

'= Yt() - то же для функции

'= XXt - значение аргумента, для которого

'= определяется функция

'=================================================

' Проверка принадлежности аргумента области таблицы.

IF xxt <= xt(1) THEN Enter1 = yt(1): EXIT FUNCTION

IF xxt >= xt(Nt%) THEN Enter1 = yt(Nt%): EXIT FUNCTION

' Определение интервала интерполяции

i% = 1

DO WHILE xxt > xt(i% + 1)

i% = i% + 1

LOOP

' Интерполяция

Enter1 = yt(i%) + (xxt - xt(i%)) * (yt(i% + 1) - yt(i%)) / (xt(i% + 1) - xt(i%))

END FUNCTION

SUB Koren4 (A, B, D, X, dx)

Kor1: X1 = X - (A * X * X * X * X + B * X + D) / (4 * A * X * X * X + B)

IF ABS(X1 - X) > dx THEN X = X1: GOTO Kor1

END SUB

SUB Teplc (N%, dr, dt, Tc, Alf, Cpr, Lam(), RoC(), T())

'*******************************************

'* Расчет нагрева цилиндра методом конечных

'* разностей за один шаг по времени.

'* Неявная схема. Прогонка.

'* Теплообмен с окружающей средой излу-

'* чением и конвекцией. Теплофизические

'* свойства материала зависят от температуры

'* Входные данные:

'* N% - число узлов по координате

'* dr - шаг по координате, м

'* dt - шаг по времени, с

'* Tc - температура греющей среды,°C

'* Alf - коэф. теплоотдачи, Вт/м¤*К

'* Cpr - привед. коэф. излучения, Вт/м¤*К^4

'* Lam() - теплопроводность в узлах, Вт/м*К

'* RoC() - обьемная теплоемкость в узлах, Дж/м^3*К

'* T() - температура в узлах,°C

'* Входные данные:

'* T() - температура в узлах на следующем шаге,°C

'*******************************************

DIM alfa(100), beta(100)

Tc4 = ((Tc + 273) / 100) ^ 4

Lam1 = (Lam(1) + Lam(2)) / 2

Fo1 = Lam1 * dt / (RoC(1) * dr * dr)

alfa(1) = 4 * Fo1 / (1 + 4 * Fo1)

beta(1) = T(1) / (1 + 4 * Fo1)

FOR i% = 2 TO N% - 1

Lam1 = (Lam(i% - 1) + Lam(i%)) / 2

Lam2 = (Lam(i%) + Lam(i% + 1)) / 2

k1 = (2! * i% - 3!) / (4! * (i% - 1))

k2 = 1 - k1

Fo1 = 2 * k1 * Lam1 * dt / (RoC(i%) * dr * dr)

Fo2 = 2 * k2 * Lam2 * dt / (RoC(i%) * dr * dr)

Z = 1 + Fo2 + Fo1 * (1 - alfa(i% - 1))

alfa(i%) = Fo2 / Z

beta(i%) = (Fo1 * beta(i% - 1) + T(i%)) / Z

NEXT i%

Lam1 = (Lam(N% - 1) + Lam(N%)) / 2

k1 = (N% * 1! - 1.5) / (2! * (N% - 1) - .5)

k2 = 1 - k1

Fo1 = 2 * k1 * Lam1 * dt / (RoC(N%) * dr * dr)

Fo2 = 2 * k2 * Lam(N%) * dt / (RoC(N%) * dr * dr)

Bik = Alf * dr / Lam(N%)

Bil = Cpr * dr / Lam(N%)

'

A = 2 * Fo2 * Bil

B = 100 * (1 + 2 * Fo1 * (1 - alfa(N% - 1)) + 2 * Fo2 * Bik)

R2 = 273 * (1 + 2 * Fo1 * (1 + Bik - alfa(N% - 1)))

D = -(T(N%) + 2 * Fo2 * (Bik * Tc + Bil * Tc4) + 2 * Fo1 * beta(N% - 1) + 2.73 * B)

X = (T(N%) + 273) / 100

epsX = .001

CALL Koren4(A, B, D, X, epsX)

T(N%) = 100 * X - 273

FOR i% = N% - 1 TO 1 STEP -1

T(i%) = alfa(i%) * T(i% + 1) + beta(i%)

NEXT i%

END SUB

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]