From 22c7cc33ad4dfcb0839fabd2a2c803bf5bcb633f Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Thu, 13 Dec 2018 09:10:39 +0000 Subject: [PATCH] OmagCUT : - gestione tolleranza spessore pezzi da TRF per inserimento in lastra - gestione tastatura seconda lama per linea di produzione. --- ConstIni.vb | 1 + ConstMachIni.vb | 3 ++ CurrentMachine.vb | 46 +++++++++++++++++++------- M_MMFiles.vb | 60 ++++++++++++++++----------------- MainWindow.xaml.vb | 82 +++++++++++++++++++++++++++------------------- NestPageUC.xaml.vb | 6 +++- 6 files changed, 123 insertions(+), 75 deletions(-) diff --git a/ConstIni.vb b/ConstIni.vb index c7c42ff..b8aa052 100644 --- a/ConstIni.vb +++ b/ConstIni.vb @@ -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" diff --git a/ConstMachIni.vb b/ConstMachIni.vb index 0a29996..2f9b379 100644 --- a/ConstMachIni.vb +++ b/ConstMachIni.vb @@ -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" diff --git a/CurrentMachine.vb b/CurrentMachine.vb index 1797042..2868b1e 100644 --- a/CurrentMachine.vb +++ b/CurrentMachine.vb @@ -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) diff --git a/M_MMFiles.vb b/M_MMFiles.vb index beb2316..79d2f08 100644 --- a/M_MMFiles.vb +++ b/M_MMFiles.vb @@ -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()) diff --git a/MainWindow.xaml.vb b/MainWindow.xaml.vb index 34a6402..3ce09ae 100644 --- a/MainWindow.xaml.vb +++ b/MainWindow.xaml.vb @@ -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) diff --git a/NestPageUC.xaml.vb b/NestPageUC.xaml.vb index a9c0a77..984b4a7 100644 --- a/NestPageUC.xaml.vb +++ b/NestPageUC.xaml.vb @@ -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)