Compare commits

..

2 Commits

Author SHA1 Message Date
andrea.villa b2c2f4819b Tolti i 100mm aggiuntivi al calcolo ZMAX 2024-10-08 10:30:20 +02:00
andrea.villa e06f67b22a Modifica gestione primo movimento di approccio al pezzo 2024-10-08 09:35:13 +02:00
4 changed files with 100 additions and 43 deletions
+63 -37
View File
@@ -684,6 +684,10 @@ function OnPathEnd()
if not EMT.ZMAX then if not EMT.ZMAX then
EmitResetMachining() EmitResetMachining()
end end
-- salvo dati precedenti
EMT.L2pp = EMT.L2o
EMT.AUXTYPE = nil EMT.AUXTYPE = nil
EMT.UNL = nil EMT.UNL = nil
EMT.PREROT = nil EMT.PREROT = nil
@@ -868,14 +872,20 @@ function OnRapid()
bMoveZbeforeX = true bMoveZbeforeX = true
end end
-- se vado in posizione speciale rotazione assi, poi devo ritornare alla X vera di lavoro
local dMoveXtoFinalPosition = false
local dXref = EMT.L2 local dXref = EMT.L2
if EMT.HEAD == 'H12' and EMT.L2 < -LimX1PlRotSaw then if EMT.HEAD == 'H12' and EMT.L2 < -LimX1PlRotSaw then
dXref = -LimX1PlRotSaw dXref = -LimX1PlRotSaw
EmitMoveDataHead( 1, { X=dXref, Z=MyMaxZ1, B=ParkB1, C=ParkC1, S=Speed}) EmitMoveDataHead( 1, { X=dXref, Z=MyMaxZ1, B=ParkB1, C=ParkC1, S=Speed})
dZref = min( dSafeZ1 + GetZExtra( EMT.HEAD, EMT.R2), MyMaxZ1)
dMoveXtoFinalPosition = true
elseif not bMoveZbeforeX then elseif not bMoveZbeforeX then
EmitMoveDataHead( 1, { X=dXref, Z=MyMaxZ1, B=ParkB1, C=ParkC1, S=Speed}) EmitMoveDataHead( 1, { X=dXref, Z=MyMaxZ1, B=ParkB1, C=ParkC1, S=Speed})
else else
EmitMoveDataHead( 1, { X=-LimX1PlRotSaw, Z=MyMaxZ1, B=ParkB1, C=ParkC1, S=Speed}) EmitMoveDataHead( 1, { X=-LimX1PlRotSaw, Z=MyMaxZ1, B=ParkB1, C=ParkC1, S=Speed})
dZref = min( dSafeZ1 + GetZExtra( EMT.HEAD, EMT.R2), MyMaxZ1)
dMoveXtoFinalPosition = true
end end
-- caso speciale per trave alta con rotazione lama pericolosa (tolto "and EMT.SB > 379") -- caso speciale per trave alta con rotazione lama pericolosa (tolto "and EMT.SB > 379")
@@ -886,6 +896,9 @@ function OnRapid()
if bMoveZbeforeX then if bMoveZbeforeX then
EmitMoveDataHead( 1, { Z=EMT.L3, S=Speed}) EmitMoveDataHead( 1, { Z=EMT.L3, S=Speed})
end end
if dMoveXtoFinalPosition then
EmitMoveDataHead( 1, { X=EMT.L2, S=Speed})
end
-- caso standard -- caso standard
else else
EmitMoveDataHead( 1, { X=dXref, Z=dZref, B=ParkB1, C=ParkC1, S=Speed}) EmitMoveDataHead( 1, { X=dXref, Z=dZref, B=ParkB1, C=ParkC1, S=Speed})
@@ -1121,7 +1134,7 @@ function OnRapid()
end end
bToPresel = false bToPresel = false
-- risalita a Zmax -- risalita a Zmax
EmitZmax( false, false, EMT.TO_XHOME, PrevR1, PrevR2) EmitZmax( false, false, EMT.TO_XHOME, PrevR1, PrevR2, nil, true)
EMT.ZMAX = true EMT.ZMAX = true
EMT.TO_ZMAX = nil EMT.TO_ZMAX = nil
EMT.TO_XHOME = nil EMT.TO_XHOME = nil
@@ -1139,37 +1152,17 @@ function OnRapid()
if EMT.TO_XHOME then if EMT.TO_XHOME then
local nHSet = GetHeadSet( EMT.HEAD) local nHSet = GetHeadSet( EMT.HEAD)
local nPrevHSet = GetHeadSet( EMT.PREVHEAD) local nPrevHSet = GetHeadSet( EMT.PREVHEAD)
if EMT.PREVHEAD == 'H12' or EMT.PREVHEAD == 'H22' then
-- se successivo non è sega a catena e la testa è la stessa, vado in home con utensile succesivo
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})
EmitMoveStartHead( 1, 'EA1')
else
local HomeX2 = EgtGetAxisHomePos( 'X2')
EmitMoveDataHead( 2, { X=-HomeX2, Z=MaxZ2, B=ParkB2, C=ParkC2})
EmitMoveStartHead( 2, 'EA1')
end
else
if not HeadIsChainSaw( EMT.PREVHEAD) then
if nPrevHSet == 1 then if nPrevHSet == 1 then
local HomeX1 = EgtGetAxisHomePos( 'X1') local HomeX1 = EgtGetAxisHomePos( 'X1')
EmitMoveDataHead( 1, { X=-EMT.PREVHOMEX_H1, Z=MaxZ1, B=ParkB1, C=ParkC1, TPos=AdjustTcPos( false, EMT.PREVTCPOS_H1)}) EmitMoveDataHead( 1, { X=-EMT.PREVHOMEX_H1, Z=MaxZ1, B=ParkB1, C=ParkC1, TPos=AdjustTcPos( false, EMT.PREVTCPOS_H1)})
EmitMoveStartHead( 1, 'EA1') EmitMoveStartHead( 1, 'EA1')
EmitMoveWaitHead( 1)
else else
local HomeX2 = EgtGetAxisHomePos( 'X2') local HomeX2 = EgtGetAxisHomePos( 'X2')
EmitMoveDataHead( 2, { X=-EMT.PREVHOMEX_H2, Z=MaxZ2, B=ParkB2, C=ParkC2, TPos=AdjustTcPos( false, EMT.PREVTCPOS_H2)}) EmitMoveDataHead( 2, { X=-EMT.PREVHOMEX_H2, Z=MaxZ2, B=ParkB2, C=ParkC2, TPos=AdjustTcPos( false, EMT.PREVTCPOS_H2)})
EmitMoveStartHead( 2, 'EA1') EmitMoveStartHead( 2, 'EA1')
end EmitMoveWaitHead( 2)
else
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='50'})
EmitMoveStartHead( 2, 'EA1')
end
end end
end end
@@ -1234,14 +1227,20 @@ function OnRapid()
bMoveZbeforeX = true bMoveZbeforeX = true
end end
-- se vado in posizione speciale rotazione assi, poi devo ritornare alla X vera di lavoro
local dMoveXtoFinalPosition = false
local dXref = EMT.L2 local dXref = EMT.L2
if EMT.HEAD == 'H12' and EMT.L2 < -LimX1PlRotSaw then if EMT.HEAD == 'H12' and EMT.L2 < -LimX1PlRotSaw then
dXref = -LimX1PlRotSaw dXref = -LimX1PlRotSaw
EmitMoveDataHead( 1, { X=dXref, Z=CurrZ1, B=CurrB1, C=CurrC1, TRad=dTRad, TLen=dTLen, S=Speed}) EmitMoveDataHead( 1, { X=dXref, Z=CurrZ1, B=CurrB1, C=CurrC1, TRad=dTRad, TLen=dTLen, S=Speed})
dZref = min( dSafeZ1 + GetZExtra( EMT.HEAD, EMT.R2), MyMaxZ1)
dMoveXtoFinalPosition = true
elseif not bMoveZbeforeX then elseif not bMoveZbeforeX then
EmitMoveDataHead( 1, { X=dXref, Z=CurrZ1, B=CurrB1, C=CurrC1, TRad=dTRad, TLen=dTLen, S=Speed}) EmitMoveDataHead( 1, { X=dXref, Z=CurrZ1, B=CurrB1, C=CurrC1, TRad=dTRad, TLen=dTLen, S=Speed})
else else
EmitMoveDataHead( 1, { X=CurrX1, Z=CurrZ1, B=CurrB1, C=CurrC1, TRad=dTRad, TLen=dTLen, S=Speed}) EmitMoveDataHead( 1, { X=CurrX1, Z=CurrZ1, B=CurrB1, C=CurrC1, TRad=dTRad, TLen=dTLen, S=Speed})
dZref = min( dSafeZ1 + GetZExtra( EMT.HEAD, EMT.R2), MyMaxZ1)
dMoveXtoFinalPosition = true
end end
-- caso speciale per trave alta con rotazione lama pericolosa (tolto "and EMT.SB > 379") -- caso speciale per trave alta con rotazione lama pericolosa (tolto "and EMT.SB > 379")
@@ -1252,6 +1251,9 @@ function OnRapid()
if bMoveZbeforeX then if bMoveZbeforeX then
EmitMoveDataHead( 1, { Z=EMT.L3, S=Speed}) EmitMoveDataHead( 1, { Z=EMT.L3, S=Speed})
end end
if dMoveXtoFinalPosition then
EmitMoveDataHead( 1, { X=EMT.L2, S=Speed})
end
-- altrimenti caso standard -- altrimenti caso standard
else else
EmitMoveDataHead( 1, { Z=dZref, S=Speed}) EmitMoveDataHead( 1, { Z=dZref, S=Speed})
@@ -1943,6 +1945,9 @@ function PrepareMoveChar( sCmd, nInd)
table.insert( EMT.MDCHAR, MDChar) table.insert( EMT.MDCHAR, MDChar)
EMT.Y1POS = MoveY1 or EMT.Y1POS EMT.Y1POS = MoveY1 or EMT.Y1POS
EMT.TPOS = GetCmdAxMove( Cmd, 'T') or EMT.TPOS EMT.TPOS = GetCmdAxMove( Cmd, 'T') or EMT.TPOS
if EMT.V1POS < 400 and ( EMT.HEAD == 'H12' or EMT.HEAD == 'H22') and EMT.ZMAX and not EMT.XHOME then
EMT.TO_XHOME = true
end
end end
elseif Cmd[1] == '2' then elseif Cmd[1] == '2' then
local MDChar = { IniStatY1=EMT.ISY1, FinStatY1=EMT.FSY1, IniStatY2=EMT.ISY2, FinStatY2=EMT.FSY2, BeamVise=EMT.BV} local MDChar = { IniStatY1=EMT.ISY1, FinStatY1=EMT.FSY1, IniStatY2=EMT.ISY2, FinStatY2=EMT.FSY2, BeamVise=EMT.BV}
@@ -1970,6 +1975,9 @@ function PrepareMoveChar( sCmd, nInd)
end end
table.insert( EMT.MDCHAR, MDChar) table.insert( EMT.MDCHAR, MDChar)
EMT.TPOS = GetCmdAxMove( Cmd, 'T') or EMT.TPOS EMT.TPOS = GetCmdAxMove( Cmd, 'T') or EMT.TPOS
if EMT.V1POS < 400 and ( EMT.HEAD == 'H12' or EMT.HEAD == 'H22') and EMT.ZMAX and not EMT.XHOME then
EMT.TO_XHOME = true
end
elseif Cmd[1] == '3' then elseif Cmd[1] == '3' then
local MDChar = { IniStatY1=EMT.ISY1, FinStatY1=EMT.FSY1, IniStatY2=EMT.ISY2, FinStatY2=EMT.FSY2, BeamVise=EMT.BV} local MDChar = { IniStatY1=EMT.ISY1, FinStatY1=EMT.FSY1, IniStatY2=EMT.ISY2, FinStatY2=EMT.FSY2, BeamVise=EMT.BV}
local MoveY1 = GetCmdAxMove( Cmd, 'Y1') local MoveY1 = GetCmdAxMove( Cmd, 'Y1')
@@ -1996,6 +2004,9 @@ function PrepareMoveChar( sCmd, nInd)
end end
table.insert( EMT.MDCHAR, MDChar) table.insert( EMT.MDCHAR, MDChar)
EMT.TPOS = GetCmdAxMove( Cmd, 'T') or EMT.TPOS EMT.TPOS = GetCmdAxMove( Cmd, 'T') or EMT.TPOS
if EMT.V1POS < 400 and ( EMT.HEAD == 'H12' or EMT.HEAD == 'H22') and EMT.ZMAX and not EMT.XHOME then
EMT.TO_XHOME = true
end
elseif Cmd[1] == '4' then elseif Cmd[1] == '4' then
-- richiesta movimento a ZMAX già gestita -- richiesta movimento a ZMAX già gestita
if Cmd[2] == '1' then if Cmd[2] == '1' then
@@ -2677,6 +2688,9 @@ function EmitZmax( bReset, bEnd, bXhome, PrevR1, PrevR2, bSplitCut, bUsePrevDelt
end end
-- gruppo della testa -- gruppo della testa
local nHSet = GetHeadSet( EMT.HEAD) local nHSet = GetHeadSet( EMT.HEAD)
local dXPos = EgtIf( bUsePrevDelta, EMT.L2pp or EMT.L2o, EMT.L2o)
-- reset stato di testa in home
EMT.XHOME = nil
-- se testa 1 -- se testa 1
if nHSet == 1 then if nHSet == 1 then
-- posizioni sicure -- posizioni sicure
@@ -2696,12 +2710,12 @@ function EmitZmax( bReset, bEnd, bXhome, PrevR1, PrevR2, bSplitCut, bUsePrevDelt
-- eseguo la salita a Z1max (oriento solo se assi rotanti non già a posto) -- eseguo la salita a Z1max (oriento solo se assi rotanti non già a posto)
if abs( dSafeC1 - PrevR1) > 0.1 or abs( dSafeB1 - PrevR2) > 0.1 then if abs( dSafeC1 - PrevR1) > 0.1 or abs( dSafeB1 - PrevR2) > 0.1 then
local dZref = dSafeZ1 + GetZExtra( EMT.HEAD, PrevR2) local dZref = dSafeZ1 + GetZExtra( EMT.HEAD, PrevR2)
if EgtIf( BD.RIGHT_LOAD, -EMT.L2o < -LimX1RotSaw, -EMT.L2o > -LimX1RotSaw) then if EgtIf( BD.RIGHT_LOAD, -dXPos < -LimX1RotSaw, -dXPos > -LimX1RotSaw) then
dZref = dZref - EgtIf( not Mortiser, 100, 370) dZref = dZref - EgtIf( not Mortiser, 100, 370)
end end
dZref = min( dZref, dMaxZ1) dZref = min( dZref, dMaxZ1)
local MovH = { Z = EgtIf( dZref > EMT.L3o, dZref, EMT.L3o)} local MovH = { Z = EgtIf( dZref > EMT.L3o, dZref, EMT.L3o)}
MovH.X = -EMT.L2o ; MovH.B = EgtClamp( PrevR2, -90, 90) ; MovH.C = PrevR1 ; MovH.X = -dXPos ; MovH.B = EgtClamp( PrevR2, -90, 90) ; MovH.C = PrevR1 ;
EmitMoveDataHead( 1, MovH) EmitMoveDataHead( 1, MovH)
if EMT.HEAD == 'H12' and ( abs( dSafeC1 - PrevR1) > 30.1 or abs( dSafeB1 - PrevR2) > 30.1) then if EMT.HEAD == 'H12' and ( abs( dSafeC1 - PrevR1) > 30.1 or abs( dSafeB1 - PrevR2) > 30.1) then
EmitMoveDataHead( 1, { Z=dMaxZ1, B=0}) EmitMoveDataHead( 1, { Z=dMaxZ1, B=0})
@@ -2711,10 +2725,13 @@ function EmitZmax( bReset, bEnd, bXhome, PrevR1, PrevR2, bSplitCut, bUsePrevDelt
EmitMoveDataHead( 1, { Z=dMaxZ1}) EmitMoveDataHead( 1, { Z=dMaxZ1})
else else
local MovH = { Z = dMaxZ1} local MovH = { Z = dMaxZ1}
MovH.X = -EMT.L2o ; MovH.B = PrevR2 ; MovH.C = PrevR1 ; MovH.X = -dXPos ; MovH.B = PrevR2 ; MovH.C = PrevR1 ;
EmitMoveDataHead( 1, MovH) EmitMoveDataHead( 1, MovH)
end end
if bXhome then EmitMoveDataHead( 1, { X=-dSafeX1}) end if bXhome then
EMT.XHOME = true
EmitMoveDataHead( 1, { X=-dSafeX1})
end
EmitMoveStartHead( 1) EmitMoveStartHead( 1)
-- se lavorazione in doppio -- se lavorazione in doppio
if EMT.DOU_TYPE == 2 then if EMT.DOU_TYPE == 2 then
@@ -2724,7 +2741,7 @@ function EmitZmax( bReset, bEnd, bXhome, PrevR1, PrevR2, bSplitCut, bUsePrevDelt
-- altrimenti sega a catena -- altrimenti sega a catena
else else
-- ribadisco movimento perchè in G141 si aspetta sempre tutti i valori -- ribadisco movimento perchè in G141 si aspetta sempre tutti i valori
local MovH = { X = -EMT.L2o, Z = EMT.L3o, B = PrevR2, C = PrevR1} local MovH = { X = -dXPos, Z = EMT.L3o, B = PrevR2, C = PrevR1}
EmitMoveDataHead( 1, MovH) EmitMoveDataHead( 1, MovH)
EmitMoveDataHead( 1, { Z=dSafeZ1, B=dSafeB1}) EmitMoveDataHead( 1, { Z=dSafeZ1, B=dSafeB1})
if EMT.SB > 650 and abs( EMT.R3) < 0.1 then if EMT.SB > 650 and abs( EMT.R3) < 0.1 then
@@ -2732,6 +2749,7 @@ function EmitZmax( bReset, bEnd, bXhome, PrevR1, PrevR2, bSplitCut, bUsePrevDelt
end end
EmitMoveDataHead( 1, { X=-dSafeX1, C=dSafeC1}) EmitMoveDataHead( 1, { X=-dSafeX1, C=dSafeC1})
if bXhome then if bXhome then
EMT.XHOME = true
EmitMoveDataHead( 1, { X=-ParkX1, Z=ParkCSawZ1, B=ParkB1, C=ParkC1, TPos=50}) EmitMoveDataHead( 1, { X=-ParkX1, Z=ParkCSawZ1, B=ParkB1, C=ParkC1, TPos=50})
end end
EmitMoveStartHead( 1) EmitMoveStartHead( 1)
@@ -2746,7 +2764,7 @@ function EmitZmax( bReset, bEnd, bXhome, PrevR1, PrevR2, bSplitCut, bUsePrevDelt
local dZref = dSafeZ1 + GetZExtra( EMT.HEAD, PrevR2) local dZref = dSafeZ1 + GetZExtra( EMT.HEAD, PrevR2)
dZref = min( dZref, dMaxZ1) dZref = min( dZref, dMaxZ1)
local MovH = { Z = EgtIf( dZref > EMT.L3o, dZref, EMT.L3o)} local MovH = { Z = EgtIf( dZref > EMT.L3o, dZref, EMT.L3o)}
MovH.X = -EMT.L2o ; MovH.B = EgtClamp( PrevR2, -90, 90) ; MovH.C = PrevR1 ; MovH.X = -dXPos ; MovH.B = EgtClamp( PrevR2, -90, 90) ; MovH.C = PrevR1 ;
EmitMoveDataHead( 1, MovH) EmitMoveDataHead( 1, MovH)
if EMT.HEAD == 'H12' and ( abs( dSafeC1 - PrevR1) > 30.1 or abs( dSafeB1 - PrevR2) > 30.1) then if EMT.HEAD == 'H12' and ( abs( dSafeC1 - PrevR1) > 30.1 or abs( dSafeB1 - PrevR2) > 30.1) then
EmitMoveDataHead( 1, { Z=dMaxZ1, B=0}) EmitMoveDataHead( 1, { Z=dMaxZ1, B=0})
@@ -2756,16 +2774,19 @@ function EmitZmax( bReset, bEnd, bXhome, PrevR1, PrevR2, bSplitCut, bUsePrevDelt
EmitMoveDataHead( 1, { Z=dMaxZ1}) EmitMoveDataHead( 1, { Z=dMaxZ1})
else else
local MovH = { Z = dMaxZ1} local MovH = { Z = dMaxZ1}
MovH.X = -EMT.L2o ; MovH.B = PrevR2 ; MovH.C = PrevR1 ; MovH.X = -dXPos ; MovH.B = PrevR2 ; MovH.C = PrevR1 ;
EmitMoveDataHead( 1, MovH) EmitMoveDataHead( 1, MovH)
end end
if bXhome then EmitMoveDataHead( 1, { X=-dSafeX1}) end if bXhome then
EMT.XHOME = true
EmitMoveDataHead( 1, { X=-dSafeX1})
end
EmitMoveStartHead( 1) EmitMoveStartHead( 1)
EmitMoveWaitHead( 1) EmitMoveWaitHead( 1)
-- altrimenti sega a catena -- altrimenti sega a catena
else else
-- ribadisco movimento perchè in G141 si aspetta sempre tutti i valori -- ribadisco movimento perchè in G141 si aspetta sempre tutti i valori
local MovH = { X = -EMT.L2o, Z = EMT.L3o, B = PrevR2, C = PrevR1} local MovH = { X = -dXPos, Z = EMT.L3o, B = PrevR2, C = PrevR1}
EmitMoveDataHead( 1, MovH) EmitMoveDataHead( 1, MovH)
EmitMoveDataHead( 1, { Z=dSafeZ1, B=dSafeB1}) EmitMoveDataHead( 1, { Z=dSafeZ1, B=dSafeB1})
if EMT.SB > 650 and abs( EMT.R3) < 0.1 then if EMT.SB > 650 and abs( EMT.R3) < 0.1 then
@@ -2773,6 +2794,7 @@ function EmitZmax( bReset, bEnd, bXhome, PrevR1, PrevR2, bSplitCut, bUsePrevDelt
end end
EmitMoveDataHead( 1, { X=-dSafeX1, C=dSafeC1}) EmitMoveDataHead( 1, { X=-dSafeX1, C=dSafeC1})
if bXhome then if bXhome then
EMT.XHOME = true
EmitMoveDataHead( 1, { X=-ParkX1, Z=ParkCSawZ1, B=ParkB1, C=ParkC1, TPos=50}) EmitMoveDataHead( 1, { X=-ParkX1, Z=ParkCSawZ1, B=ParkB1, C=ParkC1, TPos=50})
end end
EmitMoveStartHead( 1) EmitMoveStartHead( 1)
@@ -2799,7 +2821,7 @@ function EmitZmax( bReset, bEnd, bXhome, PrevR1, PrevR2, bSplitCut, bUsePrevDelt
local dZref = dSafeZ2 + GetZExtra( EMT.HEAD, PrevR2) local dZref = dSafeZ2 + GetZExtra( EMT.HEAD, PrevR2)
dZref = min( dZref, dMaxZ2) dZref = min( dZref, dMaxZ2)
local MovH = { Z = EgtIf( dZref > EMT.L3o, dZref, EMT.L3o)} local MovH = { Z = EgtIf( dZref > EMT.L3o, dZref, EMT.L3o)}
MovH.X = -EMT.L2o ; MovH.B = EgtClamp( PrevR2, -90, 90) ; MovH.C = PrevR1 ; MovH.X = -dXPos ; MovH.B = EgtClamp( PrevR2, -90, 90) ; MovH.C = PrevR1 ;
EmitMoveDataHead( 2, MovH) EmitMoveDataHead( 2, MovH)
if EMT.HEAD == 'H22' and ( abs( dSafeC2 - PrevR1) > 30.1 or abs( dSafeB2 - PrevR2) > 30.1) then if EMT.HEAD == 'H22' and ( abs( dSafeC2 - PrevR1) > 30.1 or abs( dSafeB2 - PrevR2) > 30.1) then
EmitMoveDataHead( 2, { Z=dMaxZ2, B=0}) EmitMoveDataHead( 2, { Z=dMaxZ2, B=0})
@@ -2809,16 +2831,19 @@ function EmitZmax( bReset, bEnd, bXhome, PrevR1, PrevR2, bSplitCut, bUsePrevDelt
EmitMoveDataHead( 2, { Z=dMaxZ2}) EmitMoveDataHead( 2, { Z=dMaxZ2})
else else
local MovH = { Z = dMaxZ2} local MovH = { Z = dMaxZ2}
MovH.X = -EMT.L2o ; MovH.B = PrevR2 ; MovH.C = PrevR1 ; MovH.X = -dXPos ; MovH.B = PrevR2 ; MovH.C = PrevR1 ;
EmitMoveDataHead( 2, MovH) EmitMoveDataHead( 2, MovH)
end end
if bXhome then EmitMoveDataHead( 2, { X=-dSafeX2}) end if bXhome then
EMT.XHOME = true
EmitMoveDataHead( 2, { X=-dSafeX2})
end
EmitMoveStartHead( 2) EmitMoveStartHead( 2)
EmitMoveWaitHead( 2) EmitMoveWaitHead( 2)
-- altrimenti sega a catena -- altrimenti sega a catena
else else
-- ribadisco movimento perchè in G141 si aspetta sempre tutti i valori -- ribadisco movimento perchè in G141 si aspetta sempre tutti i valori
local MovH = { X = -EMT.L2o, Z = EMT.L3o, B = PrevR2, C = PrevR1} local MovH = { X = -dXPos, Z = EMT.L3o, B = PrevR2, C = PrevR1}
EmitMoveDataHead( 2, MovH) EmitMoveDataHead( 2, MovH)
EmitMoveDataHead( 2, { Z=dSafeZ2, B=dSafeB2}) EmitMoveDataHead( 2, { Z=dSafeZ2, B=dSafeB2})
if EMT.SB > 650 and abs( EMT.R3) < 0.1 then if EMT.SB > 650 and abs( EMT.R3) < 0.1 then
@@ -2826,6 +2851,7 @@ function EmitZmax( bReset, bEnd, bXhome, PrevR1, PrevR2, bSplitCut, bUsePrevDelt
end end
EmitMoveDataHead( 2, { X=-dSafeX2, C=dSafeC2}) EmitMoveDataHead( 2, { X=-dSafeX2, C=dSafeC2})
if bXhome then if bXhome then
EMT.XHOME = true
EmitMoveDataHead( 2, { X=-ParkX2, Z=ParkCSawZ2, B=ParkB2, C=ParkC2, TPos=50}) EmitMoveDataHead( 2, { X=-ParkX2, Z=ParkCSawZ2, B=ParkB2, C=ParkC2, TPos=50})
end end
EmitMoveStartHead( 2) EmitMoveStartHead( 2)
+28
View File
@@ -960,6 +960,7 @@ function OnSimulMoveStart()
VerifyY2Stroke( EMT.A2) VerifyY2Stroke( EMT.A2)
VerifyV1Stroke( EMT.A3) VerifyV1Stroke( EMT.A3)
VerifyV2Stroke( EMT.A4) VerifyV2Stroke( EMT.A4)
-- se devo subito parcheggiare i rulli -- se devo subito parcheggiare i rulli
local nRes = 0 local nRes = 0
if bParkV then if bParkV then
@@ -1002,14 +1003,20 @@ function OnSimulMoveStart()
bMoveZbeforeX = true bMoveZbeforeX = true
end end
-- se vado in posizione speciale rotazione assi, poi devo ritornare alla X vera di lavoro
local dMoveXtoFinalPosition = false
local dXref = EMT.L2 local dXref = EMT.L2
if EMT.HEAD == 'H12' and -EMT.L2 < -LimX1PlRotSaw then if EMT.HEAD == 'H12' and -EMT.L2 < -LimX1PlRotSaw then
dXref = LimX1PlRotSaw dXref = LimX1PlRotSaw
SimulMoveAxis( 'X1', dXref, MCH_SIM_STEP.RAPID) SimulMoveAxis( 'X1', dXref, MCH_SIM_STEP.RAPID)
dZref = Z1Home + GetZExtra( EMT.HEAD, EMT.R2)
dMoveXtoFinalPosition = true
elseif not bMoveZbeforeX then elseif not bMoveZbeforeX then
SimulMoveAxis( 'X1', dXref, MCH_SIM_STEP.RAPID) SimulMoveAxis( 'X1', dXref, MCH_SIM_STEP.RAPID)
else else
SimulMoveAxis( 'X1', LimX1PlRotSaw, MCH_SIM_STEP.RAPID) SimulMoveAxis( 'X1', LimX1PlRotSaw, MCH_SIM_STEP.RAPID)
dZref = Z1Home + GetZExtra( EMT.HEAD, EMT.R2)
dMoveXtoFinalPosition = true
end end
-- caso speciale per trave alta con rotazione lama pericolosa (tolto "and EMT.SB > 379") -- caso speciale per trave alta con rotazione lama pericolosa (tolto "and EMT.SB > 379")
@@ -1020,6 +1027,9 @@ function OnSimulMoveStart()
if bMoveZbeforeX then if bMoveZbeforeX then
SimulMoveAxis( 'Z1', EMT.L3, MCH_SIM_STEP.RAPID) SimulMoveAxis( 'Z1', EMT.L3, MCH_SIM_STEP.RAPID)
end end
if dMoveXtoFinalPosition then
SimulMoveAxis( 'X1', EMT.L2, MCH_SIM_STEP.RAPID)
end
-- caso standard -- caso standard
else else
SimulMoveAxis( 'Z1', dZref, MCH_SIM_STEP.RAPID) SimulMoveAxis( 'Z1', dZref, MCH_SIM_STEP.RAPID)
@@ -1261,6 +1271,7 @@ function OnSimulMoveStart()
EMT.A4 = EgtIf( GetV2ToClose(), EMT.V2NEXTPOS, ParkV2) EMT.A4 = EgtIf( GetV2ToClose(), EMT.V2NEXTPOS, ParkV2)
end end
EMT.ZMAX = nil EMT.ZMAX = nil
EMT.XHOME = nil
end end
--------------------------------------------------------------------- ---------------------------------------------------------------------
@@ -1369,6 +1380,10 @@ function ExecAuxCmd( sCmd, bPathStart)
ExecOpenRoller( 1) ExecOpenRoller( 1)
ExecOpenRoller( 2) ExecOpenRoller( 2)
local sV1, MoveV1, sV2, MoveV2 = CalcMoveV1V2ForAuxCmd( Cmd) local sV1, MoveV1, sV2, MoveV2 = CalcMoveV1V2ForAuxCmd( Cmd)
-- se stringo i rulli e ho lama, verifico che sia in home
if MoveV1 and MoveV1 < 400 and ( EMT.HEAD == 'H12' or EMT.HEAD == 'H22') and EMT.ZMAX and not EMT.XHOME then
ExecMoveZmax( false, true)
end
local bOk, bOk1, bOk2, bOk3 = SimulMoveAxes( Cmd[2], tonumber( Cmd[3]), MCH_SIM_STEP.RAPID, local bOk, bOk1, bOk2, bOk3 = SimulMoveAxes( Cmd[2], tonumber( Cmd[3]), MCH_SIM_STEP.RAPID,
sV1, MoveV1, MCH_SIM_STEP.RAPID, sV1, MoveV1, MCH_SIM_STEP.RAPID,
sV2, MoveV2, MCH_SIM_STEP.RAPID) sV2, MoveV2, MCH_SIM_STEP.RAPID)
@@ -1391,6 +1406,10 @@ function ExecAuxCmd( sCmd, bPathStart)
ExecOpenRoller( 1) ExecOpenRoller( 1)
ExecOpenRoller( 2) ExecOpenRoller( 2)
local sV1, MoveV1, sV2, MoveV2 = CalcMoveV1V2ForAuxCmd( Cmd) local sV1, MoveV1, sV2, MoveV2 = CalcMoveV1V2ForAuxCmd( Cmd)
-- se stringo i rulli e ho lama, verifico che sia in home
if MoveV1 and MoveV1 < 400 and ( EMT.HEAD == 'H12' or EMT.HEAD == 'H22') and EMT.ZMAX and not EMT.XHOME then
ExecMoveZmax( false, true)
end
local bOk, bOk1, bOk2, bOk3, bOk4 = SimulMoveAxes( Cmd[2], tonumber( Cmd[3]), MCH_SIM_STEP.RAPID, local bOk, bOk1, bOk2, bOk3, bOk4 = SimulMoveAxes( Cmd[2], tonumber( Cmd[3]), MCH_SIM_STEP.RAPID,
Cmd[4], tonumber( Cmd[5]), MCH_SIM_STEP.RAPID, Cmd[4], tonumber( Cmd[5]), MCH_SIM_STEP.RAPID,
sV1, MoveV1, MCH_SIM_STEP.RAPID, sV1, MoveV1, MCH_SIM_STEP.RAPID,
@@ -1414,6 +1433,10 @@ function ExecAuxCmd( sCmd, bPathStart)
ExecOpenRoller( 1) ExecOpenRoller( 1)
ExecOpenRoller( 2) ExecOpenRoller( 2)
local sV1, MoveV1, sV2, MoveV2 = CalcMoveV1V2ForAuxCmd( Cmd) local sV1, MoveV1, sV2, MoveV2 = CalcMoveV1V2ForAuxCmd( Cmd)
-- se stringo i rulli e ho lama, verifico che sia in home
if MoveV1 and MoveV1 < 400 and ( EMT.HEAD == 'H12' or EMT.HEAD == 'H22') and EMT.ZMAX and not EMT.XHOME then
ExecMoveZmax( false, true)
end
local bOk, bOk1, bOk2, bOk3, bOk4, bOk5 = SimulMoveAxes( Cmd[2], tonumber( Cmd[3]), MCH_SIM_STEP.RAPID, local bOk, bOk1, bOk2, bOk3, bOk4, bOk5 = SimulMoveAxes( Cmd[2], tonumber( Cmd[3]), MCH_SIM_STEP.RAPID,
Cmd[4], tonumber( Cmd[5]), MCH_SIM_STEP.RAPID, Cmd[4], tonumber( Cmd[5]), MCH_SIM_STEP.RAPID,
Cmd[6], tonumber( Cmd[7]), MCH_SIM_STEP.RAPID, Cmd[6], tonumber( Cmd[7]), MCH_SIM_STEP.RAPID,
@@ -1607,6 +1630,7 @@ function ExecMoveZmax( bMchSplit, btoXHome)
end end
SimulMoveAxis( 'Z1', MaxZ1, MCH_SIM_STEP.RAPID) SimulMoveAxis( 'Z1', MaxZ1, MCH_SIM_STEP.RAPID)
if btoXHome then if btoXHome then
EMT.XHOME = true
SimulMoveAxis( 'X1', ParkX1, MCH_SIM_STEP.RAPID) SimulMoveAxis( 'X1', ParkX1, MCH_SIM_STEP.RAPID)
end end
-- se lavorazione in doppio -- se lavorazione in doppio
@@ -1618,6 +1642,7 @@ function ExecMoveZmax( bMchSplit, btoXHome)
SimulMoveAxes( 'B2', ParkB2, MCH_SIM_STEP.COLLROT, 'C2', ParkC2, MCH_SIM_STEP.COLLROT) SimulMoveAxes( 'B2', ParkB2, MCH_SIM_STEP.COLLROT, 'C2', ParkC2, MCH_SIM_STEP.COLLROT)
SimulMoveAxis( 'Z2', MaxZ2, MCH_SIM_STEP.RAPID) SimulMoveAxis( 'Z2', MaxZ2, MCH_SIM_STEP.RAPID)
if bToXHome then if bToXHome then
EMT.XHOME = true
SimulMoveAxis( 'X2', ParkX2, MCH_SIM_STEP.RAPID) SimulMoveAxis( 'X2', ParkX2, MCH_SIM_STEP.RAPID)
end end
EMT.DOU_TO_ZMAX = nil EMT.DOU_TO_ZMAX = nil
@@ -1644,6 +1669,7 @@ function ExecMoveZmax( bMchSplit, btoXHome)
end end
SimulMoveAxis( 'Z1', MaxZ1, MCH_SIM_STEP.RAPID) SimulMoveAxis( 'Z1', MaxZ1, MCH_SIM_STEP.RAPID)
if btoXHome then if btoXHome then
EMT.XHOME = true
SimulMoveAxis( 'X1', ParkX1, MCH_SIM_STEP.RAPID) SimulMoveAxis( 'X1', ParkX1, MCH_SIM_STEP.RAPID)
end end
-- altrimenti sega a catena -- altrimenti sega a catena
@@ -1659,6 +1685,7 @@ function ExecMoveZmax( bMchSplit, btoXHome)
EMT.PREVHEAD_H1 = nil EMT.PREVHEAD_H1 = nil
EMT.PREVTCPOS_H1 = nil EMT.PREVTCPOS_H1 = nil
EMT.CHSAW_OUT = true EMT.CHSAW_OUT = true
EMT.XHOME = true
end end
SimulMoveAxes( 'X1', HomeX, MCH_SIM_STEP.RAPID, 'C1', HomeC, MCH_SIM_STEP.COLLROT) SimulMoveAxes( 'X1', HomeX, MCH_SIM_STEP.RAPID, 'C1', HomeC, MCH_SIM_STEP.COLLROT)
end end
@@ -1679,6 +1706,7 @@ function ExecMoveZmax( bMchSplit, btoXHome)
end end
SimulMoveAxis( 'Z2', MaxZ2, MCH_SIM_STEP.RAPID) SimulMoveAxis( 'Z2', MaxZ2, MCH_SIM_STEP.RAPID)
if btoXHome then if btoXHome then
EMT.XHOME = true
SimulMoveAxis( 'X2', ParkX2, MCH_SIM_STEP.RAPID) SimulMoveAxis( 'X2', ParkX2, MCH_SIM_STEP.RAPID)
end end
-- altrimenti sega a catena -- altrimenti sega a catena
+3
View File
@@ -1,5 +1,8 @@
==== Common_ONE-PF Update Log ==== ==== Common_ONE-PF Update Log ====
Versione 2.6j1 (08/10/2024)
-- (SIM-GEN) Corretto primo movimento di approccio al pezzo. Ticket#2093
Versione 2.6i2 (13/09/2024) Versione 2.6i2 (13/09/2024)
- (GEN) Migliorato calcolo chiusura paratia rulli con aggiornamento lunghezza della barra in caso di ultimo taglio e grezzo residuo in coda. Ticket#2017 - (GEN) Migliorato calcolo chiusura paratia rulli con aggiornamento lunghezza della barra in caso di ultimo taglio e grezzo residuo in coda. Ticket#2017
- (NGE-MLDE-GEN-SIM) Aggiunto solidi collisione TC. Corretto movimento a Y di sicurezza con lama. Ticket#2042 - (NGE-MLDE-GEN-SIM) Aggiunto solidi collisione TC. Corretto movimento a Y di sicurezza con lama. Ticket#2042
+1 -1
View File
@@ -3,7 +3,7 @@
local InfoCommon_STD_PP = { local InfoCommon_STD_PP = {
NAME = 'Common_ONE-PF', -- nome script PP standard NAME = 'Common_ONE-PF', -- nome script PP standard
VERSION = '2.6i2', -- versione script VERSION = '2.6j1', -- versione script
MIN_MACH_VER_PP_COMMON = '2.5k1' -- versione minima kernel MIN_MACH_VER_PP_COMMON = '2.5k1' -- versione minima kernel
} }