- 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:
andrea.villa
2026-04-17 12:09:33 +02:00
parent b7358b3cb5
commit 512d7df59d
3 changed files with 34 additions and 46 deletions
+19 -37
View File
@@ -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
View File
@@ -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
+3
View File
@@ -66,3 +66,6 @@ WinPlace=0,514,138,628,810
Enable=1
Save=0
[Customizations]
DrillingDoubleNT=1