Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 7e60cd35bc | |||
| fbae1a4ce1 | |||
| ee90ea7376 |
+93
-11
@@ -422,6 +422,14 @@ function OnToolSelect()
|
|||||||
if EMT.TDIST and abs( EMT.TDIST) < 0.1 then EMT.TDIST = nil end
|
if EMT.TDIST and abs( EMT.TDIST) < 0.1 then EMT.TDIST = nil end
|
||||||
EMT.TUSERNOTES = EgtTdbGetCurrToolParam( MCH_TP.USERNOTES)
|
EMT.TUSERNOTES = EgtTdbGetCurrToolParam( MCH_TP.USERNOTES)
|
||||||
EMT.ISPROBING = HeadIsProbe( EMT.HEAD)
|
EMT.ISPROBING = HeadIsProbe( EMT.HEAD)
|
||||||
|
|
||||||
|
-- gruppo della testa
|
||||||
|
local nHSet = GetHeadSet( EMT.HEAD)
|
||||||
|
if nHSet == 1 and EMT.PRESEL_H1 then
|
||||||
|
EMT.PRESEL_H1 = nil
|
||||||
|
elseif nHSet == 2 and EMT.PRESEL_H2 then
|
||||||
|
EMT.PRESEL_H2 = nil
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -597,7 +605,7 @@ function OnMachiningEnd()
|
|||||||
EmtOutput( sOut)
|
EmtOutput( sOut)
|
||||||
end
|
end
|
||||||
elseif not EMT.PREROT then
|
elseif not EMT.PREROT then
|
||||||
EmtOutput( '(M77)')
|
EmtOutput( 'M77')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -1038,15 +1046,22 @@ function OnRapid()
|
|||||||
EmitMoveWaitChars( EgtIf( bOnlyCharY, 1, 3))
|
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
|
||||||
if dPosA == 0 or abs( EMT.R2) < 10 then
|
if abs( dPosA) < 0.1 or abs( EMT.R2) < 10 then
|
||||||
EmitMoveDataHead( 1, { X=EMT.L2, Z=ParkCSawZ1, B=ParkCSawB1, 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})
|
EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed})
|
||||||
-- se circa verticale
|
-- se circa verticale
|
||||||
|
else
|
||||||
|
-- se arrivo da ZMAX e il pezzo è abbastanza alto, si ruota fuori
|
||||||
|
if EMT.ZMAX and EMT.SB > MaxVeOpen / 2 then
|
||||||
|
EmitMoveDataHead( 1, { X=-LimX1RotSaw, Z=ParkCSawZ1, B=ParkCSawB1, C=90, S=Speed})
|
||||||
|
EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed})
|
||||||
|
EmitMoveDataHead( 1, { X=EMT.L2, C=EMT.R1, S=Speed})
|
||||||
else
|
else
|
||||||
EmitMoveDataHead( 1, { X=EMT.L2, Z=ParkCSawZ1, B=ParkCSawB1, 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})
|
EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed})
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
EmitMoveDataHead( 1, { X=EMT.L2, Z=EMT.L3, B=EMT.R2, C=EMT.R1, TRad=dTRad, TLen=dTLen, S=Speed})
|
EmitMoveDataHead( 1, { X=EMT.L2, Z=EMT.L3, B=EMT.R2, C=EMT.R1, TRad=dTRad, TLen=dTLen, S=Speed})
|
||||||
EmitMoveStartHead( 1)
|
EmitMoveStartHead( 1)
|
||||||
-- se lavorazione in doppio
|
-- se lavorazione in doppio
|
||||||
@@ -1127,15 +1142,21 @@ function OnRapid()
|
|||||||
EmitMoveWaitChars( EgtIf( bOnlyCharY, 1, 3))
|
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
|
||||||
if dPosA == 0 or abs( EMT.R2) < 10 then
|
if abs( dPosA) < 0.1 or abs( EMT.R2) < 10 then
|
||||||
EmitMoveDataHead( 1, { X=EMT.L2, Z=ParkCSawZ1, B=ParkCSawB1, 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})
|
EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed})
|
||||||
-- se circa verticale
|
-- se circa verticale
|
||||||
|
else
|
||||||
|
-- se arrivo da ZMAX e il pezzo è abbastanza alto, si ruota fuori
|
||||||
|
if EMT.ZMAX and EMT.SB > MaxVeOpen / 2 then
|
||||||
|
EmitMoveDataHead( 1, { X=-LimX1RotSaw, Z=ParkCSawZ1, B=ParkCSawB1, C=90, S=Speed})
|
||||||
|
EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed})
|
||||||
|
EmitMoveDataHead( 1, { X=EMT.L2, C=EMT.R1, S=Speed})
|
||||||
else
|
else
|
||||||
EmitMoveDataHead( 1, { X=EMT.L2, Z=ParkCSawZ1, B=ParkCSawB1, 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})
|
EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed})
|
||||||
end
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
EmitMoveDataHead( 1, { X=EMT.L2, Z=EMT.L3, B=EMT.R2, C=EMT.R1, TRad=dTRad, TLen=dTLen, S=Speed})
|
EmitMoveDataHead( 1, { X=EMT.L2, Z=EMT.L3, B=EMT.R2, C=EMT.R1, TRad=dTRad, TLen=dTLen, S=Speed})
|
||||||
EmitMoveStartHead( 1)
|
EmitMoveStartHead( 1)
|
||||||
@@ -1209,15 +1230,22 @@ function OnRapid()
|
|||||||
EmitMoveWaitChars( EgtIf( bOnlyCharY, 1, 3))
|
EmitMoveWaitChars( EgtIf( bOnlyCharY, 1, 3))
|
||||||
|
|
||||||
-- se motosega configurata per lavorazioni di fianco o circa orizzontale. Dopo attesa movimento carrelli si devono scrivere tutti gli assi.
|
-- 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
|
if abs( dPosA) < 0.1 or abs( EMT.R2) < 10 then
|
||||||
EmitMoveDataHead( 2, { X=EMT.L2, Z=ParkCSawZ2, B=ParkCSawB2, 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})
|
EmitMoveDataHead( 2, { Z=EMT.L3, B=EMT.R2, S=Speed})
|
||||||
-- se circa verticale
|
-- se circa verticale
|
||||||
|
else
|
||||||
|
-- se arrivo da ZMAX e il pezzo è abbastanza alto, si ruota fuori
|
||||||
|
if EMT.ZMAX and EMT.SB > MaxVeOpen / 2 then
|
||||||
|
EmitMoveDataHead( 2, { X=-LimX2RotSaw, Z=ParkCSawZ2, B=ParkCSawB2, C=90, S=Speed})
|
||||||
|
EmitMoveDataHead( 2, { Z=EMT.L3, B=EMT.R2, S=Speed})
|
||||||
|
EmitMoveDataHead( 2, { X=EMT.L2, C=EMT.R1, S=Speed})
|
||||||
else
|
else
|
||||||
EmitMoveDataHead( 2, { X=EMT.L2, Z=ParkCSawZ2, B=ParkCSawB2, 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})
|
EmitMoveDataHead( 2, { Z=EMT.L3, B=EMT.R2, S=Speed})
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
EmitMoveDataHead( 2, { X=EMT.L2, Z=EMT.L3, B=EMT.R2, C=EMT.R1, TRad=dTRad, TLen=dTLen, S=Speed})
|
EmitMoveDataHead( 2, { X=EMT.L2, Z=EMT.L3, B=EMT.R2, C=EMT.R1, TRad=dTRad, TLen=dTLen, S=Speed})
|
||||||
EmitMoveStartHead( 2)
|
EmitMoveStartHead( 2)
|
||||||
-- aspetto termine esecuzione movimenti testa 2
|
-- aspetto termine esecuzione movimenti testa 2
|
||||||
@@ -1432,13 +1460,20 @@ function OnRapid()
|
|||||||
else
|
else
|
||||||
EmitMoveDataHead( 1, { X=-ParkCSawX1, Z=ParkCSawZ1, B=ParkCSawB1, C=ParkCSawC1, TRad=dTRad, TLen=dTLen, S=Speed})
|
EmitMoveDataHead( 1, { X=-ParkCSawX1, Z=ParkCSawZ1, B=ParkCSawB1, C=ParkCSawC1, TRad=dTRad, TLen=dTLen, S=Speed})
|
||||||
-- se motosega configurata per lavorazioni di fianco o circa orizzontale
|
-- se motosega configurata per lavorazioni di fianco o circa orizzontale
|
||||||
if dPosA == 0 or abs( EMT.R2) < 10 then
|
if abs( dPosA) < 0.1 or abs( EMT.R2) < 10 then
|
||||||
EmitMoveDataHead( 1, { X=EMT.L2, C=EMT.R1, S=Speed})
|
EmitMoveDataHead( 1, { X=EMT.L2, C=EMT.R1, S=Speed})
|
||||||
EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed})
|
EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed})
|
||||||
-- se circa verticale
|
-- se circa verticale
|
||||||
else
|
else
|
||||||
EmitMoveDataHead( 1, { X=EMT.L2, C=EMT.R1, S=Speed})
|
-- se arrivo da ZMAX e il pezzo è abbastanza alto, si ruota fuori
|
||||||
|
if EMT.ZMAX and EMT.SB > MaxVeOpen / 2 then
|
||||||
|
EmitMoveDataHead( 1, { X=-LimX1RotSaw, Z=ParkCSawZ1, B=ParkCSawB1, C=90, S=Speed})
|
||||||
EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed})
|
EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed})
|
||||||
|
EmitMoveDataHead( 1, { X=EMT.L2, C=EMT.R1, S=Speed})
|
||||||
|
else
|
||||||
|
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
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -1526,13 +1561,20 @@ function OnRapid()
|
|||||||
else
|
else
|
||||||
EmitMoveDataHead( 1, { X=-ParkCSawX1, Z=ParkCSawZ1, B=ParkCSawB1, C=ParkCSawC1, TRad=dTRad, TLen=dTLen, S=Speed})
|
EmitMoveDataHead( 1, { X=-ParkCSawX1, Z=ParkCSawZ1, B=ParkCSawB1, C=ParkCSawC1, TRad=dTRad, TLen=dTLen, S=Speed})
|
||||||
-- se motosega configurata per lavorazioni di fianco o circa orizzontale
|
-- se motosega configurata per lavorazioni di fianco o circa orizzontale
|
||||||
if dPosA == 0 or abs( EMT.R2) < 10 then
|
if abs( dPosA) < 0.1 or abs( EMT.R2) < 10 then
|
||||||
EmitMoveDataHead( 1, { X=EMT.L2, C=EMT.R1, S=Speed})
|
EmitMoveDataHead( 1, { X=EMT.L2, C=EMT.R1, S=Speed})
|
||||||
EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed})
|
EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed})
|
||||||
-- se circa verticale
|
-- se circa verticale
|
||||||
else
|
else
|
||||||
EmitMoveDataHead( 1, { X=EMT.L2, C=EMT.R1, S=Speed})
|
-- se arrivo da ZMAX e il pezzo è abbastanza alto, si ruota fuori
|
||||||
|
if EMT.ZMAX and EMT.SB > MaxVeOpen / 2 then
|
||||||
|
EmitMoveDataHead( 1, { X=-LimX1RotSaw, Z=ParkCSawZ1, B=ParkCSawB1, C=90, S=Speed})
|
||||||
EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed})
|
EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed})
|
||||||
|
EmitMoveDataHead( 1, { X=EMT.L2, C=EMT.R1, S=Speed})
|
||||||
|
else
|
||||||
|
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
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -1603,13 +1645,20 @@ function OnRapid()
|
|||||||
else
|
else
|
||||||
EmitMoveDataHead( 2, { X=-ParkCSawX2, Z=ParkCSawZ2, B=ParkCSawB2, C=ParkCSawC2, TRad=dTRad, TLen=dTLen, S=Speed})
|
EmitMoveDataHead( 2, { X=-ParkCSawX2, Z=ParkCSawZ2, B=ParkCSawB2, C=ParkCSawC2, TRad=dTRad, TLen=dTLen, S=Speed})
|
||||||
-- se motosega configurata per lavorazioni di fianco o circa orizzontale
|
-- se motosega configurata per lavorazioni di fianco o circa orizzontale
|
||||||
if dPosA == 0 or abs( EMT.R2) < 10 then
|
if abs( dPosA) < 0.1 or abs( EMT.R2) < 10 then
|
||||||
EmitMoveDataHead( 2, { X=EMT.L2, C=EMT.R1, S=Speed})
|
EmitMoveDataHead( 2, { X=EMT.L2, C=EMT.R1, S=Speed})
|
||||||
EmitMoveDataHead( 2, { Z=EMT.L3, B=EMT.R2, S=Speed})
|
EmitMoveDataHead( 2, { Z=EMT.L3, B=EMT.R2, S=Speed})
|
||||||
-- se circa verticale
|
-- se circa verticale
|
||||||
else
|
else
|
||||||
EmitMoveDataHead( 2, { X=EMT.L2, C=EMT.R1, S=Speed})
|
-- se arrivo da ZMAX e il pezzo è abbastanza alto, si ruota fuori
|
||||||
|
if EMT.ZMAX and EMT.SB > MaxVeOpen / 2 then
|
||||||
|
EmitMoveDataHead( 2, { X=-LimX2RotSaw, Z=ParkCSawZ2, B=ParkCSawB2, C=90, S=Speed})
|
||||||
EmitMoveDataHead( 2, { Z=EMT.L3, B=EMT.R2, S=Speed})
|
EmitMoveDataHead( 2, { Z=EMT.L3, B=EMT.R2, S=Speed})
|
||||||
|
EmitMoveDataHead( 2, { X=EMT.L2, C=EMT.R1, S=Speed})
|
||||||
|
else
|
||||||
|
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
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -2992,6 +3041,11 @@ function EmitZmax( bReset, bEnd, bXhome, PrevR1, PrevR2, bSplitCut, bUsePrevDelt
|
|||||||
-- 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 = -dXPos, Z = EMT.L3o, B = PrevR2, C = PrevR1}
|
local MovH = { X = -dXPos, Z = EMT.L3o, B = PrevR2, C = PrevR1}
|
||||||
EmitMoveDataHead( 1, MovH)
|
EmitMoveDataHead( 1, MovH)
|
||||||
|
-- se configurazione per lavorare dall'alto e il pezzo è abbastanza alto, si ruota fuori
|
||||||
|
if EMT.SB > MaxVeOpen / 2 and abs( EMT.R3) > 0.1 and abs( EMT.R2) > 70 then
|
||||||
|
EmitMoveDataHead( 1, { X=-LimX1RotSaw, C=90})
|
||||||
|
end
|
||||||
|
|
||||||
EmitMoveDataHead( 1, { Z=dSafeZ1, B=dSafeB1})
|
EmitMoveDataHead( 1, { Z=dSafeZ1, B=dSafeB1})
|
||||||
if EMT.R3 and abs( EMT.R3) < 0.1 then
|
if EMT.R3 and abs( EMT.R3) < 0.1 then
|
||||||
EmitMoveDataHead( 1, { Z=ParkCSawZ1})
|
EmitMoveDataHead( 1, { Z=ParkCSawZ1})
|
||||||
@@ -3053,6 +3107,11 @@ function EmitZmax( bReset, bEnd, bXhome, PrevR1, PrevR2, bSplitCut, bUsePrevDelt
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
-- se configurazione per lavorare dall'alto e il pezzo è abbastanza alto, si ruota fuori
|
||||||
|
if EMT.SB > MaxVeOpen / 2 and abs( EMT.R3) > 0.1 and abs( EMT.R2) > 70 then
|
||||||
|
EmitMoveDataHead( 1, { X=-LimX1RotSaw, C=90})
|
||||||
|
end
|
||||||
|
|
||||||
EmitMoveDataHead( 1, { Z=dSafeZ1, B=dSafeB1})
|
EmitMoveDataHead( 1, { Z=dSafeZ1, B=dSafeB1})
|
||||||
if EMT.R3 and abs( EMT.R3) < 0.1 then
|
if EMT.R3 and abs( EMT.R3) < 0.1 then
|
||||||
EmitMoveDataHead( 1, { Z=ParkCSawZ1})
|
EmitMoveDataHead( 1, { Z=ParkCSawZ1})
|
||||||
@@ -3128,6 +3187,11 @@ function EmitZmax( bReset, bEnd, bXhome, PrevR1, PrevR2, bSplitCut, bUsePrevDelt
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
-- se configurazione per lavorare dall'alto e il pezzo è abbastanza alto, si ruota fuori
|
||||||
|
if EMT.SB > MaxVeOpen / 2 and abs( EMT.R3) > 0.1 and abs( EMT.R2) > 70 then
|
||||||
|
EmitMoveDataHead( 2, { X=-LimX2RotSaw, C=90})
|
||||||
|
end
|
||||||
|
|
||||||
EmitMoveDataHead( 2, { Z=dSafeZ2, B=dSafeB2})
|
EmitMoveDataHead( 2, { Z=dSafeZ2, B=dSafeB2})
|
||||||
if EMT.R3 and abs( EMT.R3) < 0.1 then
|
if EMT.R3 and abs( EMT.R3) < 0.1 then
|
||||||
EmitMoveDataHead( 2, { Z=ParkCSawZ2})
|
EmitMoveDataHead( 2, { Z=ParkCSawZ2})
|
||||||
@@ -3382,6 +3446,7 @@ function PreselectNextDiffHead( nMchId, sHead)
|
|||||||
local nHSet = GetHeadSet( sHead)
|
local nHSet = GetHeadSet( sHead)
|
||||||
|
|
||||||
local bVerifyPresel = true
|
local bVerifyPresel = true
|
||||||
|
if not EMT.LOAD then
|
||||||
-- se lavorazione con testa 1 e sotto al limite massimo di preselezione della testa 2, allora non si fa preselezione
|
-- 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
|
if nHSet == 1 and Limit_T1_Presel_T2 and EMT.MAXMIN[2] < Limit_T1_Presel_T2 then
|
||||||
bVerifyPresel = false
|
bVerifyPresel = false
|
||||||
@@ -3389,6 +3454,7 @@ function PreselectNextDiffHead( nMchId, sHead)
|
|||||||
elseif nHSet == 2 and Limit_T2_Presel_T1 and EMT.MAXMIN[2] > Limit_T2_Presel_T1 then
|
elseif nHSet == 2 and Limit_T2_Presel_T1 and EMT.MAXMIN[2] > Limit_T2_Presel_T1 then
|
||||||
bVerifyPresel = false
|
bVerifyPresel = false
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
-- flag preselezione eseguita
|
-- flag preselezione eseguita
|
||||||
local bPresel = false
|
local bPresel = false
|
||||||
@@ -3456,6 +3522,15 @@ function PreselectNextDiffHead( nMchId, sHead)
|
|||||||
end
|
end
|
||||||
-- se non eseguita preselezione
|
-- se non eseguita preselezione
|
||||||
if not bPresel then
|
if not bPresel then
|
||||||
|
-- se era stato preselezionato un utensile e adesso non posso preselezionare, attendo la testa
|
||||||
|
if EMT.PRESEL_H2 then
|
||||||
|
EmitMoveWaitHead( 2)
|
||||||
|
EMT.PRESEL_H2 = nil
|
||||||
|
elseif EMT.PRESEL_H1 then
|
||||||
|
EmitMoveWaitHead( 1)
|
||||||
|
EMT.PRESEL_H1 = nil
|
||||||
|
-- se non era stato preselezionato nulla
|
||||||
|
else
|
||||||
-- mi assicuro che l'altra testa sia in parcheggio
|
-- mi assicuro che l'altra testa sia in parcheggio
|
||||||
if nHSet == 1 then
|
if nHSet == 1 then
|
||||||
-- non può essere la sega a catena
|
-- non può essere la sega a catena
|
||||||
@@ -3471,6 +3546,13 @@ function PreselectNextDiffHead( nMchId, sHead)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
else
|
||||||
|
if nHSet == 1 then
|
||||||
|
EMT.PRESEL_H2 = true
|
||||||
|
elseif nHSet == 1 then
|
||||||
|
EMT.PRESEL_H2 = true
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
|
|||||||
+37
-3
@@ -1217,15 +1217,22 @@ function OnSimulMoveStart()
|
|||||||
EMT.CHSAW_OUT = nil
|
EMT.CHSAW_OUT = nil
|
||||||
end
|
end
|
||||||
-- se motosega configurata per lavorazioni di fianco o circa orizzontale
|
-- se motosega configurata per lavorazioni di fianco o circa orizzontale
|
||||||
if dPosA == 0 or abs( EMT.R2) < 10 then
|
if abs( dPosA) < 0.1 or abs( EMT.R2) < 10 then
|
||||||
SimulMoveAxes( 'X1', EMT.L2, MCH_SIM_STEP.RAPID, 'C1', EMT.R1, MCH_SIM_STEP.COLLROT)
|
SimulMoveAxes( 'X1', EMT.L2, MCH_SIM_STEP.RAPID, 'C1', EMT.R1, MCH_SIM_STEP.COLLROT)
|
||||||
SimulMoveAxes( 'Z1', EMT.L3, MCH_SIM_STEP.RAPID, 'B1', EMT.R2, MCH_SIM_STEP.COLLROT)
|
SimulMoveAxes( 'Z1', EMT.L3, MCH_SIM_STEP.RAPID, 'B1', EMT.R2, MCH_SIM_STEP.COLLROT)
|
||||||
-- se circa verticale
|
-- se circa verticale
|
||||||
|
else
|
||||||
|
-- se arrivo da ZMAX e il pezzo è abbastanza alto, si ruota fuori
|
||||||
|
if EMT.ZMAX and EMT.SB > MaxVeOpen / 2 then
|
||||||
|
SimulMoveAxes( 'X1', LimX1RotSaw, MCH_SIM_STEP.RAPID, 'C1', 90, MCH_SIM_STEP.COLLROT)
|
||||||
|
SimulMoveAxes( 'Z1', EMT.L3, MCH_SIM_STEP.RAPID, 'B1', EMT.R2, MCH_SIM_STEP.COLLROT)
|
||||||
|
SimulMoveAxes( 'X1', EMT.L2, MCH_SIM_STEP.RAPID, 'C1', EMT.R1, MCH_SIM_STEP.COLLROT)
|
||||||
else
|
else
|
||||||
SimulMoveAxes( 'X1', EMT.L2, MCH_SIM_STEP.RAPID, 'C1', EMT.R1, MCH_SIM_STEP.COLLROT)
|
SimulMoveAxes( 'X1', EMT.L2, MCH_SIM_STEP.RAPID, 'C1', EMT.R1, MCH_SIM_STEP.COLLROT)
|
||||||
SimulMoveAxes( 'Z1', EMT.L3, MCH_SIM_STEP.RAPID, 'B1', EMT.R2, MCH_SIM_STEP.COLLROT)
|
SimulMoveAxes( 'Z1', EMT.L3, MCH_SIM_STEP.RAPID, 'B1', EMT.R2, MCH_SIM_STEP.COLLROT)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
-- altrimenti testa 2
|
-- altrimenti testa 2
|
||||||
else
|
else
|
||||||
if GetHeadTCSet( EMT.HEAD, EMT.TCPOS) == 'Head1_TC2' then
|
if GetHeadTCSet( EMT.HEAD, EMT.TCPOS) == 'Head1_TC2' then
|
||||||
@@ -1291,15 +1298,22 @@ function OnSimulMoveStart()
|
|||||||
EMT.CHSAW_OUT = nil
|
EMT.CHSAW_OUT = nil
|
||||||
end
|
end
|
||||||
-- se motosega configurata per lavorazioni di fianco o circa orizzontale
|
-- se motosega configurata per lavorazioni di fianco o circa orizzontale
|
||||||
if dPosA == 0 or abs( EMT.R2) < 10 then
|
if abs( dPosA) < 0.1 or abs( EMT.R2) < 10 then
|
||||||
SimulMoveAxes( 'X1', EMT.L2, MCH_SIM_STEP.RAPID, 'C1', EMT.R1, MCH_SIM_STEP.COLLROT)
|
SimulMoveAxes( 'X1', EMT.L2, MCH_SIM_STEP.RAPID, 'C1', EMT.R1, MCH_SIM_STEP.COLLROT)
|
||||||
SimulMoveAxes( 'Z1', EMT.L3, MCH_SIM_STEP.RAPID, 'B1', EMT.R2, MCH_SIM_STEP.COLLROT)
|
SimulMoveAxes( 'Z1', EMT.L3, MCH_SIM_STEP.RAPID, 'B1', EMT.R2, MCH_SIM_STEP.COLLROT)
|
||||||
-- se circa verticale
|
-- se circa verticale
|
||||||
|
else
|
||||||
|
-- se arrivo da ZMAX e il pezzo è abbastanza alto, si ruota fuori
|
||||||
|
if EMT.ZMAX and EMT.SB > MaxVeOpen / 2 then
|
||||||
|
SimulMoveAxes( 'X1', LimX1RotSaw, MCH_SIM_STEP.RAPID, 'C1', 90, MCH_SIM_STEP.COLLROT)
|
||||||
|
SimulMoveAxes( 'Z1', EMT.L3, MCH_SIM_STEP.RAPID, 'B1', EMT.R2, MCH_SIM_STEP.COLLROT)
|
||||||
|
SimulMoveAxes( 'X1', EMT.L2, MCH_SIM_STEP.RAPID, 'C1', EMT.R1, MCH_SIM_STEP.COLLROT)
|
||||||
else
|
else
|
||||||
SimulMoveAxes( 'X1', EMT.L2, MCH_SIM_STEP.RAPID, 'C1', EMT.R1, MCH_SIM_STEP.COLLROT)
|
SimulMoveAxes( 'X1', EMT.L2, MCH_SIM_STEP.RAPID, 'C1', EMT.R1, MCH_SIM_STEP.COLLROT)
|
||||||
SimulMoveAxes( 'Z1', EMT.L3, MCH_SIM_STEP.RAPID, 'B1', EMT.R2, MCH_SIM_STEP.COLLROT)
|
SimulMoveAxes( 'Z1', EMT.L3, MCH_SIM_STEP.RAPID, 'B1', EMT.R2, MCH_SIM_STEP.COLLROT)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
else
|
else
|
||||||
-- Dati
|
-- Dati
|
||||||
local B2Pos = EgtGetAxisPos( 'B2')
|
local B2Pos = EgtGetAxisPos( 'B2')
|
||||||
@@ -1375,10 +1389,16 @@ function OnSimulMoveStart()
|
|||||||
EMT.CHSAW_OUT = nil
|
EMT.CHSAW_OUT = nil
|
||||||
end
|
end
|
||||||
-- se motosega configurata per lavorazioni di fianco o circa orizzontale
|
-- se motosega configurata per lavorazioni di fianco o circa orizzontale
|
||||||
if dPosA == 0 or abs( EMT.R2) < 10 then
|
if abs( dPosA) < 0.1 or abs( EMT.R2) < 10 then
|
||||||
SimulMoveAxes( 'X2', EMT.L2, MCH_SIM_STEP.RAPID, 'C2', EMT.R1, MCH_SIM_STEP.COLLROT)
|
SimulMoveAxes( 'X2', EMT.L2, MCH_SIM_STEP.RAPID, 'C2', EMT.R1, MCH_SIM_STEP.COLLROT)
|
||||||
SimulMoveAxes( 'Z2', EMT.L3, MCH_SIM_STEP.RAPID, 'B2', EMT.R2, MCH_SIM_STEP.COLLROT)
|
SimulMoveAxes( 'Z2', EMT.L3, MCH_SIM_STEP.RAPID, 'B2', EMT.R2, MCH_SIM_STEP.COLLROT)
|
||||||
-- se circa verticale
|
-- se circa verticale
|
||||||
|
else
|
||||||
|
-- se arrivo da ZMAX e il pezzo è abbastanza alto, si ruota fuori
|
||||||
|
if EMT.ZMAX and EMT.SB > MaxVeOpen / 2 then
|
||||||
|
SimulMoveAxes( 'X2', LimX1RotSaw, MCH_SIM_STEP.RAPID, 'C2', 90, MCH_SIM_STEP.COLLROT)
|
||||||
|
SimulMoveAxes( 'Z2', EMT.L3, MCH_SIM_STEP.RAPID, 'B2', EMT.R2, MCH_SIM_STEP.COLLROT)
|
||||||
|
SimulMoveAxes( 'X2', EMT.L2, MCH_SIM_STEP.RAPID, 'C2', EMT.R1, MCH_SIM_STEP.COLLROT)
|
||||||
else
|
else
|
||||||
SimulMoveAxes( 'X2', EMT.L2, MCH_SIM_STEP.RAPID, 'C2', EMT.R1, MCH_SIM_STEP.COLLROT)
|
SimulMoveAxes( 'X2', EMT.L2, MCH_SIM_STEP.RAPID, 'C2', EMT.R1, MCH_SIM_STEP.COLLROT)
|
||||||
SimulMoveAxes( 'Z2', EMT.L3, MCH_SIM_STEP.RAPID, 'B2', EMT.R2, MCH_SIM_STEP.COLLROT)
|
SimulMoveAxes( 'Z2', EMT.L3, MCH_SIM_STEP.RAPID, 'B2', EMT.R2, MCH_SIM_STEP.COLLROT)
|
||||||
@@ -1387,6 +1407,7 @@ function OnSimulMoveStart()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
-- se lavorazione split, muovo per riaggancio del carro Y1
|
-- se lavorazione split, muovo per riaggancio del carro Y1
|
||||||
if EMT.SPLIT_Y1DELTA then
|
if EMT.SPLIT_Y1DELTA then
|
||||||
EMT.Y1DELTA = EMT.SPLIT_Y1DELTA
|
EMT.Y1DELTA = EMT.SPLIT_Y1DELTA
|
||||||
@@ -1872,6 +1893,11 @@ function ExecMoveZmax( bMchSplit, btoXHome)
|
|||||||
end
|
end
|
||||||
-- altrimenti sega a catena
|
-- altrimenti sega a catena
|
||||||
else
|
else
|
||||||
|
-- se configurazione per lavorare dall'alto e il pezzo è abbastanza alto, si ruota fuori
|
||||||
|
if EMT.SB > MaxVeOpen / 2 and abs( EMT.R3) > 0.1 and abs( EMT.R2) > 70 then
|
||||||
|
SimulMoveAxes( 'X1', LimX1RotSaw, MCH_SIM_STEP.RAPID, 'C1', 90, MCH_SIM_STEP.COLLROT)
|
||||||
|
end
|
||||||
|
|
||||||
SimulMoveAxes( 'Z1', HomeZ, MCH_SIM_STEP.RAPID, 'B1', HomeB, MCH_SIM_STEP.COLLROT)
|
SimulMoveAxes( 'Z1', HomeZ, MCH_SIM_STEP.RAPID, 'B1', HomeB, MCH_SIM_STEP.COLLROT)
|
||||||
if EMT.R3 and abs( EMT.R3) < 0.1 then
|
if EMT.R3 and abs( EMT.R3) < 0.1 then
|
||||||
SimulMoveAxis( 'Z1', ParkCSawZ1, MCH_SIM_STEP.RAPID)
|
SimulMoveAxis( 'Z1', ParkCSawZ1, MCH_SIM_STEP.RAPID)
|
||||||
@@ -1913,6 +1939,10 @@ function ExecMoveZmax( bMchSplit, btoXHome)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
-- se configurazione per lavorare dall'alto e il pezzo è abbastanza alto, si ruota fuori
|
||||||
|
if EMT.SB > MaxVeOpen / 2 and abs( EMT.R3) > 0.1 and abs( EMT.R2) > 70 then
|
||||||
|
SimulMoveAxes( 'X1', LimX1RotSaw, MCH_SIM_STEP.RAPID, 'C1', 90, MCH_SIM_STEP.COLLROT)
|
||||||
|
end
|
||||||
SimulMoveAxes( 'Z1', HomeZ, MCH_SIM_STEP.RAPID, 'B1', HomeB, MCH_SIM_STEP.COLLROT)
|
SimulMoveAxes( 'Z1', HomeZ, MCH_SIM_STEP.RAPID, 'B1', HomeB, MCH_SIM_STEP.COLLROT)
|
||||||
if EMT.R3 and abs( EMT.R3) < 0.1 then
|
if EMT.R3 and abs( EMT.R3) < 0.1 then
|
||||||
SimulMoveAxis( 'Z1', ParkCSawZ1, MCH_SIM_STEP.RAPID)
|
SimulMoveAxis( 'Z1', ParkCSawZ1, MCH_SIM_STEP.RAPID)
|
||||||
@@ -1967,6 +1997,10 @@ function ExecMoveZmax( bMchSplit, btoXHome)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
-- se configurazione per lavorare dall'alto e il pezzo è abbastanza alto, si ruota fuori
|
||||||
|
if EMT.SB > MaxVeOpen / 2 and abs( EMT.R3) > 0.1 and abs( EMT.R2) > 70 then
|
||||||
|
SimulMoveAxes( 'X2', LimX2RotSaw, MCH_SIM_STEP.RAPID, 'C2', 90, MCH_SIM_STEP.COLLROT)
|
||||||
|
end
|
||||||
SimulMoveAxes( 'Z2', HomeZ, MCH_SIM_STEP.RAPID, 'B2', HomeB, MCH_SIM_STEP.COLLROT)
|
SimulMoveAxes( 'Z2', HomeZ, MCH_SIM_STEP.RAPID, 'B2', HomeB, MCH_SIM_STEP.COLLROT)
|
||||||
if EMT.R3 and abs( EMT.R3) < 0.1 then
|
if EMT.R3 and abs( EMT.R3) < 0.1 then
|
||||||
SimulMoveAxis( 'Z2', ParkCSawZ2, MCH_SIM_STEP.RAPID)
|
SimulMoveAxis( 'Z2', ParkCSawZ2, MCH_SIM_STEP.RAPID)
|
||||||
|
|||||||
@@ -1,5 +1,14 @@
|
|||||||
==== Common_ONE-PF Update Log ====
|
==== Common_ONE-PF Update Log ====
|
||||||
|
|
||||||
|
Versione 3.1f5 (26/06/2026)
|
||||||
|
- (SIM-GEN) Se tasca con motosega in faccia sopra e pezzo alto, si ruota in sicurezza.
|
||||||
|
|
||||||
|
Versione 3.1f4 (17/06/2026)
|
||||||
|
- (MLDE-GEN) Corretta preselezione in caso di testa in lavoro troppo vicina a quella che sta preselezionando. Da aggiungere in MLDE parametri 'Limit_T1_Presel_T2' e 'Limit_T2_Presel_T1'
|
||||||
|
|
||||||
|
Versione 3.1f3 (08/06/2026)
|
||||||
|
- (GEN) M77 viene ora eseguita, prima era commentata.
|
||||||
|
|
||||||
Versione 3.1f2 (05/06/2026)
|
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
|
- (MLDE-GEN) Aggiunti parametri di limite asse X per decidere se fare preselezione su altra testa. Serve modifica MLDE
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -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 = '3.1f2', -- versione script
|
VERSION = '3.1f5', -- versione script
|
||||||
MIN_MACH_VER_PP_COMMON = '3.1b2' -- versione minima kernel
|
MIN_MACH_VER_PP_COMMON = '3.1b2' -- versione minima kernel
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user