Prima versione funzionante con tutti i test 101 e altri test ulteriori
This commit is contained in:
+49
-18
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user