OmagCUT :

- gestione tolleranza spessore pezzi da TRF per inserimento in lastra
- gestione tastatura seconda lama per linea di produzione.
This commit is contained in:
Dario Sassi
2018-12-13 09:10:39 +00:00
parent 2421a0085f
commit 22c7cc33ad
6 changed files with 123 additions and 75 deletions
+1
View File
@@ -109,6 +109,7 @@ Module ConstIni
Public Const K_ANGSTEP As String = "AngStep"
Public Const K_RESTRADIUS As String = "RestRadius"
Public Const K_SNAPDIST As String = "SnapDist"
Public Const K_TRFTHICKTOLERANCE As String = "TrfThickTolerance"
Public Const S_CSV As String = "Csv"
Public Const K_FULL As String = "Full"
+3
View File
@@ -69,6 +69,9 @@
Public Const K_PRODLIPROBINGSTATEVAR As String = "ProbingStateVar"
Public Const K_PRODLIPROBINGTCPOSVAR As String = "ProbingTcPosVar"
Public Const K_PRODLISAWDIAMETERVAR As String = "SawDiameterVar"
Public Const K_PRODLIPROBINGSTATE2VAR As String = "ProbingState2Var"
Public Const K_PRODLIPROBINGTCPOS2VAR As String = "ProbingTcPos2Var"
Public Const K_PRODLISAWDIAMETER2VAR As String = "SawDiameter2Var"
Public Const S_TABLE As String = "Table"
Public Const K_ADDITIONALTABLE As String = "AdditionalTable"
+35 -11
View File
@@ -35,10 +35,13 @@ Public Class CurrentMachine
Private m_bSpecialUnload As Boolean = False
Private m_nSaveProduced As Integer = 0
Private m_sVarProgTwins As String = "E80027"
Private m_bProdLiSawProbe As Boolean = False
Private m_nProdLiSawProbe As Integer = 0
Private m_sProdLiProbingStateVar As String = ""
Private m_sProdLiProbingTcPosVar As String = ""
Private m_sProdLiSawDiameterVar As String = ""
Private m_sProdLiProbingState2Var As String = ""
Private m_sProdLiProbingTcPos2Var As String = ""
Private m_sProdLiSawDiameter2Var As String = ""
' Numero e tipo di utensili correntemente disponibili sulla macchina
Private m_MountedToolConfig As MountedToolConfigs = MountedToolConfigs.SAW
@@ -254,27 +257,45 @@ Public Class CurrentMachine
End Get
End Property
Friend ReadOnly Property bProdLiSawProbe As Boolean
Friend ReadOnly Property nProdLiSawProbe As Integer
Get
Return m_bProdLiSawProbe
Return m_nProdLiSawProbe
End Get
End Property
Friend ReadOnly Property sProdLiProbingStateVar As String
Friend Function sProdLiProbingStateVar(nI As Integer) As String
If nI = 1 Then Return m_sProdLiProbingStateVar
If nI = 2 Then Return m_sProdLiProbingState2Var
Return Nothing
End Function
Friend Function sProdLiProbingTcPosVar(nI As Integer) As String
If nI = 1 Then Return m_sProdLiProbingTcPosVar
If nI = 2 Then Return m_sProdLiProbingTcPos2Var
Return Nothing
End Function
Friend Function sProdLiSawDiameterVar(nI As Integer) As String
If nI = 1 Then Return m_sProdLiSawDiameterVar
If nI = 2 Then Return m_sProdLiSawDiameter2Var
Return Nothing
End Function
Friend ReadOnly Property sProdLiProbingState2Var As String
Get
Return m_sProdLiProbingStateVar
Return m_sProdLiProbingState2Var
End Get
End Property
Friend ReadOnly Property sProdLiProbingTcPosVar As String
Friend ReadOnly Property sProdLiProbingTcPos2Var As String
Get
Return m_sProdLiProbingTcPosVar
Return m_sProdLiProbingTcPos2Var
End Get
End Property
Friend ReadOnly Property sProdLiSawDiameterVar As String
Friend ReadOnly Property sProdLiSawDiameter2Var As String
Get
Return m_sProdLiSawDiameterVar
Return m_sProdLiSawDiameter2Var
End Get
End Property
@@ -857,10 +878,13 @@ Public Class CurrentMachine
m_bSpecialUnload = (GetPrivateProfileInt(S_PRODUCTIONLINE, K_SPECIALUNLOAD, 0, sMachIniFile) <> 0)
m_nSaveProduced = GetPrivateProfileInt(S_PRODUCTIONLINE, K_SAVEPRODUCED, 0, sMachIniFile)
GetPrivateProfileString(S_PRODUCTIONLINE, K_VARPROGTWINS, "", m_sVarProgTwins, sMachIniFile)
m_bProdLiSawProbe = (GetPrivateProfileInt(S_PRODUCTIONLINE, K_PRODLIENABLESAWPROBE, 0, sMachIniFile) <> 0)
m_nProdLiSawProbe = GetPrivateProfileInt(S_PRODUCTIONLINE, K_PRODLIENABLESAWPROBE, 0, sMachIniFile)
GetPrivateProfileString(S_PRODUCTIONLINE, K_PRODLIPROBINGSTATEVAR, "", m_sProdLiProbingStateVar, sMachIniFile)
GetPrivateProfileString(S_PRODUCTIONLINE, K_PRODLIPROBINGTCPOSVAR, "", m_sProdLiProbingTcPosVar, sMachIniFile)
GetPrivateProfileString(S_PRODUCTIONLINE, K_PRODLIPROBINGTCPOSVAR, "0", m_sProdLiProbingTcPosVar, sMachIniFile)
GetPrivateProfileString(S_PRODUCTIONLINE, K_PRODLISAWDIAMETERVAR, "", m_sProdLiSawDiameterVar, sMachIniFile)
GetPrivateProfileString(S_PRODUCTIONLINE, K_PRODLIPROBINGSTATE2VAR, "", m_sProdLiProbingState2Var, sMachIniFile)
GetPrivateProfileString(S_PRODUCTIONLINE, K_PRODLIPROBINGTCPOS2VAR, "0", m_sProdLiProbingTcPos2Var, sMachIniFile)
GetPrivateProfileString(S_PRODUCTIONLINE, K_PRODLISAWDIAMETER2VAR, "", m_sProdLiSawDiameter2Var, sMachIniFile)
' Leggo configurazione degli utensili in macchina
m_MountedToolConfig = GetPrivateProfileInt(S_TOOLS, K_MOUNTEDTOOLCONFIG, 0, sMachIniFile)
+30 -30
View File
@@ -313,163 +313,163 @@ Module M_MMFiles
'----------------------------------------------------------------------------------------------------------
'
Function ActivateProgram(ByVal sz_part_program As String) As Short
EgtOutLog("ActivateProgram start dell'm_mmFiles")
'EgtOutLog("ActivateProgram start dell'm_mmFiles")
SiemensSend.n_Command = CMD.CMD_ActivateProgram
SiemensSend.sz_string = sz_part_program
execute_command()
EgtOutLog("ActivateProgram end dell'm_mmFiles")
'EgtOutLog("ActivateProgram end dell'm_mmFiles")
Return SiemensRet.n_result
End Function
Function Delete_NC_prog(ByVal sz_filename As String) As Short
EgtOutLog("Delete_NC_prog start dell'm_mmFiles")
'EgtOutLog("Delete_NC_prog start dell'm_mmFiles")
SiemensSend.n_Command = CMD.CMD_Delete_NC_prog
SiemensSend.sz_string = sz_filename
execute_command()
EgtOutLog("Delete_NC_prog end dell'm_mmFiles")
'EgtOutLog("Delete_NC_prog end dell'm_mmFiles")
Return SiemensRet.n_result
End Function
Function CycleStart() As Short
EgtOutLog("CycleStart start dell'm_mmFiles")
'EgtOutLog("CycleStart start dell'm_mmFiles")
SiemensSend.n_Command = CMD.CMD_CycleStart
execute_command()
EgtOutLog("CycleStart end dell'm_mmFiles")
'EgtOutLog("CycleStart end dell'm_mmFiles")
Return SiemensRet.n_result
End Function
Function FeedHold() As Short
EgtOutLog("FeedHold start dell'm_mmFiles")
'EgtOutLog("FeedHold start dell'm_mmFiles")
SiemensSend.n_Command = CMD.CMD_FeedHold
execute_command()
EgtOutLog("FeedHold end dell'm_mmFiles")
'EgtOutLog("FeedHold end dell'm_mmFiles")
Return SiemensRet.n_result
End Function
Function Reset() As Short
EgtOutLog("Reset start dell'm_mmFiles")
'EgtOutLog("Reset start dell'm_mmFiles")
SiemensSend.n_Command = CMD.CMD_Reset
execute_command()
EgtOutLog("Reset end dell'm_mmFiles")
'EgtOutLog("Reset end dell'm_mmFiles")
Return SiemensRet.n_result
End Function
Function WriteCncMode(ByVal nmode As Short) As Short
EgtOutLog("WriteCncMode start dell'm_mmFiles")
'EgtOutLog("WriteCncMode start dell'm_mmFiles")
SiemensSend.n_Command = CMD.CMD_WriteCncMode
SiemensSend.n_param1 = nmode
execute_command()
EgtOutLog("WriteCncMode end dell'm_mmFiles")
'EgtOutLog("WriteCncMode end dell'm_mmFiles")
Return SiemensRet.n_result
End Function
Function Download_NC_prog(ByVal sz_Pc_file_name As String, ByVal sz_NC_filen As String) As Short
EgtOutLog("Download_NC_prog start dell'm_mmFiles")
'EgtOutLog("Download_NC_prog start dell'm_mmFiles")
SiemensSend.n_Command = CMD.CMD_Download_NC_prog
SiemensSend.sz_string = sz_Pc_file_name
SiemensSend.sz_string_2 = sz_NC_filen
execute_command()
EgtOutLog("Download_NC_prog end dell'm_mmFiles")
'EgtOutLog("Download_NC_prog end dell'm_mmFiles")
Return SiemensRet.n_result
End Function
Function SetProgramExt(sz_ProgExt As String) As Short
EgtOutLog("SetProgramExt start dell'm_mmFiles")
'EgtOutLog("SetProgramExt start dell'm_mmFiles")
SiemensSend.n_Command = CMD.CMD_SetProgramExt
SiemensSend.sz_string = sz_ProgExt
execute_command()
EgtOutLog("SetProgramExt end dell'm_mmFiles")
'EgtOutLog("SetProgramExt end dell'm_mmFiles")
Return SiemensRet.n_result
End Function
Function DPOsition_ReadOnce() As Short
EgtOutLog("DPOsition_ReadOnce single dell'm_mmFiles")
'EgtOutLog("DPOsition_ReadOnce single dell'm_mmFiles")
Return 1
End Function
Function MDI_command(sz_command As String) As Short
EgtOutLog("MDI_command start dell'm_mmFiles")
'EgtOutLog("MDI_command start dell'm_mmFiles")
SiemensSend.n_Command = CMD.CMD_MDI_command
SiemensSend.sz_string = sz_command
execute_command()
EgtOutLog("MDI_command end dell'm_mmFiles")
'EgtOutLog("MDI_command end dell'm_mmFiles")
Return SiemensRet.n_result
End Function
Sub set_OP_OM(ByVal n As Short)
EgtOutLog("set_OP_OM start dell'm_mmFiles")
'EgtOutLog("set_OP_OM start dell'm_mmFiles")
SiemensSend.n_Command = CMD.CMD_set_OP_OM
SiemensSend.n_param1 = n
execute_command()
EgtOutLog("set_OP_OM end dell'm_mmFiles")
'EgtOutLog("set_OP_OM end dell'm_mmFiles")
End Sub
Function read_active_mode() As Int16
EgtOutLog("read_active_mode start dell'm_mmFiles")
'EgtOutLog("read_active_mode start dell'm_mmFiles")
SiemensSend.n_Command = CMD.CMD_read_active_mode
execute_command()
EgtOutLog("read_active_mode end dell'm_mmFiles")
'EgtOutLog("read_active_mode end dell'm_mmFiles")
Return SiemensRet.n_result
End Function
Function Is_G24_active() As Boolean
EgtOutLog("Is_G24_active single dell'm_mmFiles")
'EgtOutLog("Is_G24_active single dell'm_mmFiles")
Return False
End Function
Function Is_G71_active() As Boolean
EgtOutLog("Is_G71_active single dell'm_mmFiles")
'EgtOutLog("Is_G71_active single dell'm_mmFiles")
Return False
End Function
Function Read_Nc_var(n_var As Short) As Short
EgtOutLog("Read_Nc_var start dell'm_mmFiles")
'EgtOutLog("Read_Nc_var start dell'm_mmFiles")
SiemensSend.n_Command = CMD.CMD_Read_Nc_var
SiemensSend.n_param1 = n_var
execute_command()
m_MainWindow.m_CNCommunication.m_CN.d_DReadELS_value = SiemensRet.d_param1
EgtOutLog("Read_Nc_var end dell'm_mmFiles")
'EgtOutLog("Read_Nc_var end dell'm_mmFiles")
Return SiemensRet.n_result
End Function
Function Write_Nc_var(n_var As Short, n_value As Short) As Short
EgtOutLog("Write_Nc_var start dell'm_mmFiles")
'EgtOutLog("Write_Nc_var start dell'm_mmFiles")
SiemensSend.n_Command = CMD.CMD_Write_Nc_var
SiemensSend.n_param1 = n_var
SiemensSend.n_param2 = n_value
execute_command()
EgtOutLog("Write_Nc_var end dell'm_mmFiles")
'EgtOutLog("Write_Nc_var end dell'm_mmFiles")
Return SiemensRet.n_result
End Function
@@ -524,7 +524,7 @@ Module M_MMFiles
End While
EgtOutLog("Eseguito comando :" & SiemensSend.n_Command.ToString())
'EgtOutLog("Eseguito comando :" & SiemensSend.n_Command.ToString())
Catch ex As Exception
EgtOutLog("Errore nell'esecuzione di un comando :" & ex.ToString())
+49 -33
View File
@@ -1024,13 +1024,16 @@ Class MainWindow
' OnProdLine
Private Sub OnProdLine()
' Se richiesto aggiornamento diametro lama
If m_CurrentMachine.bProdLiSawProbe Then
SawProbing()
End If
If m_CurrentMachine.nProdLiSawProbe >= 1 Then SawProbing(1)
If m_CurrentMachine.nProdLiSawProbe >= 2 Then SawProbing(2)
' Se OmagVIEW non previsto, esco
If String.IsNullOrWhiteSpace(m_CurrentMachine.sLineDataDir) OrElse
Not My.Computer.FileSystem.DirectoryExists(m_CurrentMachine.sLineDataDir) Then Return
' Se OmagVIEW blocca, esco (riproverò al prossimo giro)
Dim sLockFile As String = m_CurrentMachine.sLineDataDir & "\" & CURR_PROJ_LOCK
Dim sNewFile As String = m_CurrentMachine.sLineDataDir & "\" & CURR_PROJ_NEW
If My.Computer.FileSystem.FileExists(sLockFile) OrElse My.Computer.FileSystem.FileExists(sNewFile) Then Return
If My.Computer.FileSystem.FileExists(sLockFile) OrElse
My.Computer.FileSystem.FileExists(sNewFile) Then Return
' Verifico se richiesto cambio di progetto
Dim nProjInd As Integer = 0
Dim nMove As Integer = 0
@@ -1115,13 +1118,13 @@ Class MainWindow
End If
End Sub
Private Function SawProbing() As Boolean
Private Function SawProbing(nI As Integer) As Boolean
' Leggo da variabile CN se tastatura effettuata
m_CNCommunication.m_CN.n_DReadELS_handle = 0
m_CNCommunication.m_CN.ReadEls_Add_Parameter(m_CurrentMachine.sProdLiProbingStateVar, 1)
m_CNCommunication.m_CN.ReadEls_Add_Parameter(m_CurrentMachine.sProdLiProbingStateVar(nI), 1)
Dim nProbingState As Integer = 0
For I = 1 To 10
System.Threading.Thread.Sleep(50)
For I = 1 To 5
System.Threading.Thread.Sleep(20)
If m_CNCommunication.m_CN.n_DReadELS_handle = 1 Then
nProbingState = CInt(m_CNCommunication.m_CN.d_DReadELS_value)
Exit For
@@ -1129,23 +1132,27 @@ Class MainWindow
Next
If nProbingState <> 1 Then Return False
' Leggo da variabile CN posizione lama in TC
m_CNCommunication.m_CN.n_DReadELS_handle = 0
m_CNCommunication.m_CN.ReadEls_Add_Parameter(m_CurrentMachine.sProdLiProbingTcPosVar, 1)
Dim nTcPos As Integer = 0
For I = 1 To 10
System.Threading.Thread.Sleep(50)
If m_CNCommunication.m_CN.n_DReadELS_handle = 1 Then
nTcPos = CInt(m_CNCommunication.m_CN.d_DReadELS_value)
Exit For
End If
Next
If m_CurrentMachine.sProdLiProbingTcPosVar(nI) <> "0" Then
m_CNCommunication.m_CN.n_DReadELS_handle = 0
m_CNCommunication.m_CN.ReadEls_Add_Parameter(m_CurrentMachine.sProdLiProbingTcPosVar(nI), 1)
For I = 1 To 5
System.Threading.Thread.Sleep(20)
If m_CNCommunication.m_CN.n_DReadELS_handle = 1 Then
nTcPos = CInt(m_CNCommunication.m_CN.d_DReadELS_value)
Exit For
End If
Next
Else
nTcPos = 100
End If
If nTcPos = 0 Then Return False
' Leggo da variabile CN nuovo diametro lama
m_CNCommunication.m_CN.n_DReadELS_handle = 0
m_CNCommunication.m_CN.ReadEls_Add_Parameter(m_CurrentMachine.sProdLiSawDiameterVar, 1)
m_CNCommunication.m_CN.ReadEls_Add_Parameter(m_CurrentMachine.sProdLiSawDiameterVar(nI), 1)
Dim dDiam As Double = 0
For I = 1 To 10
System.Threading.Thread.Sleep(50)
For I = 1 To 5
System.Threading.Thread.Sleep(20)
If m_CNCommunication.m_CN.n_DReadELS_handle = 1 Then
dDiam = m_CNCommunication.m_CN.d_DReadELS_value
Exit For
@@ -1159,22 +1166,31 @@ Class MainWindow
dDiam *= ONEMM / 1000
End If
' Reset variabile CN di tastatura effettuata
m_CNCommunication.m_CN.DVariables_WriteVariables2(m_CurrentMachine.sProdLiProbingStateVar, "0")
m_CNCommunication.m_CN.DVariables_WriteVariables2(m_CurrentMachine.sProdLiProbingStateVar(nI), "0")
' Aggiorno diametro lama
Dim bFound As Boolean = False
Dim sTcPos As String = "T" & nTcPos.ToString()
Dim sToolName As String = String.Empty
Dim nType As Integer = MCH_TY.NONE
Dim bNext As Boolean = EgtTdbGetFirstTool(MCH_TF.SAWBLADE, sToolName, nType)
While bNext
EgtTdbSetCurrTool(sToolName)
Dim sToolTcPos As String = ""
If EgtTdbGetCurrToolParam(MCH_TP.TCPOS, sToolTcPos) AndAlso sTcPos = sToolTcPos Then
bFound = True
Exit While
If nTcPos <> 100 Then
Dim sTcPos As String = "T" & nTcPos.ToString()
Dim sToolName As String = String.Empty
Dim nType As Integer = MCH_TY.NONE
Dim bNext As Boolean = EgtTdbGetFirstTool(MCH_TF.SAWBLADE, sToolName, nType)
While bNext
EgtTdbSetCurrTool(sToolName)
Dim sToolTcPos As String = ""
If EgtTdbGetCurrToolParam(MCH_TP.TCPOS, sToolTcPos) AndAlso sTcPos = sToolTcPos Then
bFound = True
Exit While
End If
bNext = EgtTdbGetNextTool(MCH_TF.SAWBLADE, sToolName, nType)
End While
Else
Dim sToolName As String = m_CurrentMachine.sCurrSaw
If nI = 2 Then
sToolName &= "-2"
End If
bNext = EgtTdbGetNextTool(MCH_TF.SAWBLADE, sToolName, nType)
End While
EgtTdbSetCurrTool(sToolName)
bFound = True
End If
If Not bFound Then Return False
EgtTdbSetCurrToolParam(MCH_TP.DIAM, dDiam)
EgtTdbSetCurrToolParam(MCH_TP.TOTDIAM, dDiam)
+5 -1
View File
@@ -31,6 +31,8 @@ Public Class NestPageUC
Private m_bMaximizeMove As Boolean = False
Private m_dAngStep As Double = 0
Private m_bReducedCut As Boolean = False
' Dati per tolleranza spessore Trf
Private m_dTrfThickTolerance As Double = 0
' Dati movimento registrazione grezzo
Private m_dRegStep As Double = 0
Private m_dRegAngStep As Double = 0
@@ -80,6 +82,8 @@ Public Class NestPageUC
m_nRestRadius = GetPrivateProfileInt(S_NEST, K_RESTRADIUS, 3, m_MainWindow.GetIniFile())
m_dSnapDist = GetPrivateProfileDouble(S_NEST, K_SNAPDIST, 50, m_MainWindow.GetIniFile())
m_bReducedCut = (GetPrivateProfileInt(S_MACH_NEST, K_MACH_REDUCEDCUT, 0, m_MainWindow.GetMachIniFile()) <> 0)
' Carico parametro tolleranza spessore per Trf
m_dTrfThickTolerance = Math.Max(GetPrivateProfileDouble(S_NEST, K_TRFTHICKTOLERANCE, 2, m_MainWindow.GetIniFile()), EPS_SMALL)
' carico i parametri di registrazione grezzo
m_dRegStep = GetPrivateProfileDouble(S_REG, K_REGSTEP, 10, m_MainWindow.GetIniFile())
m_dRegAngStep = GetPrivateProfileDouble(S_REG, K_REGANGSTEP, 1, m_MainWindow.GetIniFile())
@@ -777,7 +781,7 @@ Public Class NestPageUC
' Recupero e verifico lo spessore del pezzo
Dim dTh As Double = 0
EgtGetInfo(nId, "T", dTh)
If Math.Abs(dTh - m_b3Raw.DimZ()) > EPS_SMALL Then Return False
If Math.Abs(dTh - m_b3Raw.DimZ()) > m_dTrfThickTolerance Then Return False
' Recupero il materiale e la finitura superficiale del pezzo
Dim sMat As String = ""
EgtGetInfo(nId, "MT", sMat)