Objective: This spreadsheet calculates the thermal profile of a slab as it is being reheated along a continuous furnace in a hot strip mill or plate mill line. Its temperatures accross its thickness are calculated from the set-points of the furnace and slab start temperature. A graphical output of the results is available.
Notes: This program considers only the radiative heat transfer from the furnace walls to the slab surface. The conductive heat transfer through the slab thickness is considered to be symmetric. The effect of the water cooled skids on slab temperature is not considered.
Click here to download the Excel file or use the Visual Basic for Applications listing below.
***** Begin of Program Listing *****
' ' PROGRAMA PARA CÁLCULO DO PERFIL TÉRMICO DA PLACA REAQUECIDA ' ' Placa Semi-Finita, Cálculo através do Método das Diferenças Finitas ' Temperatura Superficial Calculada por Radiação ' ' Fundamentos do Modelo Matemático: ' KREITH, F.: "Princípios da Transmissão de Calor", ' Editora Edgard Blücher Ltda., 1977, pág. 144-164 ' ' Breve Descrição da Memória de Cálculo em: ' GORNI, A.A. et al.: "Comparação entre Abordagens para o ' Modelamento Matemático do Perfil Térmico de Placas durante seu ' Reaquecimento", Revista da Escola de Minas, Julho-Setembro 2000. ' ' Desenvolvido por: ' Bruno Vincenzo Formica/Antonio Augusto Gorni ' - Versão Original MBasic: 15.01.1993 ' - Versão QBasic: 11.02.1998 ' - Versão Visual Basic: 29.03.2004 ' ' www.gorni.eng.br ' Option Explicit Dim i, iC, iL, iR, j, NroDivEsp, NroDivForno, NroTotInt As Integer Dim iLine, n As Integer, iTM As Integer Dim E, TInic, FatorForma, Deltat_i, NMin, Deltat_AQ, Deltat_Min, dx, TPreAq As Single Dim Deltat, Deltat_AL, TMediaPlaca, Deltat_Burn, VelPlaca, x, HR, f01, f02, f03 As Single Dim FD, DeltaT_SupNucl, DTIR, K01, DTC, ST, ComprFP As Single Dim KAtual, CPAtual, RoAtual, TForno As Single Dim TFornoVector(20), LimiteZonasFP(20), A(20), B(20), T(2, 50) As Single Dim Tx(30) As Single, K(30) As Single, CP(30) As Single, Ro(30) As Single Dim iLineDebug As Integer Dim Aux1, Aux2 As Single Dim FlagDebug, FirstDebug As Boolean ' ' Main Program. ' Sub Aquecimento() FlagDebug = False FirstDebug = True Application.ScreenUpdating = False Sheets("Thermal Profile").Select E = Cells(3, "F") / 1000 TInic = [F4] Deltat_AQ = [F5] Sheets("Parameters").Select NroDivEsp = [A3] FatorForma = [A4] Deltat_i = [A5] TPreAq = 300 ComprFP = 60 i = 3 LimiteZonasFP(0) = 0 Do While Cells(i, "H") <> "" LimiteZonasFP(i - 2) = Cells(i, "H") i = i + 1 Loop NroDivForno = i - 3 For j = 0 To NroDivEsp / 2 T(0, j) = TInic Next j TMediaPlaca = TInic Deltat_AQ = Deltat_AQ * 60 i = 5 Do While Cells(i, "N") <> "" Tx(i - 5) = Cells(i, "M") K(i - 5) = Cells(i, "N") CP(i - 5) = Cells(i, "O") Ro(i - 5) = Cells(i, "P") i = i + 1 Loop iTM = i - 6 Sheets("Thermal Profile").Select i = 12 TFornoVector(0) = TPreAq TFornoVector(1) = [H5] TFornoVector(2) = [I5] TFornoVector(3) = TFornoVector(2) TFornoVector(4) = [J5] TFornoVector(5) = TFornoVector(4) TFornoVector(6) = [K5] TFornoVector(7) = TFornoVector(6) For iR = 1 To NroDivForno A(iR) = (TFornoVector(iR - 1) - TFornoVector(iR)) / (LimiteZonasFP(iR - 1) - LimiteZonasFP(iR)) B(iR) = (LimiteZonasFP(iR) * TFornoVector(iR - 1) - LimiteZonasFP(iR - 1) * TFornoVector(iR)) / (LimiteZonasFP(iR) - LimiteZonasFP(iR - 1)) Next iR Sheets("Thermal Profile").Select Range("C9:IV10").Select Selection.ClearContents Range("A11:IV65536").Select Selection.ClearContents Deltat_Burn = 0 Cells(11, 1) = Deltat_Burn Cells(11, 2) = TFornoVector(0) For i = 0 To NroDivEsp / 2 Cells(9, i + 3) = i * (E * 1000 / NroDivEsp) Cells(10, i + 3) = "[mm]" Cells(11, i + 3) = T(0, i) Next i Cells(9, NroDivEsp / 2 + 4) = "Average" Cells(10, NroDivEsp / 2 + 4) = "[°C]" Cells(11, NroDivEsp / 2 + 4) = TMediaPlaca Cells(2, "AH").Select Selection.Copy Cells(9, NroDivEsp / 2 + 5).Select ActiveSheet.Paste Cells(10, NroDivEsp / 2 + 5) = "[°C]" Cells(11, NroDivEsp / 2 + 5) = 0 VelPlaca = ComprFP / Deltat_AQ iLine = 12 dx = E / NroDivEsp iC = 0 Deltat_AL = Deltat_i Do While Deltat_Burn <= Deltat_AQ Deltat_Burn = Deltat_Burn + Deltat_AL x = VelPlaca * Deltat_Burn For iL = 1 To NroDivForno If x < LimiteZonasFP(iL) Then TForno = A(iL) * x + B(iL): Exit For Next iL HR = FatorForma * 5.674 * (((TForno + 273) / 100) ^ 4 - ((T(0, 0) + 273) / 100) ^ 4) / (TForno - T(0, 0)) KAtual = Lagrange(Tx, K, T(0, 0), iTM) CPAtual = Lagrange(Tx, CP, T(0, 0), iTM) RoAtual = Lagrange(Tx, Ro, T(0, 0), iTM) Deltat_Min = 0.5 * dx ^ 2 / (KAtual / CPAtual / RoAtual) / (1 + (HR * dx / KAtual)) Do While Deltat_AL > Deltat_Min Deltat_Burn = Deltat_Burn - Deltat_AL Deltat_AL = Deltat_Min * 0.8 Deltat_Burn = Deltat_Burn + Deltat_AL x = VelPlaca * Deltat_Burn For iL = 1 To NroDivForno If x < LimiteZonasFP(iL) Then TForno = A(iL) * x + B(iL): Exit For Next iL HR = FatorForma * 5.674 * (((TForno + 273) / 100) ^ 4 - ((T(0, 0) + 273) / 100) ^ 4) / (TForno - T(0, 0)) Deltat_Min = 0.5 * dx ^ 2 / (KAtual / CPAtual / RoAtual) / (1 + (HR * dx / KAtual)) Loop f01 = T(0, 0) * (1 - 2 * Deltat_AL / (CPAtual * RoAtual * dx) * (KAtual / dx + HR)) f02 = 2 * HR * Deltat_AL / (CPAtual * RoAtual * dx) * TForno f03 = 2 * KAtual * Deltat_AL / (CPAtual * RoAtual * dx ^ 2) * T(0, 1) T(1, 0) = f01 + f02 + f03 ST = T(1, 0) For j = 1 To NroDivEsp / 2 - 1 KAtual = (Lagrange(Tx, K, T(0, j), iTM)) CPAtual = (Lagrange(Tx, CP, T(0, j), iTM)) RoAtual = (Lagrange(Tx, Ro, T(0, j), iTM)) f01 = KAtual * Deltat_AL / (CPAtual * RoAtual * dx ^ 2) * T(0, j - 1) f02 = (1 - 2 * KAtual * Deltat_AL / (CPAtual * RoAtual * dx ^ 2)) * T(0, j) f03 = KAtual * Deltat_AL / (CPAtual * RoAtual * dx ^ 2) * T(0, j + 1) T(1, j) = f01 + f02 + f03 ST = ST + T(1, j) Next j KAtual = Lagrange(Tx, K, T(0, NroDivEsp / 2), iTM) CPAtual = Lagrange(Tx, CP, T(0, NroDivEsp / 2), iTM) RoAtual = Lagrange(Tx, Ro, T(0, NroDivEsp / 2), iTM) f01 = KAtual * Deltat_AL / (CPAtual * RoAtual * dx ^ 2) * T(0, NroDivEsp / 2 - 1) f02 = (1 - 2 * KAtual * Deltat_AL / (CPAtual * RoAtual * dx ^ 2)) * T(0, NroDivEsp / 2) T(1, NroDivEsp / 2) = 2 * f01 + f02 ST = ST + T(1, NroDivEsp / 2) TMediaPlaca = ST / (NroDivEsp / 2 + 1) DeltaT_SupNucl = T(1, 0) - T(1, NroDivEsp / 2) For j = 0 To NroDivEsp / 2 T(0, j) = T(1, j) Next j If Int(Deltat_Burn / Deltat_i) > iC Then Cells(iLine, 1) = Deltat_Burn / 60 Cells(iLine, 2) = TForno For i = 0 To NroDivEsp / 2 Cells(iLine, i + 3) = T(1, i) Next i Cells(iLine, NroDivEsp / 2 + 4) = TMediaPlaca Cells(iLine, NroDivEsp / 2 + 5) = DeltaT_SupNucl iLine = iLine + 1 iC = iC + 1 End If Loop Range("A3").Select End Sub ' ' Lagrange Interpolation Function. ' Function Lagrange(x() As Single, y() As Single, z As Single, n As Integer) As Single Dim i, j As Integer Dim c1, m, s As Single Dim X1(10), Y1(10) As Single i = 0 If z >= x(n) Then Lagrange = y(n): Exit Function While z > x(i) i = i + 1 Wend If i < 2 Then For j = 0 To 3 X1(j) = x(j): Y1(j) = y(j) Next Else If i > n - 1 Then c1 = n - 2 For j = -1 To 2 X1(j + 1) = x(c1 + j): Y1(j + 1) = y(c1 + j) Next Else c1 = i - 1 For j = -1 To 2 X1(j + 1) = x(c1 + j): Y1(j + 1) = y(c1 + j) Next End If End If s = 0 For i = 0 To 3 m = 1 For j = 0 To 3 If j <> i Then m = m * (z - X1(j)) / (X1(i) - X1(j)) Next j s = s + m * Y1(i) Next i Lagrange = s End Function
***** End of Program Listing ******
Return to the Software Menu.
Last Update: 31 March 2004 | ||
© Antonio Augusto Gorni |