Language: Excel/VisualBasic.
Objective: This spreadsheet calculates the minimum dressing depth for the backup roll of a 4-Hi rolling stand in order to avoid spalling caused by fatigue damage after a complete campaign. This version is ready to analyse a rolling stand of a Hot Strip Mill Finishing Train or a Steckel Mill. Other specific types of rolling stands can be implemented by the user. Some industrial experience is required in order to get good results.
Click here to download the Excel file or use the Visual Basic for Applications listing below.
***** Begin of Program Listing *****
'
' Program BUR_Dressing
'
' Calculation of the Minimum Dressing Depth for Backup Rolls
'
'
' Original algorithm described in
'
' NAMBU, Y.: "Suitable Dressing Amount Calculation to Prevent Fatigue Spalling"; III Meeting
' of the International Association of Steckel Mill Operators, Timóteo, March 1986.
'
'
' Excel/Visual Basic Version by Antonio Augusto Gorni - August 8, 2000
'
Option Explicit
Public Const Pi = 3.14159265
Dim CoefCond As Single
Dim YoungWork As Single
Dim YoungBackup As Single
Dim DiamWork As Single
Dim DiamBackup As Single
Dim HardBackup As Single
Dim LengthBackupWork As Single
Dim WeekProduction As Long
Dim RollChange As Integer
Dim NroWeeks As Integer
Dim BackupWear As Single
Dim WorkWear As Single
Dim BackupDress As Single
Dim MixWidth As Single
Dim MinWidth As Single
Dim MaxWidth As Single
Dim TableWidth(50, 2) As Single
Dim TableThickness(50, 2) As Single
Dim Thickness As Single
Dim MixThickness As Single
Dim PassSchedule(50) As Single
Dim RollingLoad(50) As Single
Dim SpecificLoad As Single
Dim Km As Single
Dim NroRevBackup As Long
Dim CoefDeformInterf As Single
Dim MaxLinContPress As Single
Dim MaxContPress As Single
Dim HalfContWidth As Single
Dim CoefFatLim As Single
Dim FatStrength As Single
Dim DressingAmount As Single
Dim i As Integer
Dim k As Integer
Dim w As Integer
Dim inic As Integer
Dim counter As Integer
Dim NroWidth As Integer
Dim NroThickness As Integer
Dim j As Integer
Dim ij As Integer
Dim t As Single
Dim ii As Single
Dim ff As Single
Dim z As Single
Dim da As Single
Dim lr As Single
Dim nb As Single
Dim Stand As String
Dim Buf As String
Dim Buf1 As String
Dim Buf2 As String
Dim Buf3 As String
Dim flag As Boolean
Sub Retifica()
Application.ScreenUpdating = False
CoefDeformInterf = 2900
ii = 0
ff = 0
Km = 0
BackupWear = 0
DressingAmount = 0
NroRevBackup = 0
Sheets("Stand").Select
Stand = [E6]
DiamWork = [E8]
YoungWork = [E9]
RollChange = [E10]
DiamBackup = [E12]
YoungBackup = [E13]
HardBackup = [E14]
LengthBackupWork = [E16]
WeekProduction = [E18]
NroWeeks = [E19]
CoefCond = [E21]
Range("E6").Select
Sheets("Width").Select
flag = False
inic = 8
counter = inic
Do While Cells(counter, "A") <> ""
Cells(counter, "A").Font.Color = RGB(0, 0, 0)
If Not IsNumeric(Cells(counter, "A")) Then
flag = True
Cells(counter, "A").Font.Color = RGB(255, 0, 0)
Cells(counter, "A").Value = "Error!"
End If
If Not IsNumeric(Cells(counter, "B")) Then
flag = True
Cells(counter, "B").Font.Color = RGB(255, 0, 0)
Cells(counter, "B").Value = "Error!"
End If
counter = counter + 1
Loop
If flag Then
Beep
Buf1 = "Non-numeric data detected in the Width section."
Buf2 = "Please correct the cells in red!"
MsgBox Buf1 & Chr(13) & Chr(13) & Buf2 & Chr(13), , "Warning"
Exit Sub
End If
If counter = inic + 1 Then
Beep
Buf1 = "No Width Data."
Buf2 = "Program aborted!"
MsgBox Buf1 & Chr(13) & Chr(13) & Buf2 & Chr(13), , "Erro"
Exit Sub
End If
counter = counter - 1
For i = inic To counter
TableWidth(i - inic + 1, 1) = Range("A" & i).Value
TableWidth(i - inic + 1, 2) = Range("B" & i).Value
Next i
NroWidth = counter - inic + 1
MinWidth = TableWidth(1, 1)
MaxWidth = TableWidth(NroWidth, 1)
t = 0
For i = 1 To NroWidth
t = t + TableWidth(i, 2)
Next i
If t > 105 Or t < 95 Then
Beep
Buf1 = "Somatory of width classes is wrong, different from 100%!"
Buf2 = "Program aborted!"
MsgBox Buf1 & Chr(13) & Chr(13) & Buf2 & Chr(13), , "Error"
Exit Sub
End If
Range("A8:B" & counter).Select
With Selection.Borders(xlLeft)
.LineStyle = xlDouble
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlRight)
.LineStyle = xlDouble
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlTop).LineStyle = xlNone
With Selection.Borders(xlBottom)
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.BorderAround LineStyle:=xlNone
Range("A" & counter & ":B" & counter).Select
With Selection.Borders(xlBottom)
.LineStyle = xlDouble
.ColorIndex = xlAutomatic
End With
Selection.BorderAround LineStyle:=xlNone
Range("A8:B" & counter).Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = xlHorizontal
End With
Range("A8:A" & counter).Select
Selection.NumberFormat = "0"
Range("B8:B" & counter).Select
Selection.NumberFormat = "0,0"
Range("A8").Select
Sheets("Pass").Select
flag = False
inic = 8
counter = inic
Do While Cells(counter, "A") <> ""
Cells(counter, "A").Font.Color = RGB(0, 0, 0)
If Not IsNumeric(Cells(counter, "B")) Then
flag = True
Cells(counter, "B").Font.Color = RGB(255, 0, 0)
Cells(counter, "B").Value = "Error!"
End If
If Not IsNumeric(Cells(counter, "C")) Then
flag = True
Cells(counter, "C").Font.Color = RGB(255, 0, 0)
Cells(counter, "C").Value = "Error!"
End If
If Not IsNumeric(Cells(counter, "D")) Then
flag = True
Cells(counter, "D").Font.Color = RGB(255, 0, 0)
Cells(counter, "D").Value = "Error!"
End If
counter = counter + 1
Loop
If flag Then
Beep
Buf1 = "Non-numeric data detected in the Pass section."
Buf2 = "Please correct the cells in red!"
MsgBox Buf1 & Chr(13) & Chr(13) & Buf2 & Chr(13), , "Warning"
Exit Sub
End If
If counter = inic Then
Beep
Buf1 = "No data in the Pass section."
Buf2 = "Program aborted!"
MsgBox Buf1 & Chr(13) & Chr(13) & Buf2 & Chr(13), , "Error"
Exit Sub
End If
counter = counter - 1
NroThickness = counter - inic + 1
Range("A8:D" & counter).Select
With Selection.Borders(xlLeft)
.LineStyle = xlDouble
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlRight)
.LineStyle = xlDouble
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlTop).LineStyle = xlNone
With Selection.Borders(xlBottom)
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.BorderAround LineStyle:=xlNone
Range("A" & counter & ":D" & counter).Select
With Selection.Borders(xlBottom)
.LineStyle = xlDouble
.ColorIndex = xlAutomatic
End With
Selection.BorderAround LineStyle:=xlNone
Range("A8:D" & counter).Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = xlHorizontal
End With
Range("A8:A" & counter).Select
Selection.NumberFormat = "0,00"
Range("B8:B" & counter).Select
Selection.NumberFormat = "0,0"
Range("C8:C" & counter).Select
Selection.NumberFormat = "0,00"
Range("D8:D" & counter).Select
Selection.NumberFormat = "0"
Range("A8").Select
For i = inic To counter
TableThickness(i - inic + 1, 1) = Range("A" & i).Value
TableThickness(i - inic + 1, 2) = Range("B" & i).Value
PassSchedule(i - inic + 1) = Range("C" & i).Value
RollingLoad(i - inic + 1) = Range("D" & i).Value
Next i
NroThickness = counter - inic + 1
Sheets("Results").Select
counter = 11
Do While Cells(counter, "A") <> ""
counter = counter + 1
Loop
Range("A11:F" & counter).Select
Selection.clear
[C6] = Stand
[F6] = Now()
counter = 10
t = 0
For k = 1 To NroWeeks
For i = 1 To Int(WeekProduction / RollChange)
ii = 0
For j = NroWidth To 1 Step -1
w = TableWidth(j, 1)
MixWidth = TableWidth(j, 2) / 100
For ij = 1 To NroThickness
Thickness = PassSchedule(ij)
MixThickness = TableThickness(ij, 2) / 100
SpecificLoad = RollingLoad(ij)
t = MixWidth * MixThickness * RollChange
Dress
Next ij
Next j
Next i
counter = counter + 1
Range("A" & counter) = k
Range("B" & counter) = Km / 1000000
Range("C" & counter) = NroRevBackup
Range("D" & counter) = WorkWear
Range("E" & counter) = BackupWear
Range("F" & counter) = DressingAmount
Next k
Range("A11:F" & counter).Select
With Selection.Borders(xlLeft)
.LineStyle = xlDouble
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlRight)
.LineStyle = xlDouble
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlTop).LineStyle = xlNone
With Selection.Borders(xlBottom)
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.BorderAround LineStyle:=xlNone
Range("A" & counter & ":F" & counter).Select
With Selection.Borders(xlBottom)
.LineStyle = xlDouble
.ColorIndex = xlAutomatic
End With
Selection.BorderAround LineStyle:=xlNone
Range("A11:F" & counter).Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = xlHorizontal
End With
Range("A11:A" & counter).Select
Selection.NumberFormat = "0"
Range("B11:B" & counter).Select
Selection.NumberFormat = "0.0"
Range("C11:C" & counter).Select
Selection.NumberFormat = "0"
Range("D11:F" & counter).Select
Selection.NumberFormat = "0.000"
Range("A11").Select
End Sub
Sub Dress()
lr = t * 1000000# / 0.0078 / Thickness / w
nb = lr / Pi / DiamBackup
WorkWear = ii + 4.7 * SpecificLoad * lr * 0.000000000001
BackupWear = ff + 0.23 * nb * 0.000001 * 2 ^ (0.1 * (68 - HardBackup))
MaxLinContPress = 1 / LengthBackupWork * (w * SpecificLoad + CoefDeformInterf / 4 * (MaxWidth + MinWidth) * (WorkWear + BackupWear))
MaxContPress = 0.836 * Sqr(MaxLinContPress * YoungWork * YoungBackup / (YoungWork + YoungBackup) * (DiamWork + DiamBackup) / DiamWork / DiamBackup)
HalfContWidth = 0.764 * Sqr(MaxLinContPress * (YoungWork + YoungBackup) / YoungWork / YoungBackup * DiamWork * DiamBackup / (DiamWork + DiamBackup))
z = -2.303 / (0.74 * HardBackup + 1.4)
CoefFatLim = 16.12 - z * (2.93 * HardBackup - 46.7)
FatStrength = Exp(z * MaxContPress + CoefFatLim)
da = CoefCond * 6# * 0.0561 * FatStrength ^ 0.091 * nb / FatStrength * HalfContWidth
ii = WorkWear
ff = BackupWear
DressingAmount = DressingAmount + da
Km = Km + lr
NroRevBackup = NroRevBackup + nb
End Sub
Sub Limpa_Dados_Laminador()
Sheets("Stand").Select
[E6] = ""
[E8] = ""
[E9] = ""
[E10] = ""
[E12] = ""
[E13] = ""
[E14] = ""
[E16] = ""
[E18] = ""
[E19] = ""
[E21] = ""
End Sub
Sub Limpa_Dados_Espessura()
Sheets("Espessura").Select
counter = 8
Do While Cells(counter, "A") <> ""
counter = counter + 1
Loop
Range("A8:B" & counter).Select
Selection.clear
End Sub
Sub Limpa_Dados_Largura()
Sheets("Width").Select
counter = 8
Do While Cells(counter, "A") <> ""
counter = counter + 1
Loop
Range("A8:B" & counter).Select
Selection.clear
End Sub
Sub Limpa_Dados_Passe()
Sheets("Pass").Select
counter = 8
Do While Cells(counter, "A") <> ""
counter = counter + 1
Loop
Range("A8:D" & counter).Select
Selection.clear
End Sub
***** End of Program Listing ******

Return to the Software Menu.
![]() |
Last Update: 18 December 2002 | |
| © Antonio Augusto Gorni |