diff --git a/Common_ONE-PF.NUM.mlpe b/Common_ONE-PF.NUM.mlpe index 11b28b5..0e981de 100644 --- a/Common_ONE-PF.NUM.mlpe +++ b/Common_ONE-PF.NUM.mlpe @@ -3380,67 +3380,80 @@ function PreselectNextDiffHead( nMchId, sHead) -- gruppo della testa local nHSet = GetHeadSet( sHead) + + local bVerifyPresel = true + -- se lavorazione con testa 1 e sotto al limite massimo di preselezione della testa 2, allora non si fa preselezione + if nHSet == 1 and Limit_T1_Presel_T2 and EMT.MAXMIN[2] < Limit_T1_Presel_T2 then + bVerifyPresel = false + -- se lavorazione con testa 1 e sopra al limite minimo di preselezione della testa 1, allora non si fa preselezione + elseif nHSet == 2 and Limit_T2_Presel_T1 and EMT.MAXMIN[2] > Limit_T2_Presel_T1 then + bVerifyPresel = false + end + -- flag preselezione eseguita local bPresel = false - -- recupero lavorazione successiva - local nNextMchId = EgtGetNextActiveOperation( nMchId) - while nNextMchId do - if EgtGetOperationType( nNextMchId) ~= MCH_OY.DISP then - if EgtSetCurrMachining( nNextMchId) then - local sNextTool = EgtGetMachiningParam( MCH_MP.TOOL) - if EgtTdbSetCurrTool( sNextTool) then - local sNextHead = EgtTdbGetCurrToolParam( MCH_TP.HEAD) - local nNextHSet = GetHeadSet( sNextHead) - if nNextHSet ~= nHSet then - break + + if bVerifyPresel then + -- recupero lavorazione successiva + local nNextMchId = EgtGetNextActiveOperation( nMchId) + while nNextMchId do + if EgtGetOperationType( nNextMchId) ~= MCH_OY.DISP then + if EgtSetCurrMachining( nNextMchId) then + local sNextTool = EgtGetMachiningParam( MCH_MP.TOOL) + if EgtTdbSetCurrTool( sNextTool) then + local sNextHead = EgtTdbGetCurrToolParam( MCH_TP.HEAD) + local nNextHSet = GetHeadSet( sNextHead) + if nNextHSet ~= nHSet then + break + end + end + end + end + nNextMchId = EgtGetNextActiveOperation( nNextMchId) + end + -- se esiste ed appartiene a gruppo diverso + if nNextMchId and EgtSetCurrMachining( nNextMchId) then + local sNextTool = EgtGetMachiningParam( MCH_MP.TOOL) + if EgtTdbSetCurrTool( sNextTool) then + local sNextHead = EgtTdbGetCurrToolParam( MCH_TP.HEAD) + local nNextHSet = GetHeadSet( sNextHead) + if nNextHSet ~= nHSet then + local sNextTcPos = EgtTdbGetCurrToolParam( MCH_TP.TCPOS) + -- se testa attuale da caricare è sega a catena, mando l'altra prima in HomeX (per evitare possibili collisioni) e poi lancio preselezione + if sHead == 'H13' and nHSet ~= GetHeadSet( EMT.PREVHEAD_H1) then + EmitMoveDataHead( 2, { X=-ParkX2, Z=MaxZ2, B=ParkB2, C=ParkC2, TPos=AdjustTcPos( false, EMT.PREVTCPOS_H2)}) + EmitMoveStartHead( 2) + EmitMoveWaitHead( 2) + elseif sHead == 'H23' and nHSet ~= GetHeadSet( EMT.PREVHEAD_H2) then + EmitMoveDataHead( 1, { X=-ParkX1, Z=MaxZ1, B=ParkB1, C=ParkC1, TPos=AdjustTcPos( false, EMT.PREVTCPOS_H1)}) + EmitMoveStartHead( 1) + EmitMoveWaitHead( 1) + end + -- Emetto preselezione (non ammessa per sega a catena H13 e H23 e aggregato BlockHaus H17) + if sNextHead == 'H11' then + EmitMoveDataHead( 1, { X=-ParkX1, Z=MaxZ1, B=ParkB1, C=ParkC1, TPos=AdjustTcPos( false, sNextTcPos)}) + EmitMoveStartHead( 1) + bPresel = true + elseif sNextHead == 'H12' then + EmitMoveDataHead( 1, { X=-ParkX1, Z=MaxZ1, B=ParkB1, C=ParkC1, TPos=AdjustTcPos( false, sNextTcPos)}) + EmitMoveStartHead( 1) + bPresel = true + elseif sNextHead == 'H21' then + EmitMoveDataHead( 2, { X=-ParkX2, Z=MaxZ2, B=ParkB2, C=ParkC2, TPos=AdjustTcPos( false, sNextTcPos)}) + EmitMoveStartHead( 2) + bPresel = true + elseif sNextHead == 'H22' then + EmitMoveDataHead( 2, { X=-ParkX2, Z=MaxZ2, B=ParkB2, C=ParkC2, TPos=AdjustTcPos( false, sNextTcPos)}) + EmitMoveStartHead( 2) + bPresel = true end end end end - nNextMchId = EgtGetNextActiveOperation( nNextMchId) + -- ripristino stato corrente + EgtSetCurrMachining( EMT.MCHID) + EgtTdbSetCurrTool( EMT.TOOL) end - -- se esiste ed appartiene a gruppo diverso - if nNextMchId and EgtSetCurrMachining( nNextMchId) then - local sNextTool = EgtGetMachiningParam( MCH_MP.TOOL) - if EgtTdbSetCurrTool( sNextTool) then - local sNextHead = EgtTdbGetCurrToolParam( MCH_TP.HEAD) - local nNextHSet = GetHeadSet( sNextHead) - if nNextHSet ~= nHSet then - local sNextTcPos = EgtTdbGetCurrToolParam( MCH_TP.TCPOS) - -- se testa attuale da caricare è sega a catena, mando l'altra prima in HomeX (per evitare possibili collisioni) e poi lancio preselezione - if sHead == 'H13' and nHSet ~= GetHeadSet( EMT.PREVHEAD_H1) then - EmitMoveDataHead( 2, { X=-ParkX2, Z=MaxZ2, B=ParkB2, C=ParkC2, TPos=AdjustTcPos( false, EMT.PREVTCPOS_H2)}) - EmitMoveStartHead( 2) - EmitMoveWaitHead( 2) - elseif sHead == 'H23' and nHSet ~= GetHeadSet( EMT.PREVHEAD_H2) then - EmitMoveDataHead( 1, { X=-ParkX1, Z=MaxZ1, B=ParkB1, C=ParkC1, TPos=AdjustTcPos( false, EMT.PREVTCPOS_H1)}) - EmitMoveStartHead( 1) - EmitMoveWaitHead( 1) - end - -- Emetto preselezione (non ammessa per sega a catena H13 e H23 e aggregato BlockHaus H17) - if sNextHead == 'H11' then - EmitMoveDataHead( 1, { X=-ParkX1, Z=MaxZ1, B=ParkB1, C=ParkC1, TPos=AdjustTcPos( false, sNextTcPos)}) - EmitMoveStartHead( 1) - bPresel = true - elseif sNextHead == 'H12' then - EmitMoveDataHead( 1, { X=-ParkX1, Z=MaxZ1, B=ParkB1, C=ParkC1, TPos=AdjustTcPos( false, sNextTcPos)}) - EmitMoveStartHead( 1) - bPresel = true - elseif sNextHead == 'H21' then - EmitMoveDataHead( 2, { X=-ParkX2, Z=MaxZ2, B=ParkB2, C=ParkC2, TPos=AdjustTcPos( false, sNextTcPos)}) - EmitMoveStartHead( 2) - bPresel = true - elseif sNextHead == 'H22' then - EmitMoveDataHead( 2, { X=-ParkX2, Z=MaxZ2, B=ParkB2, C=ParkC2, TPos=AdjustTcPos( false, sNextTcPos)}) - EmitMoveStartHead( 2) - bPresel = true - end - end - end - end - -- ripristino stato corrente - EgtSetCurrMachining( EMT.MCHID) - EgtTdbSetCurrTool( EMT.TOOL) -- se non eseguita preselezione if not bPresel then -- mi assicuro che l'altra testa sia in parcheggio diff --git a/UpdateLog.txt b/UpdateLog.txt index 2c6c4ae..a3cc700 100644 --- a/UpdateLog.txt +++ b/UpdateLog.txt @@ -1,5 +1,8 @@ ==== Common_ONE-PF Update Log ==== +Versione 3.1f2 (05/06/2026) +- (MLDE-GEN) Aggiunti parametri di limite asse X per decidere se fare preselezione su altra testa. Serve modifica MLDE + Versione 3.1f1 (03/06/2026) - (NGE-MLDE-GEN-SIM) Versione unificata con predisposizione per gestione tastatori. Serve modificare anche la macchina, per ora gestione completa solo su PFrl. diff --git a/Version.lua b/Version.lua index 2dcf74e..f94beaa 100644 --- a/Version.lua +++ b/Version.lua @@ -3,7 +3,7 @@ local InfoCommon_STD_PP = { NAME = 'Common_ONE-PF', -- nome script PP standard - VERSION = '3.1f1', -- versione script + VERSION = '3.1f2', -- versione script MIN_MACH_VER_PP_COMMON = '3.1b2' -- versione minima kernel }