diff --git a/Common_FAST.NUM.mlpe b/Common_FAST.NUM.mlpe index ba68031..7dc99a7 100644 --- a/Common_FAST.NUM.mlpe +++ b/Common_FAST.NUM.mlpe @@ -866,13 +866,13 @@ function OnRapid() local sER = ' ER' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TDIAM / 2, EMT.TLEN), 3) local sET = GetET( EMT.HEAD, EMT.TCPOS, EMT.R3) local sES = ' ES'..EgtNumToString( EMT.S, 0) - local sOut = 'G101' .. EmtGetAxis( 'L2') .. EmtGetAxis( 'L3') ..' B=' .. EgtNumToString( dBAxis, 3) .. - ' C=' .. EgtNumToString( dCAxis, 3) .. sEE .. sEL .. sER .. sET .. sES + local sOut = 'G101' .. EmtGetAxis( 'L2') .. EmtGetAxis( 'L3') ..' B' .. EgtNumToString( dBAxis, 3) .. + ' C' .. EgtNumToString( dCAxis, 3) .. sEE .. sEL .. sER .. sET .. sES EmtOutput( sOut) EmtOutput( 'G101 ET1001') EmtOutput( 'G101 ET2001') - sOut = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. EmtGetAxis( 'L3') ..' B=' .. EgtNumToString( dBAxis, 3) .. - ' C=' .. EgtNumToString( dCAxis, 3) .. sEE .. sEL .. sER .. sET .. sES + sOut = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. EmtGetAxis( 'L3') ..' B' .. EgtNumToString( dBAxis, 3) .. + ' C' .. EgtNumToString( dCAxis, 3) .. sEE .. sEL .. sER .. sET .. sES EmtOutput( sOut) EmtOutput( 'G101 ET1001') EmtOutput( 'G101 ET2001') diff --git a/Common_FAST.NUM_PLUS.mlpe b/Common_FAST.NUM_PLUS.mlpe index 6074687..e7b664c 100644 --- a/Common_FAST.NUM_PLUS.mlpe +++ b/Common_FAST.NUM_PLUS.mlpe @@ -948,13 +948,13 @@ function OnRapid() local sER = ' ER' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TDIAM / 2, EMT.TLEN), 3) local sET = GetET( EMT.HEAD, EMT.TCPOS, EMT.R3) local sES = ' ES'..EgtNumToString( EMT.S, 0) - local sOut = 'G101' .. EmtGetAxis( 'L2') .. EmtGetAxis( 'L3') ..' B=' .. EgtNumToString( dBAxis, 3) .. - ' C=' .. EgtNumToString( dCAxis, 3) .. sEE .. sEL .. sER .. sET .. sES + local sOut = 'G101' .. EmtGetAxis( 'L2') .. EmtGetAxis( 'L3') ..' B' .. EgtNumToString( dBAxis, 3) .. + ' C' .. EgtNumToString( dCAxis, 3) .. sEE .. sEL .. sER .. sET .. sES EmtOutput( sOut) EmtOutput( 'G101 ET1001') EmtOutput( 'G101 ET2001') - sOut = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. EmtGetAxis( 'L3') ..' B=' .. EgtNumToString( dBAxis, 3) .. - ' C=' .. EgtNumToString( dCAxis, 3) .. sEE .. sEL .. sER .. sET .. sES + sOut = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. EmtGetAxis( 'L3') ..' B' .. EgtNumToString( dBAxis, 3) .. + ' C' .. EgtNumToString( dCAxis, 3) .. sEE .. sEL .. sER .. sET .. sES EmtOutput( sOut) EmtOutput( 'G101 ET1001') EmtOutput( 'G101 ET2001') diff --git a/Common_FAST.mlpe b/Common_FAST.mlpe index bb5e1b8..944a857 100644 --- a/Common_FAST.mlpe +++ b/Common_FAST.mlpe @@ -79,6 +79,14 @@ function OnSimulStart() for j = 1, #( vTools or {}) do if vTools[j] ~= '' then EgtLoadTool( vTcPos[i], j, vTools[j]) + -- Aggiunto controllo lunghezza lama minima * 0.9 per ricavare la tolleranza del VMILL + if EgtTdbSetCurrTool(vTools[j]) then -- set utensile corrente + if EgtTdbGetCurrToolParam( MCH_TP.TYPE) == MCH_TY.SAW_STD or EgtTdbGetCurrToolParam( MCH_TP.TYPE) == MCH_TY.SAW_FLAT then -- controllo tipo utensile sega + local dCurrSawLen = EgtTdbGetCurrToolParam( MCH_TP.LEN) * 0.9 + -- se non definito o minore del valore precedente aggiorna la tolleranza + EMT.VMILLTOL = EgtIf( not EMT.VMILLTOL or dCurrSawLen < EMT.VMILLTOL, dCurrSawLen, EMT.VMILLTOL) + end + end end end ShowToolInTcPos( vTcPos[i], true) @@ -213,7 +221,7 @@ function OnSimulDispositionStart() -- determino la risoluzione dello Zmap local dTol = 4.71 if EmtGetVMillStep then - dTol = EmtGetVMillStep( b3Raw:getDimX(), b3Raw:getDimY(), b3Raw:getDimZ(), 4.71) + dTol = EmtGetVMillStep( b3Raw:getDimX(), b3Raw:getDimY(), b3Raw:getDimZ(), dTol) else local dArea = b3Raw:getDimX() * b3Raw:getDimY() + b3Raw:getDimX() * b3Raw:getDimZ() + b3Raw:getDimY() * b3Raw:getDimZ() if dArea < 0.075e6 then @@ -230,6 +238,7 @@ function OnSimulDispositionStart() dTol = 3.77 end end + dTol = min( dTol, EMT.VMILLTOL or dTol) -- imposto dTol al valore minore tra quello per volume e quello per spessore lama -- creo lo Zmap local VMillId = EgtVolZmapBox( nPartRawId, b3Raw:getMin(), b3Raw:getDimX(), b3Raw:getDimY(), b3Raw:getDimZ(), dTol, true, GDB_RT.GLOB) if VMillId then @@ -568,12 +577,12 @@ function OnSimulToolDeselect() SimulMoveAxis( 'X', 0, MCH_SIM_STEP.RAPID) -- movimento scarico rinvio elseif EMT.HEAD == 'H5' or EMT.HEAD == 'H6' then - SimulMoveAxes( 'B', 0, MCH_SIM_STEP.COLLROT, 'C', -90, MCH_SIM_STEP.COLLROT) + SimulMoveAxes( 'B', 0, MCH_SIM_STEP.COLLROT, 'C', EgtIf( BD.RIGHT_LOAD, 90, -90), MCH_SIM_STEP.COLLROT) SimulMoveAxis( 'X', 0, MCH_SIM_STEP.RAPID) -- movimento scarico aggregato BlockHaus elseif EMT.HEAD == 'H7' then SimulMoveAxis( 'X', 0, MCH_SIM_STEP.RAPID) - SimulMoveAxes( 'B', 90, MCH_SIM_STEP.COLLROT, 'C', -90, MCH_SIM_STEP.COLLROT) + SimulMoveAxes( 'B', 90, MCH_SIM_STEP.COLLROT, 'C', EgtIf( BD.RIGHT_LOAD, 90, -90), MCH_SIM_STEP.COLLROT) -- movimento scarico punta lunga su T111 elseif EMT.TOTLEN > LONG_TOOL_MINLEN then -- se su cambio utensile T111 @@ -584,9 +593,9 @@ function OnSimulToolDeselect() else SimulMoveAxis( 'X', 0, MCH_SIM_STEP.RAPID) if GetTCSet( EMT.TCPOS) == 1 then - SimulMoveAxes( 'B', 90, MCH_SIM_STEP.COLLROT, 'C', -90, MCH_SIM_STEP.COLLROT) + SimulMoveAxes( 'B', 90, MCH_SIM_STEP.COLLROT, 'C', EgtIf( BD.RIGHT_LOAD, 90, -90), MCH_SIM_STEP.COLLROT) else - SimulMoveAxes( 'B', -90, MCH_SIM_STEP.COLLROT, 'C', -90, MCH_SIM_STEP.COLLROT) + SimulMoveAxes( 'B', -90, MCH_SIM_STEP.COLLROT, 'C', EgtIf( BD.RIGHT_LOAD, 90, -90), MCH_SIM_STEP.COLLROT) end end -- movimento scarico utensile di grosso diametro (su T111) @@ -803,7 +812,8 @@ function OnSimulMoveStart() EMT.MCHFIRST = false local bZmax = ( EMT.TOOL ~= EMT.PREVTOOL or EMT.L3 > -1) -- con pezzi alti aggiorno gli assi rotanti prima di muovermi sopra il pezzo - if not EMT.LOAD and EMT.MOVE == 0 and ( EMT.HEAD == 'H3' or ( EMT.HEAD == 'H1' and EMT.TOTLEN > 350) or bGoToHome) and EMT.FLAG2 == 1 then + if not EMT.LOAD and EMT.MOVE == 0 and ( EMT.HEAD == 'H3' or ( bZmax and EMT.TOTLEN > 200)) and + ( EMT.HT > BeamHeightForFixRot or ( EMT.HEAD == 'H1' and EMT.TOTLEN > 350) or bGoToHome) and EMT.FLAG2 == 1 then -- se motosega mi muovo a X di sicurezza per ruotare, prima si raddrizza B e poi C in posizione if EMT.HEAD == 'H3' or bGoToHome then SimulMoveAxis( 'X', SafeXRotAxes, MCH_SIM_STEP.RAPID) @@ -1211,11 +1221,11 @@ end -- *** ESTIMATION T&L *** --------------------------------------------------------------------- local ESTIMATION_RAPID_COEFF = EstimationRapidMultiplier or 1 -local RAPID_X_FEED = 75000 / ESTIMATION_RAPID_COEFF -- mm/min +local RAPID_X_FEED = 100000 / ESTIMATION_RAPID_COEFF -- mm/min local RAPID_Y_FEED = 100000 / ESTIMATION_RAPID_COEFF -- mm/min -local RAPID_Z_FEED = 50000 / ESTIMATION_RAPID_COEFF -- mm/min -local RAPID_C_FEED = 15000 / ESTIMATION_RAPID_COEFF -- deg/min -local RAPID_B_FEED = 15000 / ESTIMATION_RAPID_COEFF -- deg/min +local RAPID_Z_FEED = 100000 / ESTIMATION_RAPID_COEFF -- mm/min +local RAPID_C_FEED = 12000 / ESTIMATION_RAPID_COEFF -- deg/min +local RAPID_B_FEED = 12000 / ESTIMATION_RAPID_COEFF -- deg/min local RAPID_MIN_T = 0.1 * ESTIMATION_RAPID_COEFF -- s local LOAD_T = 2 * ESTIMATION_RAPID_COEFF -- s local CHAR_ONE_MOVE_T = 1 * ESTIMATION_RAPID_COEFF -- s @@ -1525,15 +1535,15 @@ function OnEstimRapid() EMT.MCHEXTLEN = EMT.MCHEXTLEN + dLen -- calcolo tempo local dTime = RAPID_MIN_T - local dT1 = CalcMoveTime( abs( dL1), RAPID_X_FEED, EMT.SPLIT) + local dT1 = CalcMoveTime( abs( dL1), EMT.FMAXPINZE, EMT.SPLIT) if dT1 > dTime then dTime = dT1 end - local dT2 = CalcMoveTime( abs( dL2), EMT.FMAXPINZE, EMT.SPLIT) + local dT2 = abs( dL2) / ( RAPID_X_FEED / 60) -- CalcMoveTime( abs( dL2), RAPID_X_FEED, EMT.SPLIT) if dT2 > dTime then dTime = dT2 end - local dT3 = CalcMoveTime( abs( dL3), RAPID_Z_FEED, EMT.SPLIT) + local dT3 = abs( dL3) / ( RAPID_Z_FEED * 60) -- CalcMoveTime( abs( dL3), RAPID_Z_FEED, EMT.SPLIT) if dT3 > dTime then dTime = dT3 end - local dT4 = abs( dR1) / RAPID_C_FEED * 60 + local dT4 = abs( dR1) / ( RAPID_C_FEED / 60) if dT4 > dTime then dTime = dT4 end - local dT5 = abs( dR2) / RAPID_B_FEED * 60 + local dT5 = abs( dR2) / ( RAPID_B_FEED / 60) if dT5 > dTime then dTime = dT5 end EMT.MCHEXTTIME = EMT.MCHEXTTIME + dTime EgtOutLog( string.format( ' G0 Len=%.0f Rot=%.0f° Time=%.2f', dLen, abs( dR1) + abs( dR2), dTime), 5) @@ -1551,7 +1561,7 @@ function OnEstimLinear() local dLen = sqrt( dL1 * dL1 + dL2 * dL2 + dL3 * dL3) EMT.MCHCUTLEN = EMT.MCHCUTLEN + dLen -- calcolo tempo - local dTime = CalcMoveTime( dLen, EMT.F, EMT.SPLIT) + local dTime = dLen / ( EMT.F / 60) -- CalcMoveTime( dLen, EMT.F, EMT.SPLIT) EMT.MCHCUTTIME = EMT.MCHCUTTIME + dTime EgtOutLog( string.format( ' G1 Len=%.0f Time=%.2f', dLen, dTime), 5) -- aggiorno valori come precedenti diff --git a/UpdateLog.txt b/UpdateLog.txt index ef8bda6..80ab973 100644 --- a/UpdateLog.txt +++ b/UpdateLog.txt @@ -1,5 +1,12 @@ ==== Common_FAST Update Log ==== +Versione 2.7l1 (10/12/2025) +- (SIM) Aggiornata risoluzione VMillTol in funzione dello spessore lama +- (EST) Modifiche a calcolo stima tempi, da verificare. +- (SIM) Corretto movimento in simulazione che non rispettava movimento generato. +- (GEN) Con controllo NUM/NUM_PLUS nella scrittura della coordinata tolto il simbolo '=' +- (SIM) Aggiunto controllo C in base a carico Dx o Sx durante il cambio utensile + Versione 2.7k1 (10/11/2025) - (GEN) Corretto set variabili info utensile prima del movimento in home in caso di pezzi alti per NUM/NUM_PLUS. diff --git a/Version.lua b/Version.lua index 34dea05..e914a70 100644 --- a/Version.lua +++ b/Version.lua @@ -3,7 +3,7 @@ local InfoCommon_STD_PP = { NAME = 'Common_FAST', -- nome script PP standard - VERSION = '2.7k1', -- versione script + VERSION = '2.7l1', -- versione script MIN_MACH_VER_PP_COMMON = '2.5k1' -- versione minima kernel }