Offset minimo impostato prima del controllo se spostare morse

This commit is contained in:
andrea.villa
2024-09-18 08:28:26 +02:00
parent aad2a95dff
commit 235a8dacb7
+84 -48
View File
@@ -1374,8 +1374,23 @@ end
---------------------------------------------------------------------
function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF, dVDeltaF, bFixedDelta, bFixedPos)
local dYPosA, dVPosA, dTPosA
-- se pinza non in presa, setto offset minimo in base all'altra che sta pinzando
if not dYDeltaI then
dYDeltaI = dVDeltaI + ( MinY - MaxV)
end
if not dVDeltaI then
dVDeltaI = dYDeltaI - ( MinY - MaxV)
end
if not dYDeltaF then
dYDeltaF = dVDeltaF + ( MinY - MaxV)
end
if not dVDeltaF then
dVDeltaF = dYDeltaF - ( MinY - MaxV)
end
-- verifico che le morse non sono in posizione
if ( dYDeltaF ~= dYDeltaI or dVDeltaF ~= dVDeltaI) then
if abs( dYDeltaF - dYDeltaI) > 10 * GEO.EPS_SMALL or abs( dVDeltaF - dVDeltaI) > 10 * GEO.EPS_SMALL then
if #vCmd == 0 then
table.insert( vCmd, { 0, 'Clamp repositioning'})
-- risalita testa a Zmax
@@ -1384,70 +1399,91 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
-- calcolo delta spostamento trave
local dDeltaBeam = dTPosI - dTPosF -- se positivo, la trave si sposta dal carico allo scarico
-- se pinza non in presa, setto offset minimo in base all'altra che sta pinzando
if not dYDeltaI then
dYDeltaI = dVDeltaI + ( MinY - MaxV)
end
if not dVDeltaI then
dVDeltaI = dYDeltaI - ( MinY - MaxV)
end
if not dYDeltaF then
dYDeltaF = dVDeltaF + ( MinY - MaxV)
end
if not dVDeltaF then
dVDeltaF = dYDeltaF - ( MinY - MaxV)
end
-- scambio diretto
-- scambio diretto
if ( ( dYDeltaI - dVDeltaF) >= MinY - MaxV + DELTA_SIC and dDeltaBeam > 0) or ( ( dVDeltaI - dYDeltaF) >= MinY - MaxV + DELTA_SIC and dDeltaBeam < 0) then
-- se da carico a scarico
if dDeltaBeam < 0 then
-- 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) / 2 ;
dTPosA = dTPosI - nTotMove
dVPosA = dTPosA + dVDeltaF
dYPosA = dTPosA + dYDeltaI
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
table.insert( vCmd, { 12, 1})
table.insert( vCmd, { 11, 0})
dTPosI, dYDeltaI, dVDeltaI = dTPosF, dYDeltaF, dVDeltaF
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) / 2 ;
dTPosA = dTPosI - nTotMove
dVPosA = dTPosA + dVDeltaI
dYPosA = dTPosA + dYDeltaF
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
table.insert( vCmd, { 11, 1})
table.insert( vCmd, { 12, 0})
dTPosI, dYDeltaI, dVDeltaI = dTPosF, dYDeltaF, dVDeltaF
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})
-- suddivido il movimento su entrambe le morse
local nTotMove = ( dVDeltaF - dVDeltaI) / 2 ;
dTPosA = dTPosI - nTotMove
dVPosA = dTPosA + dVDeltaF
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})
-- sposto il carrello Y in posizione
if EMC.YDELTANEXT then
dTPosA = dTPosF
dVPosA = dTPosA + dVDeltaF
dYPosA = dTPosA + dYDeltaF
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
table.insert( vCmd, { 11, 1})
end
dTPosI, dYDeltaI, dVDeltaI = dTPosF, dYDeltaF, dVDeltaF
-- se pinza allo scarico in presa
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) / 2 ;
dTPosA = dTPosI - nTotMove
dVPosA = dTPosA + dVDeltaI
dYPosA = dTPosA + dYDeltaF
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})
-- sposto il carrello Y in posizione
if EMC.VDELTANEXT then
dTPosA = dTPosF
dVPosA = dTPosA + dVDeltaF
dYPosA = dTPosA + dYDeltaF
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
table.insert( vCmd, { 12, 1})
end
dTPosI, dYDeltaI, dVDeltaI = dTPosF, dYDeltaF, dVDeltaF
end
-- sposto il carrello Y in posizione
if EMC.YDELTANEXT then
-- sposto il carrello Y in parcheggio
dYPosA = dTPosA + dYDeltaF
table.insert( vCmd, { 1, 'Y', dYPosA})
table.insert( vCmd, { 11, 1})
end
-- sposto il carrello Y in posizione
if EMC.VDELTANEXT then
-- sposto il carrello Y in parcheggio
dVPosA = dTPosA + dVDeltaF
table.insert( vCmd, { 1, 'V', dVPosA})
table.insert( vCmd, { 12, 1})
end
-- imposto i nuovi parametri di aggancio
if EMC.YDELTANEXT and EMC.VDELTANEXT then
table.insert( vCmd, { 21, dYDeltaF, dVDeltaF})
elseif EMC.YDELTANEXT then
table.insert( vCmd, { 12, 0})
-- sposto il carrello V in parcheggio
table.insert( vCmd, { 1, 'V', ParkV})
table.insert( vCmd, { 21, dYDeltaF, 0})
else
table.insert( vCmd, { 11, 0})
-- sposto il carrello Y in parcheggio
table.insert( vCmd, { 1, 'Y', ParkY})
table.insert( vCmd, { 21, 0, dVDeltaF})
end
-- se devo recuperare corsa con passo del pellegrino
@@ -1536,9 +1572,9 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
dYPosA = dTPosF + dYDeltaF
dVPosA = dTPosF + dVDeltaF
else
dYPosA = dYPosA - nTotMove
dVPosA = dVPosA + nTotMove
dTPosA = dTPosA - nTotMove
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
@@ -1619,9 +1655,9 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
dYPosA = dTPosF + dYDeltaF
dVPosA = dTPosF + dVDeltaF
else
dYPosA = dYPosA - nTotMove
dVPosA = dVPosA + nTotMove
dTPosA = dTPosA + nTotMove
dVPosA = MaxV
dTPosA = MaxY - dVDeltaF
dYPosA = - dTPosA - dVDeltaF
end
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
dTPosI, dYDeltaI, dVDeltaI = dTPosF, dYDeltaF, dVDeltaF