|
|
|
@@ -28,6 +28,9 @@ function OnStart()
|
|
|
|
|
--EMT.Ft = 'F' -- token per feed
|
|
|
|
|
--EMT.St = 'S' -- token per speed
|
|
|
|
|
EMT.FMAXPINZE = 102000 -- feed massima pinze
|
|
|
|
|
-- utensili default
|
|
|
|
|
EMT.PREVTCPOS_H1 = DefTcPos1
|
|
|
|
|
EMT.PREVTCPOS_H2 = DefTcPos2
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---------------------------------------------------------------------
|
|
|
|
@@ -599,6 +602,18 @@ function OnMachiningEnd()
|
|
|
|
|
EMT.PREVTOOL = EMT.TOOL
|
|
|
|
|
EMT.PREVHEAD = EMT.HEAD
|
|
|
|
|
EMT.PREVTCPOS = EMT.TCPOS
|
|
|
|
|
-- salvo anche utlimo utensile su testa
|
|
|
|
|
local nHSet = GetHeadSet( EMT.HEAD)
|
|
|
|
|
if nHSet == 1 then
|
|
|
|
|
EMT.PREVTOOL_H1 = EMT.TOOL
|
|
|
|
|
EMT.PREVHEAD_H1 = EMT.HEAD
|
|
|
|
|
EMT.PREVTCPOS_H1 = EMT.TCPOS
|
|
|
|
|
elseif nHSet == 2 then
|
|
|
|
|
EMT.PREVTOOL_H2 = EMT.TOOL
|
|
|
|
|
EMT.PREVHEAD_H2 = EMT.HEAD
|
|
|
|
|
EMT.PREVTCPOS_H2 = EMT.TCPOS
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
if EMT.DOU_TYPE and not EMT.ZMAX then EMT.DOU_TO_ZMAX = true end
|
|
|
|
|
EMT.DOU_TYPE = nil
|
|
|
|
|
end
|
|
|
|
@@ -858,11 +873,11 @@ function OnRapid()
|
|
|
|
|
|
|
|
|
|
-- se motosega configurata per lavorazioni di fianco o circa orizzontale
|
|
|
|
|
if dPosA == 0 or abs( EMT.R2) < 10 then
|
|
|
|
|
EmitMoveDataHead( 1, { X=EMT.L2, C=EMT.R1, S=Speed})
|
|
|
|
|
EmitMoveDataHead( 1, { X=EMT.L2, Z=ParkCSawZ1, B=ParkCSawB1, C=EMT.R1, S=Speed})
|
|
|
|
|
EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed})
|
|
|
|
|
-- se circa verticale
|
|
|
|
|
else
|
|
|
|
|
EmitMoveDataHead( 1, { X=EMT.L2, C=EMT.R1, S=Speed})
|
|
|
|
|
EmitMoveDataHead( 1, { X=EMT.L2, Z=ParkCSawZ1, B=ParkCSawB1, C=EMT.R1, S=Speed})
|
|
|
|
|
EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed})
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
@@ -925,11 +940,11 @@ function OnRapid()
|
|
|
|
|
|
|
|
|
|
-- se motosega configurata per lavorazioni di fianco o circa orizzontale
|
|
|
|
|
if dPosA == 0 or abs( EMT.R2) < 10 then
|
|
|
|
|
EmitMoveDataHead( 1, { X=EMT.L2, C=EMT.R1, S=Speed})
|
|
|
|
|
EmitMoveDataHead( 1, { X=EMT.L2, Z=ParkCSawZ1, B=ParkCSawB1, C=EMT.R1, S=Speed})
|
|
|
|
|
EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed})
|
|
|
|
|
-- se circa verticale
|
|
|
|
|
else
|
|
|
|
|
EmitMoveDataHead( 1, { X=EMT.L2, C=EMT.R1, S=Speed})
|
|
|
|
|
EmitMoveDataHead( 1, { X=EMT.L2, Z=ParkCSawZ1, B=ParkCSawB1, C=EMT.R1, S=Speed})
|
|
|
|
|
EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed})
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
@@ -977,13 +992,13 @@ function OnRapid()
|
|
|
|
|
EmitMoveWaitHead( 2)
|
|
|
|
|
EmitMoveWaitChars( EgtIf( bOnlyCharY, 1, 3))
|
|
|
|
|
|
|
|
|
|
-- se motosega configurata per lavorazioni di fianco o circa orizzontale
|
|
|
|
|
-- se motosega configurata per lavorazioni di fianco o circa orizzontale. Dopo attesa movimento carrelli si devono scrivere tutti gli assi.
|
|
|
|
|
if dPosA == 0 or abs( EMT.R2) < 10 then
|
|
|
|
|
EmitMoveDataHead( 2, { X=EMT.L2, C=EMT.R1, S=Speed})
|
|
|
|
|
EmitMoveDataHead( 2, { X=EMT.L2, Z=ParkCSawZ2, B=ParkCSawB2, C=EMT.R1, S=Speed})
|
|
|
|
|
EmitMoveDataHead( 2, { Z=EMT.L3, B=EMT.R2, S=Speed})
|
|
|
|
|
-- se circa verticale
|
|
|
|
|
else
|
|
|
|
|
EmitMoveDataHead( 2, { X=EMT.L2, C=EMT.R1, S=Speed})
|
|
|
|
|
EmitMoveDataHead( 2, { X=EMT.L2, Z=ParkCSawZ2, B=ParkCSawB2, C=EMT.R1, S=Speed})
|
|
|
|
|
EmitMoveDataHead( 2, { Z=EMT.L3, B=EMT.R2, S=Speed})
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
@@ -1064,42 +1079,42 @@ function OnRapid()
|
|
|
|
|
EMT.AUXCMD = {}
|
|
|
|
|
-- se necessario posizionamento in home (sono sicuramente già a Zmax)
|
|
|
|
|
if EMT.TO_XHOME then
|
|
|
|
|
-- se precedente non era sega a catena, vado in home con quella
|
|
|
|
|
if not HeadIsChainSaw( EMT.PREVHEAD) then
|
|
|
|
|
local nPrevHSet = GetHeadSet( EMT.PREVHEAD)
|
|
|
|
|
if nPrevHSet == 1 then
|
|
|
|
|
local nHSet = GetHeadSet( EMT.HEAD)
|
|
|
|
|
local nPrevHSet = GetHeadSet( EMT.PREVHEAD)
|
|
|
|
|
|
|
|
|
|
-- se successivo non è sega a catena e la testa è la stessa, vado in home con utensile successivo
|
|
|
|
|
if not HeadIsChainSaw( EMT.HEAD) and nHSet == nPrevHSet then
|
|
|
|
|
if nHSet == 1 then
|
|
|
|
|
local HomeX1 = EgtGetAxisHomePos( 'X1')
|
|
|
|
|
EmitMoveDataHead( 1, { X=-HomeX1, Z=MaxZ1, B=ParkB1, C=ParkC1, TPos='0'})
|
|
|
|
|
EmitMoveDataHead( 1, { X=-HomeX1, Z=MaxZ1, B=ParkB1, C=ParkC1})
|
|
|
|
|
EmitMoveStartHead( 1, 'EA1')
|
|
|
|
|
else
|
|
|
|
|
local HomeX2 = EgtGetAxisHomePos( 'X2')
|
|
|
|
|
EmitMoveDataHead( 2, { X=-HomeX2, Z=MaxZ2, B=ParkB2, C=ParkC2, TPos='0'})
|
|
|
|
|
EmitMoveDataHead( 2, { X=-HomeX2, Z=MaxZ2, B=ParkB2, C=ParkC2})
|
|
|
|
|
EmitMoveStartHead( 2, 'EA1')
|
|
|
|
|
end
|
|
|
|
|
-- altrimenti la deposito e vado in home speciale
|
|
|
|
|
else
|
|
|
|
|
-- se successivo non è sega a catena, ne lancio il carico
|
|
|
|
|
if not HeadIsChainSaw( EMT.HEAD) then
|
|
|
|
|
if nHSet == 1 then
|
|
|
|
|
if not HeadIsChainSaw( EMT.PREVHEAD) then
|
|
|
|
|
if nPrevHSet == 1 then
|
|
|
|
|
local HomeX1 = EgtGetAxisHomePos( 'X1')
|
|
|
|
|
EmitMoveDataHead( 1, { X=-HomeX1, Z=MaxZ1, B=HomeR2, C=HomeR1})
|
|
|
|
|
EmitMoveDataHead( 1, { X=-HomeX1, Z=MaxZ1, B=ParkB1, C=ParkC1, TPos=AdjustTcPos( false, EMT.PREVTCPOS_H1)})
|
|
|
|
|
EmitMoveStartHead( 1, 'EA1')
|
|
|
|
|
else
|
|
|
|
|
local HomeX2 = EgtGetAxisHomePos( 'X2')
|
|
|
|
|
EmitMoveDataHead( 2, { X=-HomeX2, Z=MaxZ2, B=HomeR2, C=HomeR1})
|
|
|
|
|
EmitMoveDataHead( 2, { X=-HomeX2, Z=MaxZ2, B=ParkB2, C=ParkC2, TPos=AdjustTcPos( false, EMT.PREVTCPOS_H2)})
|
|
|
|
|
EmitMoveStartHead( 2, 'EA1')
|
|
|
|
|
end
|
|
|
|
|
-- altrimenti deposito e mi metto in posizione sicura
|
|
|
|
|
else
|
|
|
|
|
if GetHeadTCSet( EMT.HEAD, EMT.TCPOS) == 'Head1_TC1' or GetHeadTCSet( EMT.HEAD, EMT.TCPOS) == 'Head1_TC2' then
|
|
|
|
|
EmitMoveDataHead( 1, { X=-ParkCSawX1S, Z=MaxZ1, B=HomeR2, C=HomeR1, TPos='0'})
|
|
|
|
|
if GetHeadTCSet( EMT.PREVHEAD, EMT.PREVTCPOS) == 'Head1_TC1' or GetHeadTCSet( EMT.PREVHEAD, EMT.PREVTCPOS) == 'Head1_TC2' then
|
|
|
|
|
EmitMoveDataHead( 1, { X=-ParkCSawX1S, Z=MaxZ1, B=HomeR2, C=HomeR1, TPos='50'})
|
|
|
|
|
EmitMoveStartHead( 1, 'EA1')
|
|
|
|
|
else
|
|
|
|
|
EmitMoveDataHead( 2, { X=-ParkCSawX2S, Z=MaxZ2, B=HomeR2, C=HomeR1, TPos='0'})
|
|
|
|
|
EmitMoveDataHead( 2, { X=-ParkCSawX2S, Z=MaxZ2, B=HomeR2, C=HomeR1, TPos='50'})
|
|
|
|
|
EmitMoveStartHead( 2, 'EA1')
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
EMT.TO_XHOME = nil
|
|
|
|
|
EMT.L3pp = nil
|
|
|
|
|
PrevR1 = HomeR1
|
|
|
|
@@ -2867,11 +2882,11 @@ function PreselectNextDiffHead( nMchId, sHead)
|
|
|
|
|
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 EMT.PREVHEAD ~= 'H13' then
|
|
|
|
|
EmitMoveDataHead( 2, { X=-ParkX2, Z=MaxZ2, B=ParkB2, C=ParkC2, TPos='0'})
|
|
|
|
|
EmitMoveDataHead( 2, { X=-ParkX2, Z=MaxZ2, B=ParkB2, C=ParkC2, TPos=AdjustTcPos( false, EMT.PREVTCPOS_H2)})
|
|
|
|
|
EmitMoveStartHead( 2)
|
|
|
|
|
EmitMoveWaitHead( 2)
|
|
|
|
|
elseif sHead == 'H23' and EMT.PREVHEAD ~= 'H23' then
|
|
|
|
|
EmitMoveDataHead( 1, { X=-ParkX1, Z=MaxZ1, B=ParkB1, C=ParkC1, TPos='0'})
|
|
|
|
|
EmitMoveDataHead( 1, { X=-ParkX1, Z=MaxZ1, B=ParkB1, C=ParkC1, TPos=AdjustTcPos( false, EMT.PREVTCPOS_H1)})
|
|
|
|
|
EmitMoveStartHead( 1)
|
|
|
|
|
EmitMoveWaitHead( 1)
|
|
|
|
|
end
|
|
|
|
@@ -2904,15 +2919,16 @@ function PreselectNextDiffHead( nMchId, sHead)
|
|
|
|
|
-- mi assicuro che l'altra testa sia in parcheggio
|
|
|
|
|
if nHSet == 1 then
|
|
|
|
|
-- non può essere la sega a catena
|
|
|
|
|
EmitMoveDataHead( 2, { X=-ParkX2, Z=MaxZ2, B=ParkB2, C=ParkC2, TPos='0'})
|
|
|
|
|
EmitMoveStartHead( 2)
|
|
|
|
|
if EMT.PREVHEAD == 'H23' and EMT.PREVHEAD ~= EMT.HEAD then
|
|
|
|
|
EmitMoveWaitHead( 2)
|
|
|
|
|
if EMT.PREVHEAD_H2 ~= 'H23' then
|
|
|
|
|
EmitMoveDataHead( 2, { X=-ParkX2, Z=MaxZ2, B=ParkB2, C=ParkC2, TPos=AdjustTcPos( false, EMT.PREVTCPOS_H2)})
|
|
|
|
|
EmitMoveStartHead( 2)
|
|
|
|
|
end
|
|
|
|
|
else
|
|
|
|
|
-- va bene per frese e lama
|
|
|
|
|
EmitMoveDataHead( 1, { X=-ParkX1, Z=MaxZ1, B=ParkB1, C=ParkC1, TPos='0'})
|
|
|
|
|
EmitMoveStartHead( 1)
|
|
|
|
|
-- non può essere la sega a catena
|
|
|
|
|
if EMT.PREVHEAD_H1 ~= 'H13' and EMT.PREVHEAD_H1 ~= 'H15' then
|
|
|
|
|
EmitMoveDataHead( 1, { X=-ParkX1, Z=MaxZ1, B=ParkB1, C=ParkC1, TPos=AdjustTcPos( false, EMT.PREVTCPOS_H1)})
|
|
|
|
|
EmitMoveStartHead( 1)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|