Compare commits

..

3 Commits

Author SHA1 Message Date
andrea.villa 67607721ba Merge branch 'main' into develop 2026-06-05 12:04:00 +02:00
andrea.villa db163fe554 Merge remote-tracking branch 'origin/main' into develop 2026-06-03 11:49:29 +02:00
andrea.villa f14c1ed2c4 Merge remote-tracking branch 'origin/main' into develop 2026-06-03 09:32:11 +02:00
4 changed files with 62 additions and 187 deletions
+8 -90
View File
@@ -422,14 +422,6 @@ 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
@@ -605,7 +597,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
@@ -1046,22 +1038,15 @@ 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 abs( dPosA) < 0.1 or abs( EMT.R2) < 10 then if dPosA == 0 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
@@ -1142,21 +1127,15 @@ 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 abs( dPosA) < 0.1 or abs( EMT.R2) < 10 then if dPosA == 0 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)
@@ -1230,22 +1209,15 @@ 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 abs( dPosA) < 0.1 or abs( EMT.R2) < 10 then if dPosA == 0 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
@@ -1460,23 +1432,16 @@ 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 abs( dPosA) < 0.1 or abs( EMT.R2) < 10 then if dPosA == 0 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
-- 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}) 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}) EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed})
end end
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
@@ -1561,23 +1526,16 @@ 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 abs( dPosA) < 0.1 or abs( EMT.R2) < 10 then if dPosA == 0 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
-- 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}) 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}) EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed})
end end
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)
-- aspetto esecuzione movimento testa 1 -- aspetto esecuzione movimento testa 1
@@ -1645,23 +1603,16 @@ 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 abs( dPosA) < 0.1 or abs( EMT.R2) < 10 then if dPosA == 0 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
-- 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}) 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}) EmitMoveDataHead( 2, { Z=EMT.L3, B=EMT.R2, S=Speed})
end end
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 esecuzione movimento testa 2 -- aspetto esecuzione movimento testa 2
@@ -3041,11 +2992,6 @@ 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})
@@ -3107,11 +3053,6 @@ 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})
@@ -3187,11 +3128,6 @@ 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})
@@ -3446,7 +3382,6 @@ 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
@@ -3454,7 +3389,6 @@ 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
@@ -3522,15 +3456,6 @@ 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
@@ -3546,13 +3471,6 @@ 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
--------------------------------------------------------------------- ---------------------------------------------------------------------
+3 -37
View File
@@ -1217,22 +1217,15 @@ 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 abs( dPosA) < 0.1 or abs( EMT.R2) < 10 then if dPosA == 0 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
@@ -1298,22 +1291,15 @@ 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 abs( dPosA) < 0.1 or abs( EMT.R2) < 10 then if dPosA == 0 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')
@@ -1389,16 +1375,10 @@ 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 abs( dPosA) < 0.1 or abs( EMT.R2) < 10 then if dPosA == 0 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)
@@ -1407,7 +1387,6 @@ 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
@@ -1893,11 +1872,6 @@ 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)
@@ -1939,10 +1913,6 @@ 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)
@@ -1997,10 +1967,6 @@ 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)
-9
View File
@@ -1,14 +1,5 @@
==== 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
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 = '3.1f5', -- versione script VERSION = '3.1f2', -- versione script
MIN_MACH_VER_PP_COMMON = '3.1b2' -- versione minima kernel MIN_MACH_VER_PP_COMMON = '3.1b2' -- versione minima kernel
} }