Compare commits

..

12 Commits

Author SHA1 Message Date
daniele.nicoli 28606a4a3a Merge branch 'Test_M77' into NewLink. Test fatti da Mariano Ok. 2026-06-04 11:30:44 +02:00
daniele.nicoli c414cde957 Split - spostate travi alla quota di parcheggio dei rulli in modo che l'area di lavoro sia sgombra dopo uno split. 2026-06-04 08:56:04 +02:00
daniele.nicoli ce76fe23d2 OnRapid() diminuita la tolleranza 0.1 -> GEO.EPS_SMALL per il cambio degli assi rotativi. 2026-05-29 11:52:37 +02:00
daniele.nicoli c78c2412a5 OnRapid() se presenti movimenti dei carrelli resetta piano di lavorazione 2026-05-28 10:09:38 +02:00
daniele.nicoli 95867ec10f Tolto commento a M77, versione DEV1 da testare 2026-05-27 13:17:58 +02:00
daniele.nicoli 1c0cfdfd22 Forza scrittura di tutti gli assi lineari nel G142 2026-05-27 11:46:43 +02:00
daniele.nicoli 7e977d81cb Cambio versione 2026-05-27 08:31:19 +02:00
daniele.nicoli 6cdb3888a0 Aggiunto UniqueRise per l'emissione di Start e Wait Head( nHSet) 2026-05-26 17:19:36 +02:00
andrea.villa e0dfd45f1c Corretto comando allo split che muove entrambe le pinze 2026-05-26 11:23:07 +02:00
andrea.villa 799b5aead7 Corretto reset piano generico 2026-05-25 17:35:52 +02:00
andrea.villa b9c7989717 Modifica per scarico mascherato 2026-05-22 16:32:15 +02:00
andrea.villa 5d53f6b074 - In separazione si sposta di 150mm anziché 30
- Posizione parcheggio testa 2
2026-05-22 12:07:48 +02:00
3 changed files with 76 additions and 53 deletions
+71 -39
View File
@@ -485,6 +485,7 @@ end
---------------------------------------------------------------------
function OnMachiningEnd()
--EmtOutput( ';Mach End')
local bMoveBothClampsOnSplit = false
if #EMT.MDCHAR > 0 then
-- Emissione split
if EMT.AUXTYPE == 'S' then
@@ -515,6 +516,7 @@ function OnMachiningEnd()
EMT.MDCHAR[1].MovType = nil
EMT.MDCHAR[1].Y2 = ParkV2 - EMT.LT + EMT.Y2DELTA
EMT.MDCHAR[1].V2 = ParkV2
bMoveBothClampsOnSplit = true
end
end
@@ -558,8 +560,13 @@ function OnMachiningEnd()
end
if #EMT.MDCHAR > 0 then
if EMT.AUXTYPE == 'S' then
EmitMoveStartChars( 1)
EmitMoveWaitChars( 1)
if bMoveBothClampsOnSplit then
EmitMoveStartChars( 3)
EmitMoveWaitChars( 3)
else
EmitMoveStartChars( 1)
EmitMoveWaitChars( 1)
end
elseif EMT.AUXTYPE == 'U' then
local nMoveType = EgtIf( EMT.CHY_ON, 3, 2)
EmitMoveStartChars( nMoveType)
@@ -568,6 +575,7 @@ function OnMachiningEnd()
EmitMoveWaitChars( nMoveType)
else
EmitMoveWaitChars( nMoveType, EMT.CHY_ON or TEST_USE)
EMT.LASTOPEISUNLOAD = true
end
-- emissione conclusione pezzo precedente (se non in modalità test)
if not TEST_USE and EMT.PRODID then
@@ -585,7 +593,7 @@ function OnMachiningEnd()
EmtOutput( sOut)
end
elseif not EMT.PREROT then
EmtOutput( '(M77)')
EmtOutput( 'M77')
end
end
end
@@ -856,8 +864,10 @@ function OnRapid()
EmitMoveWaitChars( EgtIf( bOnlyCharY, 1, 3))
else
-- se stesso utensile, e c'è ancora piano attivo dalla lavorazione precedente, allora questo è un climb
if EMT.TOOL == EMT.PREVTOOL and EMT.PLANEACTIVE and ( abs( EMT.R1prec - EMT.R1) < 0.1 and abs( EMT.R2prec - EMT.R2) < 0.1) then
-- controllo se ci sono spostamenti dei carrelli programmati
local bChangeCarriageClamping = CheckChangeCarriageClamping()
-- se non ci sono riposizionamenti dei carrelli, se stesso utensile, e c'è ancora piano attivo dalla lavorazione precedente, allora questo è un climb
if not bChangeCarriageClamping and EMT.TOOL == EMT.PREVTOOL and EMT.PLANEACTIVE and ( abs( EMT.R1prec - EMT.R1) < GEO.EPS_SMALL and abs( EMT.R2prec - EMT.R2) < GEO.EPS_SMALL) then
-- dichiaro finita lavorazione precedente
local sOut = 'G157 EA1'
EmtOutput( sOut)
@@ -889,20 +899,20 @@ function OnRapid()
-- dichiaro che è un movimento standard
bStdMachRapid = true
else
MyAdjustLinearAxes()
EmtAdjustRotaryAxes()
EmtResetPrev()
if bStdMachRapid then
bStdMachRapid = false
bStdClimb = true
end
-- si disattiva piano a meno che non sia lavorazione con stesso utensile e stesso orientamento assi
if EMT.PLANEACTIVE then
if EMT.PLANEACTIVE then
EmitResetMachining( false)
end
MyAdjustLinearAxes()
EmtAdjustRotaryAxes()
EmtResetPrev()
EmtOutput( '( *** '..EMT.MCHNAME..'/'..EMT.TOOL..' *** )')
-- eventuale movimento carrelli
for i = 1, #EMT.AUXCMD do
@@ -981,10 +991,10 @@ function OnRapid()
end
MyAdjustLinearAxes()
EmtAdjustRotaryAxes()
-- se ultimo rapido e motosega, si va in home
EmitMoveDataHead( nHSet, { X=EMT.L2, Z=EMT.L3, C=EMT.R1, B=EMT.R2})
-- su ultimo rapido in uscita, comandi di attesa movimenti
if bLastRise or bStdRise then
if bLastRise or bUniqueRise or bStdRise then
EmitMoveStartHead( nHSet)
-- se lavorazione in doppio
if nHSet == 1 and EMT.DOU_TYPE == 2 then
@@ -1149,14 +1159,15 @@ function OnRapid()
-- trasformo i punti nel piano
MyAdjustLinearAxes()
EmtAdjustRotaryAxes()
-- annullo precedenti per forzare scrittura
EMT.L1p = nil
EMT.L2p = nil
EMT.L3p = nil
local sDouFlag = EgtIf( EMT.DOU_TYPE, ' EE1', '')
EmtOutput( 'G142'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..EMT.IPLGLSTR..EgtIf( nHSet~=2, ' EU1', ' EU2')..sDouFlag..' EF'..GetFmaxClamp())
EMT.PLANEACTIVE = true
-- EMT.L1p = nil
-- EMT.L2p = nil
-- EMT.L3p = nil
-- annullo precedenti per forzare scrittura
EMT.R1p = nil
EMT.R2p = nil
@@ -1369,6 +1380,28 @@ function CalcCharStatusN( sCmd)
end
end
---------------------------------------------------------------------
-- controlla se nella tabella AUX sono presenti dei movimenti dei carrelli
function CheckChangeCarriageClamping()
local ChangeCarriagesParam = {
'1', -- movimento singolo carro
'2', -- movimento carro e trave
'3', -- movimento 2 carri e trave
'4', -- risalita a Z max
'11', -- comando pinza 1
'12' -- comando pinza 2
}
for i=1, #EMT.AUXCMD do
local Cmd = EgtSplitString( EMT.AUXCMD[i])
for j=1, #ChangeCarriagesParam do
if Cmd[1] == ChangeCarriagesParam[j] then
return true
end
end
end
return false
end
---------------------------------------------------------------------
function PrepareLoad( sCmd, nInd, bStart)
local Cmd = EgtSplitString( sCmd)
@@ -2295,6 +2328,8 @@ function EmitResetMachining( bNextTool)
EmtOutput( 'G157 EA1')
-- piano non più attivo
EMT.PLANEACTIVE = false
EMT.REFLOC = nil
EMT.IPLGL = false
end
end
@@ -2317,27 +2352,14 @@ function EmitParkRoller( dPosT, bSplitCut, bUsePrevDelta)
local DiffY2 = MyParkY2 - dPosY2
--EmtOutput( string.format( 'PosT=%.3f DiffY1=%.3f DiffY2=%.3f', dPosT, DiffY1, DiffY2))
if bSplitCut then
local bYNoMove, bVNoMove
if DiffY1 > 0.1 then
bYNoMove = false
MDChar.Y1 = dPosY1 + DiffY1
else
bYNoMove = true
MDChar.Y1 = dPosY1
end
if DiffY2 < -0.1 then
bVNoMove = false
MDChar.Y2 = dPosY2 + DiffY2
dPosT = dPosT + DiffY2
else
bVNoMove = true
MDChar.Y2 = dPosY2
end
-- se anche solo una morsa è restata in posizione, le sposto comunque entrambe di 5mm per distanziare i pezzi separati
if bYNoMove or bVNoMove then
MDChar.Y1 = MDChar.Y1 + 30
MDChar.Y2 = MDChar.Y2 - 30
end
local dAddMoveY1 = ParkV1 + ( -dPosT - EMT.LT)
local dAddMoveY2 = ParkV2 + ( -dPosT - EMT.LT)
local MoveY1 = max( DiffY1, dAddMoveY1, 30.0)
local MoveY2 = min( DiffY2, dAddMoveY2, -30.0)
MDChar.Y1 = dPosY1 + MoveY1
MDChar.Y2 = dPosY2 + MoveY2
dPosT = dPosT + MoveY2
elseif DiffY1 > 0.1 and DiffY2 < -0.1 then
EmtSetLastError( 1201, 'Error Collision in ParkRoller')
elseif DiffY1 > 0.1 then
@@ -2449,9 +2471,19 @@ function ToolPreSelectionSingleHead( nMchId)
if bCarrMove then
-- se è stato trovato utensile, emetto preselezione
if sToolChangePos and sToolChange and sToolChangeHead then
local MyParkX1 = EgtIf( GetHeadTCSet( sToolChangeHead, sToolChangePos) == 'Head1_TC2', ParkFrnX1, ParkX1)
local MyParkX1, MyParkB1, MyParkC1
if GetHeadTCSet( sToolChangeHead, sToolChangePos) == 'Head1_TC2' then
MyParkX1 = ParkFrnX1
MyParkB1 = ParkFrnB1
MyParkC1 = ParkFrnC1
else
MyParkX1 = ParkX1
MyParkB1 = ParkB1
MyParkC1 = ParkC1
end
EmtOutput( '( *** TOOL PRE-SEL *** )')
EmitMoveDataHead( 1, { X=-MyParkX1, Z=MaxZ1, B=ParkB1, C=ParkC1, TPos=AdjustTcPos( false, sToolChangePos)})
EmitMoveDataHead( 1, { X=-MyParkX1, Z=MaxZ1, B=MyParkB1, C=MyParkC1, TPos=AdjustTcPos( false, sToolChangePos)})
-- comincio i movimenti di preselezione
EmitMoveStartHead( 1)
-- se preselezione e c'era montata motosega, si aspetta fine della preselezione prima di andare avanti
+4 -13
View File
@@ -1661,19 +1661,10 @@ function ExecParkRoller( PosY1, PosY2, PosV1, PosV2, bSpliCut, bAgg)
local DiffY2 = MyParkY2 - PosY2
-- se appena eseguito taglio di separazione
if bSpliCut then
local dAddMove
-- se entrambe le morse si spostano vado in posizione calcolata
if DiffY1 > 0.1 and DiffY2 < -0.1 then
dAddMove = 0
-- se almeno una è rimasta ferma in posizione, allontano comunque di 30mm ulteriori
else
dAddMove = 30
end
local MoveY1 = max( DiffY1, 0.0)
local MoveY2 = min( DiffY2, 0.0)
MoveY1 = MoveY1 + dAddMove
MoveY2 = MoveY2 - dAddMove
local dAddMoveY1 = ParkV1 + ( -PosT - EMT.LR)
local dAddMoveY2 = ParkV2 + ( -PosT - EMT.LR)
local MoveY1 = max( DiffY1, dAddMoveY1, 30.0)
local MoveY2 = min( DiffY2, dAddMoveY2, -30.0)
-- aggancio i pezzi rimanenti all'asse Y1
LinkRemainingPartsToY1()
+1 -1
View File
@@ -32,7 +32,7 @@
require( 'EmtGenerator')
EgtEnableDebug( false)
PP_VER = '3.1e1_NL4'
PP_VER = '3.1e1_NL13'
PP_NVER = '3.1.3.2'
MIN_MACH_VER = '2.5k1'
MACH_NAME = EgtGetCurrMachineName()