From aad2a95dfffdcc405457d19c7a961f9abd549653 Mon Sep 17 00:00:00 2001 From: "andrea.villa" Date: Tue, 17 Sep 2024 15:56:47 +0200 Subject: [PATCH] - Risalita a ZMAX - Migliorie se scambio diretto --- Common_FAST.mlse | 90 ++++++++++++++++++++++++++++-------------------- 1 file changed, 53 insertions(+), 37 deletions(-) diff --git a/Common_FAST.mlse b/Common_FAST.mlse index 6129589..3700454 100644 --- a/Common_FAST.mlse +++ b/Common_FAST.mlse @@ -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