|
|
|
@@ -597,7 +597,7 @@ function OnMachiningEnd()
|
|
|
|
|
EmtOutput( sOut)
|
|
|
|
|
end
|
|
|
|
|
elseif not EMT.PREROT then
|
|
|
|
|
EmtOutput( '(M77)')
|
|
|
|
|
EmtOutput( 'M77')
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
@@ -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
|
|
|
|
|