- Risalita a ZMAX

- Migliorie se scambio diretto
This commit is contained in:
andrea.villa
2024-09-17 15:56:47 +02:00
parent 26126ac892
commit aad2a95dff
+53 -37
View File
@@ -1378,6 +1378,8 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
if ( dYDeltaF ~= dYDeltaI or dVDeltaF ~= dVDeltaI) then
if #vCmd == 0 then
table.insert( vCmd, { 0, 'Clamp repositioning'})
-- risalita testa a Zmax
local bZmaxOk = EnsureZmax( bZmaxOk, vCmd)
end
-- calcolo delta spostamento trave
local dDeltaBeam = dTPosI - dTPosF -- se positivo, la trave si sposta dal carico allo scarico
@@ -1398,52 +1400,50 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
-- scambio diretto
if ( ( dYDeltaI - dVDeltaF) >= MinY - MaxV + DELTA_SIC and dDeltaBeam > 0) or ( ( dVDeltaI - dYDeltaF) >= MinY - MaxV + DELTA_SIC and dDeltaBeam < 0) then
if EMC.YDELTA then
if not EMC.VDELTA then
table.insert( vCmd, { 12, 0})
end
dTPosA = MaxV - dVDeltaF
dVPosA = MaxV
dYPosA = dTPosA - dYDeltaI
-- se da carico a scarico
if dDeltaBeam < 0 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})
dTPosA = dTPosF
dYPosA = dVDeltaF + dTPosF
dVPosA = dYDeltaF + dTPosF
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
dTPosI, dYDeltaI, dVDeltaI = dTPosF, dYDeltaF, dVDeltaF
-- 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
if not EMC.VDELTANEXT then
table.insert( vCmd, { 12, 0})
-- sposto il carrello Y in parcheggio
table.insert( vCmd, { 1, 'V', ParkV})
end
dTPosI, dYDeltaI, dVDeltaI = dTPosF, dYDeltaF, dVDeltaF
else
dTPosA = MinY - dYDeltaF
dVPosA = dTPosA - dVDeltaI
dYPosA = MinY
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})
dTPosA = dTPosF
dYPosA = dYDeltaF + dTPosF
dVPosA = dVDeltaF + dTPosF
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
dTPosI, dYDeltaI, dVDeltaI = dTPosF, dYDeltaF, dVDeltaF
-- 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
if not EMC.YDELTANEXT then
table.insert( vCmd, { 11, 0})
-- sposto il carrello Y in parcheggio
table.insert( vCmd, { 1, 'Y', ParkY})
end
dTPosI, dYDeltaI, dVDeltaI = dTPosF, dYDeltaF, dVDeltaF
end
-- imposto i nuovi parametri di aggancio
if EMC.YDELTANEXT and EMC.VDELTANEXT then
if EMC.YDELTANEXT and EMC.VDELTANEXT then
table.insert( vCmd, { 21, dYDeltaF, dVDeltaF})
elseif EMC.YDELTANEXT then
table.insert( vCmd, { 21, dYDeltaF, 0})
@@ -1454,6 +1454,8 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
else
-- compatto al centro
if not EMC.YDELTA then
table.insert( vCmd, { 0, 'Compact Y'})
table.insert( vCmd, { 11, 0})
dTPosA = MaxV - dVDeltaI
dVPosA = MaxV
dYPosA = MinY
@@ -1464,6 +1466,8 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
dTPosI = dTPosA
end
if not EMC.VDELTA then
table.insert( vCmd, { 0, 'Compact V'})
table.insert( vCmd, { 12, 0})
dTPosA = MinY - dYDeltaI
dVPosA = MaxV
dYPosA = MinY
@@ -1527,9 +1531,15 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
-- aggiorno nuova posizione della morsa al carico dopo riposizionamento
dYDeltaI = dYDeltaF ;
dYPosA = dYPosA - nTotMove
dVPosA = dVPosA + nTotMove
dTPosA = dTPosA - nTotMove
if EMC.YDELTANEXT then
dTPosA = dTPosF
dYPosA = dTPosF + dYDeltaF
dVPosA = dTPosF + dVDeltaF
else
dYPosA = dYPosA - nTotMove
dVPosA = dVPosA + nTotMove
dTPosA = dTPosA - nTotMove
end
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
dTPosI, dYDeltaI, dVDeltaI = dTPosF, dYDeltaF, dVDeltaF
@@ -1604,9 +1614,15 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
-- aggiorno nuova posizione della morsa al carico dopo riposizionamento
dVDeltaI = dVDeltaF ;
dYPosA = dYPosA - nTotMove
dVPosA = dVPosA + nTotMove
dTPosA = dTPosA + nTotMove
if EMC.VDELTANEXT then
dTPosA = dTPosF
dYPosA = dTPosF + dYDeltaF
dVPosA = dTPosF + dVDeltaF
else
dYPosA = dYPosA - nTotMove
dVPosA = dVPosA + nTotMove
dTPosA = dTPosA + nTotMove
end
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
dTPosI, dYDeltaI, dVDeltaI = dTPosF, dYDeltaF, dVDeltaF