Rivisitazione condizioni per scambio diretto

This commit is contained in:
andrea.villa
2024-09-19 12:07:30 +02:00
parent 1886d6620e
commit 5b7bab2873
+236 -150
View File
@@ -1165,7 +1165,11 @@ function SpecCalcCarriages( dDistFront, dDistBack, bFixedDelta, bFixedPos)
local dPosT = EMC.TPOS
local dYDelta = EMC.YDELTA
local dVDelta = EMC.VDELTA
local dNewPosT = GetMachiningStartingPoint( EMC.PATHID)
local dNewPosT
-- se sono già settati, non calcolo posizione finale
if not EMC.YDELTANEXT and not EMC.VDELTANEXT then
dNewPosT = GetMachiningStartingPoint( EMC.PATHID)
end
local dNewYDelta = nil
local dNewVDelta = nil
@@ -1198,6 +1202,10 @@ function SpecCalcCarriages( dDistFront, dDistBack, bFixedDelta, bFixedPos)
local vCmd = {}
SpecAdjustCarriages( vCmd, dPosT, dYDelta, dVDelta, dNewPosT, dNewYDelta, dNewVDelta, bFixedDelta, bFixedPos)
-- reset contatore
EMC.CNT = nil
SpecOutputCNT()
return vCmd
end
@@ -1389,6 +1397,11 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
dVDeltaF = dYDeltaF - ( MinY - MaxV)
end
-- se non c'è posizione finale, è lo scarico
if not dTPosF then
dTPosF = MaxV - dVDeltaF
end
-- verifico che le morse non sono in posizione
if abs( dYDeltaF - dYDeltaI) > 10 * GEO.EPS_SMALL or abs( dVDeltaF - dVDeltaI) > 10 * GEO.EPS_SMALL then
if #vCmd == 0 then
@@ -1396,98 +1409,83 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
-- risalita testa a Zmax
local bZmaxOk = EnsureZmax( bZmaxOk, vCmd)
end
-- ricavo posizione delle morse nelle corse
local dYPosI = max( MinY, dTPosI + dYDeltaI)
local dVPosI = min( MaxV, dTPosI + dVDeltaI)
-- calcolo delta spostamento trave
local dDeltaBeam = dTPosI - dTPosF -- se positivo, la trave si sposta dal carico allo scarico
local dBeamMove = 0
-- scambio diretto
if ( ( dYDeltaI - dVDeltaF) >= MinY - MaxV + DELTA_SIC and dDeltaBeam > 0) or ( ( dVDeltaI - dYDeltaF) >= MinY - MaxV + DELTA_SIC and dDeltaBeam < 0) then
local bCloseY, bCloseV
-- se sono entrambe in presa sul pezzo
if EMC.YDELTA and EMC.VDELTA then
-- se da scarico a carico
if dVDeltaF - dVDeltaI > dYDeltaF - dYDeltaI then
table.insert( vCmd, { 0, 'Direct - V to position first'})
table.insert( vCmd, { 12, 0})
-- suddivido il movimento su entrambe le morse
local nTotMove = ( dVDeltaF - dVDeltaI) ;
dTPosA = dTPosI - nTotMove
dVPosA = dTPosA + dVDeltaF
dYPosA = dTPosA + dYDeltaI
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
table.insert( vCmd, { 12, 1})
-- scambio diretto. V può andare in posizione direttamente.
if ( dYDeltaI - dVDeltaF) >= MinY - MaxV + DELTA_SIC and ( dVDeltaF - dVDeltaI > MinV - dVPosI + dYPosI - MaxY and dVDeltaF - dVDeltaI < dVPosI - MinV + dYPosI - MinY) then
-- se l'altra morsa non era in presa, vado a pinzare il pezzo
if not EMC.YDELTA then
dYPosA = MinY
dTPosA = MinY + dYDeltaI
dVPosA = dTPosA + dVDeltaI
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
dTPosI = dTPosA
dVPosI = dVPosA
table.insert( vCmd, { 11, 1})
end
-- se spostando morsa diretto esco dalle corse, calcolo di quanto devo muovere la trave (cioè l'altra morsa) come minimo
-- se non era ingagiata, vado al suo minimo
if not EMC.VDELTA then
dBeamMove = -( MaxV - dVDeltaF - dTPosI)
-- se spostamento verso lo scarico
elseif ( dVPosI + ( dVDeltaF - dVDeltaI)) < MinV then
dBeamMove = dVPosI + ( dVDeltaF - dVDeltaI) - MinV
-- se spostamento verso il carico
elseif ( dVPosI + ( dVDeltaF - dVDeltaI)) > MaxV then
dBeamMove = dVPosI + ( dVDeltaF - dVDeltaI) - MaxV
end
table.insert( vCmd, { 12, 0})
dTPosA = dTPosI - dBeamMove
dYPosA = dTPosA + dYDeltaI
dVPosA = dTPosA + dVDeltaF
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
-- la morsa allo scarico è adesso in posizione
dVDeltaI = dVDeltaF
dTPosI = dTPosA
-- blocco la morsa
table.insert( vCmd, { 12, 1})
-- imposto i nuovi parametri di aggancio
if EMC.YDELTANEXT and EMC.VDELTANEXT then
-- porto assi alla loro posizione finale
if abs( dYDeltaF - dYDeltaI) > 10 * GEO.EPS_SMALL then
table.insert( vCmd, { 11, 0})
bCloseY = true
else
table.insert( vCmd, { 0, 'Direct - Y to position first'})
table.insert( vCmd, { 11, 0})
-- suddivido il movimento su entrambe le morse
local nTotMove = ( dYDeltaF - dYDeltaI) ;
dTPosA = dTPosI - nTotMove
dVPosA = dTPosA + dVDeltaI
dYPosA = dTPosA + dYDeltaF
dTPosA = dTPosF
dYPosA = dTPosF + dYDeltaF
dVPosA = dTPosF + dVDeltaF
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
table.insert( vCmd, { 11, 1})
table.insert( vCmd, { 12, 0})
bCloseV = true
-- la morsa al carico è adesso in posizione
dYDeltaI = dYDeltaF
end
-- se pinza al carico in presa
elseif EMC.YDELTA then
table.insert( vCmd, { 0, 'Direct - V to position first'})
table.insert( vCmd, { 12, 0})
dTPosA = MaxV - dVDeltaF
dVPosA = MaxV
dYPosA = dTPosA + dYDeltaI
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
table.insert( vCmd, { 12, 1})
table.insert( vCmd, { 11, 0})
bCloseY = true
-- se pinza allo scarico in presa
else
table.insert( vCmd, { 0, 'Direct - Y to position first'})
table.insert( vCmd, { 11, 0})
dTPosA = MinY - dVDeltaF
dVPosA = dTPosA + dYDeltaI
dYPosA = MinY
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
table.insert( vCmd, { 11, 1})
table.insert( vCmd, { 12, 0})
bCloseV = true
end
-- se entrambi in presa
if EMC.YDELTANEXT and EMC.VDELTANEXT then
dTPosA = dTPosF
dYPosA = dTPosF + dYDeltaF
dVPosA = dTPosF + dVDeltaF
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
if bCloseY then table.insert( vCmd, { 11, 1}) end
if bCloseV then table.insert( vCmd, { 12, 1}) end
table.insert( vCmd, { 21, dYDeltaF, dVDeltaF})
-- sposto il carrello Y in posizione
elseif EMC.YDELTANEXT then
-- vado in posizione e sposto il carrello V in parcheggio
dYPosA = MinY
dTPosA = MinY - dYDeltaF
dVPosA = dTPosA + dVDeltaF
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
if bCloseY then table.insert( vCmd, { 11, 1}) end
if abs( dYDeltaF - dYDeltaI) > 10 * GEO.EPS_SMALL then
table.insert( vCmd, { 11, 0})
dYPosA = dTPosI + dYDeltaF
table.insert( vCmd, { 1, 'Y', dYPosA})
table.insert( vCmd, { 11, 1})
-- la morsa al carico è adesso in posizione
dYDeltaI = dYDeltaF
end
table.insert( vCmd, { 12, 0})
-- sposto il carrello V in parcheggio
table.insert( vCmd, { 1, 'V', ParkV})
table.insert( vCmd, { 21, dYDeltaF, 0})
-- sposto il carrello Y in posizione
else
dVPosA = MaxV
dTPosA = MaxV - dVDeltaF
dYPosA = - ( dTPosA + dYDeltaF)
-- vado in posizione e sposto il carrello Y in parcheggio
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
if bCloseV then table.insert( vCmd, { 12, 1}) end
table.insert( vCmd, { 11, 0})
-- sposto il carrello Y in parcheggio
table.insert( vCmd, { 1, 'Y', ParkY})
table.insert( vCmd, { 21, 0, dVDeltaF})
end
@@ -1495,9 +1493,85 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
-- movimento terminato
dTPosI, dYDeltaI, dVDeltaI = dTPosF, dYDeltaF, dVDeltaF
-- scambio diretto. Y può andare in posizione direttamente
elseif ( dYDeltaF - dVDeltaI) >= MinY - MaxV + DELTA_SIC and ( dYDeltaF - dYDeltaI > MinV - dVPosI + dYPosI - MaxY and dYDeltaF - dYDeltaI < dVPosI - MinV + dYPosI - MinY ) then
-- se l'altra morsa non era in presa, vado a pinzare il pezzo
if not EMC.VDELTA then
dVPosA = MaxV
dTPosA = MaxV - dVDeltaI
dYPosA = dTPosA + dYDeltaI
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
dTPosI = dTPosA
dYPosI = dYPosA
table.insert( vCmd, { 12, 1})
end
-- se spostando morsa diretto esco dalle corse, calcolo di quanto devo muovere la trave (cioè l'altra morsa) come minimo
-- se non era ingagiata, vado al suo minimo
if not EMC.YDELTA then
dBeamMove = - ( dYDeltaF - MinY + dTPosI)
-- se spostamento verso lo scarico
elseif ( dYPosI + ( dYDeltaF - dYDeltaI)) < MinY then
dBeamMove = dYPosI + ( dYDeltaF - dYDeltaI) - MinY
-- se spostamento verso il carico
elseif ( dYPosI + ( dYDeltaF - dYDeltaI)) > MaxY then
dBeamMove = dYPosI + ( dYDeltaF - dYDeltaI) - MaxY
end
table.insert( vCmd, { 11, 0})
dTPosA = dTPosI + dBeamMove
dYPosA = dTPosA + dYDeltaF
dVPosA = dTPosA + dVDeltaI
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
-- la morsa allo scarico è adesso in posizione
dYDeltaI = dYDeltaF
dTPosI = dTPosA
-- blocco la morsa
table.insert( vCmd, { 11, 1})
-- imposto i nuovi parametri di aggancio
if EMC.YDELTANEXT and EMC.VDELTANEXT then
if abs( dVDeltaF - dVDeltaI) > 10 * GEO.EPS_SMALL then
table.insert( vCmd, { 12, 0})
dTPosA = dTPosF
dYPosA = dTPosF + dYDeltaF
dVPosA = dTPosF + dVDeltaF
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
table.insert( vCmd, { 12, 1})
-- la morsa al carico è adesso in posizione
dVDeltaI = dVDeltaF
end
table.insert( vCmd, { 21, dYDeltaF, dVDeltaF})
elseif EMC.VDELTANEXT then
if abs( dVDeltaF - dVDeltaI) > 10 * GEO.EPS_SMALL then
table.insert( vCmd, { 12, 0})
dVPosA = dTPosI + dVDeltaF
table.insert( vCmd, { 1, 'V', dVPosA})
table.insert( vCmd, { 12, 1})
-- la morsa al carico è adesso in posizione
dVDeltaI = dVDeltaF
end
table.insert( vCmd, { 11, 0})
-- sposto il carrello Y in parcheggio
table.insert( vCmd, { 1, 'Y', ParkY})
table.insert( vCmd, { 21, 0, dVDeltaF})
else
table.insert( vCmd, { 12, 0})
-- sposto il carrello V in parcheggio
table.insert( vCmd, { 1, 'V', ParkV})
table.insert( vCmd, { 21, dYDeltaF, 0})
end
-- movimento terminato
dTPosI, dYDeltaI, dVDeltaI = dTPosF, dYDeltaF, dVDeltaF
-- se devo recuperare corsa con passo del pellegrino
else
local bForceMoveY = false
local bForceMoveY, bForceMoveV
-- compatto al centro
if not EMC.YDELTA then
table.insert( vCmd, { 0, 'Compact Y'})
@@ -1507,8 +1581,9 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
dYPosA = MinY
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
table.insert( vCmd, { 11, 1})
EMC.YDELTA = true
dYDeltaI = dVDeltaI - MaxV + MinY
EMC.YDELTA = dYDeltaI
bForceMoveV = true
dTPosI = dTPosA
end
if not EMC.VDELTA then
@@ -1519,9 +1594,9 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
dYPosA = MinY
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
table.insert( vCmd, { 12, 1})
EMC.VDELTA = true
bForceMoveY = true
dVDeltaI = dYDeltaI + MaxV - MinY
EMC.VDELTA = dVDeltaI
bForceMoveY = true
dTPosI = dTPosA
end
@@ -1530,7 +1605,7 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
-- a questo punto entrambe le pinze sono in presa sul pezzo. Il trascinatore si decide in base alla direzione di movimento trave
-- trascino con morsa allo scarico
if dDeltaBeam > 0 or bForceMoveY then
if bForceMoveY or ( dDeltaBeam > 0 and not bForceMoveV) then
-- apro morsa al carico
table.insert( vCmd, { 11, 0})
-- devo recuperare più del doppio delle corse
@@ -1544,8 +1619,8 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
table.insert( vCmd, { 11, 1})
table.insert( vCmd, { 12, 0})
dTPosI = dTPosA
EMC.YDELTA = true
EMC.VDELTA = false
EMC.YDELTA = dYDeltaI
EMC.VDELTA = nil
-- mi serve riposizonare di nuovo, quindi richiamo funzione in modo ricorsivo
SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF, dVDeltaF, bFixedDelta, bFixedPos)
-- recupero una corsa massima e l'altra solo di quello che serve
@@ -1554,64 +1629,62 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
dYDeltaI = dYDeltaF
dVPosA = MinV
dTPosA = dTPosI - MaxV + MinV
dYPosA = - ( dYDeltaF + dTPosA)
dYPosA = dYDeltaF + dTPosA
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
table.insert( vCmd, { 11, 1})
table.insert( vCmd, { 12, 0})
dTPosI = dTPosA
EMC.YDELTA = true
EMC.VDELTA = false
EMC.YDELTA = dYDeltaI
EMC.VDELTA = nil
-- mi serve riposizonare di nuovo, quindi richiamo funzione in modo ricorsivo
SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF, dVDeltaF, bFixedDelta, bFixedPos)
-- non serve recuperare al massimo della corsa, suddivido movimento in due
else
-- suddivido il movimento su entrambe le morse
local nTotMove = ( dYDeltaF - dYDeltaI) / 2 ;
local dTotMove = ( dYDeltaF - dYDeltaI) / 2
dYPosA = dTPosI + dYDeltaI + nTotMove
dVPosA = dTPosI + dVDeltaI - nTotMove
dTPosA = dTPosI - nTotMove
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
table.insert( vCmd, { 11, 1})
table.insert( vCmd, { 12, 0})
if abs( dTotMove) > 10 * GEO.EPS_SMALL then
dYPosA = dTPosI + dYDeltaI + dTotMove
dVPosA = dTPosI + dVDeltaI - dTotMove
dTPosA = dTPosI - dTotMove
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
table.insert( vCmd, { 11, 1})
table.insert( vCmd, { 12, 0})
-- aggiorno nuova posizione della morsa al carico dopo riposizionamento
dYDeltaI = dYDeltaF ;
-- aggiorno nuova posizione della morsa al carico dopo riposizionamento
dYDeltaI = dYDeltaF ;
if not EMC.VDELTANEXT then
dTPosA = dTPosF
dYPosA = dTPosF + dYDeltaF
dVPosA = ParkV
elseif EMC.YDELTANEXT then
dTPosA = dTPosF
dYPosA = dTPosF + dYDeltaF
dVPosA = dTPosF + dVDeltaF
else
dYPosA = MinY
dTPosA = MinY - dYDeltaF
dVPosA = dTPosA + dVDeltaF
if not EMC.VDELTANEXT then
dTPosA = dTPosF
dYPosA = dTPosF + dYDeltaF
dVPosA = ParkV
elseif EMC.YDELTANEXT then
dTPosA = dTPosF
dYPosA = dTPosF + dYDeltaF
dVPosA = dTPosF + dVDeltaF
else
dYPosA = MinY
dTPosA = MinY - dYDeltaF
dVPosA = dTPosA + dVDeltaF
end
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
dTPosI, dYDeltaI, dVDeltaI = dTPosF, dYDeltaF, dVDeltaF
-- aggiorno nuova posizione della morsa allo scarico dopo riposizionamento
dVDeltaI = dVDeltaF
end
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
dTPosI, dYDeltaI, dVDeltaI = dTPosF, dYDeltaF, dVDeltaF
-- aggiorno nuova posizione della morsa allo scarico dopo riposizionamento
dVDeltaI = dVDeltaF
-- sistemo apertura morse
if EMC.VDELTANEXT then
table.insert( vCmd, { 12, 1})
end
if not EMC.YDELTANEXT then
table.insert( vCmd, { 11, 0})
-- sposto il carrello Y in parcheggio
table.insert( vCmd, { 1, 'Y', ParkY})
end
-- imposto i nuovi parametri di aggancio
if EMC.YDELTANEXT and EMC.VDELTANEXT then
table.insert( vCmd, { 12, 1})
table.insert( vCmd, { 21, dYDeltaF, dVDeltaF})
elseif EMC.YDELTANEXT then
table.insert( vCmd, { 21, dYDeltaF, 0})
else
table.insert( vCmd, { 12, 1})
table.insert( vCmd, { 11, 0})
-- sposto il carrello Y in parcheggio
table.insert( vCmd, { 1, 'Y', ParkY})
table.insert( vCmd, { 21, 0, dVDeltaF})
end
@@ -1631,54 +1704,61 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
table.insert( vCmd, { 12, 1})
table.insert( vCmd, { 11, 0})
dTPosI = dTPosA
EMC.YDELTA = false
EMC.VDELTA = true
EMC.YDELTA = nil
EMC.VDELTA = dVDeltaI
-- mi serve riposizonare di nuovo, quindi richiamo funzione in modo ricorsivo
SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF, dVDeltaF, bFixedDelta, bFixedPos)
-- recupero una corsa massima e l'altra solo di quello che serve
elseif abs( dVDeltaI - dVDeltaF) > - MinV - MaxV then
-- aggiorno nuova posizione della morsa al carico dopo riposizionamento
local dTotMove = MaxY - dTPosI - dYDeltaI
dVDeltaI = dVDeltaF
dYPosA = MaxY
dTPosA = dTPosI + MaxY - MinY
dTPosA = dTPosI + dTotMove
dVPosA = dVDeltaF + dTPosA
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
table.insert( vCmd, { 12, 1})
table.insert( vCmd, { 11, 0})
dTPosI = dTPosA
EMC.YDELTA = false
EMC.VDELTA = true
EMC.YDELTA = nil
EMC.VDELTA = dVDeltaI
-- mi serve riposizonare di nuovo, quindi richiamo funzione in modo ricorsivo
SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF, dVDeltaF, bFixedDelta, bFixedPos)
-- non serve recuperare al massimo della corsa, suddivido movimento in due
else
-- suddivido il movimento su entrambe le morse
local nTotMove = ( dVDeltaI - dVDeltaF) / 2 ;
local dTotMove = ( dVDeltaI - dVDeltaF) / 2
dYPosA = dTPosI + dYDeltaI + nTotMove
dVPosA = dTPosI + dVDeltaI - nTotMove
dTPosA = dTPosI + nTotMove
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
table.insert( vCmd, { 12, 1})
table.insert( vCmd, { 11, 0})
if abs( dTotMove) > 10 * GEO.EPS_SMALL then
dYPosA = dTPosI + dYDeltaI + dTotMove
dVPosA = dTPosI + dVDeltaI - dTotMove
dTPosA = dTPosI + dTotMove
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
table.insert( vCmd, { 12, 1})
table.insert( vCmd, { 11, 0})
-- aggiorno nuova posizione della morsa al carico dopo riposizionamento
dVDeltaI = dVDeltaF ;
-- aggiorno nuova posizione della morsa al carico dopo riposizionamento
dVDeltaI = dVDeltaF ;
if EMC.VDELTANEXT then
dTPosA = dTPosF
dYPosA = dTPosF + dYDeltaF
dVPosA = dTPosF + dVDeltaF
else
dVPosA = MaxV
dTPosA = MaxV - dVDeltaF
dYPosA = - dTPosA - dYDeltaF
if not EMC.YDELTANEXT then
dTPosA = dTPosF
dVPosA = dTPosF + dVDeltaF
dYPosA = ParkY
elseif EMC.VDELTANEXT then
dTPosA = dTPosF
dYPosA = dTPosF + dYDeltaF
dVPosA = dTPosF + dVDeltaF
else
dVPosA = MaxV
dTPosA = MaxV - dVDeltaF
dYPosA = - dTPosA - dYDeltaF
end
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
dTPosI, dYDeltaI, dVDeltaI = dTPosF, dYDeltaF, dVDeltaF
-- aggiorno nuova posizione della morsa allo scarico dopo riposizionamento
dYDeltaI = dYDeltaF
end
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
dTPosI, dYDeltaI, dVDeltaI = dTPosF, dYDeltaF, dVDeltaF
-- aggiorno nuova posizione della morsa allo scarico dopo riposizionamento
dYDeltaI = dYDeltaF
-- sistemo apertura morse
if EMC.YDELTANEXT then
@@ -1689,10 +1769,16 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
-- sposto il carrello Y in parcheggio
table.insert( vCmd, { 1, 'V', ParkV})
end
-- imposto i nuovi parametri di aggancio
if EMC.YDELTANEXT and EMC.VDELTANEXT then
table.insert( vCmd, { 11, 1})
table.insert( vCmd, { 21, dYDeltaF, dVDeltaF})
elseif EMC.YDELTANEXT then
table.insert( vCmd, { 11, 1})
-- sposto il carrello Y in parcheggio
table.insert( vCmd, { 12, 0})
table.insert( vCmd, { 1, 'V', ParkV})
table.insert( vCmd, { 21, dYDeltaF, 0})
else
table.insert( vCmd, { 21, 0, dVDeltaF})