- Prima versione generazione lavorazioni in doppi (NON FUNZIONANTE)
- Corretti movimenti lavorazioni in doppio in simulazione - Aggiunto parametro "DrillingDoubleNT=1" per calcolo delle forature in doppio direttamente da programma
This commit is contained in:
+19
-37
@@ -454,19 +454,12 @@ function OnMachiningStart()
|
||||
EMT.DOU_EXIT = 1
|
||||
EMT.DOU_TPOS = AdjustTcPos( false, EgtTdbGetCurrToolParam( MCH_TP.TCPOS))
|
||||
EMT.DOU_SPEED = EgtTdbGetCurrToolParam( MCH_TP.SPEED)
|
||||
-- non va in sicurezza testa in doppio
|
||||
EMT.DOU_TO_ZMAX = nil
|
||||
else
|
||||
EmtSetLastError( 1211, 'Missing or not active double tool of '..sOldTool)
|
||||
end
|
||||
EgtTdbSetCurrTool( sOldTool)
|
||||
end
|
||||
-- se testa in doppio ancora da rimettere in sicurezza
|
||||
if EMT.DOU_TO_ZMAX then
|
||||
local dPosT = EMT.TPOS or EMT.L1op
|
||||
EmitParkRoller( dPosT, false)
|
||||
EmitDouZMax( EMT.DOU_TO_ZMAX)
|
||||
end
|
||||
|
||||
-- controllo seguente trovato nella 3T. Da verificare
|
||||
-- determino subito se taglio di separazione di pezzo a caduta
|
||||
EMT.PREFALLCUT = nil
|
||||
@@ -545,7 +538,6 @@ function OnMachiningEnd()
|
||||
EMT.AUXTYPE = nil
|
||||
EMT.TO_ZMAX = nil
|
||||
EMT.PREVTOOL = EMT.TOOL
|
||||
if EMT.DOU_TYPE and not EMT.ZMAX then EMT.DOU_TO_ZMAX = EMT.DOU_TYPE end
|
||||
EMT.DOU_TYPE = nil
|
||||
-- se taglio finale, aggiorno lunghezza barra
|
||||
if EMT.MCHCUT then
|
||||
@@ -864,8 +856,15 @@ function OnRapid()
|
||||
EmitMoveDataHead( nHSet, { X=EMT.L2, Z=EMT.L3, C=EMT.R1, B=EMT.R2})
|
||||
-- su ultimo rapido in uscita, comandi di attesa movimenti
|
||||
if bLastRise or bStdRise then
|
||||
-- TODO scrivere movimenti testa in doppio
|
||||
EmitMoveStartHead( nHSet)
|
||||
-- se lavorazione in doppio
|
||||
if nHSet == 1 and ( EMT.DOU_TYPE == 2 or EMT.DOU_TYPE == 3) 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})
|
||||
end
|
||||
EmitMoveStartHead( 2)
|
||||
EmitMoveWaitHead( 2)
|
||||
end
|
||||
EmitMoveWaitHead( nHSet)
|
||||
EMT.ZMAX = true
|
||||
end
|
||||
@@ -883,15 +882,19 @@ function OnRapid()
|
||||
-- movimenti testa
|
||||
-- scrittura comando start movimenti testa
|
||||
EmitMoveStartHead( nHSet)
|
||||
|
||||
if nHSet == 1 and EMT.DOU_TYPE == 2 or EMT.DOU_TYPE == 3 then
|
||||
-- TODO scrivere movimenti testa in doppio
|
||||
-- se lavorazione in doppio
|
||||
if nHSet == 1 and ( EMT.DOU_TYPE == 2 or EMT.DOU_TYPE == 3) 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})
|
||||
end
|
||||
EmitMoveStartHead( 2)
|
||||
EmitMoveWaitHead( 2)
|
||||
-- altrimenti preselezione su altra testa
|
||||
else
|
||||
-- eventuale preselezione successiva testa 1
|
||||
PreselectNextDiffHead( EMT.MCHID, EMT.HEAD)
|
||||
-- aspetto esecuzione movimento testa 2
|
||||
EmitMoveWaitHead( nHSet)
|
||||
end
|
||||
-- aspetto esecuzione movimento testa 2
|
||||
EmitMoveWaitHead( nHSet)
|
||||
|
||||
-- movimenti carrelli
|
||||
if EMT.LOAD then
|
||||
@@ -2051,27 +2054,6 @@ function GetHeadToolCode()
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function EmitDouZMax( nDouType)
|
||||
-- posizioni sicure
|
||||
local dHomeX2 = EgtGetAxisHomePos( 'X2')
|
||||
local dHomeZ2 = EgtGetAxisHomePos( 'Z2')
|
||||
local dHomeB2 = EgtGetAxisHomePos( 'B2')
|
||||
local dHomeC2 = EgtGetAxisHomePos( 'C2')
|
||||
-- se lavorazione in doppio in Y (prima mi allontano in Y)
|
||||
if nDouType == 2 then
|
||||
EmitMoveDataHead( 2, { X=SafeX2, TPos=EMT.DOU_TPOS, Fmt=1})
|
||||
end
|
||||
-- scendo in Z, sistemo B e C porto X in home
|
||||
EmitMoveDataHead( 2, { Z=-dHomeZ2, TPos=EMT.DOU_TPOS, Fmt=1})
|
||||
EmitMoveDataHead( 2, { B=dHomeB2, C=dHomeC2, TPos=EMT.DOU_TPOS, Fmt=1})
|
||||
EmitMoveDataHead( 2, { X=dHomeX2, TPos=EMT.DOU_TPOS, Fmt=1})
|
||||
EmitMoveStartHead( 2)
|
||||
EmitMoveWaitHead( 2)
|
||||
-- dichiaro eseguito
|
||||
EMT.DOU_TO_ZMAX = nil
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function CalcRealSpeed( dSpeed)
|
||||
-- in caso di aggregato lama, si aumenta speed perchè c'è un riduttore di giri
|
||||
|
||||
+12
-9
@@ -777,8 +777,6 @@ function OnSimulMachiningStart()
|
||||
EMT.DOU_TTOTLEN = EgtTdbGetCurrToolParam( MCH_TP.TOTLEN)
|
||||
EMT.DOU_TYPE = nDouType
|
||||
EMT.DOU_TOOL = sDouTool
|
||||
-- reset necessità movimento in sicurezza sola testa in doppio
|
||||
EMT.DOU_TO_ZMAX = nil
|
||||
else
|
||||
EmtSetLastError( 1211, 'Missing or not active double tool of '..sOldTool)
|
||||
end
|
||||
@@ -827,7 +825,6 @@ function OnSimulMachiningEnd()
|
||||
end
|
||||
EMT.MCHSPLIT = nil
|
||||
EMT.SPLIT = nil
|
||||
if EMT.DOU_TYPE and not EMT.ZMAX then EMT.DOU_TO_ZMAX = EMT.DOU_TYPE end
|
||||
EMT.DOU_TYPE = nil
|
||||
EMT.DOU_TOOL = nil
|
||||
|
||||
@@ -1136,18 +1133,24 @@ function OnSimulMoveStart()
|
||||
-- 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 #EMT.APPROACH.DBLCLIMBS > #EMT.APPROACH.CLIMBS then
|
||||
while EMT.INDEX_APPROACH_MOVE <= #EMT.APPROACH.DBLCLIMBS do
|
||||
SimulMoveAxes( 'X2', EMT.APPROACH.DBLCLIMBS[EMT.INDEX_APPROACH_MOVE].L2, MCH_SIM_STEP.RAPID, 'Z2', EMT.APPROACH.DBLCLIMBS[EMT.INDEX_APPROACH_MOVE].L3, MCH_SIM_STEP.RAPID,
|
||||
'C2', EMT.APPROACH.DBLCLIMBS[EMT.INDEX_APPROACH_MOVE].R1, MCH_SIM_STEP.COLLROT, 'B2', EMT.APPROACH.DBLCLIMBS[EMT.INDEX_APPROACH_MOVE].R2, MCH_SIM_STEP.COLLROT)
|
||||
while EMT.INDEX_APPROACH_MOVE < #EMT.APPROACH.DBLCLIMBS do
|
||||
EMT.INDEX_APPROACH_MOVE = EMT.INDEX_APPROACH_MOVE + 1
|
||||
EMT.A5 = EMT.APPROACH.DBLCLIMBS[EMT.INDEX_APPROACH_MOVE].L2
|
||||
EMT.A6 = EMT.APPROACH.DBLCLIMBS[EMT.INDEX_APPROACH_MOVE].L3
|
||||
EMT.A7 = EMT.APPROACH.DBLCLIMBS[EMT.INDEX_APPROACH_MOVE].R1
|
||||
EMT.A8 = EMT.APPROACH.DBLCLIMBS[EMT.INDEX_APPROACH_MOVE].R2
|
||||
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
|
||||
if #EMT.APPROACH.DBLRISES > #EMT.APPROACH.RISES then
|
||||
while EMT.INDEX_APPROACH_MOVE <= #EMT.APPROACH.DBLRISES do
|
||||
SimulMoveAxes( 'X2', EMT.APPROACH.DBLRISES[EMT.INDEX_APPROACH_MOVE].L2, MCH_SIM_STEP.RAPID, 'Z2', EMT.APPROACH.DBLRISES[EMT.INDEX_APPROACH_MOVE].L3, MCH_SIM_STEP.RAPID,
|
||||
'C2', EMT.APPROACH.DBLRISES[EMT.INDEX_APPROACH_MOVE].R1, MCH_SIM_STEP.COLLROT, 'B2', EMT.APPROACH.DBLRISES[EMT.INDEX_APPROACH_MOVE].R2, MCH_SIM_STEP.COLLROT)
|
||||
while EMT.INDEX_APPROACH_MOVE < #EMT.APPROACH.DBLRISES do
|
||||
EMT.INDEX_APPROACH_MOVE = EMT.INDEX_APPROACH_MOVE + 1
|
||||
EMT.A5 = EMT.APPROACH.DBLRISES[EMT.INDEX_APPROACH_MOVE].L2
|
||||
EMT.A6 = EMT.APPROACH.DBLRISES[EMT.INDEX_APPROACH_MOVE].L3
|
||||
EMT.A7 = EMT.APPROACH.DBLRISES[EMT.INDEX_APPROACH_MOVE].R1
|
||||
EMT.A8 = EMT.APPROACH.DBLRISES[EMT.INDEX_APPROACH_MOVE].R2
|
||||
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
|
||||
end
|
||||
|
||||
@@ -66,3 +66,6 @@ WinPlace=0,514,138,628,810
|
||||
Enable=1
|
||||
Save=0
|
||||
|
||||
[Customizations]
|
||||
DrillingDoubleNT=1
|
||||
|
||||
|
||||
Reference in New Issue
Block a user