Compare commits
1 Commits
3.1c2
...
NewClampRepos
| Author | SHA1 | Date | |
|---|---|---|---|
| f4f94827d5 |
+54
-18
@@ -1536,9 +1536,12 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
||||
dTPosF = MaxV - dVDeltaF
|
||||
end
|
||||
|
||||
-- se il pinzaggio deve essere invertito forzo entrata nei riposizionamenti
|
||||
-- altrimenti posizioni iniziali e finali sono coincidenti dato che la pinza non in presa viene posizionata alla distanza minima a quella in presa
|
||||
local bInvertClamping = not EMC.PILGRIMSTEP and EMC.YDELTA ~= EMC.YDELTANEXT and EMC.VDELTA ~= EMC.VDELTANEXT
|
||||
-- verifico che le morse non sono in posizione
|
||||
if abs( dYDeltaF - dYDeltaI) > 10 * GEO.EPS_SMALL or abs( dVDeltaF - dVDeltaI) > 10 * GEO.EPS_SMALL or
|
||||
EMC.YDELTA ~= EMC.YDELTANEXT or EMC.VDELTA ~= EMC.VDELTANEXT then
|
||||
if ( abs( dYDeltaF - dYDeltaI) > 10 * GEO.EPS_SMALL or abs( dVDeltaF - dVDeltaI) > 10 * GEO.EPS_SMALL or bInvertClamping) and
|
||||
( EMC.YDELTA ~= EMC.YDELTANEXT or EMC.VDELTA ~= EMC.VDELTANEXT) then
|
||||
if #vCmd == 0 then
|
||||
table.insert( vCmd, { 0, 'Clamp repositioning'})
|
||||
-- risalita testa a Zmax
|
||||
@@ -1610,6 +1613,18 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
||||
-- se spostamento verso il carico
|
||||
elseif ( dVPosI + ( dVDeltaF - dVDeltaI)) > MaxV then
|
||||
dBeamMove = dVPosI + ( dVDeltaF - dVDeltaI) - MaxV
|
||||
-- se è FASTCLAMPING attivo, si suddivide il movimento
|
||||
elseif BD.FASTCLAMPING then
|
||||
-- se la trave si sposta dal carico verso lo scarico
|
||||
if dTPosI - dTPosF > 0 then
|
||||
dBeamMove = min( -( dTPosF - dTPosI), -( MyMinY - dYPosI), -( dVDeltaI - dVDeltaF))
|
||||
else
|
||||
dBeamMove = max( -( dTPosF - dTPosI), -( MyMinY - dYPosI))
|
||||
end
|
||||
dBeamMove = dBeamMove / 2
|
||||
-- altrimenti la trave resta ferma e la pinza 1 va in presa (si limita lo scivolamento del pezzo)
|
||||
else
|
||||
;
|
||||
end
|
||||
|
||||
-- se serve un grande spostamento e si sta pinzando poco. Y trascinatore pinza poco e V si sposta per prima per recuperare
|
||||
@@ -1684,6 +1699,8 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
||||
|
||||
-- movimento terminato
|
||||
dTPosI, dYDeltaI, dVDeltaI = dTPosF, dYDeltaF, dVDeltaF
|
||||
EMC.YDELTA = EMC.YDELTANEXT
|
||||
EMC.VDELTA = EMC.VDELTANEXT
|
||||
|
||||
-- SECONDO CASO -> SCAMBIO DIRETTO : Y IN POSIZIONE FINALE
|
||||
-- Y può andare in posizione direttamente se :
|
||||
@@ -1720,6 +1737,18 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
||||
-- se spostamento verso il carico
|
||||
elseif ( dYPosI + ( dYDeltaF - dYDeltaI)) > MaxY then
|
||||
dBeamMove = -( dYPosI + ( dYDeltaF - dYDeltaI) - MaxY)
|
||||
-- se è FASTCLAMPING attivo, si suddivide il movimento
|
||||
elseif BD.FASTCLAMPING then
|
||||
-- se la trave si sposta dal carico verso lo scarico
|
||||
if dTPosI - dTPosF > 0 then
|
||||
dBeamMove = max( ( dTPosF - dTPosI), ( MinV - dVPosI), ( dYDeltaI - dYDeltaF))
|
||||
else
|
||||
dBeamMove = min( ( dTPosF - dTPosI), ( dVPosI - MaxV))
|
||||
end
|
||||
dBeamMove = dBeamMove / 2
|
||||
-- altrimenti la trave resta ferma e la pinza 1 va in presa (si limita lo scivolamento del pezzo)
|
||||
else
|
||||
;
|
||||
end
|
||||
|
||||
-- se serve un grande spostamento e si sta pinzando poco. V trascinatore pinza poco e Y si sposta per prima per recuperare
|
||||
@@ -1793,6 +1822,8 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
||||
end
|
||||
-- movimento terminato
|
||||
dTPosI, dYDeltaI, dVDeltaI = dTPosF, dYDeltaF, dVDeltaF
|
||||
EMC.YDELTA = EMC.YDELTANEXT
|
||||
EMC.VDELTA = EMC.VDELTANEXT
|
||||
|
||||
-- TERZO CASO -> PASSO DEL PELLEGRINO
|
||||
-- non è possibile fare scambio diretto.
|
||||
@@ -1841,6 +1872,7 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
||||
dDeltaBeam = dTPosI - dTPosF
|
||||
|
||||
-- a questo punto entrambe le pinze sono in presa sul pezzo.
|
||||
-- trave si muove dal carico allo scarico
|
||||
-- Il trascinatore si decide in base alla direzione di movimento trave
|
||||
-- trascino con morsa allo scarico. Obiettivo mandare Y in posizione per prima
|
||||
if dDeltaBeam > 0 then
|
||||
@@ -1883,18 +1915,21 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
||||
-- 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( dYDeltaI - dYDeltaF) > dMaxMovePilgrimStepSingleClampY then
|
||||
elseif abs( dYDeltaI - dYDeltaF) > dMaxMovePilgrimStepSingleClampV then
|
||||
-- suddivido il movimento su entrambe le morse
|
||||
local dTotMove = ( dYDeltaF - dYDeltaI) / 2
|
||||
-- morsa Y arriva in posizione finale
|
||||
dYDeltaI = dYDeltaF
|
||||
dVPosA = MinV
|
||||
dTPosA = dTPosI - dVPosI + MinV
|
||||
|
||||
dVPosA = MaxV - dTotMove
|
||||
dTPosA = dTPosI - dVPosI + MaxV - dTotMove
|
||||
dYPosA = dYDeltaF + dTPosA
|
||||
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
|
||||
table.insert( vCmd, { 11, CalcCharStatus( 'Y', dYDeltaF)})
|
||||
table.insert( vCmd, { 12, 0})
|
||||
dYDeltaI = dYDeltaF
|
||||
dTPosI = dTPosA
|
||||
EMC.YDELTA = dYDeltaF
|
||||
EMC.VDELTA = dVDeltaI
|
||||
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
|
||||
@@ -1928,9 +1963,9 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
||||
end
|
||||
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
|
||||
dTPosI, dYDeltaI, dVDeltaI = dTPosF, dYDeltaF, dVDeltaF
|
||||
EMC.YDELTA = EMC.YDELTANEXT
|
||||
EMC.VDELTA = EMC.VDELTANEXT
|
||||
|
||||
-- aggiorno nuova posizione della morsa allo scarico dopo riposizionamento
|
||||
dVDeltaI = dVDeltaF
|
||||
end
|
||||
|
||||
-- imposto i nuovi parametri di aggancio
|
||||
@@ -1989,17 +2024,19 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
||||
-- 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) > dMaxMovePilgrimStepSingleClampV then
|
||||
-- aggiorno nuova posizione della morsa al carico dopo riposizionamento
|
||||
dVDeltaI = dVDeltaF
|
||||
dYPosA = MaxY
|
||||
dTPosA = dTPosI + ( MaxY - dYPosI)
|
||||
elseif abs( dVDeltaI - dVDeltaF) > dMaxMovePilgrimStepSingleClampY then
|
||||
-- suddivido il movimento su entrambe le morse
|
||||
local dTotMove = ( dVDeltaI - dVDeltaF) / 2
|
||||
-- morsa V arriva in posizione finale
|
||||
dYPosA = MaxY + dTotMove
|
||||
dTPosA = dTPosI + ( MaxY - dYPosI) + dTotMove
|
||||
dVPosA = dVDeltaF + dTPosA
|
||||
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
|
||||
table.insert( vCmd, { 12, CalcCharStatus( 'V', dVDeltaF)})
|
||||
table.insert( vCmd, { 11, 0})
|
||||
dVDeltaI = dVDeltaF
|
||||
dTPosI = dTPosA
|
||||
EMC.YDELTA = dYDeltaI
|
||||
EMC.YDELTA = nil
|
||||
EMC.VDELTA = dVDeltaF
|
||||
-- mi serve riposizonare di nuovo, quindi richiamo funzione in modo ricorsivo
|
||||
SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF, dVDeltaF, bFixedDelta, bFixedPos)
|
||||
@@ -2034,9 +2071,8 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
||||
end
|
||||
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
|
||||
dTPosI, dYDeltaI, dVDeltaI = dTPosF, dYDeltaF, dVDeltaF
|
||||
|
||||
-- aggiorno nuova posizione della morsa al carico dopo riposizionamento
|
||||
dYDeltaI = dYDeltaF
|
||||
EMC.YDELTA = EMC.YDELTANEXT
|
||||
EMC.VDELTA = EMC.VDELTANEXT
|
||||
end
|
||||
|
||||
-- imposto i nuovi parametri di aggancio
|
||||
|
||||
Reference in New Issue
Block a user