Compare commits
11 Commits
2.7g4_DEV1
...
2.7h2_DEV1
| Author | SHA1 | Date | |
|---|---|---|---|
| cc9f676866 | |||
| be9c6305fb | |||
| f54320bf30 | |||
| 04c4b8f756 | |||
| 027094d67e | |||
| f0385c5558 | |||
| 4b35bf714e | |||
| c2d4489879 | |||
| d0f062ab32 | |||
| 26b673fc83 | |||
| 5a681e3d60 |
+25
-12
@@ -316,6 +316,8 @@ function OnDispositionEnd()
|
||||
MyOutputNoNum( '(PART UNLOAD)')
|
||||
for i = 1, #EMT.MDCHAR do
|
||||
EmitMoveDataChars( EMT.MDCHAR[i])
|
||||
if EMT.MDCHAR[i].V1 then EMT.V1POS = EMT.MDCHAR[i].V1 end
|
||||
if EMT.MDCHAR[i].V2 then EMT.V2POS = EMT.MDCHAR[i].V2 end
|
||||
end
|
||||
EmitMoveStartChars( 2)
|
||||
-- se dopo c'è scarico spezzone devo mettere attesa termine esecuzione
|
||||
@@ -331,7 +333,8 @@ function OnDispositionEnd()
|
||||
end
|
||||
elseif EMT.SPECUNLOADING then
|
||||
EmtOutput( '(PART SPEC UNLOADING)')
|
||||
EmitBeamHeadData( { T=EMT.L1, Pz5=2})
|
||||
local dAbsHeadPos = EMT.L1pp or EMT.L1
|
||||
EmitBeamHeadData( { T=dAbsHeadPos, Pz5=2})
|
||||
EMT.SPECUNLOADING = nil
|
||||
EMT.W2DELTA = nil
|
||||
-- emissione conclusione pezzo precedente
|
||||
@@ -678,8 +681,8 @@ function OnPathStart()
|
||||
EMT.L1pp = EMT.L1op
|
||||
EMT.L2pp = EMT.L2op
|
||||
EMT.L3pp = EMT.L3op
|
||||
EMT.R1pp = EMT.R1p
|
||||
EMT.R2pp = EMT.R2p
|
||||
EMT.R1pp = EMT.R1p or EMT.R1pp
|
||||
EMT.R2pp = EMT.R2p or EMT.R2pp
|
||||
else
|
||||
EMT.L1pp = nil
|
||||
EMT.L2pp = nil
|
||||
@@ -1522,6 +1525,7 @@ function OnRapid()
|
||||
end
|
||||
EMT.REFLOC = 0
|
||||
EMT.MCHFIRST = false
|
||||
EMT.PLANEACTIVE = true
|
||||
EMT.ZMAX = false
|
||||
-- se standard
|
||||
elseif EMT.FLAG == 0 or EMT.FLAG == 1 or EMT.FLAG == 2 then
|
||||
@@ -1551,6 +1555,7 @@ function OnRapid()
|
||||
EmtOutput( 'M175')
|
||||
end
|
||||
EMT.MCHFIRST = false
|
||||
EMT.PLANEACTIVE = true
|
||||
end
|
||||
-- se necessario, impostazione riferimento locale
|
||||
if EMT.REFLOC == 0 then
|
||||
@@ -1607,7 +1612,7 @@ function OnRapid()
|
||||
MyAdjustLinearAxes()
|
||||
EmtAdjustRotaryAxes()
|
||||
-- se Split o Presplit lascio agganciata solo la pinza Y2 alla fine dei movimenti
|
||||
local sNextTool = GetNextTool( EMT.MCHID)
|
||||
local sNextTool = GetNextTool( EMT.MCHID, true)
|
||||
-- vado in home se è ultimo movimento ed è ultima lavorazione, se sono con motosega e devo cambiare utensile, oppure se ho la lama
|
||||
local bToXhome = ( IsLastPath( EMT.PATHID) and not sNextTool) or ( EMT.HEAD == 'H23' and EMT.TOOL ~= sNextTool) or ( EMT.HEAD == 'H13' and EMT.TOOL ~= sNextTool) or
|
||||
( EMT.HEAD == 'H12' and EMT.TOOL ~= sNextTool ) or ( EMT.HEAD == 'H22' and EMT.TOOL ~= sNextTool) or EMT.MCHSPLIT
|
||||
@@ -1655,6 +1660,7 @@ function OnLinear()
|
||||
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
|
||||
-- emissione movimento
|
||||
local sOut = 'G0'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..
|
||||
EmtGetAxis('R2')..EmtGetAxis('R1')
|
||||
@@ -1738,6 +1744,7 @@ function OnArc()
|
||||
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
|
||||
-- emissione movimento
|
||||
local sOut = 'G0'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..
|
||||
EmtGetAxis('R2')..EmtGetAxis('R1')
|
||||
@@ -2419,6 +2426,9 @@ end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function GetV1ToCloseNum( UseCurrV1)
|
||||
if EMT.MCHPRECUT or EMT.MCHCUT then
|
||||
return false
|
||||
end
|
||||
--EmtOutput( string.format( 'L1m=%.3f L1M=%.3f', EMT.MAXMIN[1], EMT.MAXMAX[1]))
|
||||
--EmtOutput( string.format( 'LB=%.3f LT=%.3f', EMT.LB, EMT.LT))
|
||||
local dV1Pos
|
||||
@@ -2808,9 +2818,7 @@ function EmitZmax( bReset, bEnd, bXhome, PrevR1, PrevR2, bSplitCut, bUsePrevDelt
|
||||
local MovH = { Z = EgtIf( dZref > EMT.L3o, dZref, EMT.L3o)}
|
||||
MovH.X = -dXPos ; MovH.B = EgtClamp( PrevR2, -90, 90) ; MovH.C = PrevR1 ;
|
||||
EmitMoveDataHead( 1, MovH)
|
||||
if EMT.HEAD == 'H12' and ( abs( dSafeC1 - PrevR1) > 30.1 or abs( dSafeB1 - PrevR2) > 30.1) or not( bProgress) then
|
||||
EmitMoveDataHead( 1, { Z=dMaxZ1, B=0})
|
||||
end
|
||||
EmitMoveDataHead( 1, { Z=dMaxZ1, B=0})
|
||||
EmitMoveDataHead( 1, { C=dSafeC1})
|
||||
EmitMoveDataHead( 1, { B=dSafeB1})
|
||||
EmitMoveDataHead( 1, { Z=dMaxZ1})
|
||||
@@ -2961,14 +2969,19 @@ end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function EmitResetMachining()
|
||||
if ( EMT.TOOL ~= GetNextTool( EMT.MCHID) and IsLastPath( EMT.PATHID)) or GetSpecUnloading( EMT.PATHID) or GetFall( EMT.PATHID) then
|
||||
-- se da MLDE parametro non settato, o settato a true, scrivo il comando arresto mandrino
|
||||
if WriteM05Command == nil or WriteM05Command then
|
||||
if EMT.PLANEACTIVE then
|
||||
-- se non sono a Z massima e operatore deve entrare in cabina spango sempre
|
||||
if not EMT.ZMAX and ( GetSpecUnloading( EMT.PATHID) or GetFall( EMT.PATHID)) then
|
||||
EmtOutput( 'M05')
|
||||
-- altrimenti spegnimento dipende da parametro
|
||||
elseif ( EMT.TOOL ~= GetNextTool( EMT.MCHID, false) and IsLastPath( EMT.PATHID)) or GetSpecUnloading( EMT.PATHID) or GetFall( EMT.PATHID) then
|
||||
EmtOutput( 'M05')
|
||||
end
|
||||
local sOut = 'G157 EA1'
|
||||
EmtOutput( sOut)
|
||||
-- piano non più attivo
|
||||
EMT.PLANEACTIVE = false
|
||||
end
|
||||
local sOut = 'G157 EA1'
|
||||
EmtOutput( sOut)
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
|
||||
+20
-15
@@ -237,9 +237,9 @@ function OnSimulDispositionStart()
|
||||
end
|
||||
end
|
||||
-- determino la risoluzione dello Zmap
|
||||
local dTol = 4.00
|
||||
local dTol = 4.71
|
||||
if EmtGetVMillStep then
|
||||
dTol = EmtGetVMillStep( b3Raw:getDimX(), b3Raw:getDimY(), b3Raw:getDimZ(), 4.00)
|
||||
dTol = EmtGetVMillStep( b3Raw:getDimX(), b3Raw:getDimY(), b3Raw:getDimZ(), 4.71)
|
||||
else
|
||||
local dArea = b3Raw:getDimX() * b3Raw:getDimY() + b3Raw:getDimX() * b3Raw:getDimZ() + b3Raw:getDimY() * b3Raw:getDimZ()
|
||||
if dArea < 0.075e6 then
|
||||
@@ -513,10 +513,8 @@ function OnSimulToolSelect( dPosA)
|
||||
end
|
||||
-- se sega a catena, imposto subito angolo scelto per asse virtuale A
|
||||
if HeadIsChainSaw( EMT.HEAD) then
|
||||
-- se non Progress, apro le paratie
|
||||
if not Progress then
|
||||
ExecParkRoller( nil, nil, nil, nil, false, IsStartPhase( EMT.PHASE))
|
||||
end
|
||||
-- apro le paratie
|
||||
ExecParkRoller( nil, nil, nil, nil, false, IsStartPhase( EMT.PHASE))
|
||||
-- valore dell'asse virtuale
|
||||
dPosA = dPosA or GetNextChainSawingVirtualAxis( EMT.MCHID)
|
||||
-- imposto il valore di A
|
||||
@@ -721,7 +719,7 @@ function OnSimulToolDeselect( dPrevA)
|
||||
local MyParkB1 = ParkB1
|
||||
local MyParkC1 = ParkC1
|
||||
-- se ho due teste oppure è progress, significa che ho CU verticale
|
||||
if EgtGetHeadId('H21') or bProgress then
|
||||
if EgtGetHeadId('H21') or Progress then
|
||||
MyParkB1 = EgtIf( GetHeadTCSet( EMT.NEXTHEAD, EMT.NEXTTCPOS) == 'Head1_TC1', ParkB1, ParkFrnB1)
|
||||
MyParkC1 = EgtIf( GetHeadTCSet( EMT.NEXTHEAD, EMT.NEXTTCPOS) == 'Head1_TC1', ParkC1, ParkFrnC1)
|
||||
-- altrimenti su one CU speciale motosega-utensile lungo
|
||||
@@ -772,6 +770,7 @@ function OnSimulMachiningStart()
|
||||
EMT.VMRS = ( EMT.MCHTYPE ~= MCH_MY.DRILLING and not EMT.MCHUSERNOTES:find( 'VMRS=0;', 1, true))
|
||||
EMT.MCHSPLIT = ( EMT.MCHUSERNOTES:find( 'Split;', 1, true) ~= nil)
|
||||
EMT.MCHPRECUT = ( EMT.MCHUSERNOTES:find( 'Precut;', 1, true) ~= nil)
|
||||
EMT.MCHCUT = ( EMT.MCHUSERNOTES:find( 'Cut;', 1, true) ~= nil)
|
||||
-- recupero TASKID della feature lavorata
|
||||
local vId = EgtGetMachiningGeometry()
|
||||
if vId and #vId > 0 and #vId[1] > 0 then
|
||||
@@ -965,7 +964,12 @@ function OnSimulMoveStart()
|
||||
-- pinza 5
|
||||
if EMT.W2DELTA then
|
||||
EMT.A5n = 'W'
|
||||
EMT.A5m = 'T'
|
||||
local dPosQW = EgtGetAxisPos( 'QW') or 0
|
||||
if dPosQW < 1 then
|
||||
EMT.A5m = nil
|
||||
else
|
||||
EMT.A5m = 'T'
|
||||
end
|
||||
EMT.A5 = EMT.L1 + EMT.W2DELTA - EMT.A4
|
||||
VerifyWStroke( EMT.A5)
|
||||
end
|
||||
@@ -1343,7 +1347,7 @@ function OnSimulMoveEnd()
|
||||
-- eventuale rimozione sfridi
|
||||
ExecRemoveScraps()
|
||||
-- se Split o Presplit lascio agganciata solo la pinza Y2 alla fine dei movimenti
|
||||
local sNextTool = GetNextTool( EMT.MCHID)
|
||||
local sNextTool = GetNextTool( EMT.MCHID, true)
|
||||
-- vado in home se è ultimo movimento ed è ultima lavorazione, se sono con motosega e devo cambiare utensile, oppure se ho la lama
|
||||
local bToXhome = ( IsLastPath( EMT.PATHID) and not sNextTool) or ( EMT.HEAD == 'H23' and EMT.TOOL ~= sNextTool) or ( EMT.HEAD == 'H13' and EMT.TOOL ~= sNextTool) or
|
||||
( EMT.HEAD == 'H12' and EMT.TOOL ~= sNextTool ) or ( EMT.HEAD == 'H22' and EMT.TOOL ~= sNextTool) or EMT.MCHSPLIT
|
||||
@@ -1477,7 +1481,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')
|
||||
@@ -1680,9 +1684,7 @@ function ExecMoveZmax( bMchSplit, btoXHome)
|
||||
if abs( HomeC - CurrC) > 0.1 or abs( HomeB - CurrB) > 0.1 then
|
||||
local dZref = HomeZ + GetZExtra( EMT.HEAD, CurrB)
|
||||
SimulMoveAxes( 'Z1', EgtIf( dZref > CurrZ, dZref, CurrZ), MCH_SIM_STEP.RAPID, 'B1', EgtClamp( CurrB, -90, 90), MCH_SIM_STEP.COLLROT)
|
||||
if EMT.HEAD == 'H12' and ( abs( HomeC - CurrC) > 30.1 or abs( HomeB - CurrB) > 30.1) or not( bProgress) then
|
||||
SimulMoveAxes( 'Z1', MaxZ1, MCH_SIM_STEP.RAPID, 'B1', 0, MCH_SIM_STEP.COLLROT)
|
||||
end
|
||||
SimulMoveAxes( 'Z1', MaxZ1, MCH_SIM_STEP.RAPID, 'B1', 0, MCH_SIM_STEP.COLLROT)
|
||||
SimulMoveAxis( 'C1', HomeC, MCH_SIM_STEP.COLLROT)
|
||||
SimulMoveAxis( 'B1', HomeB, MCH_SIM_STEP.COLLROT)
|
||||
end
|
||||
@@ -2206,6 +2208,9 @@ end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function GetV1ToClose()
|
||||
if EMT.MCHPRECUT or EMT.MCHCUT then
|
||||
return false
|
||||
end
|
||||
--EgtOutLog( string.format( 'L1m=%.3f L1M=%.3f V2NP=%.3f LB=%.3f', EMT.MAXMIN[1], EMT.MAXMAX[1], EMT.V2NEXTPOS, EMT.LB))
|
||||
--EgtOutLog( string.format( 'LB=%.3f LT=%.3f', EMT.LB, EMT.LT or 0))
|
||||
return ( EMT.MAXMAX[1] <= EMT.V1NEXTPOS + RollCageMin and EMT.MAXMIN[1] + EMT.LB >= EMT.V1NEXTPOS + RollCageMax)
|
||||
@@ -2821,7 +2826,7 @@ function GetNextChainSawingVirtualAxis( MchId)
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function GetNextTool( nMchId)
|
||||
function GetNextTool( nMchId, bResetOnStart)
|
||||
-- inizializzo prossimo utensile
|
||||
local sNextTool
|
||||
-- recupero lavorazione successiva
|
||||
@@ -2829,7 +2834,7 @@ function GetNextTool( nMchId)
|
||||
while nNextMchId do
|
||||
-- se la prossima lavorazione è lo start di un altro pezzo, faccio finta che cambia utensile in modo che vada in parcheggio con utensili speciali
|
||||
if EgtGetOperationType( nNextMchId) == MCH_OY.DISP then
|
||||
if IsStartOrRestPhase( EMT.PHASE+1) then
|
||||
if IsStartOrRestPhase( EMT.PHASE+1) and bResetOnStart then
|
||||
return nil
|
||||
end
|
||||
else
|
||||
|
||||
+2
-2
@@ -32,8 +32,8 @@
|
||||
require( 'EmtGenerator')
|
||||
EgtEnableDebug( false)
|
||||
|
||||
PP_VER = '2.7g4_DEV1'
|
||||
PP_NVER = '2.7.7.4'
|
||||
PP_VER = '2.7h2_DEV1'
|
||||
PP_NVER = '2.7.8.2'
|
||||
MIN_MACH_VER = '2.5k1'
|
||||
MACH_NAME = string.match( EgtGetCurrMachineDir(), "[^\\]+$") -- si ricava il nome della macchina dal direttorio
|
||||
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
==== Common_ONE-PF Update Log ====
|
||||
|
||||
Versione 2.7h2 (28/08/2025)
|
||||
- (GEN) Migliorata gestione spegnimento utensile e disattivazione piano
|
||||
- (SIM-GEN) Corretto nome variabile e altre piccole modifiche per Progress
|
||||
|
||||
Versione 2.7h1 (20/08/2025)
|
||||
- (SIM-GEN) Non si chiudono i rulli se tagli o pretagli di testa e coda
|
||||
- (SIM) Corretto movimento pinza 5 in caso di riposizionamento pinza 1
|
||||
- (GEN) Corretta quota assoluta posizione testa trave in caso di pinza 5 e testa rimasta bassa
|
||||
- (GEN) Se ultima lavorazione pezzo precedente ha stesso utensile della prima lavorazione pezzo successivo, la speed resta accesa
|
||||
|
||||
Versione 2.7g4 (23/07/2025)
|
||||
- (SIM-GEN) Aggiunto parametro configurabile da TS3 per massima sporgenza trave in coda per pinza 5. Ticket#2538
|
||||
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
|
||||
local InfoCommon_STD_PP = {
|
||||
NAME = 'Common_ONE-PF', -- nome script PP standard
|
||||
VERSION = '2.7g4', -- versione script
|
||||
VERSION = '2.7h2', -- versione script
|
||||
MIN_MACH_VER_PP_COMMON = '2.5k1' -- versione minima kernel
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user