Language: Excel/VisualBasic.
Objective: This spreadsheet calculates the heat balance of a slab reheating furnace for a hot strip mill or plate mill line. The program considers a coke oven or natural gas fired furnace, with water cooled skids and heat recovery from the flue gases of the furnace.
Click here to download the Excel file or use the Visual Basic for Applications listing below.
***** Begin of Program Listing *****
' ' BALANÇO TÉRMICO DE FORNOS PARA REAQUECIMENTO DE PLACAS ' ' ' Referências: ' ' - FERRAZ, M.J.O. (editor). Curso de Laminação dos Aços. Associação Brasileira de Metais, ' São Paulo, 1981. ' ' - ANDRADE, H.L. e outros. Balanço Térmico dos Fornos de Reaquecimento da Usiminas. ' Metalurgia ABM, vol. 39, n°302, 1983, p. 27-31. ' ' - BRUNO, S.L. Balanco Térmico do Forno de Reaquecimento n° 2 da Linha de Chapas Grossas. ' In: VI Simpósio Interno de Laminação, COSIPA, Cubatão, 16 a 19 de Maio de 1983. ' ' - MACHADO, A.C. (editor). Curso de Sistema de Energia na Siderurgia. Associação Brasileira de ' Metais, São Paulo, 1984. ' ' ' Programado por Antonio Augusto Gorni --- Start-up: 27 de Agosto de 2001 ' ' Última Correção: 20.06.2002 ' Option Explicit Option Base 1 Sub BalTerm() Dim TAmb As Single Dim TGas As Single Dim TArCombustao As Single Dim IntervaloTempo As Integer Dim VazaoGas As Single Dim VazaoGasSeco As Single Dim VazaoAr As Single Dim ArExcessoObj As Single Dim OxFumosObj As Single Dim ArSecoTotalObj As Single Dim UmidadeAr As Single Dim FracaoUmidadeAr As Single Dim FracaoGN As Single Dim Nitrogenio_GCO As Single Dim CO_GCO As Single Dim CO2_GCO As Single Dim Oxigenio_GCO As Single Dim Hidrogenio_GCO As Single Dim Metano_GCO As Single Dim Etano_GCO As Single Dim Propano_GCO As Single Dim Nitrogenio_GN As Single Dim Metano_GN As Single Dim Etano_GN As Single Dim Propano_GN As Single Dim CO_GN As Single Dim CO2_GN As Single Dim Oxigenio_GN As Single Dim Hidrogenio_GN As Single Dim N_Adicao As Single Dim GN As Single Dim GCO As Single Dim NO As Single Dim NG As Single Dim NU As Single Dim VolumeUmidadeArObj As Single Dim ArUmidoTotalObj As Single Dim PercArExcessoObj As Single Dim ArSecoTotalReal As Single Dim CO2Periodo As Single Dim UmidadeCombustaoPeriodo As Single Dim FracaoUmidadeGas As Single Dim UmidadeGas As Single Dim UmidadeArUmido As Single Dim UmidadeTotal As Single Dim OxArExcesso As Single Dim NitrogenioTotal As Single Dim VolumeArExcesso As Single Dim PCI As Single Dim CorrecaoGCO As Single Dim CorrecaoGN As Single Dim A_Calor, B_Calor As Single Dim CalorGas As Single Dim CalorCombustao As Single Dim CalorArCombustao As Single Dim T_H As Single Dim Carepa As Single Dim CalorFormacaoCarepa As Single Dim TFumosSaida As Single Dim TFumosChamine As Single Dim CalorSensivelPlacaEnf As Single Dim CalorSensivelPlacaDesenf As Single Dim TEnfornPlacas As Single Dim TDesenfPlacas As Single Dim TAguaEntrada As Single Dim TAguaSaida As Single Dim VazaoAguaRefrigeracao As Single Dim CalorAguaRefrigeracao As Single Dim CalorFumos As Single Dim CalorParedes As Single Dim Ajuste As Single Dim ContribuicaoTotal As Single Dim NecessidadeTotal As Single Dim TParede(12) As Single Dim hr As Single Dim hc As Single Dim ComprimentoParede(3) As Single Dim LarguraParede(3) As Single Dim Lado As Single Dim AreaParede(6) As Single Dim Grashof As Single Dim Prandtl As Single Dim Nusselt As Single Dim TMedia As Single Dim Viscosidade As Single Dim Cp As Single Dim k As Single Dim c, n As Single Dim i, j As Integer Dim Aux1, Aux2 As Single Dim Forno, Dia As String Application.ScreenUpdating = False IntervaloTempo = 8 Sheets("Variable Data").Select Forno = [B4] Dia = [B5] Aux1 = 0 For i = 11 To 27 Aux1 = Aux1 + Range("B" & i) Next i VazaoGas = Aux1 / 17 Aux1 = 0 For i = 11 To 27 Aux1 = Aux1 + Range("C" & i) Next i VazaoAr = Aux1 / 17 Aux1 = 0 For i = 11 To 27 Aux1 = Aux1 + Range("D" & i) Next i VazaoAguaRefrigeracao = Aux1 / 17 Aux1 = 0 For i = 11 To 27 Aux1 = Aux1 + Range("E" & i) Next i TAguaSaida = Aux1 / 17 Aux1 = 0 For i = 11 To 27 Aux1 = Aux1 + Range("F" & i) Next i TArCombustao = Aux1 / 17 Aux1 = 0 For i = 11 To 27 Aux1 = Aux1 + Range("G" & i) Next i TFumosSaida = Aux1 / 17 Aux1 = 0 For i = 11 To 27 Aux1 = Aux1 + Range("H" & i) Next i TFumosChamine = Aux1 / 17 Aux1 = 0 For i = 11 To 27 Aux1 = Aux1 + Range("I" & i) Next i GCO = Aux1 / 17 / 100 Sheets("Constant Data").Select Nitrogenio_GCO = [B9] / 100 Hidrogenio_GCO = [C9] / 100 Metano_GCO = [D9] / 100 Etano_GCO = [E9] / 100 CO_GCO = [G9] / 100 CO2_GCO = [H9] / 100 Oxigenio_GCO = [I9] / 100 Nitrogenio_GN = [B10] / 100 Metano_GN = [D10] / 100 Etano_GN = [E10] / 100 Propano_GN = [F10] / 100 CO2_GN = [H10] / 100 Oxigenio_GN = [I10] / 100 TParede(1) = [B14] TParede(2) = [C14] TParede(3) = [D14] TParede(4) = [B15] TParede(5) = [C15] TParede(6) = [D15] TParede(7) = [B16] TParede(8) = [C16] TParede(9) = [D16] TParede(10) = [B17] TParede(11) = [C17] TParede(12) = [D17] ComprimentoParede(1) = [B21] ComprimentoParede(2) = [C21] ComprimentoParede(3) = [D21] LarguraParede(1) = [B23] LarguraParede(2) = [C23] LarguraParede(3) = [D23] AreaParede(1) = [B21] * [B22] AreaParede(2) = [C21] * [C22] AreaParede(3) = [D21] * [D22] AreaParede(4) = [B21] * [B23] AreaParede(5) = [C21] * [C23] AreaParede(6) = [D21] * [D23] UmidadeAr = [I13] TAmb = [I14] TEnfornPlacas = [I15] TDesenfPlacas = [I16] TAguaEntrada = [I17] N_Adicao = [I18] / 100 GN = (1 - GCO) * (1 - N_Adicao) OxFumosObj = [I19] Carepa = [I20] T_H = [I21] VazaoGas = VazaoGas * IntervaloTempo VazaoAr = VazaoAr * IntervaloTempo T_H = T_H * IntervaloTempo * 1000 NO = GCO * CO_GCO / 2 + GCO * Hidrogenio_GCO / 2 + 2 * (GCO * Metano_GCO + GN * Metano_GN) + _ 3.5 * (GCO * Etano_GCO + GN * Etano_GN) + 5 * (GCO * Propano_GCO + GN * Propano_GN) NG = GCO * CO_GCO / 2 + GCO * Metano_GCO + GN * Metano_GN + _ 2 * (GCO * Etano_GCO + GN * Etano_GN) + 3 * (GCO * Propano_GCO + GN * Propano_GN) NU = GCO * Hidrogenio_GCO + 2 * (GCO * Metano_GCO + GN * Metano_GN) + _ 3 * (GCO * Etano_GCO + GN * Etano_GN) + 4 * (GCO * Propano_GCO + GN * Propano_GN) VazaoGasSeco = VazaoGas / (1 + FracaoUmidadeGas) ArExcessoObj = (NG + 3.76 * NO) / (21 / OxFumosObj - 1) ArSecoTotalObj = (NO / 0.21 + ArExcessoObj) * VazaoGasSeco FracaoUmidadeAr = UmidadeAr / (100 * (760 / (Exp(20.5674 - 5197.43 / (TAmb + 273))) - 1)) VolumeUmidadeArObj = FracaoUmidadeAr * ArSecoTotalObj ArUmidoTotalObj = ArSecoTotalObj + VolumeUmidadeArObj PercArExcessoObj = ArExcessoObj / (ArSecoTotalObj / VazaoGasSeco) * 100 ArSecoTotalReal = VazaoAr / (1 + FracaoUmidadeAr) If ArSecoTotalReal >= ArSecoTotalObj Then VolumeArExcesso = ArSecoTotalReal - ArSecoTotalObj Else VolumeArExcesso = 0 End If FracaoUmidadeGas = 1 / (760 / (Exp(20.5674 - 5197.43 / (TAmb + 273)) - 1)) CO2Periodo = VazaoGasSeco * NG UmidadeCombustaoPeriodo = VazaoGasSeco * NU UmidadeGas = VazaoGasSeco * FracaoUmidadeGas UmidadeArUmido = FracaoUmidadeAr * ArSecoTotalReal UmidadeTotal = UmidadeCombustaoPeriodo + UmidadeGas + UmidadeArUmido OxArExcesso = 0.21 * VolumeArExcesso NitrogenioTotal = 0.79 * ArSecoTotalReal + VazaoGasSeco * (GCO * Nitrogenio_GCO + GN * Nitrogenio_GN + (1 - GCO) * N_Adicao) CorrecaoGCO = 1 - Nitrogenio_GCO - CO2_GCO - Oxigenio_GCO CorrecaoGN = 1 - Nitrogenio_GN - CO2_GCO - Oxigenio_GCO PCI = (30.34 * (GCO * CO_GCO / CorrecaoGCO + GN * CO_GN / CorrecaoGN) + _ 25.82 * (GCO * Hidrogenio_GCO / CorrecaoGCO + GN * Hidrogenio_GN / CorrecaoGN) + _ 85.6 * (GCO * Metano_GCO / CorrecaoGCO + GN * Metano_GN / CorrecaoGN) + _ 152.35 * (GCO * Etano_GCO / CorrecaoGCO + GN * Etano_GN / CorrecaoGN) + _ 218# * (GCO * Propano_GCO / CorrecaoGCO + GN * Propano_GN / CorrecaoGN)) * 100 CalorCombustao = VazaoGasSeco * PCI Aux1 = 1 + 0.05 * (1 - ((TAmb - 50) / 50) ^ 2) Aux2 = 0.01 * UmidadeAr / (760 / (Aux1 * Exp(20.5674 - (5197.43 / (TAmb + 273)))) - 1) CalorArCombustao = ArSecoTotalReal * (TArCombustao - TAmb) * _ ((0.302 + 0.373 * Aux2) + (0.000022 + 0.00005 * Aux2) * (TArCombustao + TAmb)) CalorFormacaoCarepa = Carepa / 100 * T_H * 1777 * 0.7 If TEnfornPlacas > 25 Then CalorSensivelPlacaEnf = EntalpiaAco(25, TEnfornPlacas) * T_H Else CalorSensivelPlacaEnf = 0 End If ContribuicaoTotal = CalorCombustao + CalorArCombustao + CalorFormacaoCarepa + _ CalorSensivelPlacaEnf Sheets("Results").Select [D8] = CalorCombustao [D9] = CalorArCombustao [D10] = CalorFormacaoCarepa [D11] = CalorSensivelPlacaEnf [D12] = ContribuicaoTotal [E8] = CalorCombustao / T_H [E9] = CalorArCombustao / T_H [E10] = CalorFormacaoCarepa / T_H [E11] = CalorSensivelPlacaEnf / T_H [E12] = ContribuicaoTotal / T_H [F8] = CalorCombustao / ContribuicaoTotal * 100 [F9] = CalorArCombustao / ContribuicaoTotal * 100 [F10] = CalorFormacaoCarepa / ContribuicaoTotal * 100 [F11] = CalorSensivelPlacaEnf / ContribuicaoTotal * 100 [F12] = ContribuicaoTotal / ContribuicaoTotal * 100 CalorSensivelPlacaDesenf = EntalpiaAco(TEnfornPlacas, TDesenfPlacas) * T_H CalorAguaRefrigeracao = (TAguaSaida - TAguaEntrada) * VazaoAguaRefrigeracao * 1000 * 8 CalorFumos = ((CO2Periodo * 0.406 + UmidadeTotal * 0.373 + OxArExcesso * 0.302 + _ NitrogenioTotal * 0.302) + (CO2Periodo * 0.00009 + UmidadeTotal * 0.00005 + _ OxArExcesso * 0.000022 + NitrogenioTotal * 0.000022) * _ (TFumosSaida + TAmb)) * (TFumosSaida - TAmb) CalorParedes = 0 For i = 1 To 12 hr = 4.88 * 0.8 / (TParede(i) - TAmb) * _ (((TParede(i) + 273) / 100) ^ 4 - ((TAmb + 273) / 100) ^ 4) TMedia = (TParede(i) + TAmb + 546) / 2 Viscosidade = 0.062 * 1.4469 / (1 + 122 / TMedia) * Sqr(TMedia / 273) Cp = 0.234 + 0.0000173 * (TMedia - 273) k = (Cp + 0.0855) * Viscosidade If i <= 6 Then Lado = 0.6 Else j = i - 3 * ((i - 1) \ 3) Lado = LarguraParede(j) If ComprimentoParede(j) < LarguraParede(j) Then Lado = ComprimentoParede(j) End If End If Grashof = (12.1875 * 29 / TMedia) ^ 2 * Lado ^ 3 * (TParede(i) - TAmb) * 127137600 / _ (TMedia * Viscosidade ^ 2) Prandtl = Viscosidade * Cp / k Aux1 = Grashof * Prandtl If Aux1 <= 500 Then c = 1.18: n = 0.125 Else If Aux1 <= 20000000# Then c = 0.54: n = 0.25 Else c = 0.135: n = 1 / 3 End If End If Nusselt = c * Aux1 ^ n If i >= 7 And i <= 9 Then Aux2 = 1.3 / Lado Else If i >= 10 And i <= 12 Then Aux2 = 0.7 / Lado Else Aux2 = 1 / Lado End If End If hc = k * Nusselt * Aux2 CalorParedes = CalorParedes + (hr + hc) * (TParede(i) - TAmb) * _ AreaParede(i - 3 * ((i - 1) \ 3) + (i \ 7) * 3) Next i CalorParedes = CalorParedes * IntervaloTempo Ajuste = ContribuicaoTotal - (CalorSensivelPlacaDesenf + CalorAguaRefrigeracao + CalorFumos + _ CalorParedes) NecessidadeTotal = CalorSensivelPlacaDesenf + CalorAguaRefrigeracao + CalorFumos + _ CalorParedes + Ajuste [D16] = CalorSensivelPlacaDesenf [D17] = CalorFumos [D18] = CalorAguaRefrigeracao [D19] = CalorParedes [D20] = Ajuste [D21] = NecessidadeTotal [E16] = CalorSensivelPlacaDesenf / T_H [E17] = CalorFumos / T_H [E18] = CalorAguaRefrigeracao / T_H [E19] = CalorParedes / T_H [E20] = Ajuste / T_H [E21] = NecessidadeTotal / T_H [F16] = CalorSensivelPlacaDesenf / NecessidadeTotal * 100 [F17] = CalorFumos / NecessidadeTotal * 100 [F18] = CalorAguaRefrigeracao / NecessidadeTotal * 100 [F19] = CalorParedes / NecessidadeTotal * 100 [F20] = Ajuste / NecessidadeTotal * 100 [F21] = NecessidadeTotal / NecessidadeTotal * 100 [D24] = IntervaloTempo Sheets("Constant Data").Select [B4] = Forno [B5] = Dia Sheets("Results").Select [B3] = Forno [B4] = Dia Application.ScreenUpdating = True End Sub Function EntalpiaAco(T1, T2) Dim a, b, c1, c2 As Single If T1 <= 400 Then a = 0: b = 1 / 8 Else If T1 <= 640 Then a = -16.67: b = 1 / 6 Else If T1 <= 800 Then a = -82: b = 0.26875 Else a = 8.349: b = 0.15581 End If End If End If c1 = a + b * T1 If T2 <= 400 Then a = 0: b = 1 / 8 Else If T2 <= 640 Then a = -16.67: b = 1 / 6 Else If T2 <= 800 Then a = -82: b = 0.26875 Else a = 8.349: b = 0.15581 End If End If End If c2 = a + b * T2 EntalpiaAco = c2 - c1 End Function Sub Clear() Application.ScreenUpdating = False Sheets("Variable Data").Select Range("B4:B5").Select Selection.ClearContents Range("B11:I27").Select Selection.ClearContents Range("A1").Select Sheets("Constant Data").Select Range("B4:B5").Select Selection.ClearContents Range("B9:I10").Select Selection.ClearContents Range("B14:D17").Select Selection.ClearContents Range("B21:D23").Select Selection.ClearContents Range("I13:I21").Select Selection.ClearContents Range("A1").Select Sheets("Results").Select Range("B3:B4").Select Selection.ClearContents Range("D8:F12").Select Selection.ClearContents Range("B16:F21").Select Selection.ClearContents Range("D24").Select Selection.ClearContents Range("A1").Select Sheets("Variable Data").Select Application.ScreenUpdating = True End Sub
***** End of Program Listing ******
Return to the Software Menu.
Last Update: 26 December 2002 | ||
© Antonio Augusto Gorni |