Prima versione funzionante con tutti i test 101 e altri test ulteriori

This commit is contained in:
andrea.villa
2024-09-23 09:51:06 +02:00
parent 446b56d975
commit 5ae185cd0e
+49 -18
View File
@@ -1097,16 +1097,24 @@ function SpecCalcLoad( dPosT, dDistFront, dDistBack)
local dNewVDelta = nil
local dNewY = dPosT + TurnerOffs + dNewYDelta
local vCmd = {}
EgtOutLog( ' *[L]', 1)
-- [L-1]
if dNewY - MaxY > 0 then
dNewYDelta = min( EMC.LB - MinJoin + AGG_LOAD, MaxY - dPosT - TurnerOffs)
EgtOutLog( ' *[L1]', 1)
end --[L-2]
if EMC.LB - dNewYDelta < MinJoin then
dNewYDelta = min( EMC.LB - MinJoin + AGG_LOAD, MaxY - dPosT - TurnerOffs)
EgtOutLog( ' *[L2]', 1)
-- se flag attivo, vado a pinzare al massimo della corsa
if BD.FASTCLAMPING then
EgtOutLog( ' *[L]', 1)
-- [L-1]
if dNewY - MaxY > 0 then
dNewYDelta = min( EMC.LB - MinJoin + AGG_LOAD, MaxY - dPosT - TurnerOffs)
EgtOutLog( ' *[L1]', 1)
end --[L-2]
if EMC.LB - dNewYDelta < MinJoin then
dNewYDelta = min( EMC.LB - MinJoin + AGG_LOAD, MaxY - dPosT - TurnerOffs)
EgtOutLog( ' *[L2]', 1)
end
else
-- si pinza sempre a 1000mm massimo
dNewYDelta = min( dNewYDelta, 1000)
end
-- Commento
table.insert( vCmd, { 0, 'Loading'})
-- risalita testa a Zmax
@@ -1511,9 +1519,23 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
local bZmaxOk = EnsureZmax( bZmaxOk, vCmd)
end
-- reset contatore primo riposizionamento con compensazione lettura laser
EMC.CNT = nil
-- ricavo posizione delle morse nelle corse
local dYPosI = max( MyMinY, dTPosI + dYDeltaI)
local dVPosI = min( MaxV, dTPosI + dVDeltaI)
-- calcolo eventuale massimo riposizionamento con passo del pellegrino. Al primo step si calcolano posizioni attuali delle morse
local dMaxMovePilgrimStepDoubleClamp, dMaxMovePilgrimStepSingleClampY, dMaxMovePilgrimStepSingleClampV
if not EMC.PILGRIMSTEP then
dMaxMovePilgrimStepDoubleClamp = MaxY - dYPosI - MinV + dVPosI
dMaxMovePilgrimStepSingleClampY = MaxY - dYPosI
dMaxMovePilgrimStepSingleClampV = - MinV + dVPosI
else
dMaxMovePilgrimStepDoubleClamp = MaxY - MinY - MinV + MaxV
dMaxMovePilgrimStepSingleClampY = MaxY - MinY
dMaxMovePilgrimStepSingleClampV = - MinV + MaxV
end
-- calcolo delta spostamento trave
local dDeltaBeam = dTPosI - dTPosF -- se positivo, la trave si sposta dal carico allo scarico
@@ -1701,6 +1723,11 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
dYDeltaI = dVDeltaI - MaxV + MyMinY
EMC.YDELTA = dYDeltaI
dTPosI = dTPosA
dYPosI = dYPosA
dVPosI = dVPosA
dMaxMovePilgrimStepDoubleClamp = MaxY - MinY - MinV + MaxV
dMaxMovePilgrimStepSingleClampY = MaxY - MinY
dMaxMovePilgrimStepSingleClampV = - MinV + MaxV
end
if not EMC.VDELTA then
table.insert( vCmd, { 0, 'Compact V'})
@@ -1713,6 +1740,11 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
dVDeltaI = dYDeltaI + MaxV - MyMinY
EMC.VDELTA = dVDeltaI
dTPosI = dTPosA
dYPosI = dYPosA
dVPosI = dVPosA
dMaxMovePilgrimStepDoubleClamp = MaxY - MinY - MinV + MaxV
dMaxMovePilgrimStepSingleClampY = MaxY - MinY
dMaxMovePilgrimStepSingleClampV = - MinV + MaxV
end
-- aggiorno delta mancante
@@ -1723,12 +1755,12 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
if dDeltaBeam > 0 then
-- apro morsa al carico
table.insert( vCmd, { 11, 0})
-- devo recuperare più del doppio delle corse
if abs( dYDeltaI - dYDeltaF) > ( MaxY - MyMinY + MaxV - MinV) then
-- devo recuperare più delle corse disponiobili di entrambi i carrelli
if abs( dYDeltaI - dYDeltaF) > dMaxMovePilgrimStepDoubleClamp then
-- calcolo nuova posizione della morsa al carico dopo riposizionamento
dYPosA = MaxY
dVPosA = MinV
dTPosA = dTPosI - MaxV + MinV
dTPosA = dTPosI - dVPosI + MinV
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
table.insert( vCmd, { 11, 1})
table.insert( vCmd, { 12, 0})
@@ -1740,7 +1772,7 @@ 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) > MaxY - MyMinY then
elseif abs( dYDeltaI - dYDeltaF) > dMaxMovePilgrimStepSingleClampY then
-- aggiorno nuova posizione della morsa al carico dopo riposizionamento
dYDeltaI = dYDeltaF
dVPosA = MinV
@@ -1809,11 +1841,12 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
-- apro morsa allo scarico
table.insert( vCmd, { 12, 0})
-- devo recuperare più del doppio delle corse
if abs( dVDeltaI - dVDeltaF) > ( MaxY - MyMinY + MaxV - MinV) then
local dMaxMoveFirst
if abs( dVDeltaI - dVDeltaF) > dMaxMovePilgrimStepDoubleClamp then
-- calcolo nuova posizione della morsa al carico dopo riposizionamento
dYPosA = MaxY
dVPosA = MinV
dTPosA = dTPosI + ( MaxY - MyMinY)
dTPosA = dTPosI + ( MaxY - dYPosI)
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
table.insert( vCmd, { 12, 1})
table.insert( vCmd, { 11, 0})
@@ -1825,7 +1858,7 @@ 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) > MaxV - MinV then
elseif abs( dVDeltaI - dVDeltaF) > dMaxMovePilgrimStepSingleClampV then
-- aggiorno nuova posizione della morsa al carico dopo riposizionamento
local dTotMove = MaxY - dTPosI - dYDeltaI
dVDeltaI = dVDeltaF
@@ -1902,8 +1935,6 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
end
end
end
-- reset contatore primo riposizionamento con compensazione lettura laser
EMC.CNT = nil
end
end