Compare commits
16 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c4dccb3581 | |||
| e4a9896c70 | |||
| d3c09cb4d3 | |||
| 211b59c79b | |||
| f8464fa0de | |||
| 7a6bdaf637 | |||
| 73881f4042 | |||
| 92ab99cde9 | |||
| 4496302ec3 | |||
| c85df70b61 | |||
| a8f142e8d7 | |||
| 9bebdcc4e7 | |||
| f8436a983a | |||
| d7e870cf1e | |||
| 82f0eab4ae | |||
| 04ab01cba8 |
+27
-19
@@ -510,6 +510,7 @@ function OnPathStart()
|
||||
-- salvo precedenti rotanti
|
||||
EMT.R1pp = EMT.R1p
|
||||
EMT.R2pp = EMT.R2p
|
||||
EMT.R3pp = EMT.R3p
|
||||
|
||||
-- reset valori precedenti (per forzare emissione di tutti gli assi del 1° movimento)
|
||||
EmtResetPrev()
|
||||
@@ -634,7 +635,7 @@ function OnRapid()
|
||||
|
||||
local bGoToHome = false
|
||||
-- se gli assi rotanti cambiano parecchio, con motosega si va in parcheggio
|
||||
if EMT.PREVHEAD == 'H3' and EMT.HEAD == 'H3' and sET == EMT.PREVET and ( abs( EMT.R2pp - EMT.R2) > 25 or abs( EMT.R1pp - EMT.R1) > 25) then
|
||||
if EMT.PREVHEAD == 'H3' and EMT.HEAD == 'H3' and ( sET ~= EMT.PREVET or abs( EMT.R2pp - EMT.R2) > 25 or abs( EMT.R1pp - EMT.R1) > 25) then
|
||||
bGoToHome = true
|
||||
end
|
||||
|
||||
@@ -646,12 +647,14 @@ function OnRapid()
|
||||
|
||||
-- se avevo motosega, torno in zona sicura senza ruotare assi rotanti
|
||||
if not EMT.LOAD and EMT.PREVHEAD == 'H3' and EMT.FLAG2 == 1 then
|
||||
-- se ho ancora motosega, si setta già asse C, altrimenti asse C per andare in home
|
||||
local sOutPreMove = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. ' Z' .. EmtLenToString( MyZHome, 3) ..
|
||||
' B' .. EmtLenToString( EMT.R2pp, 3) .. ' C' .. EmtLenToString( EMT.R1pp, 3) ..
|
||||
' EE' .. EgtIf( bZmax, '3', '4') .. EMT.PREVsEL .. EMT.PREVsER .. EMT.PREVsET .. EMT.PREVsES
|
||||
EmtOutput( sOutPreMove)
|
||||
sOutPreMove = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. ' Z' .. EmtLenToString( MyZHome, 3) ..
|
||||
' B' .. EgtNumToString( 0, 3) .. ' C' .. EgtNumToString( EMT.R1pp, 3) .. sEE .. sEL .. sER .. sET .. sES
|
||||
' B' .. EmtLenToString( 0, 3) .. ' C' .. EmtLenToString( EMT.R1pp, 3) ..
|
||||
' EE' .. EgtIf( bZmax, '3', '4') .. EMT.PREVsEL .. EMT.PREVsER .. EMT.PREVsET .. EMT.PREVsES
|
||||
EmtOutput( sOutPreMove)
|
||||
EmtOutput( 'G101 ET1001')
|
||||
EmtOutput( 'G101 ET2001')
|
||||
@@ -663,24 +666,26 @@ function OnRapid()
|
||||
end
|
||||
|
||||
-- se carico motosega, ruoto in zona sicura prima di approcciare la lavorazione
|
||||
if not EMT.LOAD and ( EMT.HEAD == 'H3' or ( bZmax and EMT.TTOTLEN > 200)) and
|
||||
if EMT.HEAD == 'H3' and EMT.PREVHEAD ~= 'H3' then
|
||||
local sOutPreMove = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. ' Z' .. EmtLenToString( MyZHome, 3) ..
|
||||
' B' .. EgtNumToString( 0, 3) .. ' C' .. EgtNumToString( EMT.R1, 3) .. sEE .. sEL .. sER .. sET .. sES
|
||||
EmtOutput( sOutPreMove)
|
||||
sOutPreMove = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. ' Z' .. EmtLenToString( MyZHome, 3) ..
|
||||
' B' .. EgtNumToString( EMT.R2, 3) .. ' C' .. EgtNumToString( EMT.R1, 3) .. sEE .. sEL .. sER .. sET .. sES
|
||||
EmtOutput( sOutPreMove)
|
||||
EmtOutput( 'G101 ET1001')
|
||||
EmtOutput( 'G101 ET2001')
|
||||
-- se carico motosega, ruoto in zona sicura prima di approcciare la lavorazione
|
||||
elseif not EMT.LOAD and ( EMT.HEAD == 'H3' or ( bZmax and EMT.TTOTLEN > 200)) and
|
||||
( EMT.ST > BeamHeightForFixRot or ( EMT.HEAD == 'H1' and EMT.TTOTLEN > 350) or bGoToHome) and EMT.FLAG2 == 1 then
|
||||
local sEEPreMove = ' EE' .. EgtIf( bZmax, '3', '4')
|
||||
local sOutPreMove
|
||||
if EMT.HEAD == 'H3' and bGoToHome then
|
||||
sOutPreMove = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. ' Z' .. EmtLenToString( MyZHome, 3) ..
|
||||
' B' .. EgtNumToString( 0, 3) .. ' C' .. EgtNumToString( EMT.R1pp, 3) .. sEE .. sEL .. sER .. sET .. sES
|
||||
EmtOutput( sOutPreMove)
|
||||
sOutPreMove = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. ' Z' .. EmtLenToString( MyZHome, 3) ..
|
||||
' B' .. EgtNumToString( 0, 3) .. ' C' .. EgtNumToString( EMT.R1, 3) .. sEE .. sEL .. sER .. sET .. sES
|
||||
EmtOutput( sOutPreMove)
|
||||
elseif EMT.HEAD == 'H3' and EMT.PREVHEAD ~= 'H3' then
|
||||
sOutPreMove = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. ' Z' .. EmtLenToString( MyZHome, 3) ..
|
||||
' B' .. EgtNumToString( 0, 3) .. ' C' .. EgtNumToString( EMT.R1, 3) .. sEE .. sEL .. sER .. sET .. sES
|
||||
' B' .. EgtNumToString( 0, 3) .. ' C' .. EgtNumToString( EMT.R1, 3) .. sEE .. sEL .. sER .. sET .. sES
|
||||
EmtOutput( sOutPreMove)
|
||||
end
|
||||
sOutPreMove = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. ' Z' .. EmtLenToString( MyZHome, 3) ..
|
||||
' B' .. EgtNumToString( EMT.R2, 3) .. ' C' .. EgtNumToString( EMT.R1, 3) .. sEE .. sEL .. sER .. sET .. sES
|
||||
' B' .. EgtNumToString( EMT.R2, 3) .. ' C' .. EgtNumToString( EMT.R1, 3) .. sEE .. sEL .. sER .. sET .. sES
|
||||
EmtOutput( sOutPreMove)
|
||||
EmtOutput( 'G101 ET1001')
|
||||
EmtOutput( 'G101 ET2001')
|
||||
@@ -1343,7 +1348,7 @@ function PrepareUnload( sCmd)
|
||||
table.insert( EMT.AUXCMD, sMsg)
|
||||
if Cmd[2] == 'V' then
|
||||
-- se non è ultima fase c'è una barra sulla pinza Y (1)
|
||||
local sEE = EgtIf( EMT.PHASE == EgtGetPhaseCount(), '0', '1')
|
||||
local sEE = EgtIf( EMT.PHASE == EgtGetPhaseCount() or IsEnd2Phase( EMT.PHASE), '0', '1')
|
||||
local sOut = 'G111 '..Cmd[2]..Cmd[3]..' EC141 ED83 EE'..sEE..' EF'..GetFmaxClamp()
|
||||
table.insert( EMT.AUXSTR, sOut)
|
||||
end
|
||||
@@ -1352,7 +1357,7 @@ function PrepareUnload( sCmd)
|
||||
table.insert( EMT.AUXCMD, sMsg)
|
||||
if Cmd[4] == 'V' then
|
||||
-- se non è ultima fase c'è una barra sulla pinza Y (1)
|
||||
local sEAB = EgtIf( EMT.PHASE == EgtGetPhaseCount(), '111', '112')
|
||||
local sEAB = EgtIf( EMT.PHASE == EgtGetPhaseCount() or IsEnd2Phase( EMT.PHASE), '111', '112')
|
||||
local sOut = 'G111 '..Cmd[4]..Cmd[5]..' EA'..sEAB..' EB'..sEAB..' EC142 ED141 EE2 EF'..GetFmaxClamp()
|
||||
table.insert( EMT.AUXSTR, sOut)
|
||||
EMT.U_STD = true
|
||||
@@ -1512,10 +1517,13 @@ function PreparePostRotation( sCmd)
|
||||
elseif nVDelta > 0 then
|
||||
EMT.YDELTA = nil
|
||||
EMT.VDELTA = nVDelta
|
||||
end
|
||||
local sYLoad = ' Y'..EmtLenToString( LoadT)
|
||||
local sOut = 'G111'..sYLoad..' EA76'..EMT.SB..' EE0 EF'..EmtLenToString( EMT.FMAXPINZE,0)..' ET1'
|
||||
table.insert( EMT.AUXSTR, sOut)
|
||||
end
|
||||
local sYLoad = ' Y'..EmtLenToString( LoadT)
|
||||
local sOut = 'G111'..sYLoad..' EA76'..EMT.SB..' EE0 EF'..EmtLenToString( EMT.FMAXPINZE,0)..' ET1'
|
||||
table.insert( EMT.AUXSTR, sOut)
|
||||
-- setto parametri di pinzaggio reali
|
||||
EMT.SA = ' EA110'
|
||||
EMT.SE = ' EE1'
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
+28
-20
@@ -558,6 +558,7 @@ function OnPathStart()
|
||||
-- salvo precedenti rotanti
|
||||
EMT.R1pp = EMT.R1p
|
||||
EMT.R2pp = EMT.R2p
|
||||
EMT.R3pp = EMT.R3p
|
||||
|
||||
-- reset valori precedenti (per forzare emissione di tutti gli assi del 1° movimento)
|
||||
EmtResetPrev()
|
||||
@@ -683,7 +684,7 @@ function OnRapid()
|
||||
|
||||
local bGoToHome = false
|
||||
-- se gli assi rotanti cambiano parecchio, con motosega si va in parcheggio
|
||||
if EMT.PREVHEAD == 'H3' and EMT.HEAD == 'H3' and sET == EMT.PREVET and ( abs( EMT.R2pp - EMT.R2) > 25 or abs( EMT.R1pp - EMT.R1) > 25) then
|
||||
if EMT.PREVHEAD == 'H3' and EMT.HEAD == 'H3' and ( sET ~= EMT.PREVET or abs( EMT.R2pp - EMT.R2) > 25 or abs( EMT.R1pp - EMT.R1) > 25) then
|
||||
bGoToHome = true
|
||||
end
|
||||
|
||||
@@ -718,13 +719,15 @@ function OnRapid()
|
||||
|
||||
-- se avevo motosega, torno in zona sicura senza ruotare assi rotanti
|
||||
if not EMT.LOAD and EMT.PREVHEAD == 'H3' and EMT.FLAG2 == 1 then
|
||||
-- se ho ancora motosega, si setta già asse C, altrimenti asse C per andare in home
|
||||
local sOutPreMove = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. ' Z' .. EmtLenToString( MyZHome, 3) ..
|
||||
' B' .. EmtLenToString( EMT.R2pp, 3) .. ' C' .. EmtLenToString( EMT.R1pp, 3) ..
|
||||
' EE' .. EgtIf( bZmax, '3', '4') .. EMT.PREVsEL .. EMT.PREVsER .. EMT.PREVsET .. EMT.PREVsES
|
||||
EmtOutput( sOutPreMove)
|
||||
sOutPreMove = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. ' Z' .. EmtLenToString( MyZHome, 3) ..
|
||||
' B' .. EgtNumToString( 0, 3) .. ' C' .. EgtNumToString( EMT.R1, 3) .. sEE .. sEL .. sER .. sET .. sES
|
||||
EmtOutput( sOutPreMove)
|
||||
' B' .. EmtLenToString( 0, 3) .. ' C' .. EmtLenToString( EMT.R1pp, 3) ..
|
||||
' EE' .. EgtIf( bZmax, '3', '4') .. EMT.PREVsEL .. EMT.PREVsER .. EMT.PREVsET .. EMT.PREVsES
|
||||
EmtOutput( sOutPreMove)
|
||||
EmtOutput( 'G101 ET1001')
|
||||
EmtOutput( 'G101 ET2001')
|
||||
end
|
||||
@@ -735,24 +738,26 @@ function OnRapid()
|
||||
end
|
||||
|
||||
-- se carico motosega, ruoto in zona sicura prima di approcciare la lavorazione
|
||||
if not EMT.LOAD and ( EMT.HEAD == 'H3' or ( bZmax and EMT.TTOTLEN > 200)) and
|
||||
if EMT.HEAD == 'H3' and EMT.PREVHEAD ~= 'H3' then
|
||||
local sOutPreMove = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. ' Z' .. EmtLenToString( MyZHome, 3) ..
|
||||
' B' .. EgtNumToString( 0, 3) .. ' C' .. EgtNumToString( EMT.R1, 3) .. sEE .. sEL .. sER .. sET .. sES
|
||||
EmtOutput( sOutPreMove)
|
||||
sOutPreMove = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. ' Z' .. EmtLenToString( MyZHome, 3) ..
|
||||
' B' .. EgtNumToString( EMT.R2, 3) .. ' C' .. EgtNumToString( EMT.R1, 3) .. sEE .. sEL .. sER .. sET .. sES
|
||||
EmtOutput( sOutPreMove)
|
||||
EmtOutput( 'G101 ET1001')
|
||||
EmtOutput( 'G101 ET2001')
|
||||
-- ruoto in zona sicura prima di approcciare la lavorazione
|
||||
elseif not EMT.LOAD and ( EMT.HEAD == 'H3' or ( bZmax and EMT.TTOTLEN > 200)) and
|
||||
( EMT.ST > BeamHeightForFixRot or ( EMT.HEAD == 'H1' and EMT.TTOTLEN > 350) or bGoToHome) and EMT.FLAG2 == 1 then
|
||||
local sEEPreMove = ' EE' .. EgtIf( bZmax, '3', '4')
|
||||
local sOutPreMove
|
||||
if EMT.HEAD == 'H3' and bGoToHome then
|
||||
sOutPreMove = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. ' Z' .. EmtLenToString( MyZHome, 3) ..
|
||||
' B' .. EgtNumToString( 0, 3) .. ' C' .. EgtNumToString( EMT.R1pp, 3) .. sEE .. sEL .. sER .. sET .. sES
|
||||
EmtOutput( sOutPreMove)
|
||||
sOutPreMove = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. ' Z' .. EmtLenToString( MyZHome, 3) ..
|
||||
' B' .. EgtNumToString( 0, 3) .. ' C' .. EgtNumToString( EMT.R1, 3) .. sEE .. sEL .. sER .. sET .. sES
|
||||
EmtOutput( sOutPreMove)
|
||||
elseif EMT.HEAD == 'H3' and EMT.PREVHEAD ~= 'H3' then
|
||||
sOutPreMove = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. ' Z' .. EmtLenToString( MyZHome, 3) ..
|
||||
' B' .. EgtNumToString( 0, 3) .. ' C' .. EgtNumToString( EMT.R1, 3) .. sEE .. sEL .. sER .. sET .. sES
|
||||
' B' .. EgtNumToString( 0, 3) .. ' C' .. EgtNumToString( EMT.R1, 3) .. sEE .. sEL .. sER .. sET .. sES
|
||||
EmtOutput( sOutPreMove)
|
||||
end
|
||||
sOutPreMove = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. ' Z' .. EmtLenToString( MyZHome, 3) ..
|
||||
' B' .. EgtNumToString( EMT.R2, 3) .. ' C' .. EgtNumToString( EMT.R1, 3) .. sEE .. sEL .. sER .. sET .. sES
|
||||
' B' .. EgtNumToString( EMT.R2, 3) .. ' C' .. EgtNumToString( EMT.R1, 3) .. sEE .. sEL .. sER .. sET .. sES
|
||||
EmtOutput( sOutPreMove)
|
||||
EmtOutput( 'G101 ET1001')
|
||||
EmtOutput( 'G101 ET2001')
|
||||
@@ -1430,7 +1435,7 @@ function PrepareUnload( sCmd)
|
||||
table.insert( EMT.AUXCMD, sMsg)
|
||||
if Cmd[2] == 'V' then
|
||||
-- se non è ultima fase c'è una barra sulla pinza Y (1)
|
||||
local sEE = EgtIf( EMT.PHASE == EgtGetPhaseCount(), '0', '1')
|
||||
local sEE = EgtIf( EMT.PHASE == EgtGetPhaseCount() or IsEnd2Phase( EMT.PHASE), '0', '1')
|
||||
local sOut = 'G111 '..Cmd[2]..Cmd[3]..' EC141 ED83 EE'..sEE..' EF'..GetFmaxClamp()
|
||||
table.insert( EMT.AUXSTR, sOut)
|
||||
end
|
||||
@@ -1439,7 +1444,7 @@ function PrepareUnload( sCmd)
|
||||
table.insert( EMT.AUXCMD, sMsg)
|
||||
if Cmd[4] == 'V' then
|
||||
-- se non è ultima fase c'è una barra sulla pinza Y (1)
|
||||
local sEAB = EgtIf( EMT.PHASE == EgtGetPhaseCount(), '111', '112')
|
||||
local sEAB = EgtIf( EMT.PHASE == EgtGetPhaseCount() or IsEnd2Phase( EMT.PHASE), '111', '112')
|
||||
local sOut = 'G111 '..Cmd[4]..Cmd[5]..' EA'..sEAB..' EB'..sEAB..' EC142 ED141 EE2 EF'..GetFmaxClamp()
|
||||
table.insert( EMT.AUXSTR, sOut)
|
||||
EMT.U_STD = true
|
||||
@@ -1599,10 +1604,13 @@ function PreparePostRotation( sCmd)
|
||||
elseif nVDelta > 0 then
|
||||
EMT.YDELTA = nil
|
||||
EMT.VDELTA = nVDelta
|
||||
end
|
||||
local sYLoad = ' Y'..EmtLenToString( LoadT)
|
||||
local sOut = 'G111'..sYLoad..' EA76'..EMT.SB..' EE0 EF'..EmtLenToString( EMT.FMAXPINZE,0)..' ET1'
|
||||
table.insert( EMT.AUXSTR, sOut)
|
||||
end
|
||||
local sYLoad = ' Y'..EmtLenToString( LoadT)
|
||||
local sOut = 'G111'..sYLoad..' EA76'..EMT.SB..' EE0 EF'..EmtLenToString( EMT.FMAXPINZE,0)..' ET1'
|
||||
table.insert( EMT.AUXSTR, sOut)
|
||||
-- setto parametri di pinzaggio reali
|
||||
EMT.SA = ' EA110'
|
||||
EMT.SE = ' EE1'
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
+40
-21
@@ -525,6 +525,9 @@ function OnMachiningEnd()
|
||||
EMT.PREVTOOL = EMT.TOOL
|
||||
EMT.PREVHEAD = EMT.HEAD
|
||||
EMT.PREVS = EMT.S
|
||||
-- salvo posizione
|
||||
EMT.PREVTCPOS = AdjustTcPos( false)
|
||||
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
@@ -539,6 +542,7 @@ function OnPathStart()
|
||||
-- salvo precedenti rotanti
|
||||
EMT.R1pp = EMT.R1p
|
||||
EMT.R2pp = EMT.R2p
|
||||
EMT.R3pp = EMT.R3p
|
||||
|
||||
-- reset valori precedenti (per forzare emissione di tutti gli assi del 1° movimento)
|
||||
EmtResetPrev()
|
||||
@@ -659,9 +663,11 @@ function OnRapid()
|
||||
end
|
||||
end
|
||||
|
||||
local sTcPosReal = AdjustTcPos( false)
|
||||
|
||||
local bGoToHome = false
|
||||
-- se gli assi rotanti cambiano parecchio, con motosega si va in parcheggio
|
||||
if EMT.PREVHEAD == 'H3' and EMT.HEAD == 'H3' and EMT.TCPOS == EMT.PREVTCPOS and ( abs( EMT.R2pp - EMT.R2) > 25 or abs( EMT.R1pp - EMT.R1) > 25) then
|
||||
if EMT.PREVHEAD == 'H3' and EMT.HEAD == 'H3' and ( sTcPosReal ~= EMT.PREVTCPOS or abs( EMT.R2pp - EMT.R2) > 25 or abs( EMT.R1pp - EMT.R1) > 25) then
|
||||
bGoToHome = true
|
||||
end
|
||||
|
||||
@@ -676,9 +682,9 @@ function OnRapid()
|
||||
' P8=0' .. ' P9=0' .. ' P10=' .. EgtIf( bZmax, '3', '4')
|
||||
EmtOutput( sOutPreMove)
|
||||
sOutPreMove = 'M101 P1=1' .. ' P2=' .. EmtLenToString( -SafeXRotAxes, EMT.DECMACRO) .. ' P3=' .. EmtLenToString( MyZHome, EMT.DECMACRO) ..
|
||||
' P4=' .. EgtNumToString( 0, EMT.DECMACRO) .. ' P5=' .. EgtNumToString( EMT.R1pp, EMT.DECMACRO) ..
|
||||
' P6=' .. AdjustTcPos( false) .. ' P7=' .. EgtNumToString( EMT.S, 0) ..
|
||||
' P8=0' .. ' P9=0' .. ' P10=' .. EgtIf( bZmax, '3', '4')
|
||||
' P4=' .. EgtNumToString( 0, EMT.DECMACRO) .. ' P5=' .. EgtNumToString( EMT.R1pp, EMT.DECMACRO) ..
|
||||
' P6=' .. EgtNumToString( EMT.PREVTCPOS, EMT.DECMACRO) .. ' P7=' .. EgtNumToString( EMT.PREVS, 0) ..
|
||||
' P8=0' .. ' P9=0' .. ' P10=' .. EgtIf( bZmax, '3', '4')
|
||||
EmtOutput( sOutPreMove)
|
||||
EmtOutput( 'M101 P1=2')
|
||||
EmtOutput( 'M101 P1=3')
|
||||
@@ -690,21 +696,33 @@ function OnRapid()
|
||||
end
|
||||
|
||||
-- se carico motosega, ruoto in zona sicura prima di approcciare la lavorazione
|
||||
if not EMT.LOAD and ( EMT.HEAD == 'H3' or ( bZmax and EMT.TTOTLEN > 200)) and
|
||||
( EMT.ST > BeamHeightForFixRot or ( EMT.HEAD == 'H1' and EMT.TTOTLEN > 350) or bGoToHome) and EMT.FLAG2 == 1 then
|
||||
local sOutPreMove
|
||||
if EMT.HEAD == 'H3' and bGoToHome then
|
||||
sOutPreMove = 'M101 P1=1' .. ' P2=' .. EmtLenToString( -SafeXRotAxes, EMT.DECMACRO) .. ' P3=' .. EmtLenToString( MyZHome, EMT.DECMACRO) ..
|
||||
' P4=' .. EgtNumToString( 0, EMT.DECMACRO) .. ' P5=' .. EgtNumToString( EMT.R1pp, EMT.DECMACRO) ..
|
||||
' P6=' .. AdjustTcPos( false) .. ' P7=' .. EgtNumToString( EMT.S, 0) ..
|
||||
' P8=0' .. ' P9=0' .. ' P10=' .. EgtIf( bZmax, '3', '4')
|
||||
EmtOutput( sOutPreMove)
|
||||
sOutPreMove = 'M101 P1=1' .. ' P2=' .. EmtLenToString( -SafeXRotAxes, EMT.DECMACRO) .. ' P3=' .. EmtLenToString( MyZHome, EMT.DECMACRO) ..
|
||||
if EMT.HEAD == 'H3' and EMT.PREVHEAD ~= 'H3' then
|
||||
local sOutPreMove = 'M101 P1=1' .. ' P2=' .. EmtLenToString( -SafeXRotAxes, EMT.DECMACRO) .. ' P3=' .. EmtLenToString( MyZHome, EMT.DECMACRO) ..
|
||||
' P4=' .. EgtNumToString( 0, EMT.DECMACRO) .. ' P5=' .. EgtNumToString( EMT.R1, EMT.DECMACRO) ..
|
||||
' P6=' .. AdjustTcPos( false) .. ' P7=' .. EgtNumToString( EMT.S, 0) ..
|
||||
' P8=0' .. ' P9=0' .. ' P10=' .. EgtIf( bZmax, '3', '4')
|
||||
if EMT.LOAD then
|
||||
ParkLine( sOutPreMove)
|
||||
else
|
||||
EmtOutput( sOutPreMove)
|
||||
elseif EMT.HEAD == 'H3' and EMT.PREVHEAD ~= 'H3' then
|
||||
end
|
||||
sOutPreMove = 'M101 P1=1' .. ' P2=' .. EmtLenToString( -SafeXRotAxes, EMT.DECMACRO) .. ' P3=' .. EmtLenToString( MyZHome, EMT.DECMACRO) ..
|
||||
' P4=' .. EgtNumToString( EMT.R2, EMT.DECMACRO) .. ' P5=' .. EgtNumToString( EMT.R1, EMT.DECMACRO) ..
|
||||
' P6=' .. AdjustTcPos( false) .. ' P7=' .. EgtNumToString( EMT.S, 0) ..
|
||||
' P8=0' .. ' P9=0' .. ' P10=' .. EgtIf( bZmax, '3', '4')
|
||||
if EMT.LOAD then
|
||||
ParkLine( sOutPreMove)
|
||||
ParkLine( 'M101 P1=2')
|
||||
ParkLine( 'M101 P1=3')
|
||||
else
|
||||
EmtOutput( sOutPreMove)
|
||||
EmtOutput( 'M101 P1=2')
|
||||
EmtOutput( 'M101 P1=3')
|
||||
end
|
||||
elseif not EMT.LOAD and ( EMT.HEAD == 'H3' or ( bZmax and EMT.TTOTLEN > 200)) and
|
||||
( EMT.ST > BeamHeightForFixRot or ( EMT.HEAD == 'H1' and EMT.TTOTLEN > 350) or bGoToHome) and EMT.FLAG2 == 1 then
|
||||
local sOutPreMove
|
||||
if EMT.HEAD == 'H3' and bGoToHome then
|
||||
sOutPreMove = 'M101 P1=1' .. ' P2=' .. EmtLenToString( -SafeXRotAxes, EMT.DECMACRO) .. ' P3=' .. EmtLenToString( MyZHome, EMT.DECMACRO) ..
|
||||
' P4=' .. EgtNumToString( 0, EMT.DECMACRO) .. ' P5=' .. EgtNumToString( EMT.R1, EMT.DECMACRO) ..
|
||||
' P6=' .. AdjustTcPos( false) .. ' P7=' .. EgtNumToString( EMT.S, 0) ..
|
||||
@@ -1608,10 +1626,13 @@ function PreparePostRotation( sCmd)
|
||||
elseif nVDelta > 0 then
|
||||
EMT.YDELTA = nil
|
||||
EMT.VDELTA = nVDelta
|
||||
end
|
||||
local sYLoad = ' P2='..EmtLenToString( LoadT)
|
||||
local sOut = 'M111 P1=11'..sYLoad..' P4=76'..EMT.SB..' P8=0 P9='..GetFmaxClamp()
|
||||
table.insert( EMT.AUXSTR, sOut)
|
||||
end
|
||||
local sYLoad = ' P2='..EmtLenToString( LoadT)
|
||||
local sOut = 'M111 P1=11'..sYLoad..' P4=76'..EMT.SB..' P8=0 P9='..GetFmaxClamp()
|
||||
table.insert( EMT.AUXSTR, sOut)
|
||||
-- setto parametri di pinzaggio reali
|
||||
EMT.SA = ' P4=110'
|
||||
EMT.SE = ' P8=1'
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1760,8 +1781,6 @@ function AdjustTcPos( bLen3)
|
||||
sPos = '0' .. sPos
|
||||
end
|
||||
end
|
||||
-- salvo posizione
|
||||
EMT.PREVTCPOS = sPos
|
||||
return sPos
|
||||
end
|
||||
|
||||
|
||||
+37
-27
@@ -219,7 +219,8 @@ function OnSimulDispositionStart()
|
||||
EMT.LOAD = true
|
||||
-- Se vero inizio e abilitato creo gli Zmap
|
||||
EMT.VMILL = {}
|
||||
if not EMT.SIM1ST and EgtGetInfo( EgtGetCurrMachGroup(), 'Vm', 'b') then
|
||||
if not EMT.SIM1ST then
|
||||
local bShowVMill = EgtGetInfo( EgtGetCurrMachGroup(), 'Vm', 'b')
|
||||
local nLastOrd = GetPhaseOrd( EgtGetPhaseCount())
|
||||
local nPartRawId = EgtGetFirstRawPart()
|
||||
while nPartRawId do
|
||||
@@ -245,7 +246,7 @@ function OnSimulDispositionStart()
|
||||
-- determino la risoluzione dello Zmap
|
||||
local dTol = 4.71
|
||||
if EmtGetVMillStep then
|
||||
dTol = EmtGetVMillStep( b3Raw:getDimX(), b3Raw:getDimY(), b3Raw:getDimZ(), dTol)
|
||||
dTol = EmtGetVMillStep( b3Raw:getDimX(), b3Raw:getDimY(), b3Raw:getDimZ(), EMT.VMILLTOL or dTol)
|
||||
else
|
||||
local dArea = b3Raw:getDimX() * b3Raw:getDimY() + b3Raw:getDimX() * b3Raw:getDimZ() + b3Raw:getDimY() * b3Raw:getDimZ()
|
||||
if dArea < 0.075e6 then
|
||||
@@ -261,21 +262,25 @@ function OnSimulDispositionStart()
|
||||
elseif dArea < 2.4e6 then
|
||||
dTol = 3.77
|
||||
end
|
||||
dTol = min( dTol, EMT.VMILLTOL or dTol) -- imposto dTol al valore minore tra quello per volume e quello per spessore lama
|
||||
end
|
||||
dTol = min( dTol, EMT.VMILLTOL or dTol) -- imposto dTol al valore minore tra quello per volume e quello per spessore lama
|
||||
-- creo lo Zmap
|
||||
local VMillId = EgtVolZmapBox( nPartRawId, b3Raw:getMin(), b3Raw:getDimX(), b3Raw:getDimY(), b3Raw:getDimZ(), dTol, true, GDB_RT.GLOB)
|
||||
if VMillId then
|
||||
EgtSetName( VMillId, 'VMill')
|
||||
EgtSetLevel( VMillId, GDB_LV.TEMP)
|
||||
EgtSetColor( VMillId, EgtGetColor( nSolId), false)
|
||||
-- nascondo le altre geometrie
|
||||
local nId = EgtGetFirstInGroup( nPartRawId)
|
||||
while nId do
|
||||
if nId ~= VMillId then
|
||||
EgtSetStatus( nId, GDB_ST.OFF)
|
||||
if bShowVMill then
|
||||
-- nascondo le altre geometrie
|
||||
local nId = EgtGetFirstInGroup( nPartRawId)
|
||||
while nId do
|
||||
if nId ~= VMillId then
|
||||
EgtSetStatus( nId, GDB_ST.OFF)
|
||||
end
|
||||
nId = EgtGetNext( nId)
|
||||
end
|
||||
nId = EgtGetNext( nId)
|
||||
else
|
||||
EgtSetStatus( VMillId, GDB_ST.OFF)
|
||||
end
|
||||
table.insert( EMT.VMILL, VMillId)
|
||||
end
|
||||
@@ -347,7 +352,9 @@ function OnSimulDispositionStart()
|
||||
-- gestione eventuale scarto affettato successivo
|
||||
if EMT.VMILL and #EMT.VMILL > 0 then
|
||||
EMT.SCRAP = nScrapRawId
|
||||
EgtSetStatus( EMT.SCRAP or GDB_ID.NULL, GDB_ST.OFF)
|
||||
if EgtGetInfo( EgtGetCurrMachGroup(), 'Vm', 'b') then
|
||||
EgtSetStatus( EMT.SCRAP or GDB_ID.NULL, GDB_ST.OFF)
|
||||
end
|
||||
else
|
||||
EMT.SCRAP = nil
|
||||
end
|
||||
@@ -560,9 +567,8 @@ function OnSimulToolSelect( dPosA)
|
||||
end
|
||||
-- imposto il valore di A
|
||||
EgtSetAxisPos( 'A', dPosA)
|
||||
if abs( dPosA) < 0.1 then
|
||||
EgtSetAxisPos( 'C', EgtIf( BD.RIGHT_LOAD, 180, 0))
|
||||
end
|
||||
local dHomeC = GetChainSawCHomeFromVirtualAxis( dPosA)
|
||||
EgtSetAxisPos( 'C', dHomeC)
|
||||
EgtSetAxisPos( 'B', 0)
|
||||
-- se aggregato per fresa tipo blockhaus
|
||||
elseif EMT.HEAD == 'H7' then
|
||||
@@ -607,12 +613,7 @@ function OnSimulToolDeselect()
|
||||
SimulMoveAxis( 'X', SafeXRotAxes, MCH_SIM_STEP.RAPID)
|
||||
-- raddrizzo asse B prima di ruotare il C
|
||||
SimulMoveAxis( 'B', 0, MCH_SIM_STEP.COLLROT)
|
||||
local dPosA = EgtGetAxisPos( 'A')
|
||||
if abs( dPosA) < 0.1 then
|
||||
SimulMoveAxes( 'B', 0, MCH_SIM_STEP.COLLROT, 'C', EgtIf( BD.RIGHT_LOAD, -180, 0), MCH_SIM_STEP.COLLROT)
|
||||
else
|
||||
SimulMoveAxes( 'B', 0, MCH_SIM_STEP.COLLROT, 'C', EgtIf( BD.RIGHT_LOAD, 90, 270), MCH_SIM_STEP.COLLROT)
|
||||
end
|
||||
SimulMoveAxis( 'C', 0, MCH_SIM_STEP.COLLROT)
|
||||
SimulMoveAxis( 'X', 0, MCH_SIM_STEP.RAPID)
|
||||
-- movimento scarico rinvio
|
||||
elseif EMT.HEAD == 'H5' or EMT.HEAD == 'H6' then
|
||||
@@ -655,12 +656,7 @@ function OnSimulToolDeselect()
|
||||
SimulMoveAxes( 'B', EgtIf( GetTCSet( EMT.TCPOS) == 1, 90, -90), MCH_SIM_STEP.RAPROT, 'C', EgtIf( BD.RIGHT_LOAD, 90, -90), MCH_SIM_STEP.RAPROT)
|
||||
else
|
||||
if EMT.NEXTHEAD == 'H3' then
|
||||
local dPosA = EgtGetAxisPos( 'A')
|
||||
if abs( dPosA) < 0.1 then
|
||||
SimulMoveAxes( 'B', 0, MCH_SIM_STEP.RAPROT, 'C', EgtIf( BD.RIGHT_LOAD, 90, 270), MCH_SIM_STEP.RAPROT)
|
||||
else
|
||||
SimulMoveAxes( 'B', 0, MCH_SIM_STEP.COLLROT, 'C', EgtIf( BD.RIGHT_LOAD, -180, 0), MCH_SIM_STEP.COLLROT)
|
||||
end
|
||||
SimulMoveAxes( 'B', 0, MCH_SIM_STEP.RAPROT, 'C', 0, MCH_SIM_STEP.RAPROT)
|
||||
else
|
||||
SimulMoveAxes( 'B', 0, MCH_SIM_STEP.RAPROT, 'C', EgtIf( BD.RIGHT_LOAD, 90, -90), MCH_SIM_STEP.RAPROT)
|
||||
end
|
||||
@@ -851,10 +847,15 @@ function OnSimulMoveStart()
|
||||
EMT.MCHFIRST = false
|
||||
local bZmax = ( EMT.TOOL ~= EMT.PREVTOOL or EMT.L3 > -1)
|
||||
-- con pezzi alti aggiorno gli assi rotanti prima di muovermi sopra il pezzo
|
||||
if not EMT.LOAD and EMT.MOVE == 0 and ( EMT.HEAD == 'H3' or ( bZmax and EMT.TOTLEN > 200)) and
|
||||
if EMT.HEAD == 'H3' and EMT.PREVHEAD ~= 'H3' then
|
||||
SimulMoveAxis( 'X', SafeXRotAxes, MCH_SIM_STEP.RAPID)
|
||||
SimulMoveAxis( 'B', 0, MCH_SIM_STEP.COLLROT)
|
||||
SimulMoveAxis( 'C', EMT.R1, MCH_SIM_STEP.COLLROT)
|
||||
SimulMoveAxis( 'B', EMT.R2, MCH_SIM_STEP.COLLROT)
|
||||
elseif not EMT.LOAD and EMT.MOVE == 0 and ( EMT.HEAD == 'H3' or ( bZmax and EMT.TOTLEN > 200)) and
|
||||
( EMT.HT > BeamHeightForFixRot or ( EMT.HEAD == 'H1' and EMT.TOTLEN > 350) or bGoToHome) and EMT.FLAG2 == 1 then
|
||||
-- se motosega mi muovo a X di sicurezza per ruotare, prima si raddrizza B e poi C in posizione
|
||||
if EMT.HEAD == 'H3' or bGoToHome then
|
||||
if EMT.HEAD == 'H3' and bGoToHome then
|
||||
SimulMoveAxis( 'X', SafeXRotAxes, MCH_SIM_STEP.RAPID)
|
||||
SimulMoveAxis( 'B', 0, MCH_SIM_STEP.COLLROT)
|
||||
SimulMoveAxis( 'C', EMT.R1, MCH_SIM_STEP.COLLROT)
|
||||
@@ -1045,6 +1046,8 @@ end
|
||||
function ExecUnloading()
|
||||
if EMT.VMILL and #EMT.VMILL > 0 then
|
||||
local vMillId = EMT.VMILL[1]
|
||||
-- grezzo di appartenenza
|
||||
local nPartRawId = EgtGetParent( vMillId)
|
||||
-- gruppo dei Vmill
|
||||
local nVmGrpId = EgtGetFirstNameInGroup( GDB_ID.ROOT, 'VMill')
|
||||
-- li sposto per lasciare spazio al nuovo pezzo
|
||||
@@ -1059,6 +1062,7 @@ function ExecUnloading()
|
||||
local vtMove = Vector3d( 0, EgtIf( BD.RIGHT_LOAD, 450, -450), 0)
|
||||
if EMT.FALL then vtMove = Vector3d( 0, EgtIf( BD.RIGHT_LOAD, 500, -500), -750) end
|
||||
EgtMove( nLayId, vtMove, GDB_RT.GLOB)
|
||||
EgtSetStatus( vMillId, GDB_ST.ON)
|
||||
EgtSetLevel( vMillId, GDB_LV.USER)
|
||||
-- aggiungo gli spigoli
|
||||
if EgtVolZmapSetShowEdges then
|
||||
@@ -1077,6 +1081,12 @@ function ExecUnloading()
|
||||
EgtDraw()
|
||||
-- se finito
|
||||
if EMT.PHASE == EgtGetPhaseCount() then
|
||||
-- in ogni caso, nascondo ultimo pezzo
|
||||
local nId = EgtGetFirstInGroup( nPartRawId)
|
||||
while nId do
|
||||
EgtSetStatus( nId, GDB_ST.OFF)
|
||||
nId = EgtGetNext( nId)
|
||||
end
|
||||
-- se impostato di salvare i Vmill, lo faccio
|
||||
local sMachIni = EgtGetCurrMachineDir() .. '\\' .. EgtGetCurrMachineName() .. '.ini'
|
||||
if EgtGetStringFromIni( 'VMill', 'Save', '', sMachIni) == '1' then
|
||||
|
||||
+10
-10
@@ -1572,8 +1572,8 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
||||
dMaxMovePilgrimStepSingleClampY = MaxY - dYPosI
|
||||
dMaxMovePilgrimStepSingleClampV = - MinV + dVPosI
|
||||
else
|
||||
dMaxMovePilgrimStepDoubleClamp = MaxY - MinY - MinV + MaxV
|
||||
dMaxMovePilgrimStepSingleClampY = MaxY - MinY
|
||||
dMaxMovePilgrimStepDoubleClamp = MaxY - MyMinY - MinV + MaxV
|
||||
dMaxMovePilgrimStepSingleClampY = MaxY - MyMinY
|
||||
dMaxMovePilgrimStepSingleClampV = - MinV + MaxV
|
||||
end
|
||||
|
||||
@@ -1863,8 +1863,8 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
||||
dTPosI = dTPosA
|
||||
dYPosI = dYPosA
|
||||
dVPosI = dVPosA
|
||||
dMaxMovePilgrimStepDoubleClamp = MaxY - MinY - MinV + MaxV
|
||||
dMaxMovePilgrimStepSingleClampY = MaxY - MinY
|
||||
dMaxMovePilgrimStepDoubleClamp = MaxY - MyMinY - MinV + MaxV
|
||||
dMaxMovePilgrimStepSingleClampY = MaxY - MyMinY
|
||||
dMaxMovePilgrimStepSingleClampV = - MinV + MaxV
|
||||
end
|
||||
|
||||
@@ -1917,10 +1917,10 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
||||
-- recupero una corsa massima e l'altra solo di quello che serve
|
||||
elseif abs( dYDeltaI - dYDeltaF) > dMaxMovePilgrimStepSingleClampV then
|
||||
-- suddivido il movimento su entrambe le morse
|
||||
local dTotMove = ( dYDeltaF - dYDeltaI) / 2
|
||||
local dTotMove = ( ( dYDeltaF + dVDeltaF) / 2 + ( dYDeltaI + dVDeltaI) / 2) / 2
|
||||
-- morsa Y arriva in posizione finale
|
||||
dVPosA = MaxV - dTotMove
|
||||
dTPosA = dTPosI - dVPosI + MaxV - dTotMove
|
||||
dVPosA = EgtClamp( MaxV - dTotMove, MaxV, MinV)
|
||||
dTPosA = dTPosI - dVPosI + dVPosA
|
||||
dYPosA = dYDeltaF + dTPosA
|
||||
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
|
||||
table.insert( vCmd, { 11, CalcCharStatus( 'Y', dYDeltaF)})
|
||||
@@ -2024,10 +2024,10 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
||||
-- recupero una corsa massima e l'altra solo di quello che serve
|
||||
elseif abs( dVDeltaI - dVDeltaF) > dMaxMovePilgrimStepSingleClampY then
|
||||
-- suddivido il movimento su entrambe le morse
|
||||
local dTotMove = ( dVDeltaI - dVDeltaF) / 2
|
||||
local dTotMove = ( ( dYDeltaF + dVDeltaF) / 2 + ( dYDeltaI + dVDeltaI) / 2) / 2
|
||||
-- morsa V arriva in posizione finale
|
||||
dYPosA = MinY + dTotMove
|
||||
dTPosA = dTPosI + ( MinY - dYPosI) + dTotMove
|
||||
dYPosA = EgtClamp( MinY + dTotMove, MinY, MaxY)
|
||||
dTPosA = dTPosI - dYPosI + dYPosA
|
||||
dVPosA = dVDeltaF + dTPosA
|
||||
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
|
||||
table.insert( vCmd, { 12, CalcCharStatus( 'V', dVDeltaF)})
|
||||
|
||||
@@ -1,5 +1,20 @@
|
||||
==== Common_FAST Update Log ====
|
||||
|
||||
Versione 3.1-- (--/--/2026)
|
||||
- (SIM-INI) Con CAM5 v.3.1h2 è possibile abilitare/disabilitare VMILL durante lavorazione. Serve Modifica INI macchina "Enable=2" in sezione "[VMill]".
|
||||
Il flag non è più di creazione, ma di visualizzazione, e il controllo collisioni è comunque garantito.
|
||||
|
||||
Versione 3.1d2 (22/04/2026)
|
||||
- (GEN) Corretta generazione del PreparePostRotation (in tutti i CN) ora salva lo stato della pinza per lo spostamento successivo. Ticket#2933
|
||||
- (SIM-GEN) Corretto pinzaggio in caso di passo del pellegrino con recupero completo di una sola pinza
|
||||
|
||||
Versione 3.1d1 (14/04/2026)
|
||||
- (SIM-GEN) Aggiorna lo step totale del PilgrimStep e lo step Y con il valore di MyMinY, di modo che tenga conto del AGG_LOAD quando c'è. Ticket#2919
|
||||
- (GEN) Per NUM, si lascia aperta la pinza di carico in caso di END2. TPA era già corretto. Ticket#2869
|
||||
|
||||
Versione 3.1c2 (30/03/2026)
|
||||
- (SIM-GEN) Corretti moviemnti con motosega. Ora si ruota la C con B sempre a zero, anche alla posizione X di sicurezza. Ticket#2866
|
||||
|
||||
Versione 3.1c1 (27/03/2026)
|
||||
- (SIM-GEN) FASTCLAMPING = true : si suddivide il movimento metà tirando e metà spingendo con altra pinza. Così si aumenta la velocità.
|
||||
- FASTCLAMPING = false : una pinza resta ferma e si fa il movimento tutto con una pinza. Così si limita lo scivolamento del pezzo.
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
|
||||
local InfoCommon_STD_PP = {
|
||||
NAME = 'Common_FAST', -- nome script PP standard
|
||||
VERSION = '3.1c1', -- versione script
|
||||
VERSION = '3.1--', -- versione script
|
||||
MIN_MACH_VER_PP_COMMON = '2.5k1' -- versione minima kernel
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user