Compare commits
50 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5fa764cb96 | |||
| f78a042dbe | |||
| 1c80767eee | |||
| 369d1a7456 | |||
| d23a9c6fa9 | |||
| fbfe8187b9 | |||
| 3ef4c18fe6 | |||
| b50c4ef806 | |||
| 7a7981fddb | |||
| 74a0bc4a43 | |||
| 4cc2e5a2d7 | |||
| 24857bc252 | |||
| 5e90232086 | |||
| 6e1faf69bc | |||
| 8fdda065d4 | |||
| 5ae185cd0e | |||
| 446b56d975 | |||
| 48626b7f90 | |||
| 21104984ad | |||
| c33c3196f2 | |||
| 9b6c24017d | |||
| 5b7bab2873 | |||
| 1886d6620e | |||
| 235a8dacb7 | |||
| aad2a95dff | |||
| 26126ac892 | |||
| 5491e5cd81 | |||
| 16e04c8502 | |||
| 3b1133f88c | |||
| 5d72e04f7e | |||
| 72d61b4561 | |||
| 7a16f26a63 | |||
| c425cf1be3 | |||
| 79ecca7e02 | |||
| b9cc8a3aa9 | |||
| 0c8769dd81 | |||
| 7c9ec51f55 | |||
| d0817659e5 | |||
| f283fe8fa9 | |||
| 87a7a89dbd | |||
| 1a1f775c88 | |||
| fd7cc25a4f | |||
| bdbec7cf37 | |||
| 6f115a81a0 | |||
| 8e6daeeac7 | |||
| f029673970 | |||
| 01e5018c3d | |||
| c91ded71cd | |||
| 1e00fa27a0 | |||
| d57b86b046 |
@@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
-- carico librerie
|
-- carico librerie
|
||||||
local INFO_STD_PP = require( 'Version')
|
local INFO_STD_PP = require( 'Version')
|
||||||
|
local BD = require( 'BeamData')
|
||||||
|
|
||||||
-- Variabili di modulo
|
-- Variabili di modulo
|
||||||
local CSP_INFO = INFO_STD_PP.NAME..' ver.'..INFO_STD_PP.VERSION..' by EgalWare s.r.l.'
|
local CSP_INFO = INFO_STD_PP.NAME..' ver.'..INFO_STD_PP.VERSION..' by EgalWare s.r.l.'
|
||||||
@@ -182,7 +183,7 @@ function OnDispositionEnd()
|
|||||||
-- calcolo dati pinze
|
-- calcolo dati pinze
|
||||||
local MinAccPinze = 0.3
|
local MinAccPinze = 0.3
|
||||||
local MaxAccPinze = 4
|
local MaxAccPinze = 4
|
||||||
local KgMtCubo= 550 -- densità legno in Kg / metro cubo
|
local KgMtCubo= WoodDensity or 550 -- densità legno in Kg / metro cubo
|
||||||
local Massa = ( HTrave * STrave * LBarra * KgMtCubo ) / 1000000000
|
local Massa = ( HTrave * STrave * LBarra * KgMtCubo ) / 1000000000
|
||||||
local FMaxPinze = EMT.FMAXPINZE
|
local FMaxPinze = EMT.FMAXPINZE
|
||||||
local ForzaAtrito = 700 / 2 -- Serve per regolare P32 (700 valore reale pistone)
|
local ForzaAtrito = 700 / 2 -- Serve per regolare P32 (700 valore reale pistone)
|
||||||
@@ -602,6 +603,8 @@ end
|
|||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function OnRapid()
|
function OnRapid()
|
||||||
|
-- recupero prossimo utensile
|
||||||
|
EMT.NEXTTOOL, EMT.NEXTHEAD, EMT.NEXTTCPOS = FindNextTool()
|
||||||
MyBackupAxes()
|
MyBackupAxes()
|
||||||
-- se primo movimento della lavorazione, gestione speciale
|
-- se primo movimento della lavorazione, gestione speciale
|
||||||
if EMT.MCHFIRST and not EMT.OPEISDISP then
|
if EMT.MCHFIRST and not EMT.OPEISDISP then
|
||||||
@@ -649,7 +652,7 @@ function OnRapid()
|
|||||||
local sES = ' ES'..EgtNumToString( EMT.S, 0)
|
local sES = ' ES'..EgtNumToString( EMT.S, 0)
|
||||||
|
|
||||||
-- se carico motosega, ruoto in zona sicura prima di approcciare la lavorazione
|
-- se carico motosega, ruoto in zona sicura prima di approcciare la lavorazione
|
||||||
if EMT.HEAD == 'H3' and EMT.ST > BeamHeightForFixRot and EMT.FLAG2 == 1 then
|
if ( EMT.HEAD == 'H3' or ( bZmax and EMT.TTOTLEN > 200)) and EMT.ST > BeamHeightForFixRot and EMT.FLAG2 == 1 then
|
||||||
local sEEPreMove = ' EE' .. EgtIf( bZmax, '3', '4')
|
local sEEPreMove = ' EE' .. EgtIf( bZmax, '3', '4')
|
||||||
local sOutPreMove = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. ' Z' .. EmtLenToString( MyZHome, 3) ..
|
local sOutPreMove = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. ' Z' .. EmtLenToString( MyZHome, 3) ..
|
||||||
EmtGetAxis( 'R2') .. EmtGetAxis( 'R1') .. sEE .. sEL .. sER .. sET .. sES
|
EmtGetAxis( 'R2') .. EmtGetAxis( 'R1') .. sEE .. sEL .. sER .. sET .. sES
|
||||||
@@ -833,12 +836,47 @@ function OnRapid()
|
|||||||
EmtAdjustRotaryAxes()
|
EmtAdjustRotaryAxes()
|
||||||
EmitZmax()
|
EmitZmax()
|
||||||
EMT.ZMAX = true
|
EMT.ZMAX = true
|
||||||
|
-- se pezzi alti e devo cambiare utensile su testa con CU, porto la testa vicino al cambio utensile
|
||||||
|
if EMT.ST > BeamHeightForFixRot and EMT.HEAD == 'H1' and EMT.TOOL ~= EMT.NEXTTOOL and EMT.NEXTHEAD ~= 'H2' then
|
||||||
|
local dBAxis = 90
|
||||||
|
local dCAxis = EgtIf( BD.RIGHT_LOAD, 90, -90)
|
||||||
|
local sEE = ' EE3'
|
||||||
|
local sEL = ' EL' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TLEN, ( EMT.TDIST or ChSawLen)), 3)
|
||||||
|
local sER = ' ER' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TDIAM / 2, EMT.TLEN), 3)
|
||||||
|
local sET = GetET( EMT.HEAD, EMT.TCPOS, EMT.R3)
|
||||||
|
local sES = ' ES'..EgtNumToString( EMT.S, 0)
|
||||||
|
local sOut = 'G101' .. EmtGetAxis( 'L2') .. EmtGetAxis( 'L3') ..' B=' .. EgtNumToString( dBAxis, 3) ..
|
||||||
|
' C=' .. EgtNumToString( dCAxis, 3) .. sEE .. sEL .. sER .. sET .. sES
|
||||||
|
EmtOutput( sOut)
|
||||||
|
EmtOutput( 'M101 P1=2')
|
||||||
|
EmtOutput( 'M101 P1=3')
|
||||||
|
sOut = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. EmtGetAxis( 'L3') ..' B=' .. EgtNumToString( dBAxis, 3) ..
|
||||||
|
' C=' .. EgtNumToString( dCAxis, 3) .. sEE .. sEL .. sER .. sET .. sES
|
||||||
|
EmtOutput( sOut)
|
||||||
|
EmtOutput( 'M101 P1=2')
|
||||||
|
EmtOutput( 'M101 P1=3')
|
||||||
|
end
|
||||||
-- se altrimenti movimento in Home
|
-- se altrimenti movimento in Home
|
||||||
elseif EMT.FLAG == 4 then
|
elseif EMT.FLAG == 4 then
|
||||||
-- non previsto
|
-- non previsto
|
||||||
-- se altrimenti rotazione a Z max
|
-- se altrimenti rotazione a Z max per lavorazione successiva
|
||||||
elseif EMT.FLAG == 5 then
|
elseif EMT.FLAG == 5 then
|
||||||
-- viene gestito all'inizio della lavorazione successiva
|
EMT.REFLOC = nil
|
||||||
|
EMT.IPLGL = false
|
||||||
|
MyAdjustLinearAxes()
|
||||||
|
EmtAdjustRotaryAxes()
|
||||||
|
EmtResetPrev()
|
||||||
|
-- ricavo i dati per la lavorazione
|
||||||
|
local sEE = ' EE3'
|
||||||
|
local sEL = ' EL' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TLEN, ( EMT.TDIST or ChSawLen)), 3)
|
||||||
|
local sER = ' ER' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TDIAM / 2, EMT.TLEN), 3)
|
||||||
|
local sET = GetET( EMT.HEAD, EMT.TCPOS, EMT.R3)
|
||||||
|
local sES = ' ES'..EgtNumToString( EMT.S, 0)
|
||||||
|
local sOut = 'G101' .. EmtGetAxis( 'L2') .. EmtGetAxis( 'L3') ..
|
||||||
|
EmtGetAxis( 'R2') .. EmtGetAxis( 'R1') .. sEE .. sEL .. sER .. sET .. sES
|
||||||
|
EmtOutput( sOut)
|
||||||
|
EmtOutput( 'G101 ET1001')
|
||||||
|
EmtOutput( 'G101 ET2001')
|
||||||
-- altrimenti errore
|
-- altrimenti errore
|
||||||
else
|
else
|
||||||
EmtSetLastError( 1212, "Unknown Rapid flag")
|
EmtSetLastError( 1212, "Unknown Rapid flag")
|
||||||
@@ -930,13 +968,46 @@ function OnArc()
|
|||||||
local sFeed = EmtGetFeed()
|
local sFeed = EmtGetFeed()
|
||||||
-- tipo arco
|
-- tipo arco
|
||||||
local sArc = 'G' .. EgtNumToString(EMT.MOVE,0)
|
local sArc = 'G' .. EgtNumToString(EMT.MOVE,0)
|
||||||
-- emetto arco
|
-- se arco molto grande, approssimo con una retta
|
||||||
EmtOutput( sArc..sAxes..sRad..sFeed)
|
if EMT.RR > 99999 then
|
||||||
|
EmtOutput( "G1"..sAxes..sFeed)
|
||||||
|
else
|
||||||
|
EmtOutput( sArc..sAxes..sRad..sFeed)
|
||||||
|
end
|
||||||
|
|
||||||
-- aggiorno valori come precedenti
|
-- aggiorno valori come precedenti
|
||||||
EmtUpdatePrev()
|
EmtUpdatePrev()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
function FindNextTool()
|
||||||
|
-- salvo stato iniziale
|
||||||
|
local CurrMachId = EgtGetCurrMachining()
|
||||||
|
local CurrTool = EgtTdbGetCurrToolParam( MCH_TP.NAME)
|
||||||
|
-- cerco lavorazione con utensile su gruppo testa indicato
|
||||||
|
local sTool, sHead, sTcPos
|
||||||
|
local OpId = EgtGetNextActiveOperation( CurrMachId or EMT.MCHID)
|
||||||
|
while OpId do
|
||||||
|
local nType = EgtGetOperationType( OpId)
|
||||||
|
if nType ~= MCH_OY.NONE and nType ~= MCH_OY.DISP then
|
||||||
|
if EgtSetCurrMachining( OpId) then
|
||||||
|
sTool = EgtGetMachiningParam( MCH_MP.TOOL)
|
||||||
|
if EgtTdbSetCurrTool( sTool) then
|
||||||
|
sHead = EgtTdbGetCurrToolParam( MCH_TP.HEAD)
|
||||||
|
sTcPos = EgtTdbGetCurrToolParam( MCH_TP.TCPOS)
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
OpId = EgtGetNextActiveOperation( OpId)
|
||||||
|
end
|
||||||
|
-- ripristino stato iniziale
|
||||||
|
EgtSetCurrMachining( CurrMachId or GDB_ID.NULL)
|
||||||
|
EgtTdbSetCurrTool( CurrTool or '')
|
||||||
|
-- restituisco risultato
|
||||||
|
return sTool, sHead, sTcPos
|
||||||
|
end
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function CalcCharStatus( sCmd, bSkipPress)
|
function CalcCharStatus( sCmd, bSkipPress)
|
||||||
-- aperto
|
-- aperto
|
||||||
@@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
-- carico librerie
|
-- carico librerie
|
||||||
local INFO_STD_PP = require( 'Version')
|
local INFO_STD_PP = require( 'Version')
|
||||||
|
local BD = require( 'BeamData')
|
||||||
|
|
||||||
-- Variabili di modulo
|
-- Variabili di modulo
|
||||||
local CSP_INFO = INFO_STD_PP.NAME..' ver.'..INFO_STD_PP.VERSION..' by EgalWare s.r.l.'
|
local CSP_INFO = INFO_STD_PP.NAME..' ver.'..INFO_STD_PP.VERSION..' by EgalWare s.r.l.'
|
||||||
@@ -642,6 +643,8 @@ end
|
|||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function OnRapid()
|
function OnRapid()
|
||||||
|
-- recupero prossimo utensile
|
||||||
|
EMT.NEXTTOOL, EMT.NEXTHEAD, EMT.NEXTTCPOS = FindNextTool()
|
||||||
MyBackupAxes()
|
MyBackupAxes()
|
||||||
-- se primo movimento della lavorazione, gestione speciale
|
-- se primo movimento della lavorazione, gestione speciale
|
||||||
if EMT.MCHFIRST and not EMT.OPEISDISP then
|
if EMT.MCHFIRST and not EMT.OPEISDISP then
|
||||||
@@ -713,7 +716,7 @@ function OnRapid()
|
|||||||
local sES = ' ES'..EgtNumToString( EMT.S, 0)
|
local sES = ' ES'..EgtNumToString( EMT.S, 0)
|
||||||
|
|
||||||
-- se carico motosega, ruoto in zona sicura prima di approcciare la lavorazione
|
-- se carico motosega, ruoto in zona sicura prima di approcciare la lavorazione
|
||||||
if EMT.HEAD == 'H3' and EMT.ST > BeamHeightForFixRot and EMT.FLAG2 == 1 then
|
if ( EMT.HEAD == 'H3' or ( bZmax and EMT.TTOTLEN > 200)) and EMT.ST > BeamHeightForFixRot and EMT.FLAG2 == 1 then
|
||||||
local sEEPreMove = ' EE' .. EgtIf( bZmax, '3', '4')
|
local sEEPreMove = ' EE' .. EgtIf( bZmax, '3', '4')
|
||||||
local sOutPreMove = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. ' Z' .. EmtLenToString( MyZHome, 3) ..
|
local sOutPreMove = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. ' Z' .. EmtLenToString( MyZHome, 3) ..
|
||||||
EmtGetAxis( 'R2') .. EmtGetAxis( 'R1') .. sEE .. sEL .. sER .. sET .. sES
|
EmtGetAxis( 'R2') .. EmtGetAxis( 'R1') .. sEE .. sEL .. sER .. sET .. sES
|
||||||
@@ -843,7 +846,7 @@ function OnRapid()
|
|||||||
sOut = 'G112 EA'..sA..' EB'..sB..EmtGetAxis('L1')..' EY'..sY..' EV'..sV..' EF'..GetFmaxClamp()
|
sOut = 'G112 EA'..sA..' EB'..sB..EmtGetAxis('L1')..' EY'..sY..' EV'..sV..' EF'..GetFmaxClamp()
|
||||||
EmtOutput( sOut)
|
EmtOutput( sOut)
|
||||||
-- se taglio di coda senza residuo da scaricare, emetto M175 per accelerare il carico della barra successiva
|
-- se taglio di coda senza residuo da scaricare, emetto M175 per accelerare il carico della barra successiva
|
||||||
if EMT.MCHUSERNOTES and EMT.MCHUSERNOTES:find( 'Cut') then
|
if EMT.MCHUSERNOTES and EMT.MCHUSERNOTES:find( 'Cut') and ( IsEndPhase( EMT.PHASE+1) or IsEnd2Phase( EMT.PHASE+1)) then
|
||||||
EmtOutput( '(M175)')
|
EmtOutput( '(M175)')
|
||||||
end
|
end
|
||||||
if not bHeadFirst then
|
if not bHeadFirst then
|
||||||
@@ -907,12 +910,47 @@ function OnRapid()
|
|||||||
EmtAdjustRotaryAxes()
|
EmtAdjustRotaryAxes()
|
||||||
EmitZmax( false)
|
EmitZmax( false)
|
||||||
EMT.ZMAX = true
|
EMT.ZMAX = true
|
||||||
|
-- se pezzi alti e devo cambiare utensile su testa con CU, porto la testa vicino al cambio utensile
|
||||||
|
if EMT.ST > BeamHeightForFixRot and EMT.HEAD == 'H1' and EMT.TOOL ~= EMT.NEXTTOOL and EMT.NEXTHEAD ~= 'H2' then
|
||||||
|
local dBAxis = 90
|
||||||
|
local dCAxis = EgtIf( BD.RIGHT_LOAD, 90, -90)
|
||||||
|
local sEE = ' EE3'
|
||||||
|
local sEL = ' EL' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TLEN, ( EMT.TDIST or ChSawLen)), 3)
|
||||||
|
local sER = ' ER' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TDIAM / 2, EMT.TLEN), 3)
|
||||||
|
local sET = GetET( EMT.HEAD, EMT.TCPOS, EMT.R3)
|
||||||
|
local sES = ' ES'..EgtNumToString( EMT.S, 0)
|
||||||
|
local sOut = 'G101' .. EmtGetAxis( 'L2') .. EmtGetAxis( 'L3') ..' B=' .. EgtNumToString( dBAxis, 3) ..
|
||||||
|
' C=' .. EgtNumToString( dCAxis, 3) .. sEE .. sEL .. sER .. sET .. sES
|
||||||
|
EmtOutput( sOut)
|
||||||
|
EmtOutput( 'M101 P1=2')
|
||||||
|
EmtOutput( 'M101 P1=3')
|
||||||
|
sOut = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. EmtGetAxis( 'L3') ..' B=' .. EgtNumToString( dBAxis, 3) ..
|
||||||
|
' C=' .. EgtNumToString( dCAxis, 3) .. sEE .. sEL .. sER .. sET .. sES
|
||||||
|
EmtOutput( sOut)
|
||||||
|
EmtOutput( 'M101 P1=2')
|
||||||
|
EmtOutput( 'M101 P1=3')
|
||||||
|
end
|
||||||
-- se altrimenti movimento in Home
|
-- se altrimenti movimento in Home
|
||||||
elseif EMT.FLAG == 4 then
|
elseif EMT.FLAG == 4 then
|
||||||
-- non previsto
|
-- non previsto
|
||||||
-- se altrimenti rotazione a Z max
|
-- se altrimenti rotazione a Z max per lavorazione successiva
|
||||||
elseif EMT.FLAG == 5 then
|
elseif EMT.FLAG == 5 then
|
||||||
-- viene gestito all'inizio della lavorazione successiva
|
EMT.REFLOC = nil
|
||||||
|
EMT.IPLGL = false
|
||||||
|
MyAdjustLinearAxes()
|
||||||
|
EmtAdjustRotaryAxes()
|
||||||
|
EmtResetPrev()
|
||||||
|
-- ricavo i dati per la lavorazione
|
||||||
|
local sEE = ' EE3'
|
||||||
|
local sEL = ' EL' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TLEN, ( EMT.TDIST or ChSawLen)), 3)
|
||||||
|
local sER = ' ER' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TDIAM / 2, EMT.TLEN), 3)
|
||||||
|
local sET = GetET( EMT.HEAD, EMT.TCPOS, EMT.R3)
|
||||||
|
local sES = ' ES'..EgtNumToString( EMT.S, 0)
|
||||||
|
local sOut = 'G101' .. EmtGetAxis( 'L2') .. EmtGetAxis( 'L3') ..
|
||||||
|
EmtGetAxis( 'R2') .. EmtGetAxis( 'R1') .. sEE .. sEL .. sER .. sET .. sES
|
||||||
|
EmtOutput( sOut)
|
||||||
|
EmtOutput( 'G101 ET1001')
|
||||||
|
EmtOutput( 'G101 ET2001')
|
||||||
-- altrimenti errore
|
-- altrimenti errore
|
||||||
else
|
else
|
||||||
EmtSetLastError( 1212, "Unknown Rapid flag")
|
EmtSetLastError( 1212, "Unknown Rapid flag")
|
||||||
@@ -1009,18 +1047,51 @@ function OnArc()
|
|||||||
local sFeed = EmtGetFeed()
|
local sFeed = EmtGetFeed()
|
||||||
-- tipo arco
|
-- tipo arco
|
||||||
local sArc = 'G' .. EgtNumToString(EMT.MOVE,0)
|
local sArc = 'G' .. EgtNumToString(EMT.MOVE,0)
|
||||||
-- emetto arco
|
-- se arco molto grande, approssimo con una retta
|
||||||
EmtOutput( sArc..sAxes..sRad..sFeed)
|
if EMT.RR > 99999 then
|
||||||
|
EmtOutput( "G1"..sAxes..sFeed)
|
||||||
|
else
|
||||||
|
EmtOutput( sArc..sAxes..sRad..sFeed)
|
||||||
|
end
|
||||||
|
|
||||||
-- aggiorno valori come precedenti
|
-- aggiorno valori come precedenti
|
||||||
EmtUpdatePrev()
|
EmtUpdatePrev()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
function FindNextTool()
|
||||||
|
-- salvo stato iniziale
|
||||||
|
local CurrMachId = EgtGetCurrMachining()
|
||||||
|
local CurrTool = EgtTdbGetCurrToolParam( MCH_TP.NAME)
|
||||||
|
-- cerco lavorazione con utensile su gruppo testa indicato
|
||||||
|
local sTool, sHead, sTcPos
|
||||||
|
local OpId = EgtGetNextActiveOperation( CurrMachId or EMT.MCHID)
|
||||||
|
while OpId do
|
||||||
|
local nType = EgtGetOperationType( OpId)
|
||||||
|
if nType ~= MCH_OY.NONE and nType ~= MCH_OY.DISP then
|
||||||
|
if EgtSetCurrMachining( OpId) then
|
||||||
|
sTool = EgtGetMachiningParam( MCH_MP.TOOL)
|
||||||
|
if EgtTdbSetCurrTool( sTool) then
|
||||||
|
sHead = EgtTdbGetCurrToolParam( MCH_TP.HEAD)
|
||||||
|
sTcPos = EgtTdbGetCurrToolParam( MCH_TP.TCPOS)
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
OpId = EgtGetNextActiveOperation( OpId)
|
||||||
|
end
|
||||||
|
-- ripristino stato iniziale
|
||||||
|
EgtSetCurrMachining( CurrMachId or GDB_ID.NULL)
|
||||||
|
EgtTdbSetCurrTool( CurrTool or '')
|
||||||
|
-- restituisco risultato
|
||||||
|
return sTool, sHead, sTcPos
|
||||||
|
end
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function CalcDinamicaPinze( dH, dS, dL)
|
function CalcDinamicaPinze( dH, dS, dL)
|
||||||
local MinTempoAcc = 0.3 -- [s]
|
local MinTempoAcc = 0.3 -- [s]
|
||||||
local MaxTempoAcc = 4.0 -- [s]
|
local MaxTempoAcc = 4.0 -- [s]
|
||||||
local KgMtCubo= 550 -- densità legno [Kg / metro cubo]
|
local KgMtCubo= WoodDensity or 550 -- densità legno [Kg / metro cubo]
|
||||||
local Massa = ( dH * dS * dL * KgMtCubo ) / 1e9 -- massa [Kg]
|
local Massa = ( dH * dS * dL * KgMtCubo ) / 1e9 -- massa [Kg]
|
||||||
local FMaxPinze = EMT.FMAXPINZE -- Feed massima pinze [mm/min]
|
local FMaxPinze = EMT.FMAXPINZE -- Feed massima pinze [mm/min]
|
||||||
local ForzaAttrito = 350 * 9.8 * 0.2 -- Forza chiusura pinze [Kgf] * g * Coeff_Attrito -> [N]
|
local ForzaAttrito = 350 * 9.8 * 0.2 -- Forza chiusura pinze [Kgf] * g * Coeff_Attrito -> [N]
|
||||||
@@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
-- carico librerie
|
-- carico librerie
|
||||||
local INFO_STD_PP = require( 'Version')
|
local INFO_STD_PP = require( 'Version')
|
||||||
|
local BD = require( 'BeamData')
|
||||||
|
|
||||||
-- Variabili di modulo
|
-- Variabili di modulo
|
||||||
local CSP_INFO = INFO_STD_PP.NAME..' ver.'..INFO_STD_PP.VERSION..' by EgalWare s.r.l.'
|
local CSP_INFO = INFO_STD_PP.NAME..' ver.'..INFO_STD_PP.VERSION..' by EgalWare s.r.l.'
|
||||||
@@ -625,6 +626,8 @@ end
|
|||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function OnRapid()
|
function OnRapid()
|
||||||
|
-- recupero prossimo utensile
|
||||||
|
EMT.NEXTTOOL, EMT.NEXTHEAD, EMT.NEXTTCPOS = FindNextTool()
|
||||||
MyBackupAxes()
|
MyBackupAxes()
|
||||||
-- se primo movimento della lavorazione, gestione speciale
|
-- se primo movimento della lavorazione, gestione speciale
|
||||||
if EMT.MCHFIRST and not EMT.OPEISDISP then
|
if EMT.MCHFIRST and not EMT.OPEISDISP then
|
||||||
@@ -663,7 +666,7 @@ function OnRapid()
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- se carico motosega, ruoto in zona sicura prima di approcciare la lavorazione
|
-- se carico motosega, ruoto in zona sicura prima di approcciare la lavorazione
|
||||||
if EMT.HEAD == 'H3' and EMT.ST > BeamHeightForFixRot and EMT.FLAG2 == 1 then
|
if ( EMT.HEAD == 'H3' or ( bZmax and EMT.TTOTLEN > 200)) and EMT.ST > BeamHeightForFixRot and EMT.FLAG2 == 1 then
|
||||||
local sOutPreMove = 'M101 P1=1' .. ' P2=' .. EmtLenToString( -SafeXRotAxes, 3) .. ' P3=' .. EmtLenToString( MyZHome, 3) ..
|
local sOutPreMove = 'M101 P1=1' .. ' P2=' .. EmtLenToString( -SafeXRotAxes, 3) .. ' P3=' .. EmtLenToString( MyZHome, 3) ..
|
||||||
' P4=' .. EgtNumToString( EMT.R2, 3) .. ' P5=' .. EgtNumToString( EMT.R1, 3) ..
|
' P4=' .. EgtNumToString( EMT.R2, 3) .. ' P5=' .. EgtNumToString( EMT.R1, 3) ..
|
||||||
' P6=' .. AdjustTcPos( false) .. ' P7=' .. EgtNumToString( EMT.S, 0) ..
|
' P6=' .. AdjustTcPos( false) .. ' P7=' .. EgtNumToString( EMT.S, 0) ..
|
||||||
@@ -774,7 +777,7 @@ function OnRapid()
|
|||||||
sB = '2'
|
sB = '2'
|
||||||
end
|
end
|
||||||
-- se taglio di coda senza residuo da scaricare, emetto M175 per accelerare il carico della barra successiva
|
-- se taglio di coda senza residuo da scaricare, emetto M175 per accelerare il carico della barra successiva
|
||||||
if EMT.MCHUSERNOTES and EMT.MCHUSERNOTES:find( 'Cut') then
|
if EMT.MCHUSERNOTES and EMT.MCHUSERNOTES:find( 'Cut') and ( IsEndPhase( EMT.PHASE+1) or IsEnd2Phase( EMT.PHASE+1)) then
|
||||||
EmtOutput( 'M175')
|
EmtOutput( 'M175')
|
||||||
end
|
end
|
||||||
if bHeadFirst then
|
if bHeadFirst then
|
||||||
@@ -849,12 +852,42 @@ function OnRapid()
|
|||||||
EmtAdjustRotaryAxes()
|
EmtAdjustRotaryAxes()
|
||||||
EmitZmax( true)
|
EmitZmax( true)
|
||||||
EMT.ZMAX = true
|
EMT.ZMAX = true
|
||||||
|
-- se pezzi alti e devo cambiare utensile su testa con CU, porto la testa vicino al cambio utensile
|
||||||
|
if EMT.ST > BeamHeightForFixRot and EMT.HEAD == 'H1' and EMT.TOOL ~= EMT.NEXTTOOL and EMT.NEXTHEAD ~= 'H2' then
|
||||||
|
local dBAxis = 90
|
||||||
|
local dCAxis = EgtIf( BD.RIGHT_LOAD, 90, -90)
|
||||||
|
local sOut = 'M101 P1=1' .. ' P2=' .. EmtLenToString( EMT.L2, 3) .. ' P3=' .. EmtLenToString( EMT.L3, 3) ..
|
||||||
|
' P4=' .. EgtNumToString( dBAxis, 3) .. ' P5=' .. EgtNumToString( dCAxis, 3) ..
|
||||||
|
' P6=' .. AdjustTcPos( false) .. ' P7=' .. EgtNumToString( EMT.S, 0) ..
|
||||||
|
' P8=0' .. ' P9=0' .. ' P10=3'
|
||||||
|
EmtOutput( sOut)
|
||||||
|
EmtOutput( 'M101 P1=2')
|
||||||
|
EmtOutput( 'M101 P1=3')
|
||||||
|
sOut = 'M101 P1=1' .. ' P2=' .. EmtLenToString( -SafeXRotAxes, 3) .. ' P3=' .. EmtLenToString( EMT.L3, 3) ..
|
||||||
|
' P4=' .. EgtNumToString( dBAxis, 3) .. ' P5=' .. EgtNumToString( dCAxis, 3) ..
|
||||||
|
' P6=' .. AdjustTcPos( false) .. ' P7=' .. EgtNumToString( EMT.S, 0) ..
|
||||||
|
' P8=0' .. ' P9=0' .. ' P10=3'
|
||||||
|
EmtOutput( sOut)
|
||||||
|
EmtOutput( 'M101 P1=2')
|
||||||
|
EmtOutput( 'M101 P1=3')
|
||||||
|
end
|
||||||
-- se altrimenti movimento in Home
|
-- se altrimenti movimento in Home
|
||||||
elseif EMT.FLAG == 4 then
|
elseif EMT.FLAG == 4 then
|
||||||
-- non previsto
|
-- non previsto
|
||||||
-- se altrimenti rotazione a Z max
|
-- se altrimenti rotazione a Z max per lavorazione successiva
|
||||||
elseif EMT.FLAG == 5 then
|
elseif EMT.FLAG == 5 then
|
||||||
-- viene gestito all'inizio della lavorazione successiva
|
EMT.REFLOC = nil
|
||||||
|
EMT.IPLGL = false
|
||||||
|
MyAdjustLinearAxes()
|
||||||
|
EmtAdjustRotaryAxes()
|
||||||
|
EmtResetPrev()
|
||||||
|
local sOut = 'M101 P1=1' .. ' P2=' .. EmtLenToString( EMT.L2, 3) .. ' P3=' .. EmtLenToString( EMT.L3, 3) ..
|
||||||
|
' P4=' .. EgtNumToString( EMT.R2, 3) .. ' P5=' .. EgtNumToString( EMT.R1, 3) ..
|
||||||
|
' P6=' .. AdjustTcPos( false) .. ' P7=' .. EgtNumToString( EMT.S, 0) ..
|
||||||
|
' P8=0' .. ' P9=0' .. ' P10=3'
|
||||||
|
EmtOutput( sOut)
|
||||||
|
EmtOutput( 'M101 P1=2')
|
||||||
|
EmtOutput( 'M101 P1=3')
|
||||||
-- altrimenti errore
|
-- altrimenti errore
|
||||||
else
|
else
|
||||||
error( "Unknown Rapid flag")
|
error( "Unknown Rapid flag")
|
||||||
@@ -981,11 +1014,40 @@ function OnArc()
|
|||||||
EmtUpdatePrev()
|
EmtUpdatePrev()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
function FindNextTool()
|
||||||
|
-- salvo stato iniziale
|
||||||
|
local CurrMachId = EgtGetCurrMachining()
|
||||||
|
local CurrTool = EgtTdbGetCurrToolParam( MCH_TP.NAME)
|
||||||
|
-- cerco lavorazione con utensile su gruppo testa indicato
|
||||||
|
local sTool, sHead, sTcPos
|
||||||
|
local OpId = EgtGetNextActiveOperation( CurrMachId or EMT.MCHID)
|
||||||
|
while OpId do
|
||||||
|
local nType = EgtGetOperationType( OpId)
|
||||||
|
if nType ~= MCH_OY.NONE and nType ~= MCH_OY.DISP then
|
||||||
|
if EgtSetCurrMachining( OpId) then
|
||||||
|
sTool = EgtGetMachiningParam( MCH_MP.TOOL)
|
||||||
|
if EgtTdbSetCurrTool( sTool) then
|
||||||
|
sHead = EgtTdbGetCurrToolParam( MCH_TP.HEAD)
|
||||||
|
sTcPos = EgtTdbGetCurrToolParam( MCH_TP.TCPOS)
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
OpId = EgtGetNextActiveOperation( OpId)
|
||||||
|
end
|
||||||
|
-- ripristino stato iniziale
|
||||||
|
EgtSetCurrMachining( CurrMachId or GDB_ID.NULL)
|
||||||
|
EgtTdbSetCurrTool( CurrTool or '')
|
||||||
|
-- restituisco risultato
|
||||||
|
return sTool, sHead, sTcPos
|
||||||
|
end
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function CalcDinamicaPinze( dH, dS, dL)
|
function CalcDinamicaPinze( dH, dS, dL)
|
||||||
local MinTempoAcc = 0.3 -- [s]
|
local MinTempoAcc = 0.3 -- [s]
|
||||||
local MaxTempoAcc = 4.0 -- [s]
|
local MaxTempoAcc = 4.0 -- [s]
|
||||||
local KgMtCubo= 550 -- densità legno [Kg / metro cubo]
|
local KgMtCubo= WoodDensity or 550 -- densità legno [Kg / metro cubo]
|
||||||
local Massa = ( dH * dS * dL * KgMtCubo ) / 1e9 -- massa [Kg]
|
local Massa = ( dH * dS * dL * KgMtCubo ) / 1e9 -- massa [Kg]
|
||||||
local FMaxPinze = EMT.FMAXPINZE -- Feed massima pinze [mm/min]
|
local FMaxPinze = EMT.FMAXPINZE -- Feed massima pinze [mm/min]
|
||||||
local ForzaAttrito = 350 * 9.8 * 0.2 -- Forza chiusura pinze [Kgf] * g * Coeff_Attrito -> [N]
|
local ForzaAttrito = 350 * 9.8 * 0.2 -- Forza chiusura pinze [Kgf] * g * Coeff_Attrito -> [N]
|
||||||
@@ -15,11 +15,11 @@ BIG_TOOL_DIAM = 300
|
|||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
local sBaseDir = EgtGetCurrMachineDir()
|
local sBaseDir = EgtGetCurrMachineDir()
|
||||||
if NumericalControl == 'NUM' then
|
if NumericalControl == 'NUM' then
|
||||||
dofile( sBaseDir .. '\\Common-FAST.NUM.mlpe')
|
dofile( sBaseDir .. '\\Common_FAST.NUM.mlpe')
|
||||||
elseif NumericalControl == 'TPA' then
|
elseif NumericalControl == 'TPA' then
|
||||||
dofile( sBaseDir .. '\\Common-FAST.TPA.mlpe')
|
dofile( sBaseDir .. '\\Common_FAST.TPA.mlpe')
|
||||||
elseif NumericalControl == 'NUM_PLUS' then
|
elseif NumericalControl == 'NUM_PLUS' then
|
||||||
dofile( sBaseDir .. '\\Common-FAST.NUM_PLUS.mlpe')
|
dofile( sBaseDir .. '\\Common_FAST.NUM_PLUS.mlpe')
|
||||||
else
|
else
|
||||||
EmtSetLastError( 1201, 'Numerical Control error : unkwnown type')
|
EmtSetLastError( 1201, 'Numerical Control error : unkwnown type')
|
||||||
end
|
end
|
||||||
@@ -662,6 +662,7 @@ function OnSimulMachiningEnd()
|
|||||||
EMT.FALL = false
|
EMT.FALL = false
|
||||||
end
|
end
|
||||||
EMT.PREVHEAD = EMT.HEAD
|
EMT.PREVHEAD = EMT.HEAD
|
||||||
|
EMT.PREVTOOL = EMT.TOOL
|
||||||
EMT.PREVEXIT = EMT.EXIT
|
EMT.PREVEXIT = EMT.EXIT
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -749,10 +750,12 @@ function OnSimulMoveStart()
|
|||||||
if EMT.MCHFIRST then
|
if EMT.MCHFIRST then
|
||||||
EgtOutText( '')
|
EgtOutText( '')
|
||||||
EMT.MCHFIRST = false
|
EMT.MCHFIRST = false
|
||||||
|
local bZmax = ( EMT.TOOL ~= EMT.PREVTOOL or EMT.L3 > -1)
|
||||||
|
|
||||||
-- con pezzi alti aggiorno gli assi rotanti prima di muovermi sopra il pezzo
|
-- con pezzi alti aggiorno gli assi rotanti prima di muovermi sopra il pezzo
|
||||||
if not EMT.LOAD and EMT.MOVE == 0 and EMT.HB > BeamHeightForFixRot and EMT.FLAG2 == 1 then
|
if not EMT.LOAD and EMT.MOVE == 0 and EMT.HB > BeamHeightForFixRot and EMT.FLAG2 == 1 then
|
||||||
-- se motosega mi muovo a X di sicurezza per ruotare
|
-- se motosega mi muovo a X di sicurezza per ruotare
|
||||||
if EMT.HEAD == 'H3'then
|
if ( EMT.HEAD == 'H3' or ( bZmax and EMT.TOTLEN > 200)) then
|
||||||
SimulMoveAxes( 'X', SafeXRotAxes, MCH_SIM_STEP.RAPID, 'C', EMT.R1, MCH_SIM_STEP.COLLROT, 'B', EMT.R2, MCH_SIM_STEP.COLLROT)
|
SimulMoveAxes( 'X', SafeXRotAxes, MCH_SIM_STEP.RAPID, 'C', EMT.R1, MCH_SIM_STEP.COLLROT, 'B', EMT.R2, MCH_SIM_STEP.COLLROT)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -1524,6 +1527,12 @@ function IsStartOrRestPhase( nPhase)
|
|||||||
return ( sVal == 'START' or sVal == 'REST')
|
return ( sVal == 'START' or sVal == 'REST')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
function IsEndPhase( nPhase)
|
||||||
|
local sVal = GetPhaseType( nPhase)
|
||||||
|
return ( sVal == 'END')
|
||||||
|
end
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function IsMidPhase( nPhase)
|
function IsMidPhase( nPhase)
|
||||||
local sVal = GetPhaseType( nPhase)
|
local sVal = GetPhaseType( nPhase)
|
||||||
+909
-204
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,44 @@
|
|||||||
==== Common_FAST Update Log ====
|
==== Common_FAST Update Log ====
|
||||||
|
|
||||||
|
Versione 2.6j1 (01/10/2024)
|
||||||
|
- (SIM-GEN) Sistemato calcolo in nuova disposzione carrelli
|
||||||
|
|
||||||
|
Versione 2.6i6 (25/09/2024)
|
||||||
|
- (GEN) Migliorata gestione movimenti per portare testa vicino a cambio utensile se trave alta. Ticket#2066
|
||||||
|
|
||||||
|
Versione 2.6i5 (24/09/2024)
|
||||||
|
- (SIM-GEN) Tolto controllo su lunghezza maggiore di 200mm introdotto con 2.6i2 perchè non completamente funzionante
|
||||||
|
- (GEN) Gestione in OnRapid() di EMT.FLAG=5 (rotazione a Z max per lavorazione successiva). Ora allineata alla simulazione
|
||||||
|
|
||||||
|
Versione 2.6i4 (24/09/2024)
|
||||||
|
- (SIM-GEN) Aggiunto ripinzaggio extra in caso servisse un grande spostamento e si sta pinzando poco.
|
||||||
|
L'aggiunta del ripinzaggio dipende da FASTCLAMPING (che deve essere disattiva). Viene aggiunta GAIN_RECLAMPING per decidere il guadagno in mm del ripinzaggio.
|
||||||
|
|
||||||
|
Versione 2.6i3 (23/09/2024)
|
||||||
|
- (SIM-GEN) Aggiunta nuova strategia riposizionamento morse
|
||||||
|
- (SIM-GEN) Aggiunta lettura flag NEWCLAMPING in BeamData, per abilitare nuova strategia riposizionamento. Se false o nil, funziona con metodo vecchio.
|
||||||
|
- (SIM-GEN) Aggiunta lettura flag FASTCLAMPING. Se false, al carico prende al massimo 1000mm, per evitare collisioni durante ciclo di lettura laser e prima lavorazione.
|
||||||
|
|
||||||
|
Versione 2.6i2 (16/09/2024)
|
||||||
|
- (SIM-GEN) Se utensili più lunghi di 200mm, si ruota in home e poi si approccia il pezzo. Ticket#2038
|
||||||
|
- (SIM-GEN) Aumentata distanza ingombro da 650mm a 660mm. In casi di utensile abbastanza lungo poteva andare in colisione. Ticket#2041
|
||||||
|
|
||||||
|
Versione 2.6i1 (02/09/2024)
|
||||||
|
- (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.6g1 (03/07/2024)
|
||||||
|
- (GEN) Corretto chiamata macro precarico in caso di taglio finale, ma con ribaltamento successivo. Ora si chiama solo se la fase successiva è una "END". Ticket#1881
|
||||||
|
- (GEN) Per controllo NUM, se arco maggiore di 99999mm, si approssima con una retta. Ticket#1888
|
||||||
|
|
||||||
|
Versione 2.6e3 (06/05/2024)
|
||||||
|
- (MLDE-SIM-GEN) Gestione facoltativa parametri MIN_JOIN_xx settabili in Ts3. Ticket#1794
|
||||||
|
|
||||||
|
Versione 2.6e2 (06/05/2024)
|
||||||
|
- (SIM-GEN) Modificata tolleranza calcolo ingombri lavorazioni per posizionamento pinze. Ticket#1790
|
||||||
|
|
||||||
|
Versione 2.6e1 (30/04/2024)
|
||||||
|
- (MLDE-GEN) Gestione facoltativa parametro WOOD_DENSITY settabile in Ts3. In MLDE, mettere il valore di WOOD_DENSITY nella nostra variabile 'WoodDensity'.
|
||||||
|
|
||||||
Versione 2.6d2 (18/04/2024)
|
Versione 2.6d2 (18/04/2024)
|
||||||
- (SIM-GEN) In MLSE, quando c'è una rotazione, viene settato EMT.CNT=1 per considerare i 50mm di compensazione laser.
|
- (SIM-GEN) In MLSE, quando c'è una rotazione, viene settato EMT.CNT=1 per considerare i 50mm di compensazione laser.
|
||||||
- (SIM) Nel file di log dove c'è stampa gruppi di collisione, viene scritto anche ID del gruppo
|
- (SIM) Nel file di log dove c'è stampa gruppi di collisione, viene scritto anche ID del gruppo
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,8 @@
|
|||||||
-- Gestione della versione dei file comuni post-processori macchine FAST e FASTrl di Essetre
|
-- Gestione della versione dei file comuni post-processori macchine FAST e FASTrl di Essetre
|
||||||
|
|
||||||
local InfoCommon_STD_PP = {
|
local InfoCommon_STD_PP = {
|
||||||
NAME = 'Common-FAST', -- nome script PP standard
|
NAME = 'Common_FAST', -- nome script PP standard
|
||||||
VERSION = '2.6d2', -- versione script
|
VERSION = '2.6j1', -- versione script
|
||||||
MIN_MACH_VER_PP_COMMON = '2.5k1' -- versione minima kernel
|
MIN_MACH_VER_PP_COMMON = '2.5k1' -- versione minima kernel
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user