Migliorata gestione movimenti speciali in caso di motosega
This commit is contained in:
+12
-8
@@ -496,6 +496,7 @@ function OnMachiningEnd()
|
||||
EMT.U_STD = nil
|
||||
EMT.PREVTOOL = EMT.TOOL
|
||||
EMT.PREVHEAD = EMT.HEAD
|
||||
EMT.PREVET = GetET( EMT.HEAD, EMT.TCPOS, EMT.R3)
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
@@ -626,9 +627,11 @@ function OnRapid()
|
||||
end
|
||||
end
|
||||
|
||||
local sET = GetET( EMT.HEAD, EMT.TCPOS, EMT.R3)
|
||||
|
||||
local bGoToHome = false
|
||||
-- se gli assi rotanti cambiano parecchio, con motosega si va in parcheggio
|
||||
if EMT.PREVHEAD == 'H3' and EMT.HEAD == 'H3' 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 and ( abs( EMT.R2pp - EMT.R2) > 25 or abs( EMT.R1pp - EMT.R1) > 25) then
|
||||
bGoToHome = true
|
||||
end
|
||||
|
||||
@@ -654,21 +657,22 @@ function OnRapid()
|
||||
local sEE = ' EE' .. EgtIf( bZmax, '3', '4')
|
||||
local sEL = ' EL' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TLEN, ( EMT.TDIST or ChSawLen)), 3)
|
||||
local sER = ' ER' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TDIAM / 2, EMT.TLEN), 3)
|
||||
local sET = GetET( EMT.HEAD, EMT.TCPOS, EMT.R3)
|
||||
local sES = ' ES'..EgtNumToString( EMT.S, 0)
|
||||
|
||||
-- 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 sEEPreMove = ' EE' .. EgtIf( bZmax, '3', '4')
|
||||
local sEEPreMove = ' EE' .. EgtIf( bZmax, '3', '4')
|
||||
local sOutPreMove = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. ' Z' .. EmtLenToString( MyZHome, 3) ..
|
||||
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)
|
||||
local sOutPreMove = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. ' Z' .. EmtLenToString( MyZHome, 3) ..
|
||||
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)
|
||||
local sOutPreMove = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. ' Z' .. EmtLenToString( MyZHome, 3) ..
|
||||
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
|
||||
EmtOutput( sOutPreMove)
|
||||
EmtOutput( 'G101 ET1001')
|
||||
|
||||
@@ -544,6 +544,7 @@ function OnMachiningEnd()
|
||||
EMT.PREVTOOL = EMT.TOOL
|
||||
EMT.PREVHEAD = EMT.HEAD
|
||||
EMT.PREVR3 = EMT.R3
|
||||
EMT.PREVET = GetET( EMT.HEAD, EMT.TCPOS, EMT.R3)
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
@@ -675,9 +676,11 @@ function OnRapid()
|
||||
end
|
||||
end
|
||||
|
||||
local sET = GetET( EMT.HEAD, EMT.TCPOS, EMT.R3)
|
||||
|
||||
local bGoToHome = false
|
||||
-- se gli assi rotanti cambiano parecchio, con motosega si va in parcheggio
|
||||
if EMT.PREVHEAD == 'H3' and EMT.HEAD == 'H3' 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 and ( abs( EMT.R2pp - EMT.R2) > 25 or abs( EMT.R1pp - EMT.R1) > 25) then
|
||||
bGoToHome = true
|
||||
end
|
||||
|
||||
@@ -726,20 +729,22 @@ function OnRapid()
|
||||
sER = sER..EmtLenToString( EMT.TDIAM / 2, 3)
|
||||
end
|
||||
|
||||
local sET = GetET( EMT.HEAD, EMT.TCPOS, EMT.R3)
|
||||
local sES = ' ES'..EgtNumToString( EMT.S, 0)
|
||||
|
||||
-- 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 sEEPreMove = ' EE' .. EgtIf( bZmax, '3', '4')
|
||||
local sOutPreMove = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. ' Z' .. EmtLenToString( MyZHome, 3) ..
|
||||
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)
|
||||
local sOutPreMove = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. ' Z' .. EmtLenToString( MyZHome, 3) ..
|
||||
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)
|
||||
local sOutPreMove = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. ' Z' .. EmtLenToString( MyZHome, 3) ..
|
||||
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
|
||||
EmtOutput( sOutPreMove)
|
||||
EmtOutput( 'G101 ET1001')
|
||||
|
||||
@@ -661,7 +661,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 ( abs( EMT.R2pp - EMT.R2) > 25 or abs( EMT.R1pp - EMT.R1) > 25) then
|
||||
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
|
||||
bGoToHome = true
|
||||
end
|
||||
|
||||
@@ -687,16 +687,19 @@ function OnRapid()
|
||||
-- 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 = 'M101 P1=1' .. ' P2=' .. EmtLenToString( -SafeXRotAxes, EMT.DECMACRO) .. ' P3=' .. EmtLenToString( MyZHome, EMT.DECMACRO) ..
|
||||
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) ..
|
||||
EmtOutput( sOutPreMove)
|
||||
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')
|
||||
EmtOutput( sOutPreMove)
|
||||
EmtOutput( sOutPreMove)
|
||||
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) ..
|
||||
|
||||
+4
-2
@@ -788,7 +788,7 @@ function OnSimulMoveStart()
|
||||
|
||||
local bGoToHome = false
|
||||
-- se gli assi rotanti cambiano parecchio, con motosega si va in parcheggio
|
||||
if EMT.PREVHEAD == 'H3' and EMT.HEAD == 'H3' and ( abs( EMT.R2p - EMT.R2) > 25 or abs( EMT.R1p - EMT.R1) > 25) then
|
||||
if EMT.PREVHEAD == 'H3' and EMT.HEAD == 'H3' and EMT.TOOL == EMT.PREVTOOL and abs( EMT.R3p - EMT.R3) < 100 * GEO.EPS_SMALL and ( abs( EMT.R2p - EMT.R2) > 25 or abs( EMT.R1p - EMT.R1) > 25) then
|
||||
bGoToHome = true
|
||||
end
|
||||
|
||||
@@ -798,11 +798,13 @@ function OnSimulMoveStart()
|
||||
-- con pezzi alti aggiorno gli assi rotanti prima di muovermi sopra il pezzo
|
||||
if not EMT.LOAD and EMT.MOVE == 0 and ( EMT.HB > 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 ( bZmax and EMT.TOTLEN > 200)) 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)
|
||||
SimulMoveAxis( 'B', EMT.R2, MCH_SIM_STEP.COLLROT)
|
||||
elseif ( EMT.HEAD == 'H3' or ( bZmax and EMT.TOTLEN > 200)) then
|
||||
SimulMoveAxes( 'X', SafeXRotAxes, MCH_SIM_STEP.RAPID, 'C', EMT.R1, MCH_SIM_STEP.COLLROT, 'B', EMT.R2, MCH_SIM_STEP.COLLROT)
|
||||
end
|
||||
end
|
||||
EMT.POSTROT = nil
|
||||
|
||||
Reference in New Issue
Block a user