Compare commits

...

4 Commits

Author SHA1 Message Date
andrea.villa 74a0bc4a43 Aggiunto ripinzaggio extra in caso servisse un grande spostamento e si sta pinzando poco 2024-09-24 10:13:10 +02:00
andrea.villa 24857bc252 Merge branch 'develop' 2024-09-23 12:55:14 +02:00
andrea.villa 5e90232086 - Aggiunta nuova strategia riposizionamento morse
- Aggiunta lettura flag NEWCLAMPING in BeamData, per abilitare nuova strategia riposizionamento
- Aggiunta lettura flag FASTCLAMPING. Se false, al carico prende al massimo 1000mm
2024-09-23 12:54:44 +02:00
andrea.villa 6e1faf69bc Merge branch 'NewClampRepos' into develop 2024-09-23 12:49:53 +02:00
3 changed files with 95 additions and 2 deletions
+85 -1
View File
@@ -1111,7 +1111,7 @@ function SpecCalcLoad( dPosT, dDistFront, dDistBack)
EgtOutLog( ' *[L2]', 1)
end
else
-- si pinza sempre a 1000mm massimo
-- altrimenti si pinza sempre a massimo 1000mm
dNewYDelta = min( dNewYDelta, 1000)
end
@@ -1492,6 +1492,7 @@ end
---------------------------------------------------------------------
function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF, dVDeltaF, bFixedDelta, bFixedPos)
local dYPosA, dVPosA, dTPosA
local dGainOnReclamping = BD.GAIN_RECLAMPING or 1000
-- se primo scambio
local MyMinY = EgtIf( EMC.CNT == 1, MinY + AGG_LOAD, MinY)
@@ -1568,6 +1569,7 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
dVPosI = dVPosA
table.insert( vCmd, { 11, 1})
end
-- se spostando morsa diretto esco dalle corse, calcolo di quanto devo muovere la trave (cioè l'altra morsa) come minimo
-- se non era ingaggiata, vado al suo minimo
if not EMC.VDELTA then
@@ -1580,6 +1582,27 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
dBeamMove = dVPosI + ( dVDeltaF - dVDeltaI) - MaxV
end
-- se serve un grande spostamento e si sta pinzando poco. Y trascinatore pinza poco e V si sposta per prima per recuperare
if not BD.FASTCLAMPING and abs( dBeamMove) > 2000 and dDeltaBeam < 0 and EMC.LB - dYDeltaI < max( 550, (MinJoin * 2)) then
table.insert( vCmd, { 12, 0})
dVPosA = dVPosI - dGainOnReclamping
-- sposto il carrello V di 1000mm
table.insert( vCmd, { 1, 'V', dVPosA})
table.insert( vCmd, { 12, 1})
-- apro morsa Y e recupero i 1000mm
table.insert( vCmd, { 11, 0})
dVPosA = dVPosI
dYPosA = dYPosI
dTPosA = dTPosI + dGainOnReclamping
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
dTPosI = dTPosA
dVPosI = dVPosA
dVDeltaI = dVDeltaI - dGainOnReclamping
dYDeltaI = dYDeltaI - dGainOnReclamping
table.insert( vCmd, { 11, 1})
dBeamMove = dBeamMove + dGainOnReclamping
end
table.insert( vCmd, { 12, 0})
dTPosA = dTPosI - dBeamMove
@@ -1667,6 +1690,27 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
dBeamMove = dYPosI + ( dYDeltaF - dYDeltaI) - MaxY
end
-- se serve un grande spostamento e si sta pinzando poco. V trascinatore pinza poco e Y si sposta per prima per recuperare
if not BD.FASTCLAMPING and abs( dBeamMove) > 2000 and dDeltaBeam > 0 and dVDeltaI < max( 550, (MinJoin * 2)) then
table.insert( vCmd, { 11, 0})
dYPosA = dYPosI + dGainOnReclamping
-- sposto il carrello V di 1000mm
table.insert( vCmd, { 1, 'Y', dYPosA})
table.insert( vCmd, { 11, 1})
-- apro morsa Y e recupero i 1000mm
table.insert( vCmd, { 12, 0})
dVPosA = dVPosI
dYPosA = dYPosI
dTPosA = dTPosI - dGainOnReclamping
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
dTPosI = dTPosA
dVPosI = dVPosA
dVDeltaI = dVDeltaI + dGainOnReclamping
dYDeltaI = dYDeltaI + dGainOnReclamping
table.insert( vCmd, { 12, 1})
dBeamMove = dBeamMove - dGainOnReclamping
end
table.insert( vCmd, { 11, 0})
dTPosA = dTPosI + dBeamMove
@@ -1768,6 +1812,26 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
-- Il trascinatore si decide in base alla direzione di movimento trave
-- trascino con morsa allo scarico. Obiettivo mandare Y in posizione per prima
if dDeltaBeam > 0 then
-- se serve un grande spostamento e si sta pinzando poco. Y trascinatore pinza poco e V si sposta per prima per recuperare
if not BD.FASTCLAMPING and abs( dDeltaBeam) > 2000 and dVDeltaI < max( 550, (MinJoin * 2)) then
table.insert( vCmd, { 11, 0})
dYPosA = dYPosI + dGainOnReclamping
-- sposto il carrello V di 1000mm
table.insert( vCmd, { 1, 'Y', dYPosA})
table.insert( vCmd, { 11, 1})
-- apro morsa Y e recupero i 1000mm
table.insert( vCmd, { 12, 0})
dVPosA = dVPosI
dYPosA = dYPosI
dTPosA = dTPosI - dGainOnReclamping
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
dTPosI = dTPosA
dVPosI = dVPosA
dVDeltaI = dVDeltaI + dGainOnReclamping
dYDeltaI = dYDeltaI + dGainOnReclamping
table.insert( vCmd, { 12, 1})
end
-- apro morsa al carico
table.insert( vCmd, { 11, 0})
-- devo recuperare più delle corse disponibili di entrambi i carrelli
@@ -1853,6 +1917,26 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
end
-- trave si muove dallo scarico verso il carico. Obiettivo mandare V in posizione per prima
else
-- se serve un grande spostamento e si sta pinzando poco. Y trascinatore pinza poco e V si sposta per prima per recuperare
if not BD.FASTCLAMPING and abs( dDeltaBeam) > 2000 and EMC.LB - dYDeltaI < max( 550, (MinJoin * 2)) then
table.insert( vCmd, { 12, 0})
dVPosA = dVPosI - dGainOnReclamping
-- sposto il carrello V di 1000mm
table.insert( vCmd, { 1, 'V', dVPosA})
table.insert( vCmd, { 12, 1})
-- apro morsa Y e recupero i 1000mm
table.insert( vCmd, { 11, 0})
dVPosA = dVPosI
dYPosA = dYPosI
dTPosA = dTPosI + dGainOnReclamping
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
dTPosI = dTPosA
dVPosI = dVPosA
dVDeltaI = dVDeltaI - dGainOnReclamping
dYDeltaI = dYDeltaI - dGainOnReclamping
table.insert( vCmd, { 11, 1})
end
-- apro morsa allo scarico
table.insert( vCmd, { 12, 0})
-- devo recuperare più del doppio delle corse
+9
View File
@@ -1,5 +1,14 @@
==== Common_FAST Update Log ====
Versione 2.6i4 (24/09/2024)
- (SIM-GEN) Aggiunto ripinzaggio extra in caso servisse un grande spostamento e si sta pinzando poco.
L'aggiunta del ripinzaggio dipende da FASTCLAMPING (che deve essere disattiva). Viene aggiunta GAIN_RECLAMPING per decidere il guadagno in mm del ripinzaggio.
Versione 2.6i3 (23/09/2024)
- (SIM-GEN) Aggiunta nuova strategia riposizionamento morse
- (SIM-GEN) Aggiunta lettura flag NEWCLAMPING in BeamData, per abilitare nuova strategia riposizionamento. Se false o nil, funziona con metodo vecchio.
- (SIM-GEN) Aggiunta lettura flag FASTCLAMPING. Se false, al carico prende al massimo 1000mm, per evitare collisioni durante ciclo di lettura laser e prima lavorazione.
Versione 2.6i2 (16/09/2024)
- (SIM-GEN) Se utensili più lunghi di 200mm, si ruota in home e poi si approccia il pezzo. Ticket#2038
- (SIM-GEN) Aumentata distanza ingombro da 650mm a 660mm. In casi di utensile abbastanza lungo poteva andare in colisione. Ticket#2041
+1 -1
View File
@@ -3,7 +3,7 @@
local InfoCommon_STD_PP = {
NAME = 'Common_FAST', -- nome script PP standard
VERSION = '2.6i2', -- versione script
VERSION = '2.6i4', -- versione script
MIN_MACH_VER_PP_COMMON = '2.5k1' -- versione minima kernel
}