Compare commits
11 Commits
ProbingWithTool
...
3.1f5
| Author | SHA1 | Date | |
|---|---|---|---|
| d624434c2e | |||
| a43c46ded2 | |||
| 2bda916a16 | |||
| 42752eefcd | |||
| 86c030f38e | |||
| 7d8bb8f03e | |||
| 016122276d | |||
| 0e78fe9c40 | |||
| 6b81b0b686 | |||
| 3c6ed86e75 | |||
| 8984f91cbc |
+194
-97
@@ -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,13 +1046,20 @@ 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
|
else
|
||||||
EmitMoveDataHead( 1, { X=EMT.L2, Z=ParkCSawZ1, B=ParkCSawB1, C=EMT.R1, S=Speed})
|
-- se arrivo da ZMAX e il pezzo è abbastanza alto, si ruota fuori
|
||||||
EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed})
|
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
|
||||||
|
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
|
||||||
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})
|
||||||
@@ -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
|
else
|
||||||
EmitMoveDataHead( 1, { X=EMT.L2, Z=ParkCSawZ1, B=ParkCSawB1, C=EMT.R1, S=Speed})
|
-- se arrivo da ZMAX e il pezzo è abbastanza alto, si ruota fuori
|
||||||
EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed})
|
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
|
||||||
|
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
|
||||||
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,13 +1230,20 @@ 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
|
else
|
||||||
EmitMoveDataHead( 2, { X=EMT.L2, Z=ParkCSawZ2, B=ParkCSawB2, C=EMT.R1, S=Speed})
|
-- se arrivo da ZMAX e il pezzo è abbastanza alto, si ruota fuori
|
||||||
EmitMoveDataHead( 2, { Z=EMT.L3, B=EMT.R2, S=Speed})
|
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
|
||||||
|
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
|
||||||
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})
|
||||||
@@ -1387,7 +1415,7 @@ function OnRapid()
|
|||||||
bMoveZbeforeX = true
|
bMoveZbeforeX = true
|
||||||
end
|
end
|
||||||
|
|
||||||
-- se vado in posizione speciale rotazione assi, poi devo ritornare alla X vera di lavoro
|
-- se vado in posizione speciale rotazione assi, poi devo ritornare alla X vera di lavoro
|
||||||
local dMoveXtoFinalPosition = false
|
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
|
||||||
@@ -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
|
||||||
EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed})
|
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
|
||||||
|
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
|
||||||
EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed})
|
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
|
||||||
|
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
|
||||||
EmitMoveDataHead( 2, { Z=EMT.L3, B=EMT.R2, S=Speed})
|
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
|
||||||
|
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
|
||||||
@@ -1845,6 +1894,7 @@ function OnLinear()
|
|||||||
local sDouFlag = EgtIf( EMT.DOU_TYPE, ' EE1', '')
|
local sDouFlag = EgtIf( EMT.DOU_TYPE, ' EE1', '')
|
||||||
EmtOutput( 'G142'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..EMT.IPLGLSTR
|
EmtOutput( 'G142'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..EMT.IPLGLSTR
|
||||||
..EgtIf( nHSet~=2 and nHSet~=22, ' EU1', ' EU2')..sDouFlag..' EF'..GetFmaxClamp())
|
..EgtIf( nHSet~=2 and nHSet~=22, ' EU1', ' EU2')..sDouFlag..' EF'..GetFmaxClamp())
|
||||||
|
EMT.PLANEACTIVE = true
|
||||||
-- emissione movimento
|
-- emissione movimento
|
||||||
local sOut = 'G0'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..
|
local sOut = 'G0'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..
|
||||||
EmtGetAxis('R2')..EmtGetAxis('R1')
|
EmtGetAxis('R2')..EmtGetAxis('R1')
|
||||||
@@ -1930,6 +1980,7 @@ function OnArc()
|
|||||||
local sDouFlag = EgtIf( EMT.DOU_TYPE, ' EE1', '')
|
local sDouFlag = EgtIf( EMT.DOU_TYPE, ' EE1', '')
|
||||||
EmtOutput( 'G142'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..EMT.IPLGLSTR
|
EmtOutput( 'G142'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..EMT.IPLGLSTR
|
||||||
..EgtIf( nHSet~=2 and nHSet~=22, ' EU1', ' EU2')..sDouFlag..' EF'..GetFmaxClamp())
|
..EgtIf( nHSet~=2 and nHSet~=22, ' EU1', ' EU2')..sDouFlag..' EF'..GetFmaxClamp())
|
||||||
|
EMT.PLANEACTIVE = true
|
||||||
-- emissione movimento
|
-- emissione movimento
|
||||||
local sOut = 'G0'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..
|
local sOut = 'G0'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..
|
||||||
EmtGetAxis('R2')..EmtGetAxis('R1')
|
EmtGetAxis('R2')..EmtGetAxis('R1')
|
||||||
@@ -2928,10 +2979,10 @@ function EmitZmax( bReset, bEnd, bXhome, PrevR1, PrevR2, bSplitCut, bUsePrevDelt
|
|||||||
-- se tastatura attiva, si disabilita la tastatura
|
-- se tastatura attiva, si disabilita la tastatura
|
||||||
-- gestione eventuale tastatura
|
-- gestione eventuale tastatura
|
||||||
local bStopProbing = EgtGetValInNotes( EMT.MCHUSERNOTES, 'PROBE', 'b') or EgtGetValInNotes( EMT.MCHUSERNOTES, 'END-PROBE', 'b')
|
local bStopProbing = EgtGetValInNotes( EMT.MCHUSERNOTES, 'PROBE', 'b') or EgtGetValInNotes( EMT.MCHUSERNOTES, 'END-PROBE', 'b')
|
||||||
if bStopProbing then
|
if EMT.PROBE and bStopProbing then
|
||||||
EmtOutput( 'G145 Z-10 EF0')
|
EmtOutput( 'G145 Z-10 EF0')
|
||||||
|
EMT.PROBE = nil
|
||||||
end
|
end
|
||||||
EMT.PROBE = nil
|
|
||||||
|
|
||||||
-- gruppo della testa
|
-- gruppo della testa
|
||||||
local nHSet = GetHeadSet( EMT.HEAD)
|
local nHSet = GetHeadSet( EMT.HEAD)
|
||||||
@@ -2990,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})
|
||||||
@@ -3051,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})
|
||||||
@@ -3110,22 +3171,27 @@ function EmitZmax( bReset, bEnd, bXhome, PrevR1, PrevR2, bSplitCut, bUsePrevDelt
|
|||||||
EmitMoveDataHead( 2, MovH)
|
EmitMoveDataHead( 2, MovH)
|
||||||
-- controlla che l'ingombro della sega a catena non possa collidere durante il suo riposizionamento
|
-- controlla che l'ingombro della sega a catena non possa collidere durante il suo riposizionamento
|
||||||
local dChSawEncumbrance = sqrt( pow( EMT.TTOTLEN, 2) + pow( ChSawLen + Mill2Offs, 2))
|
local dChSawEncumbrance = sqrt( pow( EMT.TTOTLEN, 2) + pow( ChSawLen + Mill2Offs, 2))
|
||||||
if EMT.ADIR and EMT.TDIR then
|
if EMT.ADIR and EMT.TDIR then
|
||||||
-- direzione versore sega a catena X- (copre anche eventuali inclinazioni in Y)
|
-- direzione versore sega a catena X- (copre anche eventuali inclinazioni in Y)
|
||||||
if EMT.TDIR[1] <= 0 then
|
if EMT.TDIR[1] <= 0 then
|
||||||
-- ingombro massimo di quota Z (senza pivot) + ingombro massimo sega + altezza pezzo + altezza sicurezza
|
-- ingombro massimo di quota Z (senza pivot) + ingombro massimo sega + altezza pezzo + altezza sicurezza
|
||||||
local dEncumbranceTot = EMT.L3o + Mill2Offs - dChSawEncumbrance - EMT.SB - 30
|
local dEncumbranceTot = EMT.L3o + Mill2Offs - dChSawEncumbrance - EMT.SB - 30
|
||||||
-- nuova quota Z intermedia
|
-- nuova quota Z intermedia
|
||||||
local dZUp = EMT.L3o + ( DeltaTabZ - dEncumbranceTot)
|
local dZUp = EMT.L3o + ( DeltaTabZ - dEncumbranceTot)
|
||||||
-- se la nuova quota è minore della quota di parcheggio
|
-- se la nuova quota è minore della quota di parcheggio
|
||||||
if dZUp <= ParkCSawZ2 then
|
if dZUp <= ParkCSawZ2 then
|
||||||
-- se B è oltre il punto di massimo ingombro (con l'inclinazione attuale non ha il massimo ingombro)
|
-- se B è oltre il punto di massimo ingombro (con l'inclinazione attuale non ha il massimo ingombro)
|
||||||
if asin( EMT.TDIR[3] / 1) > asin( EgtTdbGetCurrToolParam( MCH_TP.TOTLEN) / dChSawEncumbrance) and ( dEncumbranceTot < DeltaTabZ) then
|
if asin( EMT.TDIR[3] / 1) > asin( EgtTdbGetCurrToolParam( MCH_TP.TOTLEN) / dChSawEncumbrance) and ( dEncumbranceTot < DeltaTabZ) then
|
||||||
EmitMoveDataHead( 2, { Z=dZUp})
|
EmitMoveDataHead( 2, { Z=dZUp})
|
||||||
end
|
|
||||||
end
|
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})
|
||||||
@@ -3378,82 +3444,113 @@ function PreselectNextDiffHead( nMchId, sHead)
|
|||||||
|
|
||||||
-- gruppo della testa
|
-- gruppo della testa
|
||||||
local nHSet = GetHeadSet( sHead)
|
local nHSet = GetHeadSet( sHead)
|
||||||
|
|
||||||
|
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
|
||||||
|
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
|
||||||
|
end
|
||||||
|
|
||||||
-- flag preselezione eseguita
|
-- flag preselezione eseguita
|
||||||
local bPresel = false
|
local bPresel = false
|
||||||
-- recupero lavorazione successiva
|
|
||||||
local nNextMchId = EgtGetNextActiveOperation( nMchId)
|
if bVerifyPresel then
|
||||||
while nNextMchId do
|
-- recupero lavorazione successiva
|
||||||
if EgtGetOperationType( nNextMchId) ~= MCH_OY.DISP then
|
local nNextMchId = EgtGetNextActiveOperation( nMchId)
|
||||||
if EgtSetCurrMachining( nNextMchId) then
|
while nNextMchId do
|
||||||
local sNextTool = EgtGetMachiningParam( MCH_MP.TOOL)
|
if EgtGetOperationType( nNextMchId) ~= MCH_OY.DISP then
|
||||||
if EgtTdbSetCurrTool( sNextTool) then
|
if EgtSetCurrMachining( nNextMchId) then
|
||||||
local sNextHead = EgtTdbGetCurrToolParam( MCH_TP.HEAD)
|
local sNextTool = EgtGetMachiningParam( MCH_MP.TOOL)
|
||||||
local nNextHSet = GetHeadSet( sNextHead)
|
if EgtTdbSetCurrTool( sNextTool) then
|
||||||
if nNextHSet ~= nHSet then
|
local sNextHead = EgtTdbGetCurrToolParam( MCH_TP.HEAD)
|
||||||
break
|
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
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
nNextMchId = EgtGetNextActiveOperation( nNextMchId)
|
-- ripristino stato corrente
|
||||||
|
EgtSetCurrMachining( EMT.MCHID)
|
||||||
|
EgtTdbSetCurrTool( EMT.TOOL)
|
||||||
end
|
end
|
||||||
-- se esiste ed appartiene a gruppo diverso
|
-- se non eseguita preselezione
|
||||||
if nNextMchId and EgtSetCurrMachining( nNextMchId) then
|
if not bPresel then
|
||||||
local sNextTool = EgtGetMachiningParam( MCH_MP.TOOL)
|
-- se era stato preselezionato un utensile e adesso non posso preselezionare, attendo la testa
|
||||||
if EgtTdbSetCurrTool( sNextTool) then
|
if EMT.PRESEL_H2 then
|
||||||
local sNextHead = EgtTdbGetCurrToolParam( MCH_TP.HEAD)
|
EmitMoveWaitHead( 2)
|
||||||
local nNextHSet = GetHeadSet( sNextHead)
|
EMT.PRESEL_H2 = nil
|
||||||
if nNextHSet ~= nHSet then
|
elseif EMT.PRESEL_H1 then
|
||||||
local sNextTcPos = EgtTdbGetCurrToolParam( MCH_TP.TCPOS)
|
EmitMoveWaitHead( 1)
|
||||||
-- se testa attuale da caricare è sega a catena, mando l'altra prima in HomeX (per evitare possibili collisioni) e poi lancio preselezione
|
EMT.PRESEL_H1 = nil
|
||||||
if sHead == 'H13' and nHSet ~= GetHeadSet( EMT.PREVHEAD_H1) then
|
-- se non era stato preselezionato nulla
|
||||||
|
else
|
||||||
|
-- mi assicuro che l'altra testa sia in parcheggio
|
||||||
|
if nHSet == 1 then
|
||||||
|
-- non può essere la sega a catena
|
||||||
|
if EMT.PREVHEAD_H2 ~= 'H23' then
|
||||||
EmitMoveDataHead( 2, { X=-ParkX2, Z=MaxZ2, B=ParkB2, C=ParkC2, TPos=AdjustTcPos( false, EMT.PREVTCPOS_H2)})
|
EmitMoveDataHead( 2, { X=-ParkX2, Z=MaxZ2, B=ParkB2, C=ParkC2, TPos=AdjustTcPos( false, EMT.PREVTCPOS_H2)})
|
||||||
EmitMoveStartHead( 2)
|
EmitMoveStartHead( 2)
|
||||||
EmitMoveWaitHead( 2)
|
end
|
||||||
elseif sHead == 'H23' and nHSet ~= GetHeadSet( EMT.PREVHEAD_H2) then
|
else
|
||||||
|
-- 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)})
|
EmitMoveDataHead( 1, { X=-ParkX1, Z=MaxZ1, B=ParkB1, C=ParkC1, TPos=AdjustTcPos( false, EMT.PREVTCPOS_H1)})
|
||||||
EmitMoveStartHead( 1)
|
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
|
||||||
end
|
end
|
||||||
end
|
else
|
||||||
-- 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
|
|
||||||
if nHSet == 1 then
|
if nHSet == 1 then
|
||||||
-- non può essere la sega a catena
|
EMT.PRESEL_H2 = true
|
||||||
if EMT.PREVHEAD_H2 ~= 'H23' then
|
elseif nHSet == 1 then
|
||||||
EmitMoveDataHead( 2, { X=-ParkX2, Z=MaxZ2, B=ParkB2, C=ParkC2, TPos=AdjustTcPos( false, EMT.PREVTCPOS_H2)})
|
EMT.PRESEL_H2 = true
|
||||||
EmitMoveStartHead( 2)
|
|
||||||
end
|
|
||||||
else
|
|
||||||
-- 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
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
+43
-12
@@ -1217,13 +1217,20 @@ 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
|
else
|
||||||
SimulMoveAxes( 'X1', EMT.L2, MCH_SIM_STEP.RAPID, 'C1', EMT.R1, MCH_SIM_STEP.COLLROT)
|
-- se arrivo da ZMAX e il pezzo è abbastanza alto, si ruota fuori
|
||||||
SimulMoveAxes( 'Z1', EMT.L3, MCH_SIM_STEP.RAPID, 'B1', EMT.R2, MCH_SIM_STEP.COLLROT)
|
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
|
||||||
|
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)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
-- altrimenti testa 2
|
-- altrimenti testa 2
|
||||||
@@ -1291,13 +1298,20 @@ 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
|
else
|
||||||
SimulMoveAxes( 'X1', EMT.L2, MCH_SIM_STEP.RAPID, 'C1', EMT.R1, MCH_SIM_STEP.COLLROT)
|
-- se arrivo da ZMAX e il pezzo è abbastanza alto, si ruota fuori
|
||||||
SimulMoveAxes( 'Z1', EMT.L3, MCH_SIM_STEP.RAPID, 'B1', EMT.R2, MCH_SIM_STEP.COLLROT)
|
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
|
||||||
|
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)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
@@ -1375,13 +1389,20 @@ 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
|
else
|
||||||
SimulMoveAxes( 'X2', EMT.L2, MCH_SIM_STEP.RAPID, 'C2', EMT.R1, MCH_SIM_STEP.COLLROT)
|
-- se arrivo da ZMAX e il pezzo è abbastanza alto, si ruota fuori
|
||||||
SimulMoveAxes( 'Z2', EMT.L3, MCH_SIM_STEP.RAPID, 'B2', EMT.R2, MCH_SIM_STEP.COLLROT)
|
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
|
||||||
|
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)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -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)
|
||||||
@@ -1922,9 +1952,6 @@ function ExecMoveZmax( bMchSplit, btoXHome)
|
|||||||
ShowToolInTcPos( EMT.TCPOS, true)
|
ShowToolInTcPos( EMT.TCPOS, true)
|
||||||
-- nascondo l'utensile sulla testa
|
-- nascondo l'utensile sulla testa
|
||||||
EgtSetMode( EgtGetHeadId( EMT.HEAD or '') or GDB_ID.NULL, GDB_MD.HIDDEN)
|
EgtSetMode( EgtGetHeadId( EMT.HEAD or '') or GDB_ID.NULL, GDB_MD.HIDDEN)
|
||||||
EMT.PREVTOOL_H1 = nil
|
|
||||||
EMT.PREVHEAD_H1 = nil
|
|
||||||
EMT.PREVTCPOS_H1 = nil
|
|
||||||
EMT.CHSAW_OUT = true
|
EMT.CHSAW_OUT = true
|
||||||
EMT.XHOME = true
|
EMT.XHOME = true
|
||||||
end
|
end
|
||||||
@@ -1970,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)
|
||||||
|
|||||||
+8
-9
@@ -42,11 +42,11 @@
|
|||||||
|
|
||||||
-- Intestazioni
|
-- Intestazioni
|
||||||
require( 'EmtGenerator')
|
require( 'EmtGenerator')
|
||||||
EgtEnableDebug( true)
|
EgtEnableDebug( false)
|
||||||
|
|
||||||
PP_VER = '3.1c1_DEV1'
|
PP_VER = '3.1f5'
|
||||||
PP_NVER = '3.1.3.1'
|
PP_NVER = '3.1.6.5'
|
||||||
MIN_MACH_VER = '2.5k1'
|
MIN_MACH_VER = '2.7a1'
|
||||||
MACH_NAME = EgtGetCurrMachineName()
|
MACH_NAME = EgtGetCurrMachineName()
|
||||||
|
|
||||||
-- Carico i dati globali
|
-- Carico i dati globali
|
||||||
@@ -116,6 +116,7 @@ SawC2Offs = 0
|
|||||||
SawB2Offs = 0
|
SawB2Offs = 0
|
||||||
MinX1 = 700
|
MinX1 = 700
|
||||||
MaxX1 = 2735
|
MaxX1 = 2735
|
||||||
|
Limit_T1_Presel_T2 = MinX1
|
||||||
MinZ1 = -1550
|
MinZ1 = -1550
|
||||||
MaxZ1 = 0
|
MaxZ1 = 0
|
||||||
MinC1 = -275
|
MinC1 = -275
|
||||||
@@ -140,6 +141,7 @@ ParkCSaw0C1 = 0
|
|||||||
ParkCSawB1 = 0
|
ParkCSawB1 = 0
|
||||||
MinX2 = 0
|
MinX2 = 0
|
||||||
MaxX2 = 2035
|
MaxX2 = 2035
|
||||||
|
Limit_T2_Presel_T1 = MaxX2
|
||||||
MinZ2 = -1550
|
MinZ2 = -1550
|
||||||
MaxZ2 = 0
|
MaxZ2 = 0
|
||||||
MinC2 = -275
|
MinC2 = -275
|
||||||
@@ -267,14 +269,14 @@ if EgtExistsFile( sData) then
|
|||||||
if Machine.Offsets.SAW2OFFSZ then Saw2OffsZ = Machine.Offsets.SAW2OFFSZ end
|
if Machine.Offsets.SAW2OFFSZ then Saw2OffsZ = Machine.Offsets.SAW2OFFSZ end
|
||||||
if Machine.Offsets.DEFTCPOS1 then DefTcPos1 = ( 'T' .. Machine.Offsets.DEFTCPOS1) end
|
if Machine.Offsets.DEFTCPOS1 then DefTcPos1 = ( 'T' .. Machine.Offsets.DEFTCPOS1) end
|
||||||
if Machine.Offsets.DEFTCPOS2 then DefTcPos2 = ( 'T' .. Machine.Offsets.DEFTCPOS2) end
|
if Machine.Offsets.DEFTCPOS2 then DefTcPos2 = ( 'T' .. Machine.Offsets.DEFTCPOS2) end
|
||||||
|
if Machine.Offsets.LIMIT_T1_PRESEL_T2 then Limit_T1_Presel_T2 = Machine.Offsets.LIMIT_T1_PRESEL_T2 end
|
||||||
|
if Machine.Offsets.LIMIT_T2_PRESEL_T1 then Limit_T2_Presel_T1 = Machine.Offsets.LIMIT_T2_PRESEL_T1 end
|
||||||
if Machine.Offsets.NOULOAD then MaxUnloadLen = Machine.Offsets.NOULOAD end
|
if Machine.Offsets.NOULOAD then MaxUnloadLen = Machine.Offsets.NOULOAD end
|
||||||
if Machine.Offsets.MAXFEEDPINZE then MaxFeedPinze = Machine.Offsets.MAXFEEDPINZE end
|
if Machine.Offsets.MAXFEEDPINZE then MaxFeedPinze = Machine.Offsets.MAXFEEDPINZE end
|
||||||
if Machine.Offsets.MAXACC then MaxAcc = Machine.Offsets.MAXACC end
|
if Machine.Offsets.MAXACC then MaxAcc = Machine.Offsets.MAXACC end
|
||||||
if Machine.Offsets.MINACC then MinAcc = Machine.Offsets.MINACC end
|
if Machine.Offsets.MINACC then MinAcc = Machine.Offsets.MINACC end
|
||||||
if Machine.Offsets.COEFF_STIMATEMPI and Machine.Offsets.COEFF_STIMATEMPI > 0 then EstimationRapidMultiplier = Machine.Offsets.COEFF_STIMATEMPI end
|
if Machine.Offsets.COEFF_STIMATEMPI and Machine.Offsets.COEFF_STIMATEMPI > 0 then EstimationRapidMultiplier = Machine.Offsets.COEFF_STIMATEMPI end
|
||||||
if Machine.Offsets.MAXFEEDPINZE then MaxFeedPinze = Machine.Offsets.MAXFEEDPINZE end
|
if Machine.Offsets.MAXFEEDPINZE then MaxFeedPinze = Machine.Offsets.MAXFEEDPINZE end
|
||||||
if Machine.Offsets.MAXACC then MaxAcc = Machine.Offsets.MAXACC end
|
|
||||||
if Machine.Offsets.MINACC then MinAcc = Machine.Offsets.MINACC end
|
|
||||||
if Machine.Offsets.CHIUDI_PINZE_2_3_SCAMBIO then ForceToCloseRollersGate = Machine.Offsets.CHIUDI_PINZE_2_3_SCAMBIO == 1 end
|
if Machine.Offsets.CHIUDI_PINZE_2_3_SCAMBIO then ForceToCloseRollersGate = Machine.Offsets.CHIUDI_PINZE_2_3_SCAMBIO == 1 end
|
||||||
if Machine.Offsets.WOOD_DENSITY then WoodDensity = Machine.Offsets.WOOD_DENSITY end
|
if Machine.Offsets.WOOD_DENSITY then WoodDensity = Machine.Offsets.WOOD_DENSITY end
|
||||||
if Machine.Offsets.PROBE then Probe = Machine.Offsets.PROBE end -- Tastatore su entrembe le teste. 1 = solo testa 1, 2 = solo testa 2, 3 = entrambe le teste
|
if Machine.Offsets.PROBE then Probe = Machine.Offsets.PROBE end -- Tastatore su entrembe le teste. 1 = solo testa 1, 2 = solo testa 2, 3 = entrambe le teste
|
||||||
@@ -966,9 +968,6 @@ function OnSetHead()
|
|||||||
-- aggiustamenti per distanza
|
-- aggiustamenti per distanza
|
||||||
local dDist = EgtIf( EMC.DIST and abs( EMC.DIST) > 1, EMC.DIST, ChSawLen)
|
local dDist = EgtIf( EMC.DIST and abs( EMC.DIST) > 1, EMC.DIST, ChSawLen)
|
||||||
EmtModifyExitPosition( EMC.HEAD, EMC.EXIT, Point3d( 0, 0, -dDist))
|
EmtModifyExitPosition( EMC.HEAD, EMC.EXIT, Point3d( 0, 0, -dDist))
|
||||||
local vtMove = Point3d( 0, 0, -dDist) - Point3d( EMC.EXITPOS)
|
|
||||||
local ExitId = EgtGetFirstNameInGroup( EgtGetHeadId( EMC.HEAD), 'T'..tostring( EMC.EXIT))
|
|
||||||
EgtMove( ExitId, vtMove)
|
|
||||||
-- recupero valore asse A bloccato
|
-- recupero valore asse A bloccato
|
||||||
local sVal = EgtGetMachiningParam( MCH_MP.BLOCKEDAXIS)
|
local sVal = EgtGetMachiningParam( MCH_MP.BLOCKEDAXIS)
|
||||||
local CSawPosA = tonumber( sVal:sub( 3) or '')
|
local CSawPosA = tonumber( sVal:sub( 3) or '')
|
||||||
|
|||||||
+15
-2
@@ -1,10 +1,24 @@
|
|||||||
==== 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)
|
||||||
|
- (MLDE-GEN) Aggiunti parametri di limite asse X per decidere se fare preselezione su altra testa. Serve modifica MLDE
|
||||||
|
|
||||||
|
Versione 3.1f1 (03/06/2026)
|
||||||
|
- (NGE-MLDE-GEN-SIM) Versione unificata con predisposizione per gestione tastatori. Serve modificare anche la macchina, per ora gestione completa solo su PFrl.
|
||||||
|
|
||||||
Versione 3.1c2 (17/03/2026)
|
Versione 3.1c2 (17/03/2026)
|
||||||
- (SIM-GEN) Aggiunta OnSpecialApplyMachining per calcolare i carrelli da subito
|
- (SIM-GEN) Aggiunta OnSpecialApplyMachining per calcolare i carrelli da subito
|
||||||
- Aggiungendo OnSpecialApplyMachining, ora la OnSpecialGetPrevMachiningOffset lavora correttamente. ATT: MIN_MACH -> 3.1b2
|
- Aggiungendo OnSpecialApplyMachining, ora la OnSpecialGetPrevMachiningOffset lavora correttamente. ATT: MIN_MACH -> 3.1b2
|
||||||
|
|
||||||
|
|
||||||
Versione 3.1c1 (04/03/2026)
|
Versione 3.1c1 (04/03/2026)
|
||||||
- (GEN) Corretta chiamata di una variabile insesistente in caso di ONE
|
- (GEN) Corretta chiamata di una variabile insesistente in caso di ONE
|
||||||
- (SIM) Allineata simulazione a generazione
|
- (SIM) Allineata simulazione a generazione
|
||||||
@@ -75,7 +89,6 @@ Versione 2.7g1 (01/07/2025)
|
|||||||
|
|
||||||
Versione 2.7f1 (04/06/2025)
|
Versione 2.7f1 (04/06/2025)
|
||||||
- (SIM) Aggiunta gestione qualità VMILL da impostazioni macchina. Tolto parametro 'CoeffVM'.
|
- (SIM) Aggiunta gestione qualità VMILL da impostazioni macchina. Tolto parametro 'CoeffVM'.
|
||||||
- (GEN) Prima versione gestione tastatore
|
|
||||||
- (GEN) Aggiunti parametri FMAXPINZE, MAXACC, MINACC configurabili da TS3. Ticket#2052
|
- (GEN) Aggiunti parametri FMAXPINZE, MAXACC, MINACC configurabili da TS3. Ticket#2052
|
||||||
|
|
||||||
Versione 2.7e1 (28/05/2025)
|
Versione 2.7e1 (28/05/2025)
|
||||||
|
|||||||
+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.1c2', -- 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