Compare commits
22 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 525175586b | |||
| a08cc7ac7e | |||
| a2068fc437 | |||
| 46893aed18 | |||
| dffcc50b34 | |||
| 635457269e | |||
| 4fe1fee036 | |||
| f51cf52864 | |||
| 43b441d069 | |||
| 8a30ac309e | |||
| 63bba61c19 | |||
| 92d983451c | |||
| b2ce94eeb3 | |||
| 059e150bb1 | |||
| 7c81481da4 | |||
| 272705acf2 | |||
| 709c6ebccf | |||
| ab03fa02c1 | |||
| 4e60812c29 | |||
| 3c8d626277 | |||
| f90003d85a | |||
| 5cc80c6ce7 |
+159
-44
@@ -166,7 +166,7 @@ function OnDispositionStart()
|
||||
' P15='..EmtLenToString( -DeltaTabY, 2)..' P16='..EmtLenToString( DeltaTabZ - MillOffs, 2)..
|
||||
' P17='..EmtLenToString( Delta2TabY, 2)..' P18='..EmtLenToString( -Delta2TabZ - Mill2Offs, 2)
|
||||
-- se è in configurazione a 3 teste
|
||||
if EgtGetHeadId( 'H31') then
|
||||
if IsHeadExisting( 3) then
|
||||
sOut = sOut .. ' P19='..EmtLenToString( -Delta3TabY, 2)..' P20='..EmtLenToString( Delta3TabZ - Mill3Offs, 2)..
|
||||
' P21='..EmtLenToString( Mill3Offs, 2).. ' P22='.. EmtLenToString( -ParkInLavZ2, 2)
|
||||
else
|
||||
@@ -397,6 +397,8 @@ function OnMachiningStart()
|
||||
EMT.MCHNAME = EgtGetOperationName( EMT.MCHID)
|
||||
EMT.MCHTYPE = EgtGetMachiningParam( MCH_MP.TYPE)
|
||||
EMT.MCHUSERNOTES = EgtGetMachiningParam( MCH_MP.USERNOTES)
|
||||
EMT.MCHCUT = ( EMT.MCHUSERNOTES:find( 'Cut;', 1, true) ~= nil)
|
||||
|
||||
-- se sega a catena, aggiusto subito angolo scelto per asse virtuale A
|
||||
if EMT.HEAD == 'H13' then
|
||||
-- valore dell'asse virtuale
|
||||
@@ -473,18 +475,18 @@ function OnMachiningEnd()
|
||||
EmitRemark( 'PART UNLOAD')
|
||||
elseif EMT.AUXTYPE == 'P' then
|
||||
if EMT.PREROT then
|
||||
EmitZmax( false, true, EMT.R1, EMT.R2)
|
||||
EmitZmax( false, true, EMT.R1, EMT.R2, false, false, false)
|
||||
EMT.ZMAX = true
|
||||
EmitRemark( 'PART ROTATION')
|
||||
elseif EMT.FALL then
|
||||
if EMT.TO_ZMAX and not EMT.ZMAX then
|
||||
EmitZmax( false, true, EMT.R1, EMT.R2)
|
||||
EmitZmax( false, true, EMT.R1, EMT.R2, false, false, false)
|
||||
EMT.ZMAX = true
|
||||
EMT.TO_ZMAX = nil
|
||||
end
|
||||
EmitRemark( 'PART FALL')
|
||||
else
|
||||
EmitZmax( false, true, EMT.R1, EMT.R2)
|
||||
EmitZmax( false, true, EMT.R1, EMT.R2, false, false, false)
|
||||
EMT.ZMAX = true
|
||||
EmitRemark( 'PART SPLIT 2')
|
||||
end
|
||||
@@ -533,7 +535,10 @@ function OnMachiningEnd()
|
||||
EMT.PREVTOOL = EMT.TOOL
|
||||
if EMT.DOU_TYPE and not EMT.ZMAX then EMT.DOU_TO_ZMAX = EMT.DOU_TYPE end
|
||||
EMT.DOU_TYPE = nil
|
||||
|
||||
-- se taglio finale, aggiorno lunghezza barra
|
||||
if EMT.MCHCUT then
|
||||
EMT.LB = EMT.LT + ( EMT.X_OFF or 0)
|
||||
end
|
||||
-- salvo dati utensile
|
||||
local nSetHead = GetHeadSet( EMT.HEAD)
|
||||
-- per gruppo testa 1
|
||||
@@ -585,6 +590,10 @@ function OnPathEnd()
|
||||
if not EMT.ZMAX then
|
||||
EmitResetMachining()
|
||||
end
|
||||
|
||||
-- salvo dati precedenti
|
||||
EMT.L2pp = EMT.L2o
|
||||
|
||||
EMT.AUXTYPE = nil
|
||||
EMT.UNL = nil
|
||||
EMT.PREROT = nil
|
||||
@@ -878,13 +887,40 @@ function OnRapid()
|
||||
end
|
||||
-- eseguo movimenti
|
||||
local Speed = EMT.S
|
||||
EmitMoveDataHead( 3, { Z=EMT.L3, S=Speed})
|
||||
EmitMoveDataHead( 3, { B=EMT.R2, C=EMT.R1, S=Speed})
|
||||
EmitMoveStartHead( 3)
|
||||
-- eventuale preselezione successiva testa 2
|
||||
PreselectNextDiffHead( EMT.MCHID, EMT.HEAD)
|
||||
-- aspetto esecuzione movimento testa 3
|
||||
EmitMoveWaitHead( 3)
|
||||
-- se è macchina a 3 teste con gruppo truciolatore 4 assi
|
||||
if EgtGetHeadId( 'H39') then
|
||||
EmitMoveDataHead( 3, { Z=EMT.L3, S=Speed})
|
||||
EmitMoveDataHead( 3, { B=EMT.R2, C=EMT.R1, S=Speed})
|
||||
EmitMoveStartHead( 3)
|
||||
-- eventuale preselezione successiva testa 2
|
||||
PreselectNextDiffHead( EMT.MCHID, EMT.HEAD)
|
||||
-- aspetto esecuzione movimento testa 3
|
||||
EmitMoveWaitHead( 3)
|
||||
-- se gruppo lama dedicato, senza cambio utensile
|
||||
elseif EgtGetHeadId( 'H38') then
|
||||
local B3Home = EgtGetAxisHomePos( 'B3')
|
||||
local C3Home = EgtGetAxisHomePos( 'C3')
|
||||
EmitMoveDataHead( 3, { X=SafeX3RotAxis, S=Speed})
|
||||
-- se non sono esattamente in home, devo ruotare in zona sicura
|
||||
if abs( C3Home - EMT.R1) > 1 or abs( B3Home - EMT.R2) > 1 then
|
||||
EMT.L3 = min( EMT.L3, SafeZ3RotAxis)
|
||||
EmitMoveDataHead( 3, { Z=SafeZ3RotAxis, S=Speed})
|
||||
EmitMoveDataHead( 3, { B=EMT.R2, C=EMT.R1, S=Speed})
|
||||
EmitMoveDataHead( 3, { Z=EMT.L3, S=Speed})
|
||||
EmitMoveDataHead( 3, { X=EMT.L2, S=Speed})
|
||||
end
|
||||
-- muovo in posizione finale
|
||||
EmitMoveDataHead( 3, { X=EMT.L2, Z=EMT.L3, B=EMT.R2, C=EMT.R1, S=Speed})
|
||||
|
||||
EmitMoveStartHead( 3)
|
||||
-- eventuale preselezione successiva testa 2
|
||||
PreselectNextDiffHead( EMT.MCHID, EMT.HEAD)
|
||||
-- aspetto esecuzione movimento testa 3
|
||||
EmitMoveWaitHead( 3)
|
||||
-- errore, testa non gestita
|
||||
else
|
||||
EmtSetLastError( 1212, "HEAD not managed")
|
||||
end
|
||||
end
|
||||
-- dati aggancio a trave
|
||||
local BhData = { T=EMT.L1, SetHead=0}
|
||||
@@ -928,7 +964,7 @@ function OnRapid()
|
||||
EmitParkedLines()
|
||||
-- se sfrido grande, emetto comando speciale
|
||||
if EMT.HOVM > 99 then
|
||||
if EgtGetHeadId( 'H31') then
|
||||
if IsHeadExisting( 3) then
|
||||
MyOutput( 'M107')
|
||||
else
|
||||
MyOutput( ';M107')
|
||||
@@ -944,11 +980,11 @@ function OnRapid()
|
||||
-- Allora salvo l'attuale e imposto il vecchio solo momentanemente, per poi ripristinarlo
|
||||
local sBckTcPos = EMT.TCPOS
|
||||
EMT.TCPOS = EMT.PREVTCPOSREAL_H2
|
||||
EmitZmax( false, false, PrevR1, PrevR2)
|
||||
EmitZmax( false, false, PrevR1, PrevR2, false, false, true)
|
||||
EMT.TCPOS = sBckTcPos
|
||||
EMT.R3_CHANGED = nil
|
||||
else
|
||||
EmitZmax( false, false, PrevR1, PrevR2)
|
||||
EmitZmax( false, false, PrevR1, PrevR2, false, false, true)
|
||||
end
|
||||
EMT.ZMAX = true
|
||||
EMT.TO_ZMAX = nil
|
||||
@@ -986,7 +1022,7 @@ function OnRapid()
|
||||
if EMT.MCHUSERNOTES and EMT.MCHUSERNOTES:find( 'Cut', 1, true) then
|
||||
-- se sfrido grande, emetto comando speciale
|
||||
if EMT.LB - EMT.LT > 99 then
|
||||
if EgtGetHeadId( 'H31') then
|
||||
if IsHeadExisting( 3) then
|
||||
MyOutput( 'M107')
|
||||
else
|
||||
MyOutput( ';M107')
|
||||
@@ -1027,9 +1063,20 @@ function OnRapid()
|
||||
EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed})
|
||||
-- caso standard
|
||||
else
|
||||
EmitMoveDataHead( 1, { Z=EMT.L3, S=Speed})
|
||||
EmitMoveDataHead( 1, { B=EMT.R2, S=Speed})
|
||||
EmitMoveDataHead( 1, { C=EMT.R1, S=Speed})
|
||||
-- se ero in posizione speciale, prima ruoto poi scendo
|
||||
if bXSpec then
|
||||
local dZPos = max( HomeZ1, EMT.L3)
|
||||
EmitMoveDataHead( 1, { Z=dZPos, S=Speed})
|
||||
EmitMoveDataHead( 1, { B=EMT.R2, C=EMT.R1, S=Speed})
|
||||
EmitMoveDataHead( 1, { X=EMT.L2, S=Speed})
|
||||
if abs( dZPos - EMT.L3) > 1 then
|
||||
EmitMoveDataHead( 1, { Z=EMT.L3, S=Speed})
|
||||
end
|
||||
else
|
||||
EmitMoveDataHead( 1, { Z=EMT.L3, S=Speed})
|
||||
EmitMoveDataHead( 1, { B=EMT.R2, S=Speed})
|
||||
EmitMoveDataHead( 1, { C=EMT.R1, S=Speed})
|
||||
end
|
||||
end
|
||||
-- altrimenti sega a catena
|
||||
else
|
||||
@@ -1173,20 +1220,43 @@ function OnRapid()
|
||||
local HomeC3 = EgtGetAxisHomePos( 'C3')
|
||||
local HomeB3 = EgtGetAxisHomePos( 'B3')
|
||||
local Speed = EMT.S
|
||||
if EMT.ZMAX or ( EMT.FLAG == 2 and EMT.FLAG2 == 1) then
|
||||
local CurrB3 = PrevR2
|
||||
local CurrC3 = PrevR1
|
||||
-- se bisogna scrivere tutti gli assi
|
||||
if WriteAllCoordsOnFirstM101 then
|
||||
EmitMoveDataHead( 3, { X=EMT.L2, Z=MyMaxZ3, B=CurrB3, C=CurrC3, S=Speed})
|
||||
else
|
||||
EmitMoveDataHead( 3, { X=EMT.L2, Z=MyMaxZ3, S=Speed})
|
||||
end
|
||||
-- se è macchina a 3 teste con gruppo truciolatore 4 assi
|
||||
if EgtGetHeadId( 'H39') then
|
||||
if EMT.ZMAX or ( EMT.FLAG == 2 and EMT.FLAG2 == 1) then
|
||||
local CurrB3 = PrevR2
|
||||
local CurrC3 = PrevR1
|
||||
-- se bisogna scrivere tutti gli assi
|
||||
if WriteAllCoordsOnFirstM101 then
|
||||
EmitMoveDataHead( 3, { X=EMT.L2, Z=MyMaxZ3, B=CurrB3, C=CurrC3, S=Speed})
|
||||
else
|
||||
EmitMoveDataHead( 3, { X=EMT.L2, Z=MyMaxZ3, S=Speed})
|
||||
end
|
||||
|
||||
EmitMoveDataHead( 3, { Z=EMT.L3, B=EMT.R2, C=EMT.R1, S=Speed})
|
||||
else
|
||||
EmitMoveDataHead( 3, { Z=EMT.L3, B=EMT.R2, C=EMT.R1, S=Speed})
|
||||
else
|
||||
EmitMoveDataHead( 3, { X=EMT.L2, Z=EMT.L3, B=EMT.R2, C=EMT.R1, S=Speed})
|
||||
end
|
||||
-- se gruppo lama dedicato, senza cambio utensile
|
||||
elseif EgtGetHeadId( 'H38') then
|
||||
if EMT.ZMAX or ( EMT.FLAG == 2 and EMT.FLAG2 == 1) then
|
||||
local B3Home = EgtGetAxisHomePos( 'B3')
|
||||
local C3Home = EgtGetAxisHomePos( 'C3')
|
||||
EmitMoveDataHead( 3, { X=SafeX3RotAxis, S=Speed})
|
||||
-- se non sono esattamente in home, devo ruotare in zona sicura
|
||||
if abs( C3Home - EMT.R1) > 1 or abs( B3Home - EMT.R2) > 1 then
|
||||
EMT.L3 = min( EMT.L3, SafeZ3RotAxis)
|
||||
EmitMoveDataHead( 3, { Z=SafeZ3RotAxis, S=Speed})
|
||||
EmitMoveDataHead( 3, { B=EMT.R2, C=EMT.R1, S=Speed})
|
||||
EmitMoveDataHead( 3, { Z=EMT.L3, S=Speed})
|
||||
EmitMoveDataHead( 3, { X=EMT.L2, S=Speed})
|
||||
end
|
||||
end
|
||||
-- muovo in posizione finale
|
||||
EmitMoveDataHead( 3, { X=EMT.L2, Z=EMT.L3, B=EMT.R2, C=EMT.R1, S=Speed})
|
||||
else
|
||||
EmtSetLastError( 1212, "HEAD not managed")
|
||||
end
|
||||
|
||||
EmitMoveStartHead( 3)
|
||||
-- eventuale preselezione successiva testa 2
|
||||
PreselectNextDiffHead( EMT.MCHID, EMT.HEAD)
|
||||
@@ -1300,6 +1370,14 @@ function OnRapid()
|
||||
EMT.R1p = nil
|
||||
EMT.R2p = nil
|
||||
else
|
||||
-- se lavorazione in doppio controllo le corse
|
||||
if EMT.DOU_TYPE == 2 then
|
||||
local dZ2 = -Head2Z + MillOffs + Mill2Offs + EMT.L3
|
||||
-- dato che la testa 2 è slave, bisogna controllare eventuale extra-corsa da post
|
||||
if dZ2 > MaxZ2 then
|
||||
EmtSetLastError( 1220, EMT.MCHNAME..' ==> Out of Stroke: Z2 : '.. EgtNumToString( dZ2-MaxZ2, 2))
|
||||
end
|
||||
end
|
||||
MyAdjustLinearAxes()
|
||||
EmtAdjustRotaryAxes()
|
||||
end
|
||||
@@ -1325,7 +1403,7 @@ function OnRapid()
|
||||
-- porto in home la testa corrente se lavorazione successiva sopra con testa diversa oppure se punta lunga
|
||||
local nNextTopHSet = GetNextTopHSet( EMT.MCHID)
|
||||
local bTopGoHome = ( nHSet ~= 2 and nNextTopHSet ~= 0 and nHSet ~= nNextTopHSet) or ( nHSet == 1 and EMT.TTOTLEN > LongTool)
|
||||
EmitZmax( true, true, EMT.R1p, EMT.R2p, bSplitCut, bTopGoHome)
|
||||
EmitZmax( true, true, EMT.R1p, EMT.R2p, bSplitCut, bTopGoHome, false)
|
||||
-- aggiorno quota finale trave dopo Zmax
|
||||
EMT.L1o = EMT.TPOS
|
||||
EMT.ZMAX = true
|
||||
@@ -2337,11 +2415,12 @@ function GetHeadToolCode()
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function EmitZmax( bReset, bEnd, PrevR1, PrevR2, bSplitCut, bTopGoHome)
|
||||
function EmitZmax( bReset, bEnd, PrevR1, PrevR2, bSplitCut, bTopGoHome, bUsePrevDelta)
|
||||
if bReset then
|
||||
EmitResetMachining()
|
||||
end
|
||||
local nSetHead = GetHeadSet( EMT.HEAD)
|
||||
local dXPos = EgtIf( bUsePrevDelta, EMT.L2pp or EMT.L2o, EMT.L2o)
|
||||
-- se testa 1
|
||||
if nSetHead == 1 then
|
||||
-- posizioni sicure
|
||||
@@ -2362,12 +2441,12 @@ function EmitZmax( bReset, bEnd, PrevR1, PrevR2, bSplitCut, bTopGoHome)
|
||||
local dZref = dHomeZ1 + GetZExtra( EMT.HEAD, PrevR2)
|
||||
dZref = min( dZref, dMaxZ1)
|
||||
local MovH = { Z = EgtIf( dZref > EMT.L3o, dZref, EMT.L3o)}
|
||||
MovH.X = -EMT.L2o ; MovH.B = EgtClamp( PrevR2, -90, 90) ; MovH.C = PrevR1 ;
|
||||
MovH.X = -dXPos ; MovH.B = EgtClamp( PrevR2, -90, 90) ; MovH.C = PrevR1 ;
|
||||
EmitMoveDataHead( 1, MovH)
|
||||
if ( EMT.HEAD == 'H12' or EMT.HEAD == 'H16') and ( abs( dHomeC1 - PrevR1) > 30.1 or abs( dHomeB1 - PrevR2) > 30.1) then
|
||||
EmitMoveDataHead( 1, { Z=dMaxZ1, B=0, Fmt=1})
|
||||
end
|
||||
if EgtIf( BD.RIGHT_LOAD, ( EMT.L2 > -DeltaTabY), ( EMT.L2 < -DeltaTabY)) then
|
||||
if EgtIf( BD.RIGHT_LOAD, ( -dXPos > -DeltaTabY), ( -dXPos < -DeltaTabY)) then
|
||||
EmitMoveDataHead( 1, { X=-DeltaTabY, Fmt=1})
|
||||
end
|
||||
EmitMoveDataHead( 1, { C=dHomeC1, Fmt=1})
|
||||
@@ -2413,8 +2492,8 @@ function EmitZmax( bReset, bEnd, PrevR1, PrevR2, bSplitCut, bTopGoHome)
|
||||
else
|
||||
EmitMoveDataHead( 2, { X=dHomeX2, Fmt=1})
|
||||
end
|
||||
-- solo se è macchina a 3 teste, devo stare più alto
|
||||
if EgtGetHeadId( 'H31') then
|
||||
-- solo se è macchina a 3 teste con gruppo truciolatore 4 assi, devo stare più alto
|
||||
if EgtGetHeadId( 'H39') then
|
||||
EmitMoveDataHead( 2, { Z=-ParkInLavZ2, Fmt=1})
|
||||
end
|
||||
EmitMoveStartHead( 2)
|
||||
@@ -2425,11 +2504,36 @@ function EmitZmax( bReset, bEnd, PrevR1, PrevR2, bSplitCut, bTopGoHome)
|
||||
local dMaxZ3 = EgtGetAxisMax( 'Z3')
|
||||
local dHomeX3 = EgtGetAxisHomePos( 'X3')
|
||||
local dHomeB3 = EgtGetAxisHomePos( 'B3')
|
||||
-- eseguo la salita a Z3max
|
||||
EmitMoveDataHead( 3, { Z=dMaxZ3, Fmt=1})
|
||||
if bTopGoHome then
|
||||
EmitMoveDataHead( 3, { X=-dHomeX3, B=dHomeB3, Fmt=1})
|
||||
|
||||
-- se è macchina a 3 teste con gruppo truciolatore 4 assi
|
||||
if EgtGetHeadId( 'H39') then
|
||||
-- eseguo la salita a Z3max
|
||||
EmitMoveDataHead( 3, { Z=dMaxZ3, Fmt=1})
|
||||
if bTopGoHome then
|
||||
EmitMoveDataHead( 3, { X=-dHomeX3, B=dHomeB3, Fmt=1})
|
||||
end
|
||||
-- se gruppo lama dedicato, senza cambio utensile
|
||||
elseif EgtGetHeadId( 'H38') then
|
||||
local dHomeC3 = EgtGetAxisHomePos( 'C3')
|
||||
if RollerParkingNeeded( EMT.HEAD, PrevR1, PrevR2, dHomeC3, dHomeB3) then
|
||||
local dPosT = EgtIf( bEnd, EMT.L1o, EMT.TPOS or EMT.L1op)
|
||||
EmitParkRoller( dPosT, bSplitCut)
|
||||
end
|
||||
-- se non sono esattamente in home, devo ruotare in zona sicura
|
||||
if abs( dHomeC3 - PrevR1) > 1 or abs( dHomeB3 - PrevR2) > 1 then
|
||||
EmitMoveDataHead( 3, { X=SafeX3RotAxis, Fmt=1})
|
||||
EmitMoveDataHead( 3, { Z=SafeZ3RotAxis, Fmt=1})
|
||||
EmitMoveDataHead( 3, { B=dHomeB3, C=dHomeC3, Fmt=1})
|
||||
end
|
||||
-- eseguo la salita a Z3max
|
||||
EmitMoveDataHead( 3, { Z=dMaxZ3, Fmt=1})
|
||||
if bTopGoHome then
|
||||
EmitMoveDataHead( 3, { X=-dHomeX3, Fmt=1})
|
||||
end
|
||||
else
|
||||
EmtSetLastError( 1212, "HEAD not managed")
|
||||
end
|
||||
|
||||
EmitMoveStartHead( 3)
|
||||
EmitMoveWaitHead( 3)
|
||||
end
|
||||
@@ -2612,6 +2716,8 @@ function PreselectNextDiffHead( nMchId, sHead)
|
||||
if sNextHead == 'H22' or EMT.PREVHEAD_H2 == 'H22' then return end
|
||||
-- se la Z di lavoro è più bassa del cambio della minima Z
|
||||
if EMT.MAXMIN[3] < MinZ1ToChangeH2 then
|
||||
-- se diametro utensile più del truciolatore standard grande, si rischia di collidere anche con il carro X testa sotto (quindi indipendentemente dalla Y della lavorazione)
|
||||
if EMT.TTOTDIAM > 201 then return end
|
||||
-- verifico quota del TC
|
||||
if BD.RIGHT_LOAD and EMT.MAXMAX[2] > ( DeltaTabY + MaxHoOpen + 200) then return end
|
||||
if not BD.RIGHT_LOAD and EMT.MAXMAX[2] > ( DeltaTabY + 200) then return end
|
||||
@@ -2652,8 +2758,10 @@ function PreselectNextDiffHead( nMchId, sHead)
|
||||
else
|
||||
-- se preselezione testa 1
|
||||
if nNextHSet == 1 then
|
||||
-- TC su montante destro
|
||||
if nPrevTc == 1 then return
|
||||
local nNextTc = GetTcForTopHeadTool( sNextTcPos) -- utensile da caricare
|
||||
local nPrevTc = GetTcForTopHeadTool( EMT.PREVTCPOS_H1) -- utensile da depositare
|
||||
-- se devo lasciare o prelevare da TC1 oppure non so cosa c'è montato, non posso preselezionare
|
||||
if nNextTc == 1 or nPrevTc == 1 or nPrevTc == 0 then return
|
||||
-- TC su montante sinistro
|
||||
else
|
||||
if BD.RIGHT_LOAD and EMT.MAXMAX[2] > ( DeltaTabY + MaxHoOpen + 200) then return end
|
||||
@@ -2673,8 +2781,15 @@ function PreselectNextDiffHead( nMchId, sHead)
|
||||
|
||||
-- faccio preselezione ( se sono arrivato qui, vuol dire che posso preselezionare)
|
||||
if nNextHSet == 1 then
|
||||
-- Recupero quota X1 (nostro L2)
|
||||
local dNextX = GetStartMachiningXaxis( nNextMchId)
|
||||
local dNextX
|
||||
-- se sto lavorando con testa 3 oppure utensile lungo, la testa 1 deve restare in home
|
||||
if nHSet == 3 or dNextTotLen < LongTool then
|
||||
dNextX = EgtGetAxisHomePos( 'X1')
|
||||
-- altrimenti recupero quota X1 (nostro L2)
|
||||
else
|
||||
dNextX = GetStartMachiningXaxis( nNextMchId)
|
||||
end
|
||||
|
||||
-- Emetto preselezione
|
||||
if sNextHead == 'H11' then
|
||||
if dNextTotLen < LongTool then
|
||||
|
||||
+108
-38
@@ -106,7 +106,7 @@ function OnSimulStart()
|
||||
AddToCollisionCheck( 'X2', 'COLLISION', EMT.COLLOBJ)
|
||||
AddToCollisionCheck( 'C2', 'COLLISION', EMT.COLLOBJ)
|
||||
AddToCollisionCheck( 'B2', 'COLLISION', EMT.COLLOBJ)
|
||||
if EgtGetHeadId('H31') then
|
||||
if IsHeadExisting( 3) then
|
||||
AddToCollisionCheck( 'Z3', 'COLLISION', EMT.COLLOBJ)
|
||||
AddToCollisionCheck( 'C3', 'COLLISION', EMT.COLLOBJ)
|
||||
AddToCollisionCheck( 'B3', 'COLLISION', EMT.COLLOBJ)
|
||||
@@ -121,12 +121,15 @@ function OnSimulStart()
|
||||
{ Grp = 'Base', Sub = 'COLLISION', Name = 'COL2'},
|
||||
{ Grp = 'Base', Sub = 'COLLISION', Name = 'CHSAW'},
|
||||
{ Grp = 'Base', Sub = 'COLLISION', Name = 'CEIL'},
|
||||
{ Grp = 'Base', Sub = 'COLLISION', Name = 'TC1'},
|
||||
{ Grp = 'Base', Sub = 'COLLISION', Name = 'TC2'},
|
||||
{ Grp = 'Base', Sub = 'COLLISION', Name = 'TCR'},
|
||||
{ Grp = 'Z2', Sub = 'COLLISION', Name = 'COL1'},
|
||||
{ Grp = 'Z2', Sub = 'COLLISION', Name = 'CHAIN'},
|
||||
{ Grp = 'Z2', Sub = 'COLLISION', Name = 'COL2'},
|
||||
{ Grp = 'X1', Sub = 'COLLISION', Name = 'STM'}}
|
||||
|
||||
if EgtGetHeadId('H31') then
|
||||
if IsHeadExisting( 3) then
|
||||
table.insert( McdData, { Grp = 'X3', Sub = 'COLLISION', Name = 'STM'})
|
||||
end
|
||||
|
||||
@@ -453,7 +456,7 @@ function OnSimulToolSelect( dPosA)
|
||||
-- se fresa o lama su testa 1, reset assi rotanti
|
||||
if nSetHead == 1 then
|
||||
-- se ho la testa 3, la mando a parcheggio
|
||||
if EgtGetHeadId( 'H31') then
|
||||
if IsHeadExisting( 3) then
|
||||
EgtSetAxisPos( 'X3', ParkX3)
|
||||
end
|
||||
if EMT.HEAD == 'H12' or EMT.HEAD == 'H16' then
|
||||
@@ -559,12 +562,12 @@ function OnSimulToolDeselect( dPrevA)
|
||||
local nPrevTc = GetTcForTopHeadTool( EMT.PREVTCPOS_H1)
|
||||
if EMT.PREVTTOTLEN_H1 < LongTool then
|
||||
SimulMoveAxes( 'B1', ParkB1, MCH_SIM_STEP.RAPROT, 'C1', ParkC1, MCH_SIM_STEP.RAPROT)
|
||||
local dPosX = EgtIf( nPrevTc ~= 2, ParkX1, ParkTc2X1)
|
||||
local dPosX = EgtIf( nPrevTc ~= 2, ParkTc1X1, ParkTc2X1)
|
||||
SimulMoveAxis( 'X1', dPosX, MCH_SIM_STEP.RAPID)
|
||||
else
|
||||
if nPrevTc ~= 2 then
|
||||
SimulMoveAxes( 'B1', ParkLongB1, MCH_SIM_STEP.RAPROT, 'C1', ParkLongTc1C1, MCH_SIM_STEP.RAPROT)
|
||||
local dPosX = ParkX1
|
||||
local dPosX = ParkTc1X1
|
||||
SimulMoveAxis( 'X1', dPosX, MCH_SIM_STEP.RAPID)
|
||||
else
|
||||
SimulMoveAxes( 'B1', ParkLongB1, MCH_SIM_STEP.RAPROT, 'C1', ParkLongTc2C1, MCH_SIM_STEP.RAPROT)
|
||||
@@ -576,7 +579,7 @@ function OnSimulToolDeselect( dPrevA)
|
||||
elseif EMT.PREVHEAD_H1 == 'H12' then
|
||||
-- simulo movimento
|
||||
SimulMoveAxes( 'B1', ParkB1, MCH_SIM_STEP.RAPROT, 'C1', ParkC1, MCH_SIM_STEP.RAPROT)
|
||||
SimulMoveAxis( 'X1', ParkX1, MCH_SIM_STEP.RAPID)
|
||||
SimulMoveAxis( 'X1', ParkTc1X1, MCH_SIM_STEP.RAPID)
|
||||
-- deposito utensile sega a catena
|
||||
elseif EMT.PREVHEAD_H1 == 'H13' then
|
||||
-- simulo movimento
|
||||
@@ -615,14 +618,14 @@ function OnSimulToolDeselect( dPrevA)
|
||||
if EMT.NEXTHEAD == 'H11' then
|
||||
-- simulo movimento
|
||||
SimulMoveAxes( 'B1', ParkB1, MCH_SIM_STEP.RAPROT, 'C1', ParkC1, MCH_SIM_STEP.RAPROT)
|
||||
local dPosX = EgtIf( GetTcForTopHeadTool( EMT.NEXTTCPOS) ~= 2, ParkX1, ParkTc2X1)
|
||||
local dPosX = EgtIf( GetTcForTopHeadTool( EMT.NEXTTCPOS) ~= 2, ParkTc1X1, ParkTc2X1)
|
||||
SimulMoveAxis( 'X1', dPosX, MCH_SIM_STEP.RAPID)
|
||||
SimulMoveAxis( 'Z1', MaxZ1, MCH_SIM_STEP.RAPID)
|
||||
-- prendo utensile lama
|
||||
elseif EMT.NEXTHEAD == 'H12' then
|
||||
-- simulo movimento
|
||||
SimulMoveAxes( 'B1', ParkB1, MCH_SIM_STEP.RAPROT, 'C1', ParkC1, MCH_SIM_STEP.RAPROT)
|
||||
SimulMoveAxis( 'X1', ParkX1, MCH_SIM_STEP.RAPID)
|
||||
SimulMoveAxis( 'X1', ParkTc1X1, MCH_SIM_STEP.RAPID)
|
||||
-- prendo utensile sega a catena
|
||||
elseif EMT.NEXTHEAD == 'H13' then
|
||||
-- simulo movimento
|
||||
@@ -741,11 +744,19 @@ function OnSimulMachiningStart()
|
||||
AddToolToCollisionObj( EMT.PREVTOOL_H2, EMT.PREVHEAD_H2, nPrevExit_H2, nInd_H2, true)
|
||||
AddToolHolderToCollisionObj( EMT.PREVTOOL_H2, EMT.PREVHEAD_H2, nPrevExit_H2, nInd_H2 + 1)
|
||||
end
|
||||
if nSetHead ~= 3 and EgtGetHeadId( 'H31') then
|
||||
if nSetHead ~= 3 and IsHeadExisting( 3) then
|
||||
local nPrevExit_H3 = 1
|
||||
local nInd_H3 = 1001
|
||||
AddToolToCollisionObj( nil, 'H31', nPrevExit_H3, 1001)
|
||||
AddToolHolderToCollisionObj( nil, 'H31', nPrevExit_H3, 1002)
|
||||
local sHeadName
|
||||
if EgtGetHeadId( 'H39') then
|
||||
sHeadName = 'H39'
|
||||
elseif EgtGetHeadId( 'H38') then
|
||||
sHeadName = 'H38'
|
||||
else
|
||||
EmtSetLastError( 1212, "HEAD not managed")
|
||||
end
|
||||
AddToolToCollisionObj( nil, sHeadName, nPrevExit_H3, 1001)
|
||||
AddToolHolderToCollisionObj( nil, sHeadName, nPrevExit_H3, 1002)
|
||||
end
|
||||
end
|
||||
-- se precedente in doppio ma ora solo testa 1 e non in sicurezza
|
||||
@@ -797,12 +808,12 @@ function OnSimulMachiningEnd()
|
||||
EMT.PREVTCPOS_H2 = EMT.TCPOS
|
||||
EMT.PREVTTOTLEN_H2 = EMT.TTOTLEN
|
||||
EMT.PREVTCPOSREAL_H2 = EMT.TCPOSREAL
|
||||
-- per gruppo testa 3 (resetto dati testa 1)
|
||||
-- per gruppo testa 3
|
||||
else
|
||||
EMT.PREVTOOL_H3 = nil
|
||||
EMT.PREVHEAD_H3 = nil
|
||||
EMT.PREVTCPOS_H3 = nil
|
||||
EMT.PREVTTOTLEN_H3 = nil
|
||||
EMT.PREVTOOL_H3 = EMT.TOOL
|
||||
EMT.PREVHEAD_H3 = EMT.HEAD
|
||||
EMT.PREVTCPOS_H3 = EMT.TCPOS
|
||||
EMT.PREVTTOTLEN_H3 = EMT.TTOTLEN
|
||||
end
|
||||
|
||||
end
|
||||
@@ -958,10 +969,21 @@ function OnSimulMoveStart()
|
||||
if WriteAllCoordsOnFirstM101 then
|
||||
SimulMoveAxis( 'X1', EgtIf( bXSpec, DeltaTabY, EMT.L2), MCH_SIM_STEP.RAPID)
|
||||
end
|
||||
SimulMoveAxis( 'Z1', EMT.L3, MCH_SIM_STEP.RAPID)
|
||||
SimulMoveAxis( 'B1', EMT.R2, MCH_SIM_STEP.COLLROT)
|
||||
SimulMoveAxis( 'C1', EMT.R1, MCH_SIM_STEP.COLLROT)
|
||||
SimulMoveAxis( 'X1', EMT.L2, MCH_SIM_STEP.RAPID)
|
||||
-- se ero in posizione speciale, prima ruoto poi scendo
|
||||
if bXSpec then
|
||||
local dZPos = max( Z1Home, EMT.L3)
|
||||
SimulMoveAxis( 'Z1', dZPos, MCH_SIM_STEP.RAPID)
|
||||
SimulMoveAxes( 'B1', EMT.R2, MCH_SIM_STEP.COLLROT, 'C1', EMT.R1, MCH_SIM_STEP.COLLROT)
|
||||
SimulMoveAxis( 'X1', EMT.L2, MCH_SIM_STEP.RAPID)
|
||||
if abs( dZPos - EMT.L3) > 1 then
|
||||
SimulMoveAxis( 'Z1', EMT.L3, MCH_SIM_STEP.RAPID)
|
||||
end
|
||||
else
|
||||
SimulMoveAxis( 'Z1', EMT.L3, MCH_SIM_STEP.RAPID)
|
||||
SimulMoveAxes( 'B1', EMT.R2, MCH_SIM_STEP.COLLROT)
|
||||
SimulMoveAxis( 'C1', EMT.R1, MCH_SIM_STEP.COLLROT)
|
||||
SimulMoveAxis( 'X1', EMT.L2, MCH_SIM_STEP.RAPID)
|
||||
end
|
||||
end
|
||||
end
|
||||
-- altrimenti sega a catena
|
||||
@@ -1019,6 +1041,10 @@ function OnSimulMoveStart()
|
||||
end
|
||||
end
|
||||
else
|
||||
-- solo se è macchina a 3 teste con gruppo truciolatore 4 assi, devo andare prima in Z0
|
||||
if EgtGetHeadId( 'H39') then
|
||||
SimulMoveAxis( 'Z2', Z2Home, MCH_SIM_STEP.RAPID)
|
||||
end
|
||||
-- Porto la X alla giusta quota
|
||||
if EMT.ZMAX and X2Pos > ParkMchY2 and ( B2Pos ~= EMT.R2 or C2Pos ~= EMT.R1) then
|
||||
SimulMoveAxis( 'X2', ParkMchY2, MCH_SIM_STEP.RAPID)
|
||||
@@ -1032,8 +1058,35 @@ function OnSimulMoveStart()
|
||||
SimulMoveAxes( 'X2', EMT.L2, MCH_SIM_STEP.RAPID, 'B2', EMT.R2, MCH_SIM_STEP.COLLROT, 'C2', EMT.R1, MCH_SIM_STEP.COLLROT)
|
||||
end
|
||||
-- altrimenti testa 3
|
||||
else
|
||||
; -- non devo fare alcunchè di speciale
|
||||
else
|
||||
-- testa 4 assi dedicata truciolatore
|
||||
if EgtGetHeadId( 'H39') then
|
||||
if EMT.ZMAX then
|
||||
local MaxZ3 = EgtGetAxisMax( 'Z3')
|
||||
SimulMoveAxes( 'X3', EMT.L2, MCH_SIM_STEP.RAPID, 'Z3', MaxZ3, MCH_SIM_STEP.RAPID)
|
||||
end
|
||||
SimulMoveAxis( 'Z3', EMT.L3, MCH_SIM_STEP.RAPID)
|
||||
SimulMoveAxes( 'B3', EMT.R2, MCH_SIM_STEP.COLLROT, 'C3', EMT.R1, MCH_SIM_STEP.COLLROT)
|
||||
-- testa 5 assi dedicata lama
|
||||
elseif EgtGetHeadId( 'H38') then
|
||||
if EMT.ZMAX then
|
||||
local B3Home = EgtGetAxisHomePos( 'B3')
|
||||
local C3Home = EgtGetAxisHomePos( 'C3')
|
||||
SimulMoveAxis( 'X3', SafeX3RotAxis, MCH_SIM_STEP.RAPID)
|
||||
-- se non sono esattamente in home, devo ruotare in zona sicura
|
||||
if abs( C3Home - EMT.R1) > 1 or abs( B3Home - EMT.R2) > 1 then
|
||||
EMT.L3 = min( EMT.L3, SafeZ3RotAxis)
|
||||
SimulMoveAxis( 'Z3', SafeZ3RotAxis, MCH_SIM_STEP.RAPID)
|
||||
SimulMoveAxes( 'B3', EMT.R2, MCH_SIM_STEP.COLLROT, 'C3', EMT.R1, MCH_SIM_STEP.COLLROT)
|
||||
SimulMoveAxis( 'Z3', EMT.L3, MCH_SIM_STEP.RAPID)
|
||||
SimulMoveAxis( 'X3', EMT.L2, MCH_SIM_STEP.RAPID)
|
||||
end
|
||||
end
|
||||
-- si muovono tutti gli assi assieme
|
||||
-- altre configurazioni
|
||||
else
|
||||
EmtSetLastError( 1212, "HEAD not managed")
|
||||
end
|
||||
end
|
||||
end
|
||||
-- se lavorazione split, muovo per riaggancio del carro Y1
|
||||
@@ -1372,13 +1425,15 @@ end
|
||||
function ExecMoveHome( bNearV, bMchSplit)
|
||||
-- risalita a Zmax
|
||||
ExecMoveZmax( bMchSplit)
|
||||
-- se testa sotto e macchian a 3 teste
|
||||
if GetHeadSet( EMT.HEAD) == 2 and EgtGetHeadId( 'H31') then
|
||||
-- se testa sotto e macchian a 3 teste e gruppo truciolatore a 4 assi
|
||||
if GetHeadSet( EMT.HEAD) == 2 and IsHeadExisting( 3) then
|
||||
if not SimulMoveAxis( 'X2', ParkX2, MCH_SIM_STEP.RAPID) then
|
||||
EgtOutLog( 'Error on MoveHome : X2')
|
||||
end
|
||||
if not SimulMoveAxis( 'Z2', ParkInLavZ2, MCH_SIM_STEP.RAPID) then
|
||||
EgtOutLog( 'Error on MoveHome : X2')
|
||||
if EgtGetHeadId( 'H39') then
|
||||
if not SimulMoveAxis( 'Z2', ParkInLavZ2, MCH_SIM_STEP.RAPID) then
|
||||
EgtOutLog( 'Error on MoveHome : Z2')
|
||||
end
|
||||
end
|
||||
end
|
||||
EMT.TO_ZMAX = nil
|
||||
@@ -1398,15 +1453,15 @@ function ExecMoveZmax( bMchSplit)
|
||||
-- set della testa
|
||||
local nSetHead = GetHeadSet( EMT.HEAD)
|
||||
-- posizioni correnti degli assi testa
|
||||
local CurrX = EgtGetAxisPos( EgtIf( nSetHead == 1, 'X1', 'X2'))
|
||||
local CurrZ = EgtGetAxisPos( EgtIf( nSetHead == 1, 'Z1', 'Z2'))
|
||||
local CurrC = EgtGetAxisPos( EgtIf( nSetHead == 1, 'C1', 'C2'))
|
||||
local CurrB = EgtGetAxisPos( EgtIf( nSetHead == 1, 'B1', 'B2'))
|
||||
local CurrX = EgtGetAxisPos( 'X'..nSetHead)
|
||||
local CurrZ = EgtGetAxisPos( 'Z'..nSetHead)
|
||||
local CurrC = EgtGetAxisPos( 'C'..nSetHead)
|
||||
local CurrB = EgtGetAxisPos( 'B'..nSetHead)
|
||||
-- posizioni home degli assi testa
|
||||
local HomeX = EgtGetAxisHomePos( EgtIf( nSetHead == 1, 'X1', 'X2'))
|
||||
local HomeZ = EgtGetAxisHomePos( EgtIf( nSetHead == 1, 'Z1', 'Z2'))
|
||||
local HomeC = EgtGetAxisHomePos( EgtIf( nSetHead == 1, 'C1', 'C2'))
|
||||
local HomeB = EgtGetAxisHomePos( EgtIf( nSetHead == 1, 'B1', 'B2'))
|
||||
local HomeX = EgtGetAxisHomePos( 'X'..nSetHead)
|
||||
local HomeZ = EgtGetAxisHomePos( 'Z'..nSetHead)
|
||||
local HomeC = EgtGetAxisHomePos( 'C'..nSetHead)
|
||||
local HomeB = EgtGetAxisHomePos( 'B'..nSetHead)
|
||||
-- verifico se necessario ruotare la testa
|
||||
local bRot = ( abs( HomeC - CurrC) > 1 or abs( HomeB - CurrB) > 1)
|
||||
-- se necessario ruotare la testa, allargo i carrelli
|
||||
@@ -1463,14 +1518,27 @@ function ExecMoveZmax( bMchSplit)
|
||||
else
|
||||
SimulMoveAxis( 'X2', ParkX2, MCH_SIM_STEP.RAPID)
|
||||
end
|
||||
-- solo se è macchina a 3 teste, devo stare più alto
|
||||
if EgtGetHeadId( 'H31') then
|
||||
-- solo se è macchina a 3 teste con gruppo truciolatore 4 assi, devo stare più alto
|
||||
if EgtGetHeadId( 'H39') then
|
||||
SimulMoveAxis( 'Z2', ParkInLavZ2, MCH_SIM_STEP.RAPID)
|
||||
end
|
||||
-- altrimenti testa 3
|
||||
else
|
||||
SimulMoveAxes( 'Z3', MaxZ3, MCH_SIM_STEP.RAPID)
|
||||
SimulMoveAxes( 'B3', ParkB3, MCH_SIM_STEP.COLLROT)
|
||||
if EgtGetHeadId( 'H39') then
|
||||
SimulMoveAxes( 'Z3', MaxZ3, MCH_SIM_STEP.RAPID)
|
||||
SimulMoveAxes( 'B3', ParkB3, MCH_SIM_STEP.COLLROT)
|
||||
elseif EgtGetHeadId( 'H38') then
|
||||
local MyMaxZ3 = EgtGetAxisMax( 'Z3')
|
||||
-- se non sono esattamente in home, devo ruotare in zona sicura
|
||||
if abs( HomeC - CurrC) > 1 or abs( HomeB - CurrB) > 1 then
|
||||
SimulMoveAxis( 'X3', SafeX3RotAxis, MCH_SIM_STEP.RAPID)
|
||||
SimulMoveAxis( 'Z3', SafeZ3RotAxis, MCH_SIM_STEP.RAPID)
|
||||
SimulMoveAxes( 'C3', HomeC, MCH_SIM_STEP.COLLROT, 'B3', HomeB, MCH_SIM_STEP.COLLROT)
|
||||
end
|
||||
SimulMoveAxis( 'Z3', MyMaxZ3, MCH_SIM_STEP.RAPID)
|
||||
else
|
||||
EmtSetLastError( 1212, "HEAD not managed")
|
||||
end
|
||||
end
|
||||
EMT.ZMAX = true
|
||||
end
|
||||
@@ -2493,6 +2561,8 @@ function RollerParkingNeeded( sHead, dAng1p, dAng2p, dAng1, dAng2)
|
||||
return ( abs( dAng1 - dAng1p) > 1 or ( abs( dAng2 - dAng2p) > 1 and abs( dAng1 % 180.0) > 1))
|
||||
elseif sHead == 'H21' or sHead == 'H22' then
|
||||
return ( abs( dAng1 - dAng1p) > 1 or ( abs( dAng2 - dAng2p) > 1 and abs( dAng1 % 180.0) > 1))
|
||||
elseif sHead == 'H38' then
|
||||
return ( abs( dAng1 - dAng1p) > 1 or ( abs( dAng2 - dAng2p) > 1 and abs( dAng1 % 180.0) > 1))
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
+15
-4
@@ -54,6 +54,9 @@ function OnSpecialGetMaxZ()
|
||||
elseif nSetHead == 2 then
|
||||
EMC.R1p = ParkC2
|
||||
EMC.R2p = ParkB2
|
||||
elseif nSetHead == 3 then
|
||||
EMC.R1p = ParkC3
|
||||
EMC.R2p = ParkB3
|
||||
end
|
||||
end
|
||||
local vtT = Vector3d( EMC.TDIR)
|
||||
@@ -111,14 +114,16 @@ function OnSpecialGetMaxZ()
|
||||
local vMZ = {{ Tz=0.85, Ez=390}, { Tz=0.5, Ez=280}, { Tz=-0.01, Ez=160}}
|
||||
EMC.MAXZ = ParkZ2 + CalcExtraZ( vtTpZm, vtT, vMZ)
|
||||
end
|
||||
elseif EMC.HEAD == 'H38' then
|
||||
EMC.MAXZ = SafeZ3RotAxis
|
||||
end
|
||||
end
|
||||
|
||||
---------------------- OnSpecialMoveZup -----------------------------
|
||||
function OnSpecialMoveZup()
|
||||
|
||||
|
||||
--EgtOutLog( 'OnSpecialMoveZup : ' .. EMC.HEAD .. '.' .. tostring( EMC.EXIT))
|
||||
|
||||
|
||||
-- Inizializzazioni
|
||||
EMC.ERR = 0
|
||||
EMC.MODIF = false
|
||||
@@ -135,7 +140,7 @@ function OnSpecialMoveZup()
|
||||
if EMC.HEAD == 'H11' or EMC.HEAD == 'H21' or EMC.HEAD == 'H22' then
|
||||
;
|
||||
-- se lama
|
||||
else
|
||||
elseif EMC.HEAD == 'H12' or EMC.HEAD == 'H16' then
|
||||
-- riporto i valori tra -179 e + 180
|
||||
local dCheckAxR1 = EMC.R1
|
||||
if dCheckAxR1 < -180 then
|
||||
@@ -180,6 +185,12 @@ function OnSpecialMoveZup()
|
||||
end
|
||||
end
|
||||
end
|
||||
elseif EMC.HEAD == 'H38' then
|
||||
EMC.L3 = SafeZ3RotAxis
|
||||
-- dichiaro modificato
|
||||
EMC.MODIF = true
|
||||
else
|
||||
; -- non si fa nulla
|
||||
end
|
||||
end
|
||||
|
||||
@@ -895,7 +906,7 @@ function SpecialCalcMachiningEncumbrance( nMchId, bPreCut)
|
||||
EgtSetAxisPos( 'A2', vAxMid[6])
|
||||
end
|
||||
b3Enc = EgtGetBBoxGlob( EgtGetAxisId( 'C2'), GDB_BB.ONLY_VISIBLE)
|
||||
else -- 'H31'
|
||||
else -- testa 3
|
||||
EgtSetAxisPos( 'C3', vAxMid[4])
|
||||
EgtSetAxisPos( 'B3', vAxMid[5])
|
||||
b3Enc = EgtGetBBoxGlob( EgtGetAxisId( 'C3'), GDB_BB.ONLY_VISIBLE)
|
||||
|
||||
@@ -1,5 +1,28 @@
|
||||
==== Common_PF1250 Update Log ====
|
||||
|
||||
Versione 2.6k2 (25/11/2024)
|
||||
- (GEN) Se si preseleziona su testa 1 un utensile lungo, non si va alla X successiva di lavoro ma si resta in home. Infatti potrebbe toccare le paratie in caso di scambio pezzo. Ticket#2183
|
||||
|
||||
Versione 2.6k1 (04/11/2024)
|
||||
- (SIM-GEN) Gestione terza testa 5 assi dedicata lama (H38)
|
||||
|
||||
Versione 2.6j3 (25/10/2024)
|
||||
- (GEN) Piccola correzione per capire se testa 3 presente
|
||||
- (SIM-GEN) In caso di lavorazione successiva alla prima, rivisto primo posizionamento alla quota Z di lavoro se precedentemente spostati a quota rotazione assi rotanti.
|
||||
|
||||
Versione 2.6j2 (23/10/2024)
|
||||
- (MLDE-SIM) Aggiunto parametro ParkTc1X1 in MLDE per simulazione quota parcheggio Testa 1 su TC1.
|
||||
- (SIM-GEN) Per movimento a ZMAX si considera utensile attuale o precedente
|
||||
- (SIM-GEN) Prima versione con gestione testa 3 dedicata lama
|
||||
|
||||
Versione 2.6j1 (01/10/2024)
|
||||
- (GEN) Migliorato calcolo chiusura paratia rulli con aggiornamento lunghezza della barra in caso di ultimo taglio e grezzo residuo in coda. Ticket#2017
|
||||
- (NGE-SIM) Aggiunta gestione solidi collisione per TC verticali e TC rotante sotto
|
||||
- (GEN) Per lavorazione in doppio: messaggio bloccante in caso di extra-corsa durante un movimento standard su piano generico della lavorazione.
|
||||
|
||||
Versione 2.6i1 (10/09/2024)
|
||||
- (GEN) Se diametro utensile più del truciolatore standard grande, non si preseleziona. Ticket#2028
|
||||
|
||||
Versione 2.6h2 (28/08/2024)
|
||||
- (SIM-GEN) Quando si aprono i rulli, se la trave non può seguire i rulli perchè la pinza andrebbe in extra-corsa, si sposta comunque la pinza fino al massimo della sua corsa. Ticket#1949
|
||||
- (GEN) La testa veniva spostata a quota X sicurezza rotazione assi rotanti prima di aprire le rulliere. Ticket#1991
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
|
||||
local InfoCommon_STD_PP = {
|
||||
NAME = 'Common_PF1250', -- nome script PP standard
|
||||
VERSION = '2.6h2', -- versione script
|
||||
VERSION = '2.6k2', -- versione script
|
||||
MIN_MACH_VER_PP_COMMON = '2.5k1' -- versione minima kernel
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user