Language: Excel/VisualBasic.
Objective: This spreadsheet calculates the evolution of temperature profile along the thickness of a rolling stock being rolled in a plate mill, including the influence of descaling and the broadsizing phase. A graphical output of the results is available. Input data can be changed according to the specific conditions of the user.
Click here to download the Excel file or use the Visual Basic for Applications listing below.
***** Begin of Program Listing *****
' ' CALCULATION OF THE THERMAL EVOLUTION OF STEEL FLATS DURING HOT ROLLING ' ' Semi-Finite Rolling Stock, Calculation Using the Method of Finite Diferences ' The calculation of the surface temperature considers: ' - Radiation ' - Convection from Descaling/Roll Cooling ' - Conduction for the Work Rolls ' ' Bibliographical References: ' ' - DEVADAS, C. et al.: "Heat Transfer during Hot Rolling of Steel Strip", Ironmaking and ' Steelmaking, 6, 1986, 311-321 ' ' - KREITH, F.: "Princípios da Transmissão de Calor", Editora Edgard Blücher Ltda., 1977, ' pág. 144-164 ' ' - SEREDYNSKI, F.: "Prediction of Plate Cooling during Rolling-Mill Operation", JISI, ' March 1973, 197-202 ' ' ' ' Developed by: ' Antonio Augusto Gorni ' - GWBasic Version: 08.01.1992 ' - Visual Basic Version: 25.05.2004 ' Option Explicit Option Base 0 Const Pi = 3.1416 Dim i, iLine, iPasse, j, NroPasses, NroDivEsp, iTom As Integer Dim Aux, C, E, Deltat_i, ST, DeltaT_SupNucl, Deltat_Reversao, TAgua, TCT As Single Dim Deltat_AL, TMediaEsboco, DeltatRoll, Deltat_Stop, f01, f02, f03, dh As Single Dim KAtual, CPAtual, RoAtual, VelCil, dx, Deltat_Max, Emissiv, EAnt, TExterna As Single Dim Hi, Hf, Comprimento, Largura, RaioCT, TAmb, Deltat_Chegada, CoefAlarg As Single Dim ForwardSlip, CoefDescPrim, CoefDescSec, CoefRefrCT, CoefCondCT As Single Dim Deltat_DescPrim, Larg_DescPrim, Deltat_LCG, Larg_DescSec, Larg_RefrCT As Single Dim Deltat_Rev, Sigma, VelDef, DeltaTEps, tFimPasse, Vel_DescPrim, H_Prime As Single Dim VelPerif, tInicioPasse, Deform, NeoEAnt, NeoE, DeltatContato As Single Dim DistDescLCG, DistRefrLCG, RPM, tFimPasseAnt, Deltat_Out, DeltaT_Adb As Single Dim Deltat_Alarg As Single Dim Evento, EventoPassado As String Dim FlagAut, Descamacao, Descarep As Boolean Dim iTM As Integer Dim Tx(30) As Single, K(30) As Single, CP(30) As Single, Ro(30) As Single Dim T(2, 50) As Single Dim iLineDebug As Integer Dim Aux1, Aux2 As Single Dim FlagDebug, FirstDebug As Boolean Dim Flag1, Flag2 As Boolean Sub EvolTemp() Application.ScreenUpdating = False Sheets("Constantes").Select TAmb = [H3] TAgua = [H4] TCT = [H5] Emissiv = [H6] CoefDescPrim = [H7] CoefDescSec = [H8] CoefRefrCT = [H9] CoefCondCT = [H10] Larg_DescPrim = [L3] Vel_DescPrim = [L4] DistDescLCG = [L5] Larg_DescSec = [L6] DistRefrLCG = [L7] Larg_RefrCT = [L8] Deltat_Rev = [L9] Deltat_Alarg = [L10] ForwardSlip = [L11] CoefAlarg = 1 i = 5 Do While Cells(i, "A") <> "" Tx(i - 5) = Cells(i, "A") K(i - 5) = Cells(i, "B") CP(i - 5) = Cells(i, "C") Ro(i - 5) = Cells(i, "D") i = i + 1 Loop iTM = i - 6 Sheets("Esquema Passes").Select Hi = [D4] Largura = [D5] Comprimento = [D6] C = [D7] RaioCT = [D8] NroDivEsp = [H4] Deltat_i = [H5] Deltat_DescPrim = [H18] If Cells(18, "D") = "YES" Then Descarep = True Else Descarep = False TMediaEsboco = 0 For i = 0 To NroDivEsp / 2 T(0, i) = Cells(13, i + 1) TMediaEsboco = TMediaEsboco + T(0, i) Next i TMediaEsboco = TMediaEsboco / (NroDivEsp / 2 + 1) i = 19 If [F19] = "" Then FlagAut = True Else FlagAut = False If FlagAut Then Do While Cells(i, "B") <> "" Hf = Cells(i, "B") If Cells(i, "C") = "STA" Then Aux = Comprimento Comprimento = Largura Largura = Aux End If Largura = CoefAlarg * Largura Cells(i, "F") = Largura Comprimento = Comprimento * Hi / Hf / CoefAlarg If i = 19 Then Comprimento = Comprimento * 0.9 Cells(i, "G") = Comprimento If i > 19 Then Cells(i, "H") = Cells(i - 1, "H") + Cells(i - 1, "G") * 30 / (Pi * RaioCT * (Cells(i - 1, "E")) * ForwardSlip) + Cells(i, "G") * 30 / (Pi * RaioCT * (Cells(i, "E")) * ForwardSlip) + Deltat_Reversao If Cells(i, "C") <> "" Then Cells(i, "H") = Cells(i, "H") + Deltat_Alarg End If Hi = Hf If Cells(i, "C") = "END" Then Aux = Comprimento Comprimento = Largura Largura = Aux End If i = i + 1 Loop End If NroPasses = 0 Do While Cells(NroPasses + 19, "B") <> "" NroPasses = NroPasses + 1 Loop Sheets("Evolução Térmica").Select Range("C6:IV10").Select Selection.ClearContents Range("A8:IV65536").Select Selection.ClearContents For i = 0 To NroDivEsp / 2 Cells(6, i + 3) = i / NroDivEsp Next i Cells(6, NroDivEsp / 2 + 4) = "Média" Cells(7, NroDivEsp / 2 + 4) = "[°C]" Cells(2, "AH").Select Selection.Copy Cells(6, NroDivEsp / 2 + 5).Select ActiveSheet.Paste Cells(7, NroDivEsp / 2 + 5) = "[°C]" Sheets("Tomografia").Select Range("A4:G65536").Select Selection.ClearContents Sheets("Esquema Passes").Select iPasse = 19 EAnt = [D4] E = Cells(iPasse, "B") If Cells(iPasse, "D") <> "" Then Descamacao = True Else Descamacao = False End If RPM = Cells(iPasse, "E") Comprimento = Cells(iPasse, "G") VelPerif = 2 * Pi * RaioCT * RPM / 60 tInicioPasse = Cells(iPasse, "H") tFimPasse = tInicioPasse + Sqr(RaioCT * (EAnt - E)) / VelPerif tFimPasseAnt = tFimPasse Deltat_Stop = Cells(NroPasses + 18, "H") + 30 iLine = 8 Deltat_AL = Deltat_i Deltat_Out = 0 Flag1 = True Flag2 = True iTom = 4 For DeltatRoll = 0 To Deltat_Stop Step Deltat_AL H_Prime = 0 Evento = "" If Descarep And DeltatRoll >= Deltat_DescPrim And DeltatRoll <= Deltat_DescPrim + Larg_DescPrim / (Vel_DescPrim * 1000) Then H_Prime = CoefDescPrim Evento = "Desc Prim" End If If Descamacao And DeltatRoll >= tInicioPasse - DistDescLCG / VelPerif And DeltatRoll <= tInicioPasse - (DistDescLCG - Larg_DescSec) / VelPerif Then H_Prime = CoefDescSec Evento = "Desc Sec" End If If DeltatRoll >= tInicioPasse - DistRefrLCG / VelPerif And DeltatRoll <= tInicioPasse - (DistRefrLCG - Larg_RefrCT) / VelPerif Then H_Prime = CoefRefrCT Evento = "Refr CT" End If If DeltatRoll >= tInicioPasse And DeltatRoll <= tFimPasse Then H_Prime = CoefCondCT Evento = "Arco Contato" End If Sheets("Esquema Passes").Select If DeltatRoll > tFimPasse And Cells(iPasse, "B") <> "" Then Aux = RaioCT * Sin(ArCos(1 - (EAnt - E) / (2 * RaioCT))) If ((EAnt + E) / 2 >= Aux) Then NeoEAnt = Aux + (EAnt - E) / 2 NeoE = Aux - (EAnt - E) / 2 Else NeoEAnt = EAnt NeoE = E End If Deform = Log(NeoEAnt / NeoE) VelDef = 0.1047197 * RPM * RaioCT * Sqr(1# / (RaioCT * (NeoEAnt - NeoE))) * Deform Sigma = Exp(0.126 - 1.75 * C + 0.594 * C ^ 2 + (2851 + 2968 * C - 1120 * C ^ 2) / (TMediaEsboco + 273)) * Deform ^ 0.21 * VelDef ^ 0.13 For i = 0 To NroDivEsp / 2 dh = E - i * E / NroDivEsp If dh >= E - (NeoEAnt - NeoE) / (2 * EAnt / E) Then CPAtual = (Lagrange(Tx, CP, T(0, i), iTM)) RoAtual = (Lagrange(Tx, Ro, T(0, i), iTM)) DeltaT_Adb = Sigma * Log(NeoEAnt / NeoE) / (CPAtual * RoAtual) * 9.8 * 1000000# Aux = T(0, i) T(0, i) = T(0, i) + DeltaT_Adb Evento = "Delta Q " & i Tomografia End If Next i Sheets("Esquema Passes").Select iPasse = iPasse + 1 If Cells(iPasse, "B") <> "" Then EAnt = E E = Cells(iPasse, "B") If Cells(iPasse, "D") <> "" Then Descamacao = True Else Descamacao = False End If RPM = Cells(iPasse, "E") Comprimento = Cells(iPasse, "G") VelPerif = 2 * Pi * RaioCT * RPM / 60 * ForwardSlip tInicioPasse = Cells(iPasse, "H") tFimPasseAnt = tFimPasse DeltatContato = Sqr(RaioCT * (EAnt - E)) / VelPerif tFimPasse = tInicioPasse + DeltatContato End If End If If iPasse > 19 And DeltatRoll >= tFimPasseAnt + DistRefrLCG / (VelPerif * ForwardSlip) And DeltatRoll <= tFimPasseAnt + (DistRefrLCG + Larg_RefrCT) / (VelPerif * ForwardSlip) Then H_Prime = CoefRefrCT Evento = "Refr CT" End If If H_Prime = 0 Then H_Prime = Emissiv * 5.674 * (((T(0, 0) + 273) / 100) ^ 4 - ((TAmb + 273) / 100) ^ 4) / (T(0, 0) - TAmb) Evento = "Ar" End If If DeltatRoll < tInicioPasse Then dx = EAnt / NroDivEsp / 1000 Else dx = E / NroDivEsp / 1000 End If If Evento = "Ar" Then TExterna = TAmb If Evento = "Desc Prim" Or Evento = "Desc Sec" Or Evento = "Refr CT" Then TExterna = TAgua If Evento = "Arco Contato" Then TExterna = TCT Tomografia 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_Max = 0.5 * dx ^ 2 / (KAtual / CPAtual / RoAtual) / (1 + (H_Prime * dx / KAtual)) Do While Deltat_AL > Deltat_Max DeltatRoll = DeltatRoll - Deltat_AL Deltat_AL = Deltat_Max * 0.8 DeltatRoll = DeltatRoll + Deltat_AL Deltat_Max = 0.5 * dx ^ 2 / (KAtual / CPAtual / RoAtual) / (1 + (H_Prime * dx / KAtual)) Loop f01 = T(0, 0) * (1 - 2 * Deltat_AL / (CPAtual * RoAtual * dx) * (KAtual / dx + H_Prime)) f02 = 2 * H_Prime * Deltat_AL / (CPAtual * RoAtual * dx) * TExterna 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 Aux1 = 2 * KAtual / (CPAtual * RoAtual * dx ^ 2) Aux2 = 0 If FlagDebug And j = 1 Then Sheets("Tomografia").Select If FirstDebug Then iLineDebug = 3 Range("A" & iLineDebug) = "t_Burn" Range("B" & iLineDebug) = "TExterna" Range("C" & iLineDebug) = "T(0, 1)" Range("D" & iLineDebug) = "TF-T" Range("E" & iLineDebug) = "Aux1" Range("F" & iLineDebug) = "f01" Range("G" & iLineDebug) = "f03" Range("H" & iLineDebug) = "H_Prime" Range("I" & iLineDebug) = "KAtual" Range("J" & iLineDebug) = "CPAtual" Range("K" & iLineDebug) = "RoAtual" Range("L" & iLineDebug) = "dx" iLineDebug = 2 FirstDebug = False End If Range("A" & iLineDebug) = DeltatRoll Range("B" & iLineDebug) = TExterna Range("C" & iLineDebug) = T(0, 1) Range("D" & iLineDebug) = TExterna - T(0, 0) Range("E" & iLineDebug) = Aux1 Range("F" & iLineDebug) = f01 Range("G" & iLineDebug) = f03 Range("H" & iLineDebug) = H_Prime Range("I" & iLineDebug) = KAtual Range("J" & iLineDebug) = CPAtual Range("K" & iLineDebug) = RoAtual Range("L" & iLineDebug) = dx iLineDebug = iLineDebug + 1 Sheets("Perfil Térmico").Select If DeltatRoll > 6000 Then End End If 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) TMediaEsboco = 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 Deltat_Out = Deltat_Out + Deltat_AL If Deltat_Out >= 0.1 Then Sheets("Evolução Térmica").Select Cells(iLine, 1) = DeltatRoll If DeltatRoll < tInicioPasse Then Cells(iLine, 2) = EAnt Else Cells(iLine, 2) = E End If For i = 0 To NroDivEsp / 2 Cells(iLine, i + 3) = T(1, i) Next i Cells(iLine, NroDivEsp / 2 + 4) = TMediaEsboco Cells(iLine, NroDivEsp / 2 + 5) = DeltaT_SupNucl iLine = iLine + 1 Deltat_Out = 0 End If Next DeltatRoll Range("A3").Select End Sub Function ArCos(X As Single) As Single ArCos = Atn(Sqr(1# - X * X) / X) End 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 Sub Tomografia() If DeltatRoll = 0 Or Evento <> EventoPassado Then Sheets("Tomografia").Select Cells(iTom, "A") = iPasse - 18 Cells(iTom, "B") = DeltatRoll Cells(iTom, "C") = Evento Cells(iTom, "D") = TExterna If Left(Evento, 7) = "Delta Q" Then Cells(iTom, "E") = dh Cells(iTom, "F") = Aux Cells(iTom, "G") = DeltaT_Adb End If EventoPassado = Evento iTom = iTom + 1# End If End Sub
***** End of Program Listing ******
Return to the Software Menu.
Last Update: 28 August 2006 | ||
© Antonio Augusto Gorni |