Compare commits
18 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f25aecf62a | |||
| 3d4246e540 | |||
| dad97ad557 | |||
| 6c84aacd5a | |||
| 3cd9d39aa0 | |||
| 77bb66d8d6 | |||
| a3b714f790 | |||
| 929e1308a9 | |||
| 37d98a4324 | |||
| f3890dc20f | |||
| 8bd92a578b | |||
| 37b9eb3a9b | |||
| ac09d872eb | |||
| 047669d63f | |||
| fcaeb8530b | |||
| d174f8b79f | |||
| 621a31e283 | |||
| acdc1cfce6 |
+51
-35
@@ -28,6 +28,9 @@ function OnStart()
|
||||
--EMT.Ft = 'F' -- token per feed
|
||||
--EMT.St = 'S' -- token per speed
|
||||
EMT.FMAXPINZE = 102000 -- feed massima pinze
|
||||
-- utensili default
|
||||
EMT.PREVTCPOS_H1 = DefTcPos1
|
||||
EMT.PREVTCPOS_H2 = DefTcPos2
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
@@ -44,7 +47,7 @@ function OnProgramStart()
|
||||
EmtOutput( '%' .. EgtNumToString( nPattId,-1))
|
||||
|
||||
-- aggiungo prefisso per commentae commenti iniziali se la macchina è utilizzata per fare i test
|
||||
local sPrefixCommentLine = '' ; if IS_TEST_MACHINE then sPrefixCommentLine = '//' end
|
||||
local sPrefixCommentLine = '' ; if IS_TEST_MACHINE or EgtEndsWith( EgtGetCurrMachineDir(), '.TEST') then sPrefixCommentLine = '//' end
|
||||
|
||||
if EMT.INFO then
|
||||
EmtOutput( sPrefixCommentLine..'('..EMT.INFO..')')
|
||||
@@ -439,7 +442,7 @@ function OnMachiningStart()
|
||||
-- gestione eventuale lavorazione in doppio
|
||||
local nDouType = EgtGetValInNotes( EMT.MCHUSERNOTES, 'DOUBLE', 'i')
|
||||
if nDouType == 2 or nDouType == 3 then
|
||||
local sDouTool = EgtGetValInNotes( EMT.TUSERNOTES, 'DOUBLE', 's') or ''
|
||||
local sDouTool = EgtGetValInNotes( EMT.MCHUSERNOTES, 'TOOLDOUBLE', 's') or EgtGetValInNotes( EMT.TUSERNOTES, 'DOUBLE', 's') or ''
|
||||
local sOldTool = EgtTdbGetCurrToolParam( MCH_TP.NAME)
|
||||
if EgtTdbSetCurrTool( sDouTool) and EgtTdbGetCurrToolParam( MCH_TP.ACTIVE) then
|
||||
-- salvo dati
|
||||
@@ -599,6 +602,18 @@ function OnMachiningEnd()
|
||||
EMT.PREVTOOL = EMT.TOOL
|
||||
EMT.PREVHEAD = EMT.HEAD
|
||||
EMT.PREVTCPOS = EMT.TCPOS
|
||||
-- salvo anche utlimo utensile su testa
|
||||
local nHSet = GetHeadSet( EMT.HEAD)
|
||||
if nHSet == 1 then
|
||||
EMT.PREVTOOL_H1 = EMT.TOOL
|
||||
EMT.PREVHEAD_H1 = EMT.HEAD
|
||||
EMT.PREVTCPOS_H1 = EMT.TCPOS
|
||||
elseif nHSet == 2 then
|
||||
EMT.PREVTOOL_H2 = EMT.TOOL
|
||||
EMT.PREVHEAD_H2 = EMT.HEAD
|
||||
EMT.PREVTCPOS_H2 = EMT.TCPOS
|
||||
end
|
||||
|
||||
if EMT.DOU_TYPE and not EMT.ZMAX then EMT.DOU_TO_ZMAX = true end
|
||||
EMT.DOU_TYPE = nil
|
||||
end
|
||||
@@ -858,11 +873,11 @@ function OnRapid()
|
||||
|
||||
-- se motosega configurata per lavorazioni di fianco o circa orizzontale
|
||||
if dPosA == 0 or abs( EMT.R2) < 10 then
|
||||
EmitMoveDataHead( 1, { X=EMT.L2, C=EMT.R1, S=Speed})
|
||||
EmitMoveDataHead( 1, { X=EMT.L2, Z=ParkCSawZ1, B=ParkCSawB1, C=EMT.R1, S=Speed})
|
||||
EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed})
|
||||
-- se circa verticale
|
||||
else
|
||||
EmitMoveDataHead( 1, { X=EMT.L2, C=EMT.R1, S=Speed})
|
||||
EmitMoveDataHead( 1, { X=EMT.L2, Z=ParkCSawZ1, B=ParkCSawB1, C=EMT.R1, S=Speed})
|
||||
EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed})
|
||||
end
|
||||
end
|
||||
@@ -925,11 +940,11 @@ function OnRapid()
|
||||
|
||||
-- se motosega configurata per lavorazioni di fianco o circa orizzontale
|
||||
if dPosA == 0 or abs( EMT.R2) < 10 then
|
||||
EmitMoveDataHead( 1, { X=EMT.L2, C=EMT.R1, S=Speed})
|
||||
EmitMoveDataHead( 1, { X=EMT.L2, Z=ParkCSawZ1, B=ParkCSawB1, C=EMT.R1, S=Speed})
|
||||
EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed})
|
||||
-- se circa verticale
|
||||
else
|
||||
EmitMoveDataHead( 1, { X=EMT.L2, C=EMT.R1, S=Speed})
|
||||
EmitMoveDataHead( 1, { X=EMT.L2, Z=ParkCSawZ1, B=ParkCSawB1, C=EMT.R1, S=Speed})
|
||||
EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed})
|
||||
end
|
||||
|
||||
@@ -977,13 +992,13 @@ function OnRapid()
|
||||
EmitMoveWaitHead( 2)
|
||||
EmitMoveWaitChars( EgtIf( bOnlyCharY, 1, 3))
|
||||
|
||||
-- se motosega configurata per lavorazioni di fianco o circa orizzontale
|
||||
-- se motosega configurata per lavorazioni di fianco o circa orizzontale. Dopo attesa movimento carrelli si devono scrivere tutti gli assi.
|
||||
if dPosA == 0 or abs( EMT.R2) < 10 then
|
||||
EmitMoveDataHead( 2, { X=EMT.L2, C=EMT.R1, S=Speed})
|
||||
EmitMoveDataHead( 2, { X=EMT.L2, Z=ParkCSawZ2, B=ParkCSawB2, C=EMT.R1, S=Speed})
|
||||
EmitMoveDataHead( 2, { Z=EMT.L3, B=EMT.R2, S=Speed})
|
||||
-- se circa verticale
|
||||
else
|
||||
EmitMoveDataHead( 2, { X=EMT.L2, C=EMT.R1, S=Speed})
|
||||
EmitMoveDataHead( 2, { X=EMT.L2, Z=ParkCSawZ2, B=ParkCSawB2, C=EMT.R1, S=Speed})
|
||||
EmitMoveDataHead( 2, { Z=EMT.L3, B=EMT.R2, S=Speed})
|
||||
end
|
||||
end
|
||||
@@ -1064,42 +1079,42 @@ function OnRapid()
|
||||
EMT.AUXCMD = {}
|
||||
-- se necessario posizionamento in home (sono sicuramente già a Zmax)
|
||||
if EMT.TO_XHOME then
|
||||
-- se precedente non era sega a catena, vado in home con quella
|
||||
if not HeadIsChainSaw( EMT.PREVHEAD) then
|
||||
local nPrevHSet = GetHeadSet( EMT.PREVHEAD)
|
||||
if nPrevHSet == 1 then
|
||||
local nHSet = GetHeadSet( EMT.HEAD)
|
||||
local nPrevHSet = GetHeadSet( EMT.PREVHEAD)
|
||||
|
||||
-- se successivo non è sega a catena e la testa è la stessa, vado in home con utensile successivo
|
||||
if not HeadIsChainSaw( EMT.HEAD) and nHSet == nPrevHSet then
|
||||
if nHSet == 1 then
|
||||
local HomeX1 = EgtGetAxisHomePos( 'X1')
|
||||
EmitMoveDataHead( 1, { X=-HomeX1, Z=MaxZ1, B=ParkB1, C=ParkC1, TPos='0'})
|
||||
EmitMoveDataHead( 1, { X=-HomeX1, Z=MaxZ1, B=ParkB1, C=ParkC1})
|
||||
EmitMoveStartHead( 1, 'EA1')
|
||||
else
|
||||
local HomeX2 = EgtGetAxisHomePos( 'X2')
|
||||
EmitMoveDataHead( 2, { X=-HomeX2, Z=MaxZ2, B=ParkB2, C=ParkC2, TPos='0'})
|
||||
EmitMoveDataHead( 2, { X=-HomeX2, Z=MaxZ2, B=ParkB2, C=ParkC2})
|
||||
EmitMoveStartHead( 2, 'EA1')
|
||||
end
|
||||
-- altrimenti la deposito e vado in home speciale
|
||||
else
|
||||
-- se successivo non è sega a catena, ne lancio il carico
|
||||
if not HeadIsChainSaw( EMT.HEAD) then
|
||||
if nHSet == 1 then
|
||||
if not HeadIsChainSaw( EMT.PREVHEAD) then
|
||||
if nPrevHSet == 1 then
|
||||
local HomeX1 = EgtGetAxisHomePos( 'X1')
|
||||
EmitMoveDataHead( 1, { X=-HomeX1, Z=MaxZ1, B=HomeR2, C=HomeR1})
|
||||
EmitMoveDataHead( 1, { X=-HomeX1, Z=MaxZ1, B=ParkB1, C=ParkC1, TPos=AdjustTcPos( false, EMT.PREVTCPOS_H1)})
|
||||
EmitMoveStartHead( 1, 'EA1')
|
||||
else
|
||||
local HomeX2 = EgtGetAxisHomePos( 'X2')
|
||||
EmitMoveDataHead( 2, { X=-HomeX2, Z=MaxZ2, B=HomeR2, C=HomeR1})
|
||||
EmitMoveDataHead( 2, { X=-HomeX2, Z=MaxZ2, B=ParkB2, C=ParkC2, TPos=AdjustTcPos( false, EMT.PREVTCPOS_H2)})
|
||||
EmitMoveStartHead( 2, 'EA1')
|
||||
end
|
||||
-- altrimenti deposito e mi metto in posizione sicura
|
||||
else
|
||||
if GetHeadTCSet( EMT.HEAD, EMT.TCPOS) == 'Head1_TC1' or GetHeadTCSet( EMT.HEAD, EMT.TCPOS) == 'Head1_TC2' then
|
||||
EmitMoveDataHead( 1, { X=-ParkCSawX1S, Z=MaxZ1, B=HomeR2, C=HomeR1, TPos='0'})
|
||||
if GetHeadTCSet( EMT.PREVHEAD, EMT.PREVTCPOS) == 'Head1_TC1' or GetHeadTCSet( EMT.PREVHEAD, EMT.PREVTCPOS) == 'Head1_TC2' then
|
||||
EmitMoveDataHead( 1, { X=-ParkCSawX1S, Z=MaxZ1, B=HomeR2, C=HomeR1, TPos='50'})
|
||||
EmitMoveStartHead( 1, 'EA1')
|
||||
else
|
||||
EmitMoveDataHead( 2, { X=-ParkCSawX2S, Z=MaxZ2, B=HomeR2, C=HomeR1, TPos='0'})
|
||||
EmitMoveDataHead( 2, { X=-ParkCSawX2S, Z=MaxZ2, B=HomeR2, C=HomeR1, TPos='50'})
|
||||
EmitMoveStartHead( 2, 'EA1')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
EMT.TO_XHOME = nil
|
||||
EMT.L3pp = nil
|
||||
PrevR1 = HomeR1
|
||||
@@ -1589,7 +1604,7 @@ end
|
||||
function CalcDinamicaPinze( dH, dS, dL)
|
||||
local MinTempoAcc = 0.3 -- [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 FMaxPinze = EMT.FMAXPINZE -- Feed massima pinze [mm/min]
|
||||
local ForzaAttrito = 350 * 9.8 * 0.2 -- Forza chiusura pinze [Kgf] * g * Coeff_Attrito -> [N]
|
||||
@@ -2867,11 +2882,11 @@ function PreselectNextDiffHead( nMchId, sHead)
|
||||
local sNextTcPos = EgtTdbGetCurrToolParam( MCH_TP.TCPOS)
|
||||
-- se testa attuale da caricare è sega a catena, mando l'altra prima in HomeX (per evitare possibili collisioni) e poi lancio preselezione
|
||||
if sHead == 'H13' and EMT.PREVHEAD ~= 'H13' then
|
||||
EmitMoveDataHead( 2, { X=-ParkX2, Z=MaxZ2, B=ParkB2, C=ParkC2, TPos='0'})
|
||||
EmitMoveDataHead( 2, { X=-ParkX2, Z=MaxZ2, B=ParkB2, C=ParkC2, TPos=AdjustTcPos( false, EMT.PREVTCPOS_H2)})
|
||||
EmitMoveStartHead( 2)
|
||||
EmitMoveWaitHead( 2)
|
||||
elseif sHead == 'H23' and EMT.PREVHEAD ~= 'H23' then
|
||||
EmitMoveDataHead( 1, { X=-ParkX1, Z=MaxZ1, B=ParkB1, C=ParkC1, TPos='0'})
|
||||
EmitMoveDataHead( 1, { X=-ParkX1, Z=MaxZ1, B=ParkB1, C=ParkC1, TPos=AdjustTcPos( false, EMT.PREVTCPOS_H1)})
|
||||
EmitMoveStartHead( 1)
|
||||
EmitMoveWaitHead( 1)
|
||||
end
|
||||
@@ -2904,15 +2919,16 @@ function PreselectNextDiffHead( nMchId, sHead)
|
||||
-- mi assicuro che l'altra testa sia in parcheggio
|
||||
if nHSet == 1 then
|
||||
-- non può essere la sega a catena
|
||||
EmitMoveDataHead( 2, { X=-ParkX2, Z=MaxZ2, B=ParkB2, C=ParkC2, TPos='0'})
|
||||
EmitMoveStartHead( 2)
|
||||
if EMT.PREVHEAD == 'H23' and EMT.PREVHEAD ~= EMT.HEAD then
|
||||
EmitMoveWaitHead( 2)
|
||||
if EMT.PREVHEAD_H2 ~= 'H23' then
|
||||
EmitMoveDataHead( 2, { X=-ParkX2, Z=MaxZ2, B=ParkB2, C=ParkC2, TPos=AdjustTcPos( false, EMT.PREVTCPOS_H2)})
|
||||
EmitMoveStartHead( 2)
|
||||
end
|
||||
else
|
||||
-- va bene per frese e lama
|
||||
EmitMoveDataHead( 1, { X=-ParkX1, Z=MaxZ1, B=ParkB1, C=ParkC1, TPos='0'})
|
||||
EmitMoveStartHead( 1)
|
||||
-- non può essere la sega a catena
|
||||
if EMT.PREVHEAD_H1 ~= 'H13' and EMT.PREVHEAD_H1 ~= 'H15' then
|
||||
EmitMoveDataHead( 1, { X=-ParkX1, Z=MaxZ1, B=ParkB1, C=ParkC1, TPos=AdjustTcPos( false, EMT.PREVTCPOS_H1)})
|
||||
EmitMoveStartHead( 1)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
+1
-1
@@ -152,7 +152,7 @@ function OnSimulStart()
|
||||
local nId = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( nGrpId, McdData[i].Sub), McdData[i].Name)
|
||||
if nId then
|
||||
table.insert( EMT.MCODET, nId)
|
||||
EgtOutLog( 'Element ' .. McdData[i].Grp .. '/' .. McdData[i].Sub .. '/' .. McdData[i].Name .. ' is ok', 4)
|
||||
EgtOutLog( 'Element ' .. McdData[i].Grp .. '/' .. McdData[i].Sub .. '/' .. McdData[i].Name .. ' (' .. tostring( nId) .. ') is ok', 4)
|
||||
else
|
||||
nMcdNullCnt = nMcdNullCnt + 1
|
||||
EgtOutLog( 'Element ' .. McdData[i].Grp .. '/' .. McdData[i].Sub .. '/' .. McdData[i].Name .. ' is null', 4)
|
||||
|
||||
+15
-1
@@ -1,7 +1,21 @@
|
||||
==== Common_ONE-PF Update Log ====
|
||||
|
||||
Versione 2.6g2 (16/07/2024)
|
||||
- (GEN) Per preselezione o movimenti in home, non si scrive più 'ET0' perchè non è più supportato. Ticket#1926
|
||||
|
||||
Versione 2.6g1 (10/07/2024)
|
||||
- (GEN) Se prima lavorazione con motosega, dopo G151 di attesa carrelli si ribadiscono tutti gli assi. Ticket#1924
|
||||
|
||||
Versione 2.6f1 (03/06/2024)
|
||||
- (GEN) Aggiunta possibilità di scrivere nome utensile doppio anche in lavorazione con parametro "TOOLDOUBLE". Note sulla lavorazione hanno precedenza su note utensile.
|
||||
|
||||
Versione 2.6e1 (30/04/2024)
|
||||
- (GEN) Chiamando la macchina con un nome che termini con '.TEST' si abilita come macchina per test interni, equivalente a settare 'IS_TEST_MACHINE' (che comunque rimane)
|
||||
- (SIM) In log collisioni, si scrive anche ID del gruppo per facilitare riconoscimento in caso di collisione
|
||||
- (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 (12/04/2024)
|
||||
- (MLDE-SIM-GEN) Aggiunta variabile FACOLTATIVA 'ForceToCloseRollersGate' ( che legge la variabile da TS3 'CHIUDI_RULLI_SCAMBIO') in mlde per forzare chiusura paratie rulli
|
||||
- (MLDE-SIM-GEN) Aggiunta variabile FACOLTATIVA 'ForceToCloseRollersGate' ( che legge la variabile da TS3 'CHIUDI_PINZE_2_3_SCAMBIO') in mlde per forzare chiusura paratie rulli
|
||||
durante scambio pinze per facilitare passaggio pezzi molto storti. Se non presente chiude solo se necessario.
|
||||
|
||||
Versione 2.6d1 (28/03/2024)
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
|
||||
local InfoCommon_STD_PP = {
|
||||
NAME = 'Common_ONE-PF', -- nome script PP standard
|
||||
VERSION = '2.6d2', -- versione script
|
||||
VERSION = '2.6g2', -- versione script
|
||||
MIN_MACH_VER_PP_COMMON = '2.5k1' -- versione minima kernel
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user