Compare commits
30 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2e2e56b86b | |||
| 344c135410 | |||
| e4b72f36de | |||
| 6cd8cc0aa6 | |||
| abeea33183 | |||
| dbc72d38db | |||
| 6bef01fec7 | |||
| ae9de373fb | |||
| f5d4c8d8b7 | |||
| c577ddf692 | |||
| f750918c0e | |||
| 9fdaeee8d1 | |||
| 0041fea1b2 | |||
| c3ca7da19c | |||
| aea3cf168f | |||
| aa20eb6959 | |||
| 118298e841 | |||
| ffeedc5fd6 | |||
| 7686361567 | |||
| fd1c2d2a21 | |||
| 6ac9b67b8d | |||
| 1c1124ac39 | |||
| ce46627885 | |||
| 8755104f2f | |||
| f5669d9e62 | |||
| 6560c27fed | |||
| 962ea6f461 | |||
| a4f8a81186 | |||
| e4704572da | |||
| e1c20e5152 |
@@ -830,9 +830,6 @@ function OnRapid()
|
||||
EMT.L2pp = ParkX2
|
||||
end
|
||||
end
|
||||
if ( not EMT.L2pp or ( EMT.L2pp and EMT.L2pp > ParkMchY2)) and ( ParkB2 ~= EMT.R2 or ParkC2 ~= EMT.R1) then
|
||||
EmitMoveDataHead( 2, { X=ParkMchY2, Z=ParkZ2, B=ParkB2, C=ParkC2, S=Speed})
|
||||
end
|
||||
EmitMoveStartHead( 2)
|
||||
EmitMoveWaitHead( 2)
|
||||
EmitMoveWaitChars( EgtIf( bOnlyCharY, 1, 3))
|
||||
@@ -842,11 +839,19 @@ function OnRapid()
|
||||
local dPosT = EMT.TPOS or EMT.L1op
|
||||
EmitParkRoller( dPosT, bSplitCut)
|
||||
end
|
||||
-- vado a quota sicurezza in X per permettere rotazione assi rotanti
|
||||
if ( not EMT.L2pp or ( EMT.L2pp and EMT.L2pp > ParkMchY2)) and ( ParkB2 ~= EMT.R2 or ParkC2 ~= EMT.R1) then
|
||||
EmitMoveDataHead( 2, { X=ParkMchY2, Z=ParkZ2, B=ParkB2, C=ParkC2, S=Speed})
|
||||
end
|
||||
-- scrivo solo se gli assi rotanti sono cambiati
|
||||
if EMT.HEAD == 'H22' and ( CurrB2 ~= EMT.R2 or CurrC2 ~= EMT.R1) then
|
||||
EmitMoveDataHead( 2, { B=EMT.R2, C=EMT.R1, S=Speed})
|
||||
end
|
||||
EmitMoveDataHead( 2, { X=EMT.L2, Z=EMT.L3, B=EMT.R2, C=EMT.R1, S=Speed})
|
||||
if EMT.ZMAX then
|
||||
EmitMoveDataHead( 2, { X=EMT.L2, B=EMT.R2, C=EMT.R1, S=Speed})
|
||||
else
|
||||
EmitMoveDataHead( 2, { X=EMT.L2, Z=EMT.L3, B=EMT.R2, C=EMT.R1, S=Speed})
|
||||
end
|
||||
EmitMoveStartHead( 2)
|
||||
-- eventuale preselezione successiva testa 1
|
||||
PreselectNextDiffHead( EMT.MCHID, EMT.HEAD)
|
||||
@@ -1150,7 +1155,11 @@ function OnRapid()
|
||||
if EMT.HEAD == 'H22' and ( CurrB2 ~= EMT.R2 or CurrC2 ~= EMT.R1) then
|
||||
EmitMoveDataHead( 2, { B=EMT.R2, C=EMT.R1, S=Speed})
|
||||
end
|
||||
EmitMoveDataHead( 2, { X=EMT.L2, Z=EMT.L3, B=EMT.R2, C=EMT.R1, S=Speed})
|
||||
if EMT.ZMAX then
|
||||
EmitMoveDataHead( 2, { X=EMT.L2, B=EMT.R2, C=EMT.R1, S=Speed})
|
||||
else
|
||||
EmitMoveDataHead( 2, { X=EMT.L2, Z=EMT.L3, B=EMT.R2, C=EMT.R1, S=Speed})
|
||||
end
|
||||
EmitMoveStartHead( 2)
|
||||
-- eventuale preselezione successiva testa 1
|
||||
PreselectNextDiffHead( EMT.MCHID, EMT.HEAD)
|
||||
@@ -1424,6 +1433,54 @@ end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function OnArc()
|
||||
-- se necessario, impostazione riferimento locale
|
||||
if EMT.REFLOC == 0 then
|
||||
-- calcolo per piano generico
|
||||
CalcInterpPlane()
|
||||
EMT.REFLOC = 1
|
||||
-- salvo posizione attuale
|
||||
local OldL1 = EMT.L1
|
||||
local OldL2 = EMT.L2
|
||||
local OldL3 = EMT.L3
|
||||
-- imposto posizione precedente (se presente devo annullare l'offset in X per sovramateriale di testa)
|
||||
EMT.L1 = EMT.L1o
|
||||
EMT.L2 = EMT.L2o
|
||||
EMT.L3 = EMT.L3o
|
||||
if EMT.X_OFF then EMT.L1 = EMT.L1 - EMT.X_OFF end
|
||||
-- trasformo i punti nel piano
|
||||
MyAdjustLinearAxes()
|
||||
EmtAdjustRotaryAxes()
|
||||
EMT.L1p = nil
|
||||
EMT.L2p = nil
|
||||
EMT.L3p = nil
|
||||
MyOutput( 'M105 P1=' .. GetFaceCode() .. ' P2='..GetHeadSetCode()..' P3='..EgtIf( EMT.DOU_TYPE, 2, 0))
|
||||
MyOutput( 'M98')
|
||||
MyOutput( 'M6 ' .. GetHeadToolCode() .. AdjustTcPos( true))
|
||||
MyOutput( 'G24' .. EMT.IPLGLSTR)
|
||||
-- emissione movimento
|
||||
EMT.R1p = nil
|
||||
EMT.R2p = nil
|
||||
if EmitRapidInG1 then
|
||||
local sFeed = ' F30000'
|
||||
sOut = 'G1'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..
|
||||
EmtGetAxis('R2')..EmtGetAxis('R1')..sFeed
|
||||
else
|
||||
sOut = 'G0'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..
|
||||
EmtGetAxis('R2')..EmtGetAxis('R1')
|
||||
end
|
||||
|
||||
MyOutput( sOut)
|
||||
-- aggiorno precedenti
|
||||
local nOriginalMove = EMT.MOVE
|
||||
EMT.MOVE = 0
|
||||
EmtUpdatePrev()
|
||||
EMT.MOVE = nOriginalMove
|
||||
-- ripristino posizione attuale
|
||||
EMT.L1 = OldL1
|
||||
EMT.L2 = OldL2
|
||||
EMT.L3 = OldL3
|
||||
end
|
||||
|
||||
-- se primo movimento in feed della lavorazione, dichiaro inizio lavorazione
|
||||
if EMT.MCHFIRSTFEED then
|
||||
EMT.MCHFIRSTFEED = nil
|
||||
@@ -2467,7 +2524,7 @@ function EmitParkRoller( dPosT, bSplitCut)
|
||||
local dPosY1 = dPosT + EMT.Y1DELTA
|
||||
local DiffY1 = MyParkY1 - dPosY1
|
||||
local dMoveY1 = EgtIf( DiffY1 > 0.1, dMoveV1, 0)
|
||||
local dTryMoveY1 = ParkV1 - dPosT - EgtIf( bSplitCut or EMT.FALL, EMT.LT, 0)
|
||||
local dTryMoveY1 = min( ParkV1 - dPosT - EgtIf( bSplitCut or EMT.FALL, EMT.LT, 0), MaxY1 - dPosY1 - 10)
|
||||
if ( dPosT > ParkV2 - ExtraParkV and dPosT < ParkV1 and dPosY1 + dTryMoveY1 < MaxY1) then dMoveY1 = max( dMoveY1, dTryMoveY1) end
|
||||
--MyOutput( string.format( 'PosT=%.3f PosY1=%.3f V1POS=%.3f Split=%s', dPosT, dPosY1, EMT.V1POS, EgtIf( bSplitCut, '1', '0')))
|
||||
MDChar.Y1 = dPosY1 + dMoveY1
|
||||
@@ -2479,7 +2536,7 @@ function EmitParkRoller( dPosT, bSplitCut)
|
||||
local dPosY2 = dPosT + EMT.Y2DELTA
|
||||
local DiffY2 = MyParkY2 - dPosY2
|
||||
local dMoveY2 = EgtIf( DiffY2 < -0.1, dMoveV2, 0)
|
||||
local dTryMoveY2 = ParkV2 - dPosT - EMT.LT - EMT.HOVM
|
||||
local dTryMoveY2 = max( ParkV2 - dPosT - EMT.LT - EMT.HOVM, MinY2 - dPosY2 + 10)
|
||||
if ( dPosT + EMT.LT + EMT.HOVM < ParkV1 + ExtraParkV and dPosT + EMT.LT + EMT.HOVM > ParkV2 and dPosY2 + dTryMoveY2 > MinY2) then dMoveY2 = min( dMoveY2, dTryMoveY2) end
|
||||
--MyOutput( string.format( 'PosT=%.3f LT=%.3f PosY2=%.3f V2POS=%.3f', dPosT, EMT.LT, dPosY2, EMT.V2POS))
|
||||
MDChar.Y2 = dPosY2 + dMoveY2
|
||||
@@ -16,7 +16,7 @@ local sBaseDir = EgtGetCurrMachineDir()
|
||||
if NumericalControl == 'NUM' then
|
||||
error( 'Numerical Control error : NUM not yet managed')
|
||||
elseif NumericalControl == 'TPA' then
|
||||
dofile( sBaseDir .. '\\Common-PF1250.TPA.mlpe')
|
||||
dofile( sBaseDir .. '\\Common_PF1250.TPA.mlpe')
|
||||
else
|
||||
error( 'Numerical Control error : unkwnown type')
|
||||
end
|
||||
@@ -449,7 +449,7 @@ function OnSimulToolSelect( dPosA)
|
||||
EMT.TTOTLEN = EgtTdbGetCurrToolParam( MCH_TP.TOTLEN)
|
||||
EMT.TUSERNOTES = EgtTdbGetCurrToolParam( MCH_TP.USERNOTES)
|
||||
-- recupero il gruppo
|
||||
local nSetHead = GetHeadSet( EMT.NEXTHEAD)
|
||||
local nSetHead = GetHeadSet( EMT.HEAD)
|
||||
-- se fresa o lama su testa 1, reset assi rotanti
|
||||
if nSetHead == 1 then
|
||||
-- se ho la testa 3, la mando a parcheggio
|
||||
@@ -726,6 +726,27 @@ function OnSimulMachiningStart()
|
||||
EmtSetLastError( 1211, 'Missing or not active double tool of '..sOldTool)
|
||||
end
|
||||
EgtTdbSetCurrTool( sOldTool)
|
||||
else
|
||||
-- recupero il gruppo
|
||||
local nSetHead = GetHeadSet( EMT.HEAD)
|
||||
if nSetHead ~= 1 and ( EMT.PREVTOOL_H1 and EMT.PREVHEAD_H1) then
|
||||
local nPrevExit_H1 = 1
|
||||
local nInd_H1 = 1001
|
||||
AddToolToCollisionObj( EMT.PREVTOOL_H1, EMT.PREVHEAD_H1, nPrevExit_H1, nInd_H1, true)
|
||||
AddToolHolderToCollisionObj( EMT.PREVTOOL_H1, EMT.PREVHEAD_H1, nPrevExit_H1, nInd_H1 + 1)
|
||||
end
|
||||
if nSetHead ~= 2 and ( EMT.PREVTOOL_H2 and EMT.PREVHEAD_H2) then
|
||||
local nPrevExit_H2 = 1
|
||||
local nInd_H2 = 1011
|
||||
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
|
||||
local nPrevExit_H3 = 1
|
||||
local nInd_H3 = 1001
|
||||
AddToolToCollisionObj( nil, 'H31', nPrevExit_H3, 1001)
|
||||
AddToolHolderToCollisionObj( nil, 'H31', nPrevExit_H3, 1002)
|
||||
end
|
||||
end
|
||||
-- se precedente in doppio ma ora solo testa 1 e non in sicurezza
|
||||
if EMT.DOU_TO_ZMAX then
|
||||
@@ -996,11 +1017,6 @@ function OnSimulMoveStart()
|
||||
if X2Pos > ParkMchY2 and ( B2Pos ~= EMT.R2 or C2Pos ~= EMT.R1) then
|
||||
SimulMoveAxis( 'X2', ParkMchY2, MCH_SIM_STEP.RAPID)
|
||||
end
|
||||
else
|
||||
-- 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)
|
||||
end
|
||||
end
|
||||
else
|
||||
-- Porto la X alla giusta quota
|
||||
@@ -1011,6 +1027,10 @@ function OnSimulMoveStart()
|
||||
if EMT.HEAD == 'H22' then
|
||||
SimulMoveAxes( 'B2', EMT.R2, MCH_SIM_STEP.COLLROT, 'C2', EMT.R1, MCH_SIM_STEP.COLLROT)
|
||||
end
|
||||
-- se ero a ZMAX, mi sposto in posizione a Z home. Ultimo movimento muove in Z
|
||||
if EMT.ZMAX then
|
||||
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
|
||||
@@ -1283,7 +1303,7 @@ function ExecAuxCmd( sCmd, bPathStart)
|
||||
ExecMoveHome( Cmd[2] == '1', EgtIf( bPathStart, false, EMT.MCHSPLIT))
|
||||
elseif Cmd[1] == '11' then
|
||||
local bClose = Cmd[2] ~= '0'
|
||||
if bPathStart and EMT.MCHSPLIT and not EMT.FALL and GetPY2Light() then bClose = false end
|
||||
if bPathStart and EMT.MCHSPLIT and not ( EMT.FALL or EMT.TO_FALL) and GetPY2Light() then bClose = false end
|
||||
ExecMovePY1( bClose)
|
||||
elseif Cmd[1] == '12' then
|
||||
ExecMovePY2( Cmd[2] ~= '0')
|
||||
@@ -1604,7 +1624,7 @@ function ExecParkRoller( PosY1, PosY2, PosV1, PosV2, bSpliCut, bAgg)
|
||||
local MoveV1 = ParkV1 - PosV1
|
||||
local DiffY1 = MyParkY1 - PosY1
|
||||
local MoveY1 = EgtIf( DiffY1 > 0.1, MoveV1, 0)
|
||||
local TryMoveY1 = ParkV1 - PosT - EgtIf( bSpliCut or EMT.FALL, EMT.LT, 0)
|
||||
local TryMoveY1 = min( ParkV1 - PosT - EgtIf( bSpliCut or EMT.FALL, EMT.LT, 0), MaxY1 - PosY1 - 10)
|
||||
if ( PosT > ParkV2 - ExtraParkV and PosT < ParkV1 and PosY1 + TryMoveY1 < MaxY1) then MoveY1 = max( MoveY1, TryMoveY1) end
|
||||
-- se appena eseguito taglio di separazione
|
||||
if bSpliCut then
|
||||
@@ -1634,7 +1654,7 @@ function ExecParkRoller( PosY1, PosY2, PosV1, PosV2, bSpliCut, bAgg)
|
||||
local MoveV2 = ParkV2 - PosV2
|
||||
local DiffY2 = MyParkY2 - PosY2
|
||||
local MoveY2 = EgtIf( DiffY2 < -0.1, MoveV2, 0)
|
||||
local TryMoveY2 = ParkV2 - PosT - EMT.LT
|
||||
local TryMoveY2 = max( ParkV2 - PosT - EMT.LT, MinY2 - PosY2 + 10)
|
||||
if ( PosT + EMT.LT < ParkV1 + ExtraParkV and PosT + EMT.LT > ParkV2 and PosY2 + TryMoveY2 > MinY2) then MoveY2 = min( MoveY2, TryMoveY2) end
|
||||
if not SimulMoveAxes( 'T', PosT + MoveY2, MCH_SIM_STEP.RAPID,
|
||||
'V1', ParkV1, MCH_SIM_STEP.RAPID,
|
||||
@@ -1894,7 +1914,7 @@ function LoadFirstTool( nHSet, sTcPosDef)
|
||||
if nHSet ~= 1 and nHSet ~= 2 then return end
|
||||
EgtUnloadTool( EgtIf( nHSet == 1, 'H11', 'H21'), 1)
|
||||
if GetHeadSetFromTcPos( sTcPosDef) ~= nHSet then return end
|
||||
local sTool, sHead, sTcPos, sTTotLen, sBlockedAxis = FindFirstToolOnHeadSet( nHSet)
|
||||
local sTool, sHead, sTcPos, sTTotLen, sTotDiam, sBlockedAxis = FindFirstToolOnHeadSet( nHSet)
|
||||
if not sTool then
|
||||
local vTools = EgtGetToolsInCurrSetupPos( sTcPosDef)
|
||||
if vTools and vTools[1] then
|
||||
@@ -1906,7 +1926,7 @@ function LoadFirstTool( nHSet, sTcPosDef)
|
||||
if sTool then
|
||||
-- imposto correttamente i dati di testa
|
||||
local OrigEMC = EMC
|
||||
EMC = { HEAD = sHead, TOOL = sTool, TCPOS = sTcPos, TOTLEN = sTTotLen, BLOCKEDAXIS = sBlockedAxis}
|
||||
EMC = { HEAD = sHead, TOOL = sTool, TCPOS = sTcPos, TOTLEN = sTTotLen, TOTDIAM = sTotDiam, BLOCKEDAXIS = sBlockedAxis}
|
||||
OnSetHead()
|
||||
EMC = OrigEMC
|
||||
if sBlockedAxis then
|
||||
@@ -2345,7 +2365,7 @@ function FindFirstToolOnHeadSet( nHSet)
|
||||
local CurrMachId = EgtGetCurrMachining()
|
||||
local CurrTool = EgtTdbGetCurrToolParam( MCH_TP.NAME)
|
||||
-- cerco lavorazione con utensile su gruppo testa indicato
|
||||
local sTool, sHead, sTcPos, sTTotLen, sBlockedAxis
|
||||
local sTool, sHead, sTcPos, sTTotLen, sTotDiam, sBlockedAxis
|
||||
local OpId = EgtGetFirstActiveOperation()
|
||||
while OpId do
|
||||
local nType = EgtGetOperationType( OpId)
|
||||
@@ -2363,6 +2383,7 @@ function FindFirstToolOnHeadSet( nHSet)
|
||||
end
|
||||
sTool = sTest
|
||||
sTTotLen = EgtTdbGetCurrToolParam( MCH_TP.TOTLEN)
|
||||
sTotDiam = EgtTdbGetCurrToolParam( MCH_TP.TOTDIAM)
|
||||
sBlockedAxis = EgtGetMachiningParam( MCH_MP.BLOCKEDAXIS)
|
||||
break
|
||||
end
|
||||
@@ -2375,7 +2396,7 @@ function FindFirstToolOnHeadSet( nHSet)
|
||||
EgtSetCurrMachining( CurrMachId or GDB_ID.NULL)
|
||||
EgtTdbSetCurrTool( CurrTool or '')
|
||||
-- restituisco risultato
|
||||
return sTool, sHead, sTcPos, sTTotLen, sBlockedAxis
|
||||
return sTool, sHead, sTcPos, sTTotLen, sTotDiam, sBlockedAxis
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
@@ -574,7 +574,11 @@ function OnPostApplyMachining()
|
||||
|
||||
-- Verifico flag di separazione e fase di scarico
|
||||
local sNotes = EgtGetMachiningParam( MCH_MP.USERNOTES)
|
||||
local bPreSplit = ( false and sNotes:find( 'Presplit', 1, true) ~= nil)
|
||||
|
||||
-- bPreSplit sempre a falso per obbligare a pinzare il pezzo con 1 morsa anche se iniziato il taglio che dividerà grezzo e finito (in genere per sezioni grandi con 2 tagli di lama)
|
||||
-- Tra un taglio e l'altro infatti c'e' inversione del braccio e quindi un'apertura delle rulliere. Se pinzano entrambe le pinze, potrebbero esserci problemi di collisone rulli-morse
|
||||
local bPreSplit = false --( sNotes:find( 'Presplit', 1, true) ~= nil)
|
||||
|
||||
local bSplitting = ( sNotes:find( 'Split', 1, true) ~= nil)
|
||||
local bPreCut = ( sNotes:find( 'Precut', 1, true) ~= nil)
|
||||
local bCutting = ( sNotes:find( 'Cut', 1, true) ~= nil)
|
||||
@@ -655,6 +659,14 @@ function SpecApplyPath( bPreSplit, bSplitting, bPreCut, bCutting, bUnload)
|
||||
-- Verifico se lavorazione pareti
|
||||
local bWall = ( EgtGetInfo( EgtGetCurrMachGroup() or GDB_ID.NULL, 'Wall', 'd') == 1)
|
||||
|
||||
-- mi salvo info lavorazione su una lista
|
||||
local AuxInfoMach = {}
|
||||
AuxInfoMach.bPreSplit = bPreSplit
|
||||
AuxInfoMach.bSplitting = bSplitting
|
||||
AuxInfoMach.bPreCut = bPreCut
|
||||
AuxInfoMach.bCutting = bCutting
|
||||
AuxInfoMach.bUnload = bUnload
|
||||
|
||||
-- Assegno flag di pezzo separato dal resto del grezzo
|
||||
SPLIT = IsEndPhase( EMC.PHASE)
|
||||
|
||||
@@ -741,7 +753,7 @@ function SpecApplyPath( bPreSplit, bSplitting, bPreCut, bCutting, bUnload)
|
||||
local dPosT = LoadT
|
||||
local vCmd = SpecCalcLoad( dPosT, dDistFront, max( dDistBack, MinJoin, EMC.LB - ( MaxY1 - MinY1) + 6))
|
||||
EMC.LOAD = true
|
||||
local vCmd2 = SpecCalcCarriages( dDistFront, dDistBack, dRollFront, dRollBack, dY1DeltaMaxSP, dY2DeltaMinUL, nChar)
|
||||
local vCmd2 = SpecCalcCarriages( dDistFront, dDistBack, dRollFront, dRollBack, dY1DeltaMaxSP, dY2DeltaMinUL, nChar, AuxInfoMach)
|
||||
EMC.LOAD = nil
|
||||
if bSplitting and EMC.ERR == 18 then
|
||||
table.insert( vCmd, { 22, dRollBack, -dRollFront})
|
||||
@@ -754,7 +766,7 @@ function SpecApplyPath( bPreSplit, bSplitting, bPreCut, bCutting, bUnload)
|
||||
|
||||
-- Se altrimenti non eseguito SPLIT, eseguo calcoli per carrelli
|
||||
elseif not SPLIT then
|
||||
local vCmd = SpecCalcCarriages( dDistFront, dDistBack, dRollFront, dRollBack, dY1DeltaMaxSP, dY2DeltaMinUL, nChar)
|
||||
local vCmd = SpecCalcCarriages( dDistFront, dDistBack, dRollFront, dRollBack, dY1DeltaMaxSP, dY2DeltaMinUL, nChar, AuxInfoMach)
|
||||
-- Se non ci sono spostamenti, confermo i parametri di aggancio e di posizione roller
|
||||
if SpecTestOnlyRemarkInCmds( vCmd) then
|
||||
table.insert( vCmd, { 21, EgtIf( EMC.Y1DELTA, EMC.Y1DELTA, 0), EgtIf( EMC.Y2DELTA, EMC.Y2DELTA, 0)})
|
||||
@@ -991,7 +1003,11 @@ function SpecCalcLoad( dPosT, dDistFront, dDistBack)
|
||||
local dNewY1min = max( EMC.LB - dDistBack, MinOther + AggLoad + EMC.HCING + EMC.HOVM)
|
||||
local dNewY1max = min( ( MaxY1 - MinY1) - 5, EMC.LB - MinJoin)
|
||||
if dNewY1min > dNewY1max then return nil end
|
||||
local dNewY1Delta = EgtClamp( BD.CHAR_LOAD_DIST or 3000, 0.75 * dNewY1min + 0.25 * dNewY1max, 0.25 * dNewY1min + 0.75 * dNewY1max)
|
||||
-- minimo posizionamento pinza 1 per permettere scarico del restante
|
||||
local dMinLengthRestToUnload = abs( MinY1) + abs( MinV1) + abs( MaxV2) + abs( MaxY2) + MinJoin + AggLoad + EMC.LT + 10
|
||||
-- calcolo posizionamento con i coefficienti, ma verifico che sia tra il minimo e il massimo pinzabile
|
||||
local dNewY1DeltaMax = EgtClamp( 0.25 * dNewY1min + 0.75 * dNewY1max, dMinLengthRestToUnload, dNewY1max)
|
||||
local dNewY1Delta = EgtClamp( BD.CHAR_LOAD_DIST or 3000, 0.75 * dNewY1min + 0.25 * dNewY1max, dNewY1DeltaMax)
|
||||
local dNewY2Delta = nil
|
||||
local dNewY1 = dPosT + dNewY1Delta
|
||||
local vCmd = {}
|
||||
@@ -1035,7 +1051,7 @@ function SpecCalcLoad( dPosT, dDistFront, dDistBack)
|
||||
end -- SpecAdjustLoad [L]
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function SpecCalcCarriages( dDistFront, dDistBack, dRollFront, dRollBack, dY1DeltaMaxSP, dY2DeltaMinUL, nChar)
|
||||
function SpecCalcCarriages( dDistFront, dDistBack, dRollFront, dRollBack, dY1DeltaMaxSP, dY2DeltaMinUL, nChar, AuxInfoMach)
|
||||
|
||||
local MinFrontJoin = MinJoin + EMC.HCING + EMC.HOVM
|
||||
local MyMinOther = MinOther + EgtIf( EMC.CNT == 1, AggLoad, 0)
|
||||
@@ -1069,11 +1085,19 @@ function SpecCalcCarriages( dDistFront, dDistBack, dRollFront, dRollBack, dY1Del
|
||||
WorkTab.dY1DeltaMaxF = min( EMC.LB - MinJoin, MaxY1 + dDistFront + dRollFront + AGG_V)
|
||||
WorkTab.dY2DeltaMinF = nil
|
||||
WorkTab.dY2DeltaMaxF = nil
|
||||
if dY1DeltaMaxSP then WorkTab.dY1DeltaMaxF = min( WorkTab.dY1DeltaMaxF, dY1DeltaMaxSP) end
|
||||
WorkTab.dV1PosF = dRollBack
|
||||
WorkTab.bV1CloseF = false
|
||||
WorkTab.dV2PosF = -dRollFront
|
||||
WorkTab.bV2CloseF = false
|
||||
|
||||
-- dopo che si è calcolato il minimo e massimo dell'intervallo, verifico che in testa rimanga almeno il minimo per poter fare passaggio pinze e scaricare
|
||||
if AuxInfoMach and ( AuxInfoMach.bSplitting or AuxInfoMach.bCutting) then
|
||||
if WorkTab.dY1DeltaMaxF - WorkTab.dY1DeltaMinF > 1.5 * BD.CHAR_EXTRA_DIST and WorkTab.dY1DeltaMaxF > EMC.LT + BD.MINRAW_S + BD.CHAR_EXTRA_DIST then
|
||||
WorkTab.dY1DeltaMinF = max( min( EMC.LT + BD.MINRAW_S, WorkTab.dY1DeltaMaxF - 1), WorkTab.dY1DeltaMinF)
|
||||
end
|
||||
end
|
||||
|
||||
-- verifico validità intervallo ammesso per Y1
|
||||
if WorkTab.dY1DeltaMinF > WorkTab.dY1DeltaMaxF + 10 * GEO.EPS_SMALL then
|
||||
EMC.ERR = 18
|
||||
@@ -1110,6 +1134,13 @@ function SpecCalcCarriages( dDistFront, dDistBack, dRollFront, dRollBack, dY1Del
|
||||
WorkTab.dV2PosF = -dRollFront
|
||||
WorkTab.bV2CloseF = false
|
||||
|
||||
-- dopo che si è calcolato il minimo e massimo dell'intervallo, verifico che in testa rimanga almeno il minimo per poter fare passaggio pinze e scaricare
|
||||
if AuxInfoMach and ( AuxInfoMach.bSplitting or AuxInfoMach.bCutting) then
|
||||
if WorkTab.dY1DeltaMaxF - WorkTab.dY1DeltaMinF > 1.5 * BD.CHAR_EXTRA_DIST and WorkTab.dY1DeltaMaxF > EMC.LT + BD.MINRAW_S + BD.CHAR_EXTRA_DIST then
|
||||
WorkTab.dY1DeltaMinF = max( min( EMC.LT + BD.MINRAW_S, WorkTab.dY1DeltaMaxF - 1), WorkTab.dY1DeltaMinF)
|
||||
end
|
||||
end
|
||||
|
||||
-- verifico validità intervallo ammesso per Y1
|
||||
if WorkTab.dY1DeltaMinF > WorkTab.dY1DeltaMaxF + 10 * GEO.EPS_SMALL then
|
||||
EMC.ERR = 18
|
||||
@@ -1988,7 +2019,7 @@ local function PosY2Y1B( TabI, vCmd)
|
||||
if TabI.dY2PosI > MinY2 and
|
||||
TabI.dY2PosI > TabI.dTPosI + MinJoin + EMC.HOVM + EMC.HCING - 10 * GEO.EPS_SMALL then
|
||||
-- allontanamento morse, trascinamento trave con Y2
|
||||
MaxDispl( TabI, vCmd, 'M2')
|
||||
MaxDispl( TabI, vCmd, 'M2')
|
||||
else
|
||||
-- accentramento morse, trascinamento trave con Y1
|
||||
MaxDispl( TabI, vCmd, 'M3')
|
||||
@@ -1,5 +1,30 @@
|
||||
==== Common_PF1250 Update Log ====
|
||||
|
||||
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
|
||||
|
||||
Versione 2.6h1 (07/08/2024)
|
||||
- (GEN) Gestione creazione piano generico in caso il primo movimento della lavorazione sia un arco. Ticket#1891
|
||||
- (SIM-GEN) Migliorata gestione riposizionamenti fatta con la 2.6g1. Ticket#1836
|
||||
- (MLDE-SIM-GEN) Rinominato file da "Common-" a "Common_" per uniformità con i file common delle altre macchine. Serve modifica a MLDE macchina.
|
||||
|
||||
Versione 2.6g5 (24/07/2024)
|
||||
- (SIM) Per OnSetHead chiamata da simulazione, aggiunta lettura TOTDIAM. Serve per limitare corse assi testa sotto. Ticket#1946
|
||||
|
||||
Versione 2.6g4 (23/07/2024)
|
||||
- (SIM) Corretta ultima modifica per controllo collisioni testa non utilizzata. Trovava collisioni in lavorazioni in doppio.
|
||||
|
||||
Versione 2.6g3 (22/07/2024)
|
||||
- (SIM) Si aggiunge al controllo collisioni anche Tool e ToolHolder della testa non utilizzata. Ticket#1937
|
||||
- (SIM-GEN) In caso di grezzo piuttosto piccolo, concesso pinzaggio fino al massimo possibile, oltre al calcolo con coefficienti. Ticket#1942
|
||||
|
||||
Versione 2.6g2 (12/07/2024)
|
||||
- (SIM-GEN) Corretto movimento testa sotto che andava in collisione tra una lavorazione e la successiva se tra le due c'era un riposizionamento pinze. Ticket#1925
|
||||
|
||||
Versione 2.6g1 (08/07/2024)
|
||||
- (SIM-GEN) Corretto movimento che pinzava nel vuoto durante riposizionamento. Ticket#1836
|
||||
|
||||
Versione 2.6f2 (06/06/2024)
|
||||
- (GEN) Quando si va a ZMAX, si azzerano tutte le coordinate ".pp". Scriveva una Z bassa quando era a Z massima. Ticket#1839
|
||||
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
|
||||
local InfoCommon_STD_PP = {
|
||||
NAME = 'Common_PF1250', -- nome script PP standard
|
||||
VERSION = '2.6f2', -- versione script
|
||||
VERSION = '2.6h2', -- versione script
|
||||
MIN_MACH_VER_PP_COMMON = '2.5k1' -- versione minima kernel
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user