Compare commits
3 Commits
3.1e1_NL13
...
3.1f1_CR2
| Author | SHA1 | Date | |
|---|---|---|---|
| 8544e05690 | |||
| 11dfc9c4b7 | |||
| 982fa60005 |
+33
-33
@@ -326,7 +326,6 @@ function OnDispositionEnd()
|
||||
if IsRestPhase( EMT.PHASE + 1) then
|
||||
EmitMoveWaitChars( 2)
|
||||
else
|
||||
-- EmitMoveWaitChars( 2, TEST_USE)
|
||||
-- posticipo attesa fine scarico alla lavorazione successiva
|
||||
EMT.LASTOPEISUNLOAD = true
|
||||
end
|
||||
@@ -697,9 +696,7 @@ end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function OnPathEnd()
|
||||
if not EMT.ZMAX then
|
||||
-- EmitResetMachining( true)
|
||||
end
|
||||
|
||||
|
||||
-- salvo dati precedenti
|
||||
EMT.L2pp = EMT.L2o
|
||||
@@ -829,6 +826,12 @@ function OnRapid()
|
||||
-- gruppo della testa
|
||||
local nHSet = GetHeadSet( EMT.HEAD)
|
||||
|
||||
-- se ultimo movimento era LastClimb, su questo punto si attiva il piano
|
||||
if EMT.PREVLASTCLIMB or ( bStdMachRapid and EMT.MCHFIRST) then
|
||||
EMT.PREVLASTCLIMB = nil
|
||||
EMT.LAST_APPROACH_RAPID = true
|
||||
end
|
||||
|
||||
-- se primo movimento della lavorazione, gestione speciale
|
||||
if EMT.MCHFIRST then
|
||||
-- se carico trave
|
||||
@@ -865,9 +868,10 @@ function OnRapid()
|
||||
EmitMoveWaitChars( EgtIf( bOnlyCharY, 1, 3))
|
||||
else
|
||||
-- controllo se ci sono spostamenti dei carrelli programmati
|
||||
local bChangeCarriageClamping = CheckChangeCarriageClamping()
|
||||
local bChangeCarriageClamping = GetMovesInAuxCmd( EMT.AUXCMD)
|
||||
local bRotAxChanged = ( abs( EMT.R1prec - EMT.R1) > GEO.EPS_SMALL or abs( EMT.R2prec - EMT.R2) > GEO.EPS_SMALL)
|
||||
-- se non ci sono riposizionamenti dei carrelli, se stesso utensile, e c'è ancora piano attivo dalla lavorazione precedente, allora questo è un climb
|
||||
if not bChangeCarriageClamping and EMT.TOOL == EMT.PREVTOOL and EMT.PLANEACTIVE and ( abs( EMT.R1prec - EMT.R1) < GEO.EPS_SMALL and abs( EMT.R2prec - EMT.R2) < GEO.EPS_SMALL) then
|
||||
if EMT.PLANEACTIVE and EMT.TOOL == EMT.PREVTOOL and not bChangeCarriageClamping and not bRotAxChanged then
|
||||
-- dichiaro finita lavorazione precedente
|
||||
local sOut = 'G157 EA1'
|
||||
EmtOutput( sOut)
|
||||
@@ -972,7 +976,6 @@ function OnRapid()
|
||||
end
|
||||
end
|
||||
|
||||
EMT.MCHFIRST = false
|
||||
-- movimento standard CLIMB
|
||||
elseif EMT.FLAG == 2 then
|
||||
MyAdjustLinearAxes()
|
||||
@@ -999,7 +1002,7 @@ function OnRapid()
|
||||
-- se lavorazione in doppio
|
||||
if nHSet == 1 and EMT.DOU_TYPE == 2 then
|
||||
for i = 1, #EMT.APPROACH.DBLRISES do
|
||||
EmitMoveDataHead( 2, { X=EMT.APPROACH.DBLRISES[i].L2, Z=EMT.APPROACH.DBLRISES[i].L3, C=EMT.APPROACH.DBLRISES[i].R1, B=EMT.APPROACH.DBLRISES[i].R2})
|
||||
EmitMoveDataHead( 2, { X=-EMT.APPROACH.DBLRISES[i].L2, Z=EMT.APPROACH.DBLRISES[i].L3, C=EMT.APPROACH.DBLRISES[i].R1, B=EMT.APPROACH.DBLRISES[i].R2})
|
||||
end
|
||||
EmitMoveStartHead( 2)
|
||||
EmitMoveWaitHead( 2)
|
||||
@@ -1017,7 +1020,17 @@ function OnRapid()
|
||||
end
|
||||
|
||||
-- se ultimo, oppure unico, movimento in discesa sul pezzo, attivo piano generico. Se già attivo siginifica che è seconda lavorazione compatibile
|
||||
if not EMT.PLANEACTIVE and ( bLastClimb or bUniqueClimb or bStdClimb) then
|
||||
if not EMT.PLANEACTIVE and ( EMT.LAST_APPROACH_RAPID or bLastClimb or bUniqueClimb) then
|
||||
-- si scrive ultimo punto prima di attivare il piano solo in caso sia un rapido calcolato da CAM5, altrimenti siamo già sul punto
|
||||
if not ( bLastClimb or bUniqueClimb) and not EMT.MCHFIRST then
|
||||
MyAdjustLinearAxes()
|
||||
EmtAdjustRotaryAxes()
|
||||
local dTRad, dTLen = GetToolRadLen()
|
||||
EmitMoveDataHead( nHSet, { X=EMT.L2, Z=EMT.L3, C=EMT.R1, B=EMT.R2, TRad=dTRad, TLen=dTLen, S=CalcRealSpeed( EMT.S)})
|
||||
end
|
||||
|
||||
EMT.LAST_APPROACH_RAPID = nil
|
||||
bStdMachRapid = false
|
||||
EMT.ZMAX = false
|
||||
-- movimenti testa
|
||||
-- scrittura comando start movimenti testa
|
||||
@@ -1025,7 +1038,7 @@ function OnRapid()
|
||||
-- se lavorazione in doppio
|
||||
if nHSet == 1 and EMT.DOU_TYPE == 2 then
|
||||
for i = 1, #EMT.APPROACH.DBLCLIMBS do
|
||||
EmitMoveDataHead( 2, { X=EMT.APPROACH.DBLCLIMBS[i].L2, Z=EMT.APPROACH.DBLCLIMBS[i].L3, C=EMT.APPROACH.DBLCLIMBS[i].R1, B=EMT.APPROACH.DBLCLIMBS[i].R2})
|
||||
EmitMoveDataHead( 2, { X=-EMT.APPROACH.DBLCLIMBS[i].L2, Z=EMT.APPROACH.DBLCLIMBS[i].L3, C=EMT.APPROACH.DBLCLIMBS[i].R1, B=EMT.APPROACH.DBLCLIMBS[i].R2})
|
||||
end
|
||||
EmitMoveStartHead( 2)
|
||||
EmitMoveWaitHead( 2)
|
||||
@@ -1210,6 +1223,15 @@ function OnRapid()
|
||||
EMT.TPOS = EMT.L1o
|
||||
EmtUpdatePrev()
|
||||
|
||||
EMT.MCHFIRST = false
|
||||
-- se si è attivato il piano, disattivo che è stato climb ultimo movimento
|
||||
if EMT.PLANEACTIVE then
|
||||
EMT.PREVLASTCLIMB = nil
|
||||
-- se è ultimo movimento di climb, si salva per scrivere il piano in movimento successivo
|
||||
elseif bStdClimb then
|
||||
EMT.PREVLASTCLIMB = true
|
||||
end
|
||||
|
||||
-- si salva posizione assi rotanti
|
||||
EMT.R1prec = EMT.R1
|
||||
EMT.R2prec = EMT.R2
|
||||
@@ -1260,7 +1282,7 @@ function OnLinear()
|
||||
MyAdjustLinearAxes()
|
||||
EmtAdjustRotaryAxes()
|
||||
|
||||
-- se lavorazione in doppio e fondo foro, inverto movimento punta doppia
|
||||
-- se lavorazione in doppio e fondo foro, inverto movimento punta doppia
|
||||
if EMT.MCHTYPE == MCH_MY.DRILLING and not EMT.DBLHEADPARA and EMT.DOU_TYPE == 2 and EMT.FLAG == 105 then
|
||||
EmtOutput( "G157 EE-1")
|
||||
EMT.DBLHEADPARA = true
|
||||
@@ -1380,28 +1402,6 @@ function CalcCharStatusN( sCmd)
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- controlla se nella tabella AUX sono presenti dei movimenti dei carrelli
|
||||
function CheckChangeCarriageClamping()
|
||||
local ChangeCarriagesParam = {
|
||||
'1', -- movimento singolo carro
|
||||
'2', -- movimento carro e trave
|
||||
'3', -- movimento 2 carri e trave
|
||||
'4', -- risalita a Z max
|
||||
'11', -- comando pinza 1
|
||||
'12' -- comando pinza 2
|
||||
}
|
||||
for i=1, #EMT.AUXCMD do
|
||||
local Cmd = EgtSplitString( EMT.AUXCMD[i])
|
||||
for j=1, #ChangeCarriagesParam do
|
||||
if Cmd[1] == ChangeCarriagesParam[j] then
|
||||
return true
|
||||
end
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function PrepareLoad( sCmd, nInd, bStart)
|
||||
local Cmd = EgtSplitString( sCmd)
|
||||
|
||||
+10
-5
@@ -843,10 +843,15 @@ end
|
||||
function OnSimulMoveStart()
|
||||
|
||||
-- tipo di movimento
|
||||
local bFirstClimb = EgtGetInfo( EMT.MOVEID, 'FirstClimb', 'b')
|
||||
local bLastClimb = EgtGetInfo( EMT.MOVEID, 'LastClimb', 'b')
|
||||
local bFirstRise = EgtGetInfo( EMT.MOVEID, 'FirstRise', 'b')
|
||||
local bLastRise = EgtGetInfo( EMT.MOVEID, 'LastRise', 'b')
|
||||
local bUniqueClimb = EgtGetInfo( EMT.MOVEID, 'UniqueClimb', 'b')
|
||||
local bUniqueRise = EgtGetInfo( EMT.MOVEID, 'UniqueRise', 'b')
|
||||
-- se il link non arriva dalla OnSpecial, non ha nessuna nota
|
||||
local bStdClimb = ( EMT.FLAG2 ~= 2 and EMT.FLAG == 2)
|
||||
local bStdRise = ( EMT.FLAG2 ~= 2 and EMT.FLAG == 3)
|
||||
local bStdMachRapid = ( EMT.FLAG2 == 0 and ( EMT.FLAG == 0 or EMT.FLAG == 1))
|
||||
|
||||
-- se primo rapido della lavorazione è un movimento standard, allora questo è l'ultimo climb
|
||||
@@ -974,11 +979,11 @@ function OnSimulMoveStart()
|
||||
|
||||
-- se lavorazione in doppio
|
||||
if EMT.DOU_TYPE then
|
||||
if EgtGetInfo( EMT.MOVEID, 'FirstClimb', 'b') or EgtGetInfo( EMT.MOVEID, 'UniqueClimb', 'b') then
|
||||
if bFirstClimb or bUniqueClimb or bStdClimb then
|
||||
EMT.IS_CLIMB = true
|
||||
EMT.IS_RISE = false
|
||||
EMT.INDEX_APPROACH_MOVE = 0
|
||||
elseif EgtGetInfo( EMT.MOVEID, 'FirstRise', 'b') or EgtGetInfo( EMT.MOVEID, 'UniqueRise', 'b') then
|
||||
elseif bFirstRise or bUniqueRise or bStdRise then
|
||||
EMT.IS_CLIMB = false
|
||||
EMT.IS_RISE = true
|
||||
EMT.INDEX_APPROACH_MOVE = 0
|
||||
@@ -1002,7 +1007,7 @@ function OnSimulMoveStart()
|
||||
if EMT.DOU_TYPE == 2 then
|
||||
-- controllo minima distanza tra utensili di X1 e X2
|
||||
local dDeltaX1X2 = EMT.L2 - EMT.A5 - Head2Y
|
||||
local dDistToolX1X2 = -dDeltaX1X2 - MillOffs - EMT.TTOTLEN - Mill2Offs - EMT.DOU_TTOTLEN
|
||||
local dDistToolX1X2 = dDeltaX1X2 - MillOffs - EMT.TTOTLEN - Mill2Offs - EMT.DOU_TTOTLEN
|
||||
if dDistToolX1X2 < MinDistToolX1X2 and EMT.MCHNAME ~= EMT.DOUBLECOLLMACH then
|
||||
EMT.DOUBLECOLLMACH = EMT.MCHNAME
|
||||
local sErr = 'X1 X2 tools in collision (distance=' .. EgtNumToString( dDistToolX1X2, 1) .. ')'
|
||||
@@ -1068,7 +1073,7 @@ function OnSimulMoveStart()
|
||||
|
||||
if EMT.DOU_TYPE then
|
||||
-- se testa 2 ha più movimenti della testa 1, eseguo tutti i movimenti della testa due che mancano
|
||||
if EgtGetInfo( EMT.MOVEID, 'LastClimb', 'b') or EgtGetInfo( EMT.MOVEID, 'UniqueClimb', 'b') then
|
||||
if bLastClimb or bUniqueClimb then
|
||||
if #EMT.APPROACH.DBLCLIMBS > #EMT.APPROACH.CLIMBS then
|
||||
while EMT.INDEX_APPROACH_MOVE < #EMT.APPROACH.DBLCLIMBS do
|
||||
EMT.INDEX_APPROACH_MOVE = EMT.INDEX_APPROACH_MOVE + 1
|
||||
@@ -1079,7 +1084,7 @@ function OnSimulMoveStart()
|
||||
SimulMoveAxes( 'X2', EMT.A5, MCH_SIM_STEP.RAPID, 'Z2', EMT.A6, MCH_SIM_STEP.RAPID, 'C2', EMT.A7, MCH_SIM_STEP.COLLROT, 'B2', EMT.A8, MCH_SIM_STEP.COLLROT)
|
||||
end
|
||||
end
|
||||
elseif EgtGetInfo( EMT.MOVEID, 'LastRise', 'b') or EgtGetInfo( EMT.MOVEID, 'UniqueRise', 'b') then
|
||||
elseif bLastRise or bUniqueRise then
|
||||
if #EMT.APPROACH.DBLRISES > #EMT.APPROACH.RISES then
|
||||
while EMT.INDEX_APPROACH_MOVE < #EMT.APPROACH.DBLRISES do
|
||||
EMT.INDEX_APPROACH_MOVE = EMT.INDEX_APPROACH_MOVE + 1
|
||||
|
||||
+13
-3
@@ -175,6 +175,16 @@ function OnSpecialLink()
|
||||
EmtRemoveClimb( EMC.NEXTMCHID, EMC.NEXTMAIN)
|
||||
EmtAddClimb( EMC.NEXTMCHID, EMC.NEXTMAIN, { EMC.L1, EMC.L2, MaxZ1, EMC.R1, 0}, 30, 2, 2, 'FirstClimb=1;')
|
||||
EmtAddClimb( EMC.NEXTMCHID, EMC.NEXTMAIN, { EMC.L1, EMC.L2, EMC.L3, EMC.R1, EMC.R2}, 30, 2, 2, 'LastClimb=1;')
|
||||
else
|
||||
-- se altra testa arriva da home, devo per forza avere un CLIMB, creo il punto
|
||||
if EMC.OTHERLINKTYPE == 1 then
|
||||
EmtRemoveClimb( EMC.NEXTMCHID, EMC.NEXTMAIN)
|
||||
EmtAddClimb( EMC.NEXTMCHID, EMC.NEXTMAIN, vInitAxLink, 30, 2, 2, 'UniqueClimb=1;')
|
||||
-- se altra testa deve andare in home, devo per forza avere un RISE, creo il punto
|
||||
elseif EMC.OTHERLINKTYPE == 2 then
|
||||
EmtRemoveRise( EMC.PREVMCHID, EMC.PREVMAIN)
|
||||
EmtAddRise( EMC.PREVMCHID, EMC.PREVMAIN, vFinalAxLink, 30, 3, 2, 'UniqueRise=1;')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -230,7 +240,7 @@ function OnSpecialLink()
|
||||
-- retrazione
|
||||
EmtRemoveRise( EMC.PREVMCHID, EMC.PREVMAIN)
|
||||
if abs( EMC.R2) > 91 then
|
||||
EmtAddRise( EMC.NEXTMCHID, EMC.NEXTMAIN, { EMC.L1p, EMC.L2p, ParkZ1, EMC.R1p, EgtClamp( EMC.R2, -90, 90)}, 30, 2, 2, EgtIf( bSplit, 'Split=1;', '')..'FirstRise=1;')
|
||||
EmtAddRise( EMC.PREVMCHID, EMC.PREVMAIN, { EMC.L1p, EMC.L2p, ParkZ1, EMC.R1p, EgtClamp( EMC.R2p, -90, 90)}, 30, 3, 2, EgtIf( bSplit, 'Split=1;', '')..'FirstRise=1;')
|
||||
EmtAddRise( EMC.PREVMCHID, EMC.PREVMAIN, { EMC.L1p, EMC.L2p, MaxZ1Blade, EMC.R1p, 0}, 30, 3, 2, EgtIf( bSplit, 'Split=1;', '')..'LastRise=1;')
|
||||
else
|
||||
EmtAddRise( EMC.PREVMCHID, EMC.PREVMAIN, { EMC.L1p, EMC.L2p, MaxZ1Blade, EMC.R1p, 0}, 30, 3, 2, EgtIf( bSplit, 'Split=1;', '')..'UniqueRise=1;')
|
||||
@@ -415,7 +425,7 @@ function OnSpecialLink()
|
||||
-- retrazione
|
||||
EmtRemoveRise( EMC.PREVMCHID, EMC.PREVMAIN)
|
||||
if abs( EMC.R2) > 91 then
|
||||
EmtAddRise( EMC.NEXTMCHID, EMC.NEXTMAIN, { EMC.L1p, EMC.L2p, ParkZ1, EMC.R1p, EgtClamp( EMC.R2, -90, 90)}, 30, 2, 2, EgtIf( bSplit, 'Split=1;', '')..'FirstRise=1;')
|
||||
EmtAddRise( EMC.PREVMCHID, EMC.PREVMAIN, { EMC.L1p, EMC.L2p, ParkZ1, EMC.R1p, EgtClamp( EMC.R2p, -90, 90)}, 30, 3, 2, EgtIf( bSplit, 'Split=1;', '')..'FirstRise=1;')
|
||||
EmtAddRise( EMC.PREVMCHID, EMC.PREVMAIN, { EMC.L1p, EMC.L2p, MaxZ1Blade, EMC.R1p, 0}, 30, 3, 2, EgtIf( bSplit, 'Split=1;', '')..'LastRise=1;')
|
||||
else
|
||||
EmtAddRise( EMC.PREVMCHID, EMC.PREVMAIN, { EMC.L1p, EMC.L2p, MaxZ1Blade, EMC.R1p, 0}, 30, 3, 2, EgtIf( bSplit, 'Split=1;', '')..'UniqueRise=1;')
|
||||
@@ -3159,7 +3169,7 @@ function SpecOutputCmds( vCmd, bEnd)
|
||||
local sInfo = '23,'..EgtNumToString( Cmd[2],3)
|
||||
EgtSetInfo( EMC.PATHID, sKey, sInfo)
|
||||
EMC.W2DELTA = Cmd[2]
|
||||
-- riporta trave in zona carico dopo una fase start partita con un riposizionam,ento
|
||||
-- riporta trave in zona carico dopo una fase start partita con un riposizionamento
|
||||
elseif Cmd[1] == 24 then
|
||||
local sInfo = '24,'..Cmd[2]..','..EgtNumToString( Cmd[3],3)..','..Cmd[4]..','..EgtNumToString( Cmd[5],3)..EgtIf( Cmd[6], ',*', '')
|
||||
EgtSetInfo( EMC.PATHID, sKey, sInfo)
|
||||
|
||||
+5
-3
@@ -32,8 +32,8 @@
|
||||
require( 'EmtGenerator')
|
||||
EgtEnableDebug( false)
|
||||
|
||||
PP_VER = '3.1e1_NL13'
|
||||
PP_NVER = '3.1.3.2'
|
||||
PP_VER = '3.1f1_CR2'
|
||||
PP_NVER = '3.1.6.1'
|
||||
MIN_MACH_VER = '2.5k1'
|
||||
MACH_NAME = EgtGetCurrMachineName()
|
||||
|
||||
@@ -165,7 +165,8 @@ if EgtExistsFile( sData) then
|
||||
end
|
||||
if Machine.Offsets.X1_POS then MinX1 = -Machine.Offsets.X1_POS end
|
||||
if Machine.Offsets.X1_NEG then MaxX1 = -Machine.Offsets.X1_NEG end
|
||||
if Machine.Offsets.PARK_X1 then ParkX1 = -Machine.Offsets.PARK_X1 end
|
||||
if Machine.Offsets.PARK_X1POS then ParkFrnX1 = -Machine.Offsets.PARK_X1POS end
|
||||
if Machine.Offsets.PARK_X1NEG then ParkX1 = -Machine.Offsets.PARK_X1NEG end
|
||||
if Machine.Offsets.Z1_NEG then MinZ1 = Machine.Offsets.Z1_NEG end
|
||||
if Machine.Offsets.Z1_POS then MaxZ1 = min( MaxZ1, Machine.Offsets.Z1_POS) end
|
||||
if Machine.Offsets.Z1_POS_LAMA then MaxZ1Blade = min( MaxZ1Blade, Machine.Offsets.Z1_POS_LAMA) end
|
||||
@@ -230,6 +231,7 @@ if EgtExistsFile( sData) then
|
||||
ParkV2 = MinV2
|
||||
ParkY2 = ParkV2 - MinDeltaYV
|
||||
ParkX1 = min( ParkX1, MaxX1)
|
||||
ParkFrnX1 = max( ParkFrnX1, MinX1)
|
||||
MaxZ1Blade = min( MaxZ1Blade, MaxZ1)
|
||||
ParkCSawZ1 = min( ParkCSawZ1, MaxZ1)
|
||||
ParkCSaw0Z1 = min( ParkCSaw0Z1, MaxZ1)
|
||||
|
||||
Reference in New Issue
Block a user