Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 76e445410f | |||
| f10538adbd | |||
| 9724d936f3 | |||
| 639ea41eff | |||
| 806fd7eb2a | |||
| 41974c81b5 |
@@ -1229,6 +1229,14 @@ function OnRapid()
|
||||
-- calcolo per piano generico
|
||||
CalcInterpPlane()
|
||||
EMT.REFLOC = true
|
||||
-- salvo posizione attuale
|
||||
local OldL1 = EMT.L1
|
||||
local OldL2 = EMT.L2
|
||||
local OldL3 = EMT.L3
|
||||
-- imposto posizione precedente (non contiene l'offset in X per sovramateriale di testa EMT.X_OFF)
|
||||
EMT.L1 = EMT.L1o
|
||||
EMT.L2 = EMT.L2o
|
||||
EMT.L3 = EMT.L3o
|
||||
-- trasformo i punti nel piano
|
||||
MyAdjustLinearAxes()
|
||||
EmtAdjustRotaryAxes()
|
||||
@@ -1241,10 +1249,6 @@ function OnRapid()
|
||||
|
||||
EMT.PLANEACTIVE = true
|
||||
|
||||
-- annullo precedenti per forzare scrittura
|
||||
EMT.R1p = nil
|
||||
EMT.R2p = nil
|
||||
|
||||
-- emissione movimento
|
||||
local sAxes = EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..
|
||||
EmtGetAxis('R2')..EmtGetAxis('R1')
|
||||
@@ -1628,7 +1632,7 @@ function PrepareMoveChar( sCmd, nInd)
|
||||
EMT.Y1POS = MoveY1 or EMT.Y1POS
|
||||
EMT.TPOS = GetCmdAxMove( Cmd, 'T') or EMT.TPOS
|
||||
end
|
||||
elseif Cmd[1] == '2' then
|
||||
elseif Cmd[1] == '2' or Cmd[1] == '24' then
|
||||
local MDChar = { IniStatY1=EMT.ISY1, FinStatY1=EMT.FSY1, IniStatY2=EMT.ISY2, FinStatY2=EMT.FSY2, BeamVise=EMT.BV}
|
||||
local MoveY1 = GetCmdAxMove( Cmd, 'Y1')
|
||||
local MoveY2 = GetCmdAxMove( Cmd, 'Y2')
|
||||
@@ -1718,8 +1722,6 @@ function PrepareMoveChar( sCmd, nInd)
|
||||
EMT.V2NEXTPOS = tonumber( Cmd[3])
|
||||
elseif Cmd[1] == '23' then
|
||||
EMT.W2DELTA = tonumber( Cmd[2])
|
||||
elseif Cmd[1] == '24' then
|
||||
EMT.TPOS = GetCmdAxMove( Cmd, 'T') or EMT.TPOS
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
+48
-20
@@ -1,4 +1,4 @@
|
||||
-- Processore standard macchine ONE e PF by EgalWare s.r.l. 2023/11/24
|
||||
-- Processore standard macchine ONE e PF by EgalWare s.r.l. 2026/08/03
|
||||
|
||||
-- Funzioni generiche indipendenti dal controllo
|
||||
|
||||
@@ -608,26 +608,28 @@ function OnSimulToolSelect( dPosA)
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function OnSimulToolDeselect( dPrevA)
|
||||
function OnSimulToolDeselect( dPrevA, bLastRise)
|
||||
|
||||
-- se ToolDeselect chiamata da MLPE, bisogna scaricare perchè è ultimo movimento di rise e poi si cambia utensile
|
||||
-- se ToolDeselect chiamata da MLPE, bisogna scaricare ChainSaw perchè è ultimo movimento di rise e poi si cambia utensile
|
||||
-- o movimento pinze in cui non può esserci ChainSaw in mandrino
|
||||
if dPrevA then
|
||||
local dHeadSet = GetHeadSet( EMT.HEAD)
|
||||
local nHeadSet = GetHeadSet( EMT.HEAD)
|
||||
-- se utensile corrente è sega a catena, devo depositarla
|
||||
if dHeadSet == 1 and HeadIsChainSaw( EMT.HEAD) then
|
||||
if nHeadSet == 1 and HeadIsChainSaw( EMT.HEAD) then
|
||||
-- visualizzo utensile su TcPos
|
||||
ShowToolInTcPos( EMT.PREVTCPOS_H1, true)
|
||||
-- nascondo l'utensile sulla testa
|
||||
EgtSetMode( EgtGetHeadId( EMT.PREVHEAD_H1 or '') or GDB_ID.NULL, GDB_MD.HIDDEN)
|
||||
-- si cerca prossimo utensile
|
||||
-- si cerca prossimo utensile, se ChainSaw non posso caricarlo, altrimenti preselezione
|
||||
local sTool, sHead, sTcPos, bCarrMove = FindNextToolOnHeadSet( 1, false)
|
||||
-- imposto correttamente i dati di testa
|
||||
local OrigEMC = EMC
|
||||
EMC = { HEAD = sHead or 'H11', TOOL = sTool, TCPOS = sTcPos, TOTDIAM = 0}
|
||||
-- se non precarico utensile allora testa base e T0
|
||||
EMC = { HEAD = sHead or 'H11', TOOL = sTool, TCPOS = sTcPos or 'T0', TOTDIAM = 0}
|
||||
OnSetHead()
|
||||
EMC = OrigEMC
|
||||
-- se c'è prossimo utensile, oppure se non c'è e c'è un movimento carrelli
|
||||
if sTool or ( not sTool and bCarrMove) then
|
||||
if sTool or ( not sTool and bCarrMove) or not bLastRise then
|
||||
|
||||
local dHomeX1 = EgtGetAxisHomePos( 'X1')
|
||||
local dHomeC1 = EgtGetAxisHomePos( 'C1')
|
||||
@@ -642,19 +644,21 @@ function OnSimulToolDeselect( dPrevA)
|
||||
LoadNextTool( 1, sTcPos)
|
||||
end
|
||||
end
|
||||
elseif dHeadSet == 2 and HeadIsChainSaw( EMT.HEAD) then
|
||||
elseif nHeadSet == 2 and HeadIsChainSaw( EMT.HEAD) then
|
||||
-- visualizzo utensile su TcPos
|
||||
ShowToolInTcPos( EMT.PREVTCPOS_H2, true)
|
||||
-- nascondo l'utensile sulla testa
|
||||
EgtSetMode( EgtGetHeadId( EMT.PREVHEAD_H2 or '') or GDB_ID.NULL, GDB_MD.HIDDEN)
|
||||
-- imposto correttamente i dati di testa
|
||||
-- si cerca prossimo utensile, se ChainSaw non posso caricarlo, altrimenti preselezione
|
||||
local sTool, sHead, sTcPos, bCarrMove = FindNextToolOnHeadSet( 2, false)
|
||||
-- imposto correttamente i dati di testa
|
||||
local OrigEMC = EMC
|
||||
EMC = { HEAD = sHead or 'H21', TOOL = sTool, TCPOS = sTcPos, TOTDIAM = 0}
|
||||
-- se non precarico utensile allora testa base e T0
|
||||
EMC = { HEAD = sHead or 'H21', TOOL = sTool, TCPOS = sTcPos or 'T0', TOTDIAM = 0}
|
||||
OnSetHead()
|
||||
EMC = OrigEMC
|
||||
-- se c'è prossimo utensile, oppure se non c'è e c'è un movimento carrelli
|
||||
if sTool or ( not sTool and bCarrMove) then
|
||||
if sTool or ( not sTool and bCarrMove) or not bLastRise then
|
||||
|
||||
local dHomeX2 = EgtGetAxisHomePos( 'X2')
|
||||
local dHomeC2 = EgtGetAxisHomePos( 'C2')
|
||||
@@ -677,28 +681,45 @@ function OnSimulToolDeselect( dPrevA)
|
||||
|
||||
-- se utensile non cambia e non è sega a catena, esco
|
||||
if ( EMT.NEXTTOOL == EMT.PREVTOOL_H1 or EMT.NEXTTOOL == EMT.PREVTOOL_H2) and not HeadIsChainSaw( EMT.NEXTHEAD) then return end
|
||||
-- verifico se la lavorazione successiva è in doppio e cerco l'utensile doppio
|
||||
local nNextMchId = EgtGetNextActiveOperation( EMT.MCHID)
|
||||
local nDouType = 0
|
||||
if nNextMchId and EgtSetCurrMachining( nNextMchId) then
|
||||
nDouType = EgtGetValInNotes( EgtGetMachiningParam( MCH_MP.USERNOTES) or '', 'DOUBLE', 'i')
|
||||
end
|
||||
EgtSetCurrMachining( EMT.MCHID)
|
||||
local sDouTool = ''
|
||||
if nDouType == 2 then
|
||||
if EgtTdbSetCurrTool( EMT.NEXTTOOL) then
|
||||
sDouTool = EgtGetValInNotes( EgtTdbGetCurrToolParam( MCH_TP.USERNOTES) or '', 'DOUBLE', 's') or ''
|
||||
end
|
||||
EgtTdbSetCurrTool( EMT.TOOL)
|
||||
end
|
||||
-- se utensile corrente diventa il doppio, esco
|
||||
if EMT.PREVTOOL_H2 == sDouTool then return end
|
||||
|
||||
-- deposito utensile
|
||||
EgtOutText( 'Tool change in progress...')
|
||||
|
||||
local dHeadSet = GetHeadSet( EMT.PREVHEAD)
|
||||
local nHeadSet = GetHeadSet( EMT.PREVHEAD)
|
||||
|
||||
-- vado a quota home testa attuale
|
||||
if dHeadSet == 1 then
|
||||
if nHeadSet == 1 then
|
||||
SimulMoveAxes( 'X1', EgtGetAxisHomePos( 'X1'), MCH_SIM_STEP.RAPID, 'Z1', EgtGetAxisHomePos( 'Z1'), MCH_SIM_STEP.RAPID,
|
||||
'B1', EgtGetAxisHomePos( 'B1'), MCH_SIM_STEP.COLLROT, 'C1', EgtGetAxisHomePos( 'C1'), MCH_SIM_STEP.COLLROT)
|
||||
elseif dHeadSet == 2 then
|
||||
elseif nHeadSet == 2 then
|
||||
SimulMoveAxes( 'X2', EgtGetAxisHomePos( 'X2'), MCH_SIM_STEP.RAPID, 'Z2', EgtGetAxisHomePos( 'Z2'), MCH_SIM_STEP.RAPID,
|
||||
'B2', EgtGetAxisHomePos( 'B2'), MCH_SIM_STEP.COLLROT, 'C2', EgtGetAxisHomePos( 'C2'), MCH_SIM_STEP.COLLROT)
|
||||
end
|
||||
|
||||
local dNextHeadSet = GetHeadSet( EMT.NEXTHEAD)
|
||||
local nNextHeadSet = GetHeadSet( EMT.NEXTHEAD)
|
||||
|
||||
if dNextHeadSet == 1 then
|
||||
if nNextHeadSet == 1 then
|
||||
-- visualizzo utensile su TcPos
|
||||
ShowToolInTcPos( EMT.PREVTCPOS_H1, true)
|
||||
-- nascondo l'utensile sulla testa
|
||||
EgtSetMode( EgtGetHeadId( EMT.PREVHEAD_H1 or '') or GDB_ID.NULL, GDB_MD.HIDDEN)
|
||||
elseif dNextHeadSet == 2 then
|
||||
elseif nNextHeadSet == 2 then
|
||||
-- visualizzo utensile su TcPos
|
||||
ShowToolInTcPos( EMT.PREVTCPOS_H2, true)
|
||||
-- nascondo l'utensile sulla testa
|
||||
@@ -1233,7 +1254,7 @@ function OnSimulMoveEnd()
|
||||
local bLastRise = EgtGetInfo( EMT.MOVEID, 'LastRise', 'b')
|
||||
-- se ultimo rapido e motosega, si va in home
|
||||
if bLastRise and HeadIsChainSaw( EMT.HEAD) then
|
||||
OnSimulToolDeselect( EMT.R3)
|
||||
OnSimulToolDeselect( EMT.R3, true)
|
||||
EMT.CHSAW_OUT = true
|
||||
end
|
||||
end
|
||||
@@ -1442,6 +1463,13 @@ end
|
||||
function ExecMoveHome( bNearV)
|
||||
-- se richiesto, avvicino i rulli
|
||||
if bNearV then
|
||||
-- se ho motosega, devo scaricare
|
||||
if HeadIsChainSaw( EMT.HEAD) then
|
||||
-- recupero il valore dell'asse virtuale bloccato A
|
||||
local dPosA = GetCurrChainSawingVirtualAxis()
|
||||
OnSimulToolDeselect( dPosA)
|
||||
EMT.CHSAW_OUT = true
|
||||
end
|
||||
-- sistemo i rulli
|
||||
ExecOpenRoller( 1)
|
||||
ExecOpenRoller( 2)
|
||||
@@ -2650,7 +2678,7 @@ function FindNextToolOnHeadSet( nHSet, bFirst)
|
||||
end
|
||||
local sNextHead = EgtTdbGetCurrToolParam( MCH_TP.HEAD)
|
||||
if GetHeadSet( sNextHead) == nHSet then
|
||||
if EMT.TOOL ~= sNextTool then
|
||||
if CurrTool ~= sNextTool then
|
||||
if not HeadIsChainSaw( sNextHead) then
|
||||
sHead = sNextHead
|
||||
sTool = sNextTool
|
||||
|
||||
+42
-43
@@ -279,11 +279,10 @@ function OnSpecialLink()
|
||||
EmtAddClimb( EMC.NEXTMCHID, EMC.NEXTMAIN, { EMC.L1, EMC.L2p, EMC.L3p, EMC.R1p, EMC.R2p, EMC.R3}, 30, 2, 2, 'FirstClimb=1;')
|
||||
EmtAddClimb( EMC.NEXTMCHID, EMC.NEXTMAIN, { EMC.L1, EMC.L2, EMC.L3p, EMC.R1, EMC.R2p, EMC.R3}, 30, 2, 2)
|
||||
if abs( EMC.R3) < 0.1 then
|
||||
EmtAddClimb( EMC.NEXTMCHID, EMC.NEXTMAIN, { EMC.L1, EMC.L2, ParkCSaw0Z1, EMC.R1, EMC.R2, EMC.R3}, 30, 2, 2)
|
||||
EmtAddClimb( EMC.NEXTMCHID, EMC.NEXTMAIN, { EMC.L1, EMC.L2, ParkCSaw0Z1, EMC.R1, EMC.R2, EMC.R3}, 31, 2, 2, 'LastClimb=1;')
|
||||
else
|
||||
EmtAddClimb( EMC.NEXTMCHID, EMC.NEXTMAIN, { EMC.L1, EMC.L2, EMC.L3p, EMC.R1, EMC.R2, EMC.R3}, 30, 2, 2)
|
||||
EmtAddClimb( EMC.NEXTMCHID, EMC.NEXTMAIN, { EMC.L1, EMC.L2, EMC.L3p, EMC.R1, EMC.R2, EMC.R3}, 31, 2, 2, 'LastClimb=1;')
|
||||
end
|
||||
EmtAddClimb( EMC.NEXTMCHID, EMC.NEXTMAIN, { EMC.L1, EMC.L2, EMC.L3, EMC.R1, EMC.R2, EMC.R3}, 31, 2, 2, 'LastClimb=1;')
|
||||
|
||||
-- se fine lavorazione con deposito utensile
|
||||
elseif EMC.LINKTYPE == 2 then
|
||||
@@ -400,9 +399,12 @@ function OnSpecialLink()
|
||||
EmtRemoveClimb( EMC.NEXTMCHID, EMC.NEXTMAIN)
|
||||
EmtAddClimb( EMC.NEXTMCHID, EMC.NEXTMAIN, { EMC.L1, EMC.L2p, EMC.L3p, EMC.R1p, EMC.R2p}, 30, 2, 2, 'FirstClimb=1;')
|
||||
EmtAddClimb( EMC.NEXTMCHID, EMC.NEXTMAIN, { EMC.L1, EMC.L2, EMC.L3p, EMC.R1p, EMC.R2p}, 30, 2, 2)
|
||||
-- se assi cambiano di molto
|
||||
if abs( EMC.R1 - EMC.R1p) > 10 or abs( EMC.R2 - EMC.R2p) > 90 then
|
||||
-- se asse B cambia di molto
|
||||
if abs( 0 - EMC.R2p) > 1 then
|
||||
EmtAddClimb( EMC.NEXTMCHID, EMC.NEXTMAIN, { EMC.L1, EMC.L2, EMC.L3p, EMC.R1p, 0}, 30, 2, 2)
|
||||
end
|
||||
-- se assi cambiano di molto
|
||||
if abs( EMC.R1 - EMC.R1p) > 10 then
|
||||
EmtAddClimb( EMC.NEXTMCHID, EMC.NEXTMAIN, { EMC.L1, EMC.L2, EMC.L3p, EMC.R1, 0}, 30, 2, 2)
|
||||
end
|
||||
|
||||
@@ -417,7 +419,10 @@ function OnSpecialLink()
|
||||
EmtRemoveRise( EMC.PREVMCHID, EMC.PREVMAIN)
|
||||
if abs( EMC.R1 - EMC.R1p) > 1 or abs( EMC.R2 - EMC.R2p) > 1 then
|
||||
EmtAddRise( EMC.PREVMCHID, EMC.PREVMAIN, { EMC.L1p, EMC.L2p, EMC.L3, EMC.R1p, 0}, 30, 3, 2, EgtIf( bSplit, 'Split=1;', '')..'FirstRise=1;')
|
||||
EmtAddRise( EMC.PREVMCHID, EMC.PREVMAIN, { EMC.L1p, EMC.L2p, EMC.L3, EMC.R1, 0}, 30, 3, 2)
|
||||
-- se assi cambiano di molto
|
||||
if abs( EMC.R1 - EMC.R1p) > 10 then
|
||||
EmtAddRise( EMC.PREVMCHID, EMC.PREVMAIN, { EMC.L1p, EMC.L2p, EMC.L3, EMC.R1, 0}, 30, 3, 2)
|
||||
end
|
||||
EmtAddRise( EMC.PREVMCHID, EMC.PREVMAIN, { EMC.L1p, EMC.L2p, EMC.L3, EMC.R1, EMC.R2}, 30, 3, 2)
|
||||
else
|
||||
EmtAddRise( EMC.PREVMCHID, EMC.PREVMAIN, { EMC.L1p, EMC.L2p, EMC.L3, EMC.R1p, EMC.R2p}, 30, 3, 2, EgtIf( bSplit, 'Split=1;', '')..'FirstRise=1;')
|
||||
@@ -455,6 +460,7 @@ function OnSpecialLink()
|
||||
EmtAddClimb( EMC.NEXTMCHID, EMC.NEXTMAIN, { EMC.L1, EMC.L2, EMC.L3, EMC.R1, EMC.R2}, 30, 2, 2, 'LastClimb=1;')
|
||||
end
|
||||
end
|
||||
|
||||
-- se sega a catena su testa 2
|
||||
elseif EMC.HEAD == 'H23' then
|
||||
-- recupero se split da note utente di lavorazione precedente
|
||||
@@ -466,11 +472,10 @@ function OnSpecialLink()
|
||||
EmtAddClimb( EMC.NEXTMCHID, EMC.NEXTMAIN, { EMC.L1, EMC.L2p, EMC.L3p, EMC.R1p, EMC.R2p, EMC.R3}, 30, 2, 2, 'FirstClimb=1;')
|
||||
EmtAddClimb( EMC.NEXTMCHID, EMC.NEXTMAIN, { EMC.L1, EMC.L2, EMC.L3p, EMC.R1, EMC.R2p, EMC.R3}, 30, 2, 2)
|
||||
if abs( EMC.R3) < 0.1 then
|
||||
EmtAddClimb( EMC.NEXTMCHID, EMC.NEXTMAIN, { EMC.L1, EMC.L2, ParkCSaw0Z2, EMC.R1, EMC.R2, EMC.R3}, 30, 2, 2)
|
||||
EmtAddClimb( EMC.NEXTMCHID, EMC.NEXTMAIN, { EMC.L1, EMC.L2, ParkCSaw0Z2, EMC.R1, EMC.R2, EMC.R3}, 31, 2, 2, 'LastClimb=1;')
|
||||
else
|
||||
EmtAddClimb( EMC.NEXTMCHID, EMC.NEXTMAIN, { EMC.L1, EMC.L2, EMC.L3p, EMC.R1, EMC.R2, EMC.R3}, 30, 2, 2)
|
||||
EmtAddClimb( EMC.NEXTMCHID, EMC.NEXTMAIN, { EMC.L1, EMC.L2, EMC.L3p, EMC.R1, EMC.R2, EMC.R3}, 31, 2, 2, 'LastClimb=1;')
|
||||
end
|
||||
EmtAddClimb( EMC.NEXTMCHID, EMC.NEXTMAIN, { EMC.L1, EMC.L2, EMC.L3, EMC.R1, EMC.R2, EMC.R3}, 31, 2, 2, 'LastClimb=1;')
|
||||
|
||||
-- se fine lavorazione con deposito utensile
|
||||
elseif EMC.LINKTYPE == 2 then
|
||||
@@ -522,36 +527,6 @@ local function PrepareClGroup( nParentId)
|
||||
return nClId
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function IsStartOrRestPhase( nPhase)
|
||||
local sVal = EgtGetInfo( EgtGetPhaseDisposition( nPhase) or GDB_ID.NULL, 'TYPE')
|
||||
return ( sVal == 'START' or sVal == 'REST')
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function IsMidPhase( nPhase)
|
||||
local sVal = EgtGetInfo( EgtGetPhaseDisposition( nPhase) or GDB_ID.NULL, 'TYPE')
|
||||
return ( sVal == 'MID')
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function IsEndPhase( nPhase)
|
||||
local sVal = EgtGetInfo( EgtGetPhaseDisposition( nPhase) or GDB_ID.NULL, 'TYPE')
|
||||
return ( sVal == 'END')
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function IsMid2Phase( nPhase)
|
||||
local sVal = EgtGetInfo( EgtGetPhaseDisposition( nPhase) or GDB_ID.NULL, 'TYPE')
|
||||
return ( sVal == 'MID2')
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function IsEnd2Phase( nPhase)
|
||||
local sVal = EgtGetInfo( EgtGetPhaseDisposition( nPhase) or GDB_ID.NULL, 'TYPE')
|
||||
return ( sVal == 'END2')
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function GetNextStartOrRestPhase( nPhase)
|
||||
local nNextPhase = nPhase + 1
|
||||
@@ -580,6 +555,23 @@ local function IsFirstMachiningOfStart( nMchId)
|
||||
return true
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function IsHeadMachining( nMchId)
|
||||
local vInitAx = EmtGetInitialAxesPos( nMchId)
|
||||
return ( vInitAx and vInitAx[1] > 100 * GEO.EPS_SMALL)
|
||||
end
|
||||
--------------------------------------------------------------------- Idea sostituzione IsHeadMachining controlla anche che Y sia dentro al pezzo
|
||||
--[[local function IsHeadMachining( nMchId)
|
||||
local vInitAx = EmtGetInitialAxesPos( nMchId)
|
||||
local dDeltaZeroBeamY = EgtIf( GetHeadSet( EgtTdbGetCurrToolParam( MCH_TP.HEAD)) == 1, DeltaTabY, Delta2TabY)
|
||||
if vInitAx then
|
||||
if vInitAx[1] > 100 * GEO.EPS_SMALL and vInitAx[2] >= dDeltaZeroBeamY - 100 * GEO.EPS_SMALL and vInitAx[2] <= dDeltaZeroBeamY + EMC.SB + 100 * GEO.EPS_SMALL then
|
||||
return true
|
||||
end
|
||||
end
|
||||
return
|
||||
end]]
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function GetPhaseRot( nPhase)
|
||||
return ( EgtGetInfo( EgtGetPhaseDisposition( nPhase) or GDB_ID.NULL, 'ROT', 'i') or 0)
|
||||
@@ -1282,13 +1274,20 @@ function SpecApplyPath( bPreSplit, bSplitting, bPreCut, bCutting, bUnload, bPreR
|
||||
elseif not IsEndPhase( EMC.PHASE) then
|
||||
local vCmd = SpecCalcCarriages( dDistFront, dDistBack, dRollFront, dRollBack, dY1DeltaMaxSP, dY2DeltaMinUL, nChar, AuxInfoMach)
|
||||
-- se fase iniziale e ci sono stati movimenti di carrelli
|
||||
if IsStartPhase( EMC.PHASE) and #vCmd > 0 and IsFirstMachiningOfStart( EMC.MCHID) and
|
||||
if ( IsStartPhase( EMC.PHASE) or IsEnd2Phase( EMC.PHASE)) and #vCmd > 0 and IsHeadMachining( EMC.MCHID) and
|
||||
not bPreSplit and not bSplitting and not bPreCut and not bCutting then
|
||||
-- recupero posizione testa trave
|
||||
local dLastTPos, dLastY1Delta = GetLastTPos( vCmd)
|
||||
-- se testa oltre lo zero
|
||||
if not dLastTPos then dLastTPos = EMC.TPOS end
|
||||
if not dLastY1Delta then dLastY1Delta = EMC.Y1DELTA end
|
||||
-- TODO : individuare condizione più corretta nella quale arretrare la testa della trave
|
||||
-- se testa oltre lo zero e entro le corse assi con 5 mm di sicurezza
|
||||
if dLastTPos and dLastTPos < 0 then
|
||||
-- si sposta testa in posizione carico
|
||||
table.insert( vCmd, { 24, 'T', ParkV1, 'Y1', ParkV1 + dLastY1Delta})
|
||||
-- si sposta testa in posizione di parcheggio rulli (o quanto si può)
|
||||
local dNewTPos = min( ParkV1, MaxY1 - dLastY1Delta - 5)
|
||||
if dNewTPos > 0 then
|
||||
table.insert( vCmd, { 24, 'T', dNewTPos, 'Y1', dNewTPos + dLastY1Delta})
|
||||
end
|
||||
end
|
||||
-- Se non ci sono spostamenti, confermo i parametri di aggancio e di posizione roller
|
||||
elseif SpecTestOnlyRemarkInCmds( vCmd) then
|
||||
|
||||
+2
-2
@@ -32,8 +32,8 @@
|
||||
require( 'EmtGenerator')
|
||||
EgtEnableDebug( false)
|
||||
|
||||
PP_VER = '3.1g2'
|
||||
PP_NVER = '3.1.7.2'
|
||||
PP_VER = '3.1h1'
|
||||
PP_NVER = '3.1.8.1'
|
||||
MIN_MACH_VER = '3.1f4'
|
||||
MACH_NAME = EgtGetCurrMachineName()
|
||||
|
||||
|
||||
@@ -1,5 +1,18 @@
|
||||
==== Common_ONE-PF Update Log ====
|
||||
|
||||
Versione 3.1h1 (05/08/2026)
|
||||
- (SIM-GEN) Se arretra trave al parcheggio rulli dopo Unload non può eseguire movimento completo, esegue movimento parziale solo se questo porta POST > 0. Altrimenti non fa nulla. Ticket#3102
|
||||
- (SIM) OnSimulToolDeselect chiamata da mlpe e ultimo movimento o movimento pinze nel quale non bisogna caricare nessun utensile, forzo TCPOS a 'T0'. Ticket#3114
|
||||
- (SIM) Corretta simulazione utensile già caricato che diventa utensile che lavora in doppio. Ticket#3105
|
||||
- (SIM-GEN) Cmd 24 (arretro trave in parcheggio rulli) anche se è fase END2, tolto controllo se è prima lavorazione e inserito controllo se è lavorazione di testa. Ticket#3089
|
||||
- (GEN) Aggiunta gestione Cmd 24 (arretro trave in parcheggio rulli) come se fosse Cmd 2 (come in simulazione). Ticket#3089
|
||||
|
||||
Versione 3.1g3 (24/07/2026)
|
||||
- (SIM) Non si legge il nome utensile da tabella EMT, ma si utilizza quello corrente salvato in precedenza
|
||||
- (SIM) Corretta gestione scarico motosega in caso di cambio pinze dopo che utensile già caricato. In generazione era corretto perchè selezione utensile avviene già dopo posizionamento carrelli
|
||||
- (SIM-GEN) Migliorati movimenti lama e motosega. Ultimo punto climb motosega è in alto in quota parcheggio.
|
||||
- (GEN) Corretta scrittura piano lavorazione in caso di rotazione con pezzo con sovramateriale in testa. Ticket#3092
|
||||
|
||||
Versione 3.1g2 (07/07/2026)
|
||||
- (SIM) Corretta gestione cambio utensile con motosega
|
||||
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
|
||||
local InfoCommon_STD_PP = {
|
||||
NAME = 'Common_ONE-PF', -- nome script PP standard
|
||||
VERSION = '3.1g2', -- versione script
|
||||
VERSION = '3.1h1', -- versione script
|
||||
MIN_MACH_VER_PP_COMMON = '3.1f1' -- versione minima kernel
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user