From fc2608def71fccb7426f930a17922ad52247b5b6 Mon Sep 17 00:00:00 2001 From: "andrea.villa" Date: Thu, 18 Dec 2025 12:33:32 +0100 Subject: [PATCH] - Allineamento a common ver. 2.7l1 - Aggiunto parametro MAX_ANGLE_DRILL_CUT a BeamData - Recupero nome macchina da funzione EGT --- Beam/BeamData.lua | 2 ++ Common_PF1250.TPA.mlpe | 20 ++++++++++++++++-- Common_PF1250.mlpe | 10 ++++++++- Common_PF1250.mlse | 42 +++++++++++++++++++++++++++++++++---- Essetre-PF1500MAXrl-3T.mlde | 6 +++--- UpdateLog.txt | 5 +++++ Version.lua | 2 +- 7 files changed, 76 insertions(+), 11 deletions(-) diff --git a/Beam/BeamData.lua b/Beam/BeamData.lua index 0259405..69cea10 100644 --- a/Beam/BeamData.lua +++ b/Beam/BeamData.lua @@ -42,6 +42,7 @@ local BeamData = { DRILL_TOL = 0.2, -- tolleranza tra diametro foro e diametro punta DRILL_VZ_MIN = - 0.51, -- componente limite in Z del versore di un foro DRILL_VX_MAX = 0.867, -- componente limite in X del versore di un foro sulle facce laterali + MAX_ANGLE_DRILL_CUT = 15, -- delta angolo massimo tra foro e taglio che lo attraversa DRILL_OVERLAP = 5, -- sovrapposizione tra due mezze forature MILL_OVERLAP = 5, -- sovrapposizione tra due mezze fresature MAX_DIST_HTFEA = 50.0, -- massima distanza di feature da testa o coda per essere considerata tale @@ -113,6 +114,7 @@ if EgtExistsFile( sDataBeam) then BeamData.ADVANCE_TAIL_OFFS = Machine.Offsets.ADVANCE_TAIL_OFFS or BeamData.ADVANCE_TAIL_OFFS BeamData.LEN_VERY_SHORT_PART = Machine.Offsets.LEN_VERY_SHORT_PART or BeamData.LEN_VERY_SHORT_PART BeamData.LEN_SHORT_PART = Machine.Offsets.LEN_SHORT_PART or BeamData.LEN_SHORT_PART + BeamData.MAX_ANGLE_DRILL_CUT = Machine.Offsets.MAX_ANGLE_DRILL_CUT or BeamData.MAX_ANGLE_DRILL_CUT BeamData.OVM_MID = Machine.Offsets.OVM_MID or BeamData.OVM_MID if Machine.Offsets.CUT_SIC then BeamData.CUT_SIC = EgtClamp( Machine.Offsets.CUT_SIC, 15, 50) end end diff --git a/Common_PF1250.TPA.mlpe b/Common_PF1250.TPA.mlpe index a35aeca..c10318c 100644 --- a/Common_PF1250.TPA.mlpe +++ b/Common_PF1250.TPA.mlpe @@ -770,7 +770,15 @@ function OnRapid() EmitMoveDataHead( 1, { B=0, S=Speed}) EmitMoveDataHead( 1, { C=EMT.R1, S=Speed}) EmitMoveDataHead( 1, { X=EMT.L2, S=Speed}) - EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed}) + -- se movimento di B > di 90°, spezza il movimento in 2 arrivando alla quota Z con B+-90 e poi muove l'ultimo segmento + -- evita collisione con carro X + if EMT.R2 > 91 or EMT.R2 < -91 then + local dBref = EgtClamp( EMT.R2, -91, 91) + EmitMoveDataHead( 1, { Z=EMT.L3, B=dBref, S=Speed}) + EmitMoveDataHead( 1, { B=EMT.R2, S=Speed}) + else + EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed}) + end -- caso standard else -- se bisogna scrivere tutti gli assi @@ -1084,7 +1092,15 @@ function OnRapid() EmitMoveDataHead( 1, { Z=MyMaxZ1, B=0, S=Speed}) EmitMoveDataHead( 1, { C=EMT.R1, S=Speed}) EmitMoveDataHead( 1, { X=EMT.L2, S=Speed}) - EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed}) + -- se movimento di B > di 90°, spezza il movimento in 2 arrivando alla quota Z con B+-90 e poi muove l'ultimo segmento + -- evita collisione con carro X + if EMT.R2 > 91 or EMT.R2 < -91 then + local dBref = EgtClamp( EMT.R2, -91, 91) + EmitMoveDataHead( 1, { Z=EMT.L3, B=dBref, S=Speed}) + EmitMoveDataHead( 1, { B=EMT.R2, S=Speed}) + else + EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed}) + end -- caso standard else -- se ero in posizione speciale, prima ruoto poi scendo diff --git a/Common_PF1250.mlpe b/Common_PF1250.mlpe index 5a360b4..ee87a06 100644 --- a/Common_PF1250.mlpe +++ b/Common_PF1250.mlpe @@ -1068,7 +1068,15 @@ function OnSimulMoveStart() SimulMoveAxes( 'Z1', MyMaxZ1, MCH_SIM_STEP.RAPID, 'B1', 0, MCH_SIM_STEP.COLLROT) SimulMoveAxis( 'C1', EMT.R1, MCH_SIM_STEP.COLLROT) SimulMoveAxis( 'X1', EMT.L2, MCH_SIM_STEP.RAPID) - SimulMoveAxes( 'Z1', EMT.L3, MCH_SIM_STEP.RAPID, 'B1', EMT.R2, MCH_SIM_STEP.COLLROT) + -- se movimento di B > di 90°, spezza il movimento in 2 arrivando alla quota Z con B+-90 e poi muove l'ultimo segmento + -- evita collisione con carro X + if EMT.R2 > 91 or EMT.R2 < -91 then + local dBref = EgtClamp( EMT.R2, -91, 91) + SimulMoveAxes( 'Z1', EMT.L3, MCH_SIM_STEP.RAPID, 'B1', dBref, MCH_SIM_STEP.COLLROT) + SimulMoveAxis( 'B1', EMT.R2, MCH_SIM_STEP.COLLROT) + else + SimulMoveAxes( 'Z1', EMT.L3, MCH_SIM_STEP.RAPID, 'B1', EMT.R2, MCH_SIM_STEP.COLLROT) + end -- caso standard else -- se bisogna scrivere tutti gli assi diff --git a/Common_PF1250.mlse b/Common_PF1250.mlse index 3c79c71..c042c51 100644 --- a/Common_PF1250.mlse +++ b/Common_PF1250.mlse @@ -17,6 +17,33 @@ require( 'EmtGenMachining') --------------------------------------------------------------------- ----------------------------------------------------------------------------------------- function OnSpecialGetPrevMachiningOffset() + -- Aggiorno posizione della testa della trave a seguito di movimenti delle pinze non previsti tra le fasi + local function TPosUpdate() + local nClId = EgtGetFirstNameInGroup( EMC.CURRMCHID, 'CL') -- recupero Id del gruppo CL della lavorazione corrente + local nPathId = EgtGetFirstInGroup( nClId or GDB_ID.NULL) -- Id del primo gruppo nella lavorazione (P1) + if not nPathId then + EMC.ERR = 12 + EMC.MSG = ' Error : CL group path not found' + return + end + local dAuxMoveCount = EgtGetInfo( nPathId, 'AS#', 'd') or 0 -- numero di movimenti ausiliari + local dTRepos = nil + -- controlla ogni gruppo di movimenti ausiliari + for i = 1, dAuxMoveCount do + local aAuxMove = EgtGetInfo( nPathId, 'AS' .. tostring( i), 'vs') or {} -- array contenete i parametri di ogni gruppo + -- controlla solo i movimenti della testa trave e salva l'ultimo + if aAuxMove[1] == '2' or aAuxMove[1] == '3' then + for j = 2, #aAuxMove do + if aAuxMove[j] == 'T' then + dTRepos = aAuxMove[j+1] + break + end + end + end + end + return dTRepos + end + -- default EMC.ERR = 0 EMC.PREVOFFSX = 0 @@ -26,8 +53,15 @@ function OnSpecialGetPrevMachiningOffset() if IsStartOrRestPhase( EMC.CURRPHASE) then -- recupero la posizione finale della lavorazione precedente local vPrevAx = EmtGetFinalAxesPos( EMC.PREVMCHID) - -- la X (L1) di questa corrisponde alla posizione iniziale della nuova trave, se ne deduce l'offset - EMC.PREVOFFSX = ParkV1 - vPrevAx[1] + -- ricava se e quanto la trave viene spostata tra le due fasi dai movimenti ausiliari e corregge l'offset di fine fase + local dNewTPos = TPosUpdate() + -- se ci sono dei movimenti della testa trave tra le due fasi ricava il delta tra la vecchia e la nuova posizione + if dNewTPos then + EMC.PREVOFFSX = dNewTPos - vPrevAx[1] + -- oppure la X (L1) di questa corrisponde alla posizione iniziale della nuova trave, se ne deduce l'offset + else + EMC.PREVOFFSX = ParkV1 - vPrevAx[1] + end end end end @@ -113,7 +147,7 @@ function OnSpecialGetMaxZ() local vMZ = {{ Tz=0.85, Ez=440}, { Tz=0.5, Ez=200}, { Tz=-0.01, Ez=5}, { Tz=-0.5, Ez=1}} EMC.MAXZ = ParkZ1 + CalcExtraZ( vtTpZm, vtT, vMZ) else - local vMZ = {{ Tz=0.85, Ez=400}, { Tz=0.7, Ez=300}, { Tz=0.5, Ez=195}, { Tz=0.15, Ez=70}, { Tz=-0.01, Ez=5}, { Tz=-0.5, Ez=1}} + local vMZ = {{ Tz=0.85, Ez=400}, { Tz=0.7, Ez=300}, { Tz=0.5, Ez=195}, { Tz=0.15, Ez=60}, { Tz=-0.01, Ez=5}, { Tz=-0.5, Ez=1}} EMC.MAXZ = ParkZ1 + CalcExtraZ( vtTpZm, vtT, vMZ) end elseif EMC.HEAD == 'H16' then @@ -133,7 +167,7 @@ function OnSpecialGetMaxZ() local vMZ = {{ Tz=0.85, Ez=440}, { Tz=0.5, Ez=200}, { Tz=-0.01, Ez=5}, { Tz=-0.5, Ez=1}} EMC.MAXZ = ParkZ1 + CalcExtraZ( vtTpZm, vtT, vMZ) else - local vMZ = {{ Tz=0.85, Ez=400}, { Tz=0.7, Ez=300}, { Tz=0.5, Ez=195}, { Tz=0.15, Ez=70}, { Tz=-0.01, Ez=5}, { Tz=-0.5, Ez=1}} + local vMZ = {{ Tz=0.85, Ez=400}, { Tz=0.7, Ez=300}, { Tz=0.5, Ez=195}, { Tz=0.15, Ez=60}, { Tz=-0.01, Ez=5}, { Tz=-0.5, Ez=1}} EMC.MAXZ = ParkZ1 + CalcExtraZ( vtTpZm, vtT, vMZ) end elseif EMC.HEAD == 'H21' then diff --git a/Essetre-PF1500MAXrl-3T.mlde b/Essetre-PF1500MAXrl-3T.mlde index ce9e3da..5af27b3 100644 --- a/Essetre-PF1500MAXrl-3T.mlde +++ b/Essetre-PF1500MAXrl-3T.mlde @@ -5,10 +5,10 @@ require( 'EmtGenerator') EgtEnableDebug( false) -PP_VER = '2.7l1' -PP_NVER = '2.7.12.1' +PP_VER = '2.7l2' +PP_NVER = '2.7.12.2' MIN_MACH_VER = '2.7d2' -MACH_NAME = string.match( EgtGetCurrMachineDir(), "[^\\]+$") -- si ricava il nome della macchina dal direttorio +MACH_NAME = EgtGetCurrMachineName() -- Carico i dati globali local sMachDir = EgtGetCurrMachineDir() diff --git a/UpdateLog.txt b/UpdateLog.txt index cf75361..9a6f843 100644 --- a/UpdateLog.txt +++ b/UpdateLog.txt @@ -1,5 +1,10 @@ ==== Common_PF1250 Update Log ==== +Versione 2.7l1 (18/12/2025) +- (SIM-GEN) Aggiunto controllo post movimenti ausiliari dell' EMC.PREVOFFSX nella funzione OnSpecialGetPrevMachiningOffset() come su ONE-PF. Ticket#2727 +- (SIM-GEN) Cambiato delta di correzione Z per lama con inclinazione >= 81° da 70 a 60 mm. Risoluzione Ticket#2210 +- (SIM-GEN) Divisione movimento B in approccio se > 90°. + Versione 2.7k5 (26/11/2025) - (SIM) Migliorata funzione CheckClamping, ora il controllo di warning si basa sulla somma delle lunghezze delle aree pinzate diff --git a/Version.lua b/Version.lua index c61db11..8f0edbd 100644 --- a/Version.lua +++ b/Version.lua @@ -3,7 +3,7 @@ local InfoCommon_STD_PP = { NAME = 'Common_PF1250', -- nome script PP standard - VERSION = '2.7k5', -- versione script + VERSION = '2.7l1', -- versione script MIN_MACH_VER_PP_COMMON = '2.7k1' -- versione minima kernel }