Compare commits
29 Commits
2.6j2
...
2.6l2_DEV5
| Author | SHA1 | Date | |
|---|---|---|---|
| c6b492986f | |||
| b574dae2dd | |||
| c578e17bbb | |||
| 7da8dffdae | |||
| 1bb7bb1ce2 | |||
| 06f0b344dd | |||
| 35484099c0 | |||
| 2fab36a8a9 | |||
| 57b80c9006 | |||
| d5d23a5da4 | |||
| e26c109857 | |||
| 55f7c325f6 | |||
| 024f281613 | |||
| 80ca00eaa8 | |||
| 1170351c83 | |||
| 7aca339e8d | |||
| 7d13d2604b | |||
| d7916832ed | |||
| 24cb48df12 | |||
| 979d625b23 | |||
| 16e36eff78 | |||
| 009869eb9f | |||
| ee56eaab7d | |||
| 60459649c2 | |||
| bb83671c7e | |||
| 21abd1b45f | |||
| e6c85e29a4 | |||
| 8fcef852dc | |||
| 1adb18760f |
+14
-2
@@ -10,8 +10,9 @@ local BeamData = {
|
||||
SIMUL_VIEW_DIR = 1, -- direzione di vista predefinita per la simulazione (1=NW, 2=SW, 3=NE, 4=SE)
|
||||
GO_FAST = 0, -- flag abilitazione modalità veloce (0=no, 1=carrelli, 2=anche cambio utensili)
|
||||
ROT90 = false, -- flag abilitazione rotazione 90 gradi
|
||||
ROT180 = true, -- flag abilitazione rotazione 180 gradi
|
||||
NEWCLAMPING = false, -- flag abilitazione nuovo metodo riposizionamento carrelli
|
||||
FASTCLAMPING= true, -- flag abilitazione riduzione numero riposizionamenti al carico e durante grande trascinamento
|
||||
FASTCLAMPING= true, -- flag abilitazione riduzione numero riposizionamenti al carico e durante grande trascinamento
|
||||
MIN_WIDTH = 40, -- larghezza minima del grezzo
|
||||
MIN_HEIGHT = 40, -- altezza minima del grezzo
|
||||
MAX_WIDTH = 240, -- larghezza massima del grezzo
|
||||
@@ -92,7 +93,6 @@ if EgtExistsFile( sData) then
|
||||
local Machine = dofile( sData)
|
||||
if Machine then
|
||||
if Machine.Offsets then
|
||||
BeamData.ROT90 = Machine.Offsets.ROT90 or BeamData.ROT90
|
||||
BeamData.ANG_TRASM = ( Machine.Offsets.SECSUP and Machine.Offsets.SECSUP >= 3)
|
||||
BeamData.BH_MACHINE = ( Machine.Offsets.BLOCKHAUS == 1)
|
||||
BeamData.MINRAW_S = max( BeamData.MINRAW_S, Machine.Offsets.MINRAW_S or BeamData.MINRAW_S)
|
||||
@@ -102,11 +102,18 @@ if EgtExistsFile( sData) then
|
||||
BeamData.DIM_STRIP_SMALL = Machine.Offsets.DIM_STRIP_SMALL or BeamData.DIM_STRIP_SMALL
|
||||
BeamData.DIM_TO_CENTER_STRIP = Machine.Offsets.DIM_TO_CENTER_STRIP or BeamData.DIM_TO_CENTER_STRIP
|
||||
BeamData.MAXDIAM_POCK_CORNER = Machine.Offsets.MAXDIAM_POCK_CORNER or BeamData.MAXDIAM_POCK_CORNER
|
||||
BeamData.LONGCUT_ENDLEN = Machine.Offsets.LONGCUT_ENDLEN or BeamData.LONGCUT_ENDLEN
|
||||
BeamData.LONGCUT_MAXLEN = Machine.Offsets.LONGCUT_MAXLEN or BeamData.LONGCUT_MAXLEN
|
||||
BeamData.ADVANCE_TAIL_OFFS = Machine.Offsets.ADVANCE_TAIL_OFFS or BeamData.ADVANCE_TAIL_OFFS
|
||||
BeamData.LEN_VERY_SHORT_PART = Machine.Offsets.LEN_VERY_SHORT_PART or BeamData.LEN_VERY_SHORT_PART
|
||||
BeamData.LEN_SHORT_PART = Machine.Offsets.LEN_SHORT_PART or BeamData.LEN_SHORT_PART
|
||||
if Machine.Offsets.PRECUT_HEAD_DISABLE then BeamData.PRECUT_HEAD = ( Machine.Offsets.PRECUT_HEAD_DISABLE == 0) end
|
||||
if Machine.Offsets.PRECUT_TAIL_DISABLE then BeamData.PRECUT_TAIL = ( Machine.Offsets.PRECUT_TAIL_DISABLE == 0) end
|
||||
if Machine.Offsets.MIN_HEIGHT_ADDED_CUTS then BeamData.MIN_HEIGHT_ADDED_CUTS = min( Machine.Offsets.MIN_HEIGHT_ADDED_CUTS, BeamData.MIN_HEIGHT_ADDED_CUTS) end
|
||||
if Machine.Offsets.NEWCLAMPING ~= nil then BeamData.NEWCLAMPING = ( Machine.Offsets.NEWCLAMPING == 1) end
|
||||
if Machine.Offsets.FASTCLAMPING ~= nil then BeamData.FASTCLAMPING = ( Machine.Offsets.FASTCLAMPING == 1) end
|
||||
if Machine.Offsets.ROT90 ~= nil then BeamData.ROT90 = ( Machine.Offsets.ROT90 == 1) end
|
||||
if Machine.Offsets.ROT180 ~= nil then BeamData.ROT180 = ( Machine.Offsets.ROT180 == 1) end
|
||||
end
|
||||
if Machine.Trave then
|
||||
BeamData.MIN_WIDTH = Machine.Trave.XMIN or BeamData.MIN_WIDTH
|
||||
@@ -209,6 +216,11 @@ local function GetSetupInfo( sHead)
|
||||
SetupInfo.bIsBottomHead = true
|
||||
SetupInfo.bIsTopHead = not SetupInfo.bIsBottomHead
|
||||
SetupInfo.dMaxPositiveAngle = 0
|
||||
-- aggregato speciale per fresa a disco tipo BH
|
||||
elseif sHead == 'H7' then
|
||||
SetupInfo.bToolOnAggregate = true
|
||||
SetupInfo.bIsTopHead = true
|
||||
SetupInfo.bIsBottomHead = not SetupInfo.bIsTopHead
|
||||
end
|
||||
|
||||
return SetupInfo
|
||||
|
||||
+10
-7
@@ -848,13 +848,13 @@ function OnRapid()
|
||||
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')
|
||||
EmtOutput( 'G101 ET1001')
|
||||
EmtOutput( 'G101 ET2001')
|
||||
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')
|
||||
EmtOutput( 'G101 ET1001')
|
||||
EmtOutput( 'G101 ET2001')
|
||||
end
|
||||
-- se altrimenti movimento in Home
|
||||
elseif EMT.FLAG == 4 then
|
||||
@@ -876,7 +876,7 @@ function OnRapid()
|
||||
EmtGetAxis( 'R2') .. EmtGetAxis( 'R1') .. sEE .. sEL .. sER .. sET .. sES
|
||||
EmtOutput( sOut)
|
||||
EmtOutput( 'G101 ET1001')
|
||||
EmtOutput( 'G101 ET2001')
|
||||
EmtOutput( 'G101 ET2001')
|
||||
-- altrimenti errore
|
||||
else
|
||||
EmtSetLastError( 1212, "Unknown Rapid flag")
|
||||
@@ -1532,7 +1532,10 @@ function MyAdjustLinearAxes()
|
||||
|
||||
if EMT.REFLOC then
|
||||
local vtE
|
||||
if EMT.HEAD ~= 'H3' then
|
||||
-- su NUM aggregati non gestiti
|
||||
if EMT.HEAD == 'H5' or EMT.HEAD == 'H6' or EMT.HEAD == 'H7' then
|
||||
EmtSetLastError( 1211, "Aggregates not managed")
|
||||
elseif EMT.HEAD ~= 'H3' then
|
||||
local Len = EMT.TLEN + EgtIf( EMT.HEAD == 'H1', MillOffs, abs( SawOffs))
|
||||
local LenRef = MillOffs
|
||||
vtE = Vector3d( EMT.EXTR) * Len - Z_AX() * LenRef
|
||||
@@ -1647,7 +1650,7 @@ end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function GetET( sHead, sTcPos, dAxR3)
|
||||
if sHead == 'H1' then
|
||||
if sHead == 'H1' or sHead == 'H5' or sHead == 'H6' or sHead == 'H7' then
|
||||
return ' E'..sTcPos
|
||||
elseif sHead == 'H2' then
|
||||
return ' ET42'
|
||||
|
||||
+20
-11
@@ -145,7 +145,11 @@ function OnToolData()
|
||||
local sPos = 'N2' .. tostring(nPos)
|
||||
local sOut = 'L11=' .. EmtLenToString( EMT.SMAX, 3) .. ' L12=' .. EmtLenToString( AngTr1Offs, 1)..' G76H9998.1'..sPos..sPos
|
||||
EmtOutput( sOut)
|
||||
-- altro non previsto
|
||||
-- emissione dati sega a catena
|
||||
elseif EMT.HEAD == 'H7' then
|
||||
local sOut = 'L11='..EgtNumToString( EMT.SMAX, 0)..' L12='..EmtLenToString( ( 154.5), 1)..' G76H9998.1N121N121'
|
||||
EmtOutput( sOut)
|
||||
-- altro non previsto
|
||||
end
|
||||
end
|
||||
|
||||
@@ -693,7 +697,7 @@ function OnRapid()
|
||||
if EMT.HEAD == 'H3' then
|
||||
sEL = sEL..EmtLenToString( ( EMT.TDIST or ChSawLen), 3)
|
||||
-- se aggregato
|
||||
elseif EMT.HEAD == 'H5' or EMT.HEAD == 'H6' then
|
||||
elseif EMT.HEAD == 'H5' or EMT.HEAD == 'H6' or EMT.HEAD == 'H7' then
|
||||
sEL = sEL..EmtLenToString( AngTr1Offs, 3)
|
||||
-- se testa normale ( H1 or H2)
|
||||
else
|
||||
@@ -705,7 +709,7 @@ function OnRapid()
|
||||
if EMT.HEAD == 'H3' then
|
||||
sER = sER..EmtLenToString( EMT.TLEN, 3)
|
||||
-- se aggregato
|
||||
elseif EMT.HEAD == 'H5' or EMT.HEAD == 'H6' then
|
||||
elseif EMT.HEAD == 'H5' or EMT.HEAD == 'H6' or EMT.HEAD == 'H7' then
|
||||
sER = sER..EmtLenToString( EMT.TLEN + AngTr1Len, 3)
|
||||
-- se testa normale ( H1 or H2)
|
||||
else
|
||||
@@ -922,14 +926,14 @@ function OnRapid()
|
||||
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')
|
||||
EmtOutput( 'G101 ET1001')
|
||||
EmtOutput( 'G101 ET2001')
|
||||
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
|
||||
EmtOutput( 'G101 ET1001')
|
||||
EmtOutput( 'G101 ET2001')
|
||||
end
|
||||
-- se altrimenti movimento in Home
|
||||
elseif EMT.FLAG == 4 then
|
||||
-- non previsto
|
||||
@@ -1017,7 +1021,7 @@ end
|
||||
---------------------------------------------------------------------
|
||||
function OnArc()
|
||||
-- con aggregato non si possono fare archi. Deve essere tutto spezzato
|
||||
if EMT.HEAD == 'H5' or EMT.HEAD == 'H6' then
|
||||
if EMT.HEAD == 'H5' or EMT.HEAD == 'H6' or EMT.HEAD == 'H7' then
|
||||
EmtSetLastError( 1211, "With aggregate, the arcs must be splitted")
|
||||
end
|
||||
|
||||
@@ -1642,11 +1646,16 @@ function MyAdjustLinearAxes()
|
||||
local LenRef = MillOffs
|
||||
local vtAux = EgtGetCalcAuxDirFromAngles( EMT.R1, EMT.R2, EMT.R3)
|
||||
vtE = vtAux * LenAux - Z_AX() * LenRef
|
||||
elseif EMT.HEAD == 'H5' then
|
||||
elseif EMT.HEAD == 'H5' or EMT.HEAD == 'H6' then
|
||||
local LenAux = AngTr1Offs + MillOffs
|
||||
local LenRef = MillOffs
|
||||
local vtAux = EgtGetCalcAuxDirFromAngles( EMT.R1, EMT.R2, EMT.R3)
|
||||
vtE = vtAux * LenAux - Z_AX() * LenRef
|
||||
elseif EMT.HEAD == 'H7' then
|
||||
local LenAux = AngTrBHOffs + MillOffs
|
||||
local LenRef = MillOffs
|
||||
local vtAux = EgtGetCalcAuxDirFromAngles( EMT.R1, EMT.R2, EMT.R3)
|
||||
vtE = vtAux * LenAux - Z_AX() * LenRef
|
||||
else
|
||||
EmtSetLastError( 1211, 'Head not allowed ' .. EMT.HEAD)
|
||||
end
|
||||
@@ -1741,7 +1750,7 @@ end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function GetET( sHead, sTcPos, dAxR3)
|
||||
if sHead == 'H1' or sHead == 'H5' or sHead == 'H6' then
|
||||
if sHead == 'H1' or sHead == 'H5' or sHead == 'H6' or sHead == 'H7' then
|
||||
return ' E'..sTcPos
|
||||
elseif sHead == 'H2' then
|
||||
return ' ET42'
|
||||
|
||||
+14
-3
@@ -151,7 +151,12 @@ function OnToolData()
|
||||
local sOut = 'M992 P1=' .. EgtNumToString( nPos, 0) .. ' P2=' .. EmtLenToString( EMT.TLEN, 3) .. ' P3=' .. EmtLenToString( EMT.TDIAM, 3) ..
|
||||
' P4=' .. EmtLenToString( EMT.SMAX, 3) .. ' P5=' .. EmtLenToString( EMT.TTOTLEN, 3)
|
||||
ParkLine( sOut)
|
||||
-- altro non previsto
|
||||
-- emissione dati sega a catena
|
||||
elseif EMT.HEAD == 'H7' then
|
||||
local sOut = 'M992 P1=' .. EMT.TCPOS:gsub( 'T', '') .. ' P2=' .. EmtLenToString( EMT.TLEN, 3) .. ' P3=' .. EmtLenToString( EMT.TDIAM, 3) ..
|
||||
' P4=' .. EmtLenToString( EMT.SMAX, 3) .. ' P5=' .. EmtLenToString( EMT.TTOTLEN, 3)
|
||||
ParkLine( sOut)
|
||||
-- altro non previsto
|
||||
else
|
||||
EmtSetLastError( 1211, 'Head not allowed ' .. EMT.HEAD)
|
||||
end
|
||||
@@ -1640,12 +1645,18 @@ function MyAdjustLinearAxes()
|
||||
local LenRef = MillOffs
|
||||
local vtAux = EgtGetCalcAuxDirFromAngles( EMT.R1, EMT.R2, EMT.R3)
|
||||
vtE = vtAux * LenAux - Z_AX() * LenRef
|
||||
elseif EMT.HEAD == 'H5' then
|
||||
elseif EMT.HEAD == 'H5' or EMT.HEAD == 'H6' then
|
||||
local Len = EMT.TLEN + AngTr1Len
|
||||
local LenAux = MillOffs + AngTr1Offs
|
||||
local LenRef = MillOffs
|
||||
local vtAux = EgtGetCalcAuxDirFromAngles( EMT.R1, EMT.R2)
|
||||
vtE = Vector3d( EMT.EXTR) * Len + vtAux * LenAux - Z_AX() * LenRef
|
||||
elseif EMT.HEAD == 'H7' then
|
||||
local Len = EMT.TLEN + AngTrBHLen
|
||||
local LenAux = MillOffs + AngTrBHOffs
|
||||
local LenRef = MillOffs
|
||||
local vtAux = EgtGetCalcAuxDirFromAngles( EMT.R1, EMT.R2)
|
||||
vtE = Vector3d( EMT.EXTR) * Len + vtAux * LenAux - Z_AX() * LenRef
|
||||
else
|
||||
EmtSetLastError( 1211, 'Head not allowed ' .. EMT.HEAD)
|
||||
end
|
||||
@@ -1674,7 +1685,7 @@ end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function AdjustToolKinematic()
|
||||
if EMT.HEAD == 'H1' or EMT.HEAD == 'H3' then
|
||||
if EMT.HEAD == 'H1' or EMT.HEAD == 'H3' or EMT.HEAD == 'H7' then
|
||||
return '01'
|
||||
elseif EMT.HEAD == 'H2' then
|
||||
return '02'
|
||||
|
||||
+38
-15
@@ -105,6 +105,7 @@ function OnSimulStart()
|
||||
AddToCollisionCheck( 'B', 'COLLISION', EMT.COLLOBJ)
|
||||
AddToCollisionCheck( 'C', 'COLLISION', EMT.COLLOBJ)
|
||||
AddToCollisionCheck( 'H5', 'COLLISION', EMT.COLLOBJ)
|
||||
AddToCollisionCheck( 'H6', 'COLLISION', EMT.COLLOBJ)
|
||||
AddToolToCollisionCheck( 'H2', 1, EMT.COLLOBJ)
|
||||
AddToolHolderToCollisionCheck( 'H2', 1, EMT.COLLOBJ)
|
||||
DumpCollisionCheck( EMT.COLLOBJ, 'Collision Objects :', 4)
|
||||
@@ -152,7 +153,8 @@ function OnSimulDispositionStarting()
|
||||
EmtUnlinkAllRawPartsFromGroups()
|
||||
if EMT.PHASE > 1 then
|
||||
if IsStartOrRestPhase( EMT.PHASE) then
|
||||
EgtSetAxisPos( 'T', LoadT)
|
||||
local ParkT = GetParkT()
|
||||
EgtSetAxisPos( 'T', ParkT)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -179,7 +181,7 @@ function OnSimulDispositionStart()
|
||||
if sTool and nTlen < LONG_TOOL_MINLEN then
|
||||
EMT.TOOL_1 = sTool
|
||||
else
|
||||
EMT.TOOL_1 = GetDefaultToolName()
|
||||
EMT.TOOL_1 = GetDefaultToolName()
|
||||
end
|
||||
EgtLoadTool( 'H1', 1, EMT.TOOL_1)
|
||||
EMT.TCPOS_1 = GetToolTcPos( EMT.TOOL_1)
|
||||
@@ -189,7 +191,7 @@ function OnSimulDispositionStart()
|
||||
EMT.VMILL = {}
|
||||
if not EMT.SIM1ST and EgtGetInfo( EgtGetCurrMachGroup(), 'Vm', 'b') then
|
||||
local nLastOrd = GetPhaseOrd( EgtGetPhaseCount())
|
||||
local nPartRawId = EgtGetFirstRawPart()
|
||||
local nPartRawId = EgtGetFirstRawPart()
|
||||
while nPartRawId do
|
||||
-- se è lo scarto finale tagliato a pezzi, esco
|
||||
local nRawOrd = EgtGetInfo( nPartRawId, 'ORD', 'i')
|
||||
@@ -358,6 +360,8 @@ function OnSimulDispositionStart()
|
||||
EgtOutText( 'Barra non ruotata')
|
||||
end
|
||||
end
|
||||
-- verifico posizione di carico
|
||||
local ParkT = GetParkT()
|
||||
-- indice primo grezzo della fase
|
||||
local nOrd = GetPhaseOrd( EMT.PHASE)
|
||||
-- ricerco vettore movimento per i successivi
|
||||
@@ -365,7 +369,7 @@ function OnSimulDispositionStart()
|
||||
local nRawId = EgtGetFirstRawPart()
|
||||
while nRawId do
|
||||
if EgtGetInfo( nRawId, 'ORD', 'i') == nOrd + 1 then
|
||||
vtMove = Vector3d( - LoadT - EgtGetRawPartBBox( nRawId):getMax():getX(), 0, 0)
|
||||
vtMove = Vector3d( - ParkT - EgtGetRawPartBBox( nRawId):getMax():getX(), 0, 0)
|
||||
break
|
||||
end
|
||||
nRawId = EgtGetNextRawPart( nRawId)
|
||||
@@ -386,6 +390,8 @@ function OnSimulDispositionStart()
|
||||
end
|
||||
-- altrimenti fase finale, aggancio primo grezzo alla tavola e gli altri in posizione carico al carro Y
|
||||
else
|
||||
-- verifico posizione di carico
|
||||
local ParkT = GetParkT()
|
||||
-- indice primo grezzo della fase
|
||||
local nOrd = GetPhaseOrd( EMT.PHASE)
|
||||
-- ricerco vettore movimento per i successivi
|
||||
@@ -393,7 +399,7 @@ function OnSimulDispositionStart()
|
||||
local nRawId = EgtGetFirstRawPart()
|
||||
while nRawId do
|
||||
if EgtGetInfo( nRawId, 'ORD', 'i') == nOrd + 1 then
|
||||
vtMove = Vector3d( - LoadT - EgtGetRawPartBBox( nRawId):getMax():getX(), 0, 0)
|
||||
vtMove = Vector3d( - ParkT - EgtGetRawPartBBox( nRawId):getMax():getX(), 0, 0)
|
||||
break
|
||||
end
|
||||
nRawId = EgtGetNextRawPart( nRawId)
|
||||
@@ -477,8 +483,8 @@ function OnSimulToolSelect( dPosA)
|
||||
EMT.A1n = 'Y'
|
||||
EMT.A2n = 'V'
|
||||
end
|
||||
-- carico utensile se non lama su sua testa o dummy
|
||||
if EMT.HEAD ~= 'H2' and EMT.HEAD ~= 'H4' then
|
||||
-- carico utensile se non lama
|
||||
if EMT.HEAD ~= 'H2' then
|
||||
-- se sega a catena, imposto subito angolo scelto per asse virtuale A
|
||||
if EMT.HEAD == 'H3' then
|
||||
if not dPosA then
|
||||
@@ -506,6 +512,9 @@ function OnSimulToolSelect( dPosA)
|
||||
EgtSetAxisPos( 'C', EgtIf( BD.RIGHT_LOAD, 180, 0))
|
||||
end
|
||||
EgtSetAxisPos( 'B', 0)
|
||||
-- se aggregato per fresa tipo blockhaus
|
||||
elseif EMT.HEAD == 'H7' then
|
||||
EgtSetAxisPos( 'C', EgtIf( BD.RIGHT_LOAD, 180, 0))
|
||||
end
|
||||
-- se punta lunga
|
||||
if EMT.TOTLEN > LONG_TOOL_MINLEN then
|
||||
@@ -529,9 +538,9 @@ function OnSimulToolDeselect()
|
||||
-- se prossimo utensile non definito, è disposizione ed esco
|
||||
if EMT.NEXTTOOL == '' then return end
|
||||
-- se cambia uscita su rinvio non devo fare alcunché
|
||||
if EMT.HEAD == 'H5' and EMT.NEXTHEAD == 'H5' then return end
|
||||
if ( EMT.HEAD == 'H5' and EMT.NEXTHEAD == 'H5') or ( EMT.HEAD == 'H6' and EMT.NEXTHEAD == 'H6') then return end
|
||||
-- se sega a catena o rinvio o punta lunga o utensile di grosso diametro, devo cambiare
|
||||
if EMT.HEAD == 'H3' or EMT.HEAD == 'H5' or ( EMT.HEAD == 'H1' and ( EMT.TOTLEN > LONG_TOOL_MINLEN or EMT.TOTDIAM > BIG_TOOL_DIAM)) then
|
||||
if EMT.HEAD == 'H3' or EMT.HEAD == 'H5' or EMT.HEAD == 'H6' or EMT.HEAD == 'H7' or ( EMT.HEAD == 'H1' and ( EMT.TOTLEN > LONG_TOOL_MINLEN or EMT.TOTDIAM > BIG_TOOL_DIAM)) then
|
||||
EgtOutText( 'Tool change in progress...')
|
||||
-- movimento scarico sega a catena
|
||||
if EMT.HEAD == 'H3' then
|
||||
@@ -547,9 +556,13 @@ function OnSimulToolDeselect()
|
||||
end
|
||||
SimulMoveAxis( 'X', 0, MCH_SIM_STEP.RAPID)
|
||||
-- movimento scarico rinvio
|
||||
elseif EMT.HEAD == 'H5' then
|
||||
elseif EMT.HEAD == 'H5' or EMT.HEAD == 'H6' then
|
||||
SimulMoveAxes( 'B', 0, MCH_SIM_STEP.COLLROT, 'C', -90, MCH_SIM_STEP.COLLROT)
|
||||
SimulMoveAxis( 'X', 0, MCH_SIM_STEP.RAPID)
|
||||
-- movimento scarico aggregato BlockHaus
|
||||
elseif EMT.HEAD == 'H7' then
|
||||
SimulMoveAxis( 'X', 0, MCH_SIM_STEP.RAPID)
|
||||
SimulMoveAxes( 'B', 90, MCH_SIM_STEP.COLLROT, 'C', -90, MCH_SIM_STEP.COLLROT)
|
||||
-- movimento scarico punta lunga su T111
|
||||
elseif EMT.TOTLEN > LONG_TOOL_MINLEN then
|
||||
-- se su cambio utensile T111
|
||||
@@ -574,7 +587,7 @@ function OnSimulToolDeselect()
|
||||
EgtSetMode( EgtGetHeadId( EMT.HEAD), GDB_MD.HIDDEN)
|
||||
ShowToolInTcPos( EMT.TCPOS_1, true)
|
||||
-- movimento per carico utensile
|
||||
if EMT.NEXTHEAD ~= 'H3' and EMT.NEXTHEAD ~= 'H5' then
|
||||
if EMT.NEXTHEAD ~= 'H3' and EMT.NEXTHEAD ~= 'H5' and EMT.NEXTHEAD ~= 'H6' then
|
||||
SimulMoveAxes( 'B', 90, MCH_SIM_STEP.RAPROT, 'C', EgtIf( BD.RIGHT_LOAD, 90, -90), MCH_SIM_STEP.RAPROT)
|
||||
else
|
||||
SimulMoveAxes( 'B', 0, MCH_SIM_STEP.RAPROT, 'C', EgtIf( BD.RIGHT_LOAD, 90, -90), MCH_SIM_STEP.RAPROT)
|
||||
@@ -589,8 +602,8 @@ function OnSimulToolDeselect()
|
||||
ShowToolInTcPos( EMT.TCPOS_1, false)
|
||||
end
|
||||
EgtOutText( '')
|
||||
-- deposito utensile se prossimo non lama su sua testa o dummy
|
||||
elseif EMT.NEXTHEAD ~= 'H2' and EMT.NEXTHEAD ~= 'H4' then
|
||||
-- deposito utensile se prossimo non lama su sua testa
|
||||
elseif EMT.NEXTHEAD ~= 'H2' then
|
||||
if EMT.NEXTTOOL ~= EMT.TOOL_1 then
|
||||
EgtOutText( 'Tool change in progress...')
|
||||
-- simulo movimento
|
||||
@@ -600,7 +613,7 @@ function OnSimulToolDeselect()
|
||||
EgtPause( 100)
|
||||
ShowToolInTcPos( EMT.TCPOS_1, true)
|
||||
-- se segue sega a catena
|
||||
if EMT.NEXTHEAD == 'H3' or EMT.NEXTHEAD == 'H5' then
|
||||
if EMT.NEXTHEAD == 'H3' or EMT.NEXTHEAD == 'H5' or EMT.NEXTHEAD == 'H6' then
|
||||
-- se non lama, nascondo l'utensile corrente
|
||||
if EMT.HEAD ~= 'H2' then
|
||||
EgtSetStatus( EgtGetHeadId( EMT.HEAD), GDB_ST.OFF)
|
||||
@@ -922,7 +935,7 @@ function ExecUnloading()
|
||||
local nLayId = EgtGroup( nVmGrpId, EgtGetGlobFrame( vMillId))
|
||||
EgtRelocate( vMillId, nLayId)
|
||||
local vtMove = Vector3d( 0, EgtIf( BD.RIGHT_LOAD, 450, -450), 0)
|
||||
if EMT.FALL then vtMove = Vector3d( -500, 0, EgtIf( BD.RIGHT_LOAD, 750, -750)) end
|
||||
if EMT.FALL then vtMove = Vector3d( 0, EgtIf( BD.RIGHT_LOAD, 500, -500), -750) end
|
||||
EgtMove( nLayId, vtMove, GDB_RT.GLOB)
|
||||
EgtSetLevel( vMillId, GDB_LV.USER)
|
||||
-- aggiungo gli spigoli
|
||||
@@ -1566,6 +1579,16 @@ function GetPhaseRot( nPhase)
|
||||
return ( EgtGetInfo( EgtGetPhaseDisposition( nPhase) or GDB_ID.NULL, 'ROT', 'i') or 0)
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function GetParkT()
|
||||
local dTmp = EgtGetInfo( EMT.DISPID, 'TPOS', 'd') or EgtGetInfo( EMT.DISPID, 'TPARK', 'd')
|
||||
if dTmp then
|
||||
return dTmp
|
||||
else
|
||||
return LoadT
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- *** END GENERAL ***
|
||||
---------------------------------------------------------------------
|
||||
|
||||
+80
-54
@@ -638,13 +638,15 @@ function SpecApplyPath( bPreSplit, bSplitting, bPreCut, bCutting, bUnload, bPreR
|
||||
-- Calcolo dell'ingombro della lavorazione
|
||||
local dDistFront, dDistBack = SpecialCalcMachiningEncumbrance( EMC.MCHID, bPreCut)
|
||||
if not dDistFront or not dDistBack then return end
|
||||
local dMaxLenLeft = 0
|
||||
if bPreSplit or bSplitting then
|
||||
local dDistF = SpecialCalcPhaseEncumbrance( EMC.PHASE + 1)
|
||||
local dDistF, dDistB, dMaxLF = SpecialCalcPhaseEncumbrance( EMC.PHASE + 1)
|
||||
dDistFront = min( dDistFront, dDistF)
|
||||
local dNextHOVM = EgtGetInfo( EgtGetNextRawPart( nCurrRawId) or GDB_ID.NULL, 'HOVM', 'd') or 0
|
||||
local dBackOther = b3Tot:getDimX() - b3Raw:getDimX() - MinOther - dNextHOVM
|
||||
EgtOutLog( 'DistBack='..EgtNumToString( dDistBack)..' OtherBack='..EgtNumToString( dBackOther), 3)
|
||||
dDistBack = min( dDistBack, dBackOther)
|
||||
if bSplitting then dMaxLenLeft = dMaxLF end
|
||||
elseif bPreCut or bCutting then
|
||||
local dDistF = SpecialCalcPhaseEncumbrance( EMC.PHASE + 1)
|
||||
dDistFront = min( dDistFront, dDistF)
|
||||
@@ -709,8 +711,9 @@ function SpecApplyPath( bPreSplit, bSplitting, bPreCut, bCutting, bUnload, bPreR
|
||||
return false
|
||||
end
|
||||
-- eseguo la separazione ( standard o di pezzo ruotato)
|
||||
EgtOutLog( 'MaxLenLeft=' .. EgtNumToString( dMaxLenLeft, 1), 1)
|
||||
if not IsMid2Phase( EMC.PHASE + 1) then
|
||||
vCmd = SpecCalcSplit( b3Raw:getDimX())
|
||||
vCmd = SpecCalcSplit( b3Raw:getDimX(), dMaxLenLeft)
|
||||
else
|
||||
vCmd = SpecCalcSplitRot( b3Raw:getDimX())
|
||||
end
|
||||
@@ -823,6 +826,7 @@ function SpecialCalcPhaseEncumbrance( nPhase)
|
||||
-- Deve essere la fase finale di lavorazione di un pezzo (già staccato dal resto della trave)
|
||||
local dDistFront = EMC.LB
|
||||
local dDistBack = EMC.LB
|
||||
local dMaxLenLeft = 0
|
||||
-- Salvo lavorazione e utensile correnti, per ripristinarli alla fine
|
||||
local nOrigMchId = EgtGetCurrMachining()
|
||||
local sOrigTool = EgtTdbGetCurrToolParam( MCH_TP.NAME)
|
||||
@@ -847,6 +851,9 @@ function SpecialCalcPhaseEncumbrance( nPhase)
|
||||
if dDistF and dDistB then
|
||||
dDistFront = min( dDistFront, dDistF)
|
||||
dDistBack = min( dDistBack, dDistB)
|
||||
local dMaxLenL = EMC.LR - dDistF
|
||||
EgtOutLog( ' MaxLenLeft = ' .. EgtNumToString( dMaxLenL, 1), 3)
|
||||
dMaxLenLeft = max( dMaxLenLeft, dMaxLenL)
|
||||
end
|
||||
nMchId = EgtGetNextActiveOperation( nMchId)
|
||||
end
|
||||
@@ -855,7 +862,7 @@ function SpecialCalcPhaseEncumbrance( nPhase)
|
||||
if sOrigTool then EgtTdbSetCurrTool( sOrigTool) end
|
||||
if sOrigTool and sOrigHead and nOrigExit then EgtSetCalcTool( sOrigTool, sOrigHead, nOrigExit) end
|
||||
-- Restituisco gli ingombri trovati
|
||||
return dDistFront, dDistBack
|
||||
return dDistFront, dDistBack, dMaxLenLeft
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
@@ -1028,9 +1035,9 @@ function SpecCalcEncumbrance( vtTool, vtArm, ptMin, ptMax, bSaw, bChain, dTLen,
|
||||
elseif ( vtTool:getX() > 0.5) then
|
||||
dHeadFront = 450
|
||||
end
|
||||
if vtTool:getX() > 0.25 then
|
||||
if vtTool:getX() > 0.25 then
|
||||
dHeadFront = dHeadFront + max( dTLen - 130, 0) * vtTool:getX()
|
||||
elseif vtTool:getX() > 0 then
|
||||
elseif vtTool:getX() > 0 then
|
||||
dHeadFront = dHeadFront + ( dTLen + 180) * vtTool:getX()
|
||||
end
|
||||
if vtTool:getX() < -0.866 then
|
||||
@@ -1042,7 +1049,7 @@ function SpecCalcEncumbrance( vtTool, vtArm, ptMin, ptMax, bSaw, bChain, dTLen,
|
||||
if vtArm:getX() > 0.259 then
|
||||
dHeadFront = 510
|
||||
else
|
||||
dHeadFront = EgtIf( vtTool:getZ() > 0.966, 160, 280)
|
||||
dHeadFront = EgtIf( vtTool:getZ() > 0.966, 170, 280)
|
||||
end
|
||||
end
|
||||
-- per fresature longitudinali con utensile di fianco
|
||||
@@ -1214,6 +1221,9 @@ function SpecCalcCarriages( dDistFront, dDistBack, bFixedDelta, bFixedPos)
|
||||
end
|
||||
local dDistBackEff = min( dDistBack, EMC.LB - MyMinOther - EMC.HCING - EMC.HOVM)
|
||||
|
||||
-- se primo scambio
|
||||
local MyMinY = EgtIf( EMC.CNT == 1, MinY + AGG_LOAD, MinY)
|
||||
|
||||
EgtOutLog( ' Dist/Min : Back=' .. EgtNumToString( dDistBackEff, 1) .. '/' .. EgtNumToString( MinBackJoin, 1) ..
|
||||
' Front=' .. EgtNumToString( dDistFrontEff, 1) .. '/' .. EgtNumToString( MinFrontJoin, 1) ..
|
||||
' Fixed : Delta=' .. EgtIf( bFixedDelta, 'T', 'F') .. ' Pos=' .. EgtIf( bFixedPos, 'T', 'F'), 3)
|
||||
@@ -1233,7 +1243,7 @@ function SpecCalcCarriages( dDistFront, dDistBack, bFixedDelta, bFixedPos)
|
||||
if dDistFrontEff < MinFrontJoin and dDistBackEff > MinBackJoin - GEO.EPS_SMALL then
|
||||
-- se Y non era in presa, mi ricalcolo la posizione
|
||||
if not dYDelta then
|
||||
dYDelta = dVDelta + ( MinY - MaxV)
|
||||
dYDelta = dVDelta + ( MyMinY - MaxV)
|
||||
end
|
||||
dNewYDelta = EMC.LB - dDistBackEff
|
||||
-- verifico se posso lasciare la morsa in posizione
|
||||
@@ -1250,11 +1260,11 @@ function SpecCalcCarriages( dDistFront, dDistBack, bFixedDelta, bFixedPos)
|
||||
elseif dDistBackEff > MinBackJoin - GEO.EPS_SMALL and dDistFrontEff > MinFrontJoin - GEO.EPS_SMALL then
|
||||
-- se Y non era in presa, mi ricalcolo la posizione
|
||||
if not dYDelta then
|
||||
dYDelta = dVDelta + ( MinY - MaxV)
|
||||
dYDelta = dVDelta + ( MyMinY - MaxV)
|
||||
end
|
||||
-- se V non era in presa, mi ricalcolo la posizione
|
||||
if not dVDelta then
|
||||
dVDelta = dYDelta - ( MinY - MaxV)
|
||||
dVDelta = dYDelta - ( MyMinY - MaxV)
|
||||
end
|
||||
|
||||
dNewYDelta = EMC.LB - dDistBackEff
|
||||
@@ -1284,12 +1294,17 @@ function SpecCalcCarriages( dDistFront, dDistBack, bFixedDelta, bFixedPos)
|
||||
elseif dDistBackEff < MinBackJoin and dDistFrontEff > MinFrontJoin - GEO.EPS_SMALL then
|
||||
-- se V non era in presa, mi ricalcolo la posizione
|
||||
if not dVDelta then
|
||||
dVDelta = dYDelta - ( MinY - MaxV)
|
||||
dVDelta = dYDelta - ( MyMinY - MaxV)
|
||||
end
|
||||
dNewVDelta = dDistFrontEff
|
||||
-- verifico se posso lasciare la morsa in posizione
|
||||
local dVDeltaTol = GetDeltaTol( dNewVDelta, EMC.TCING, EMC.HCING, EMC.HOVM, 'V', bFixedDelta)
|
||||
local bVDeltaS = ( dNewVDelta > dVDelta + dVDeltaTol or dNewVDelta < dVDelta - DELTA_SIC)
|
||||
local bVDeltaS
|
||||
if EMC.YDELTA == nil and EMC.YDELTANEXT == nil then
|
||||
bVDeltaS = (( dNewVDelta > dVDelta + dVDeltaTol and not bFixedPos) or dNewVDelta < dVDelta - DELTA_SIC)
|
||||
else
|
||||
bVDeltaS = ( dNewVDelta > dVDelta + dVDeltaTol or dNewVDelta < dVDelta - DELTA_SIC)
|
||||
end
|
||||
-- reimposto i delta finali in caso di spostamenti richiesti significativi, tenuto conto delle tolleranze
|
||||
if bVDeltaS then
|
||||
dNewVDelta = dNewVDelta - dVDeltaTol/2
|
||||
@@ -1321,10 +1336,17 @@ function SpecCalcCarriages( dDistFront, dDistBack, bFixedDelta, bFixedPos)
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function SpecCalcSplit( dLenRaw)
|
||||
function SpecCalcSplit( dLenRaw, dMaxLenLeft)
|
||||
local vCmd = {}
|
||||
EgtOutLog( ' *[S]', 1)
|
||||
table.insert( vCmd, { 0, EgtIf( EMC.VDELTA, 'Split', 'Fall')})
|
||||
local bSplit = ( EMC.VDELTA ~= nil)
|
||||
local ParkT = LoadT
|
||||
if bSplit then
|
||||
if dMaxLenLeft + 100 > LoadT then
|
||||
ParkT = dMaxLenLeft + 300
|
||||
end
|
||||
end
|
||||
table.insert( vCmd, { 0, EgtIf( bSplit, 'Split', 'Fall')})
|
||||
-- determino i grezzi da agganciare al carrello Y (sono quelli presenti nella fase successiva dispari)
|
||||
local nNextOddPhase = GetNextStartOrRestPhase( EMC.PHASE)
|
||||
local nRawId = EgtGetFirstRawPart()
|
||||
@@ -1336,20 +1358,26 @@ function SpecCalcSplit( dLenRaw)
|
||||
end
|
||||
-- riporto il carrello Y al carico con il resto della trave
|
||||
local dLDelta = EMC.YDELTA - dLenRaw
|
||||
table.insert( vCmd, { 1, 'Y', LoadT + dLDelta})
|
||||
table.insert( vCmd, { 1, 'Y', ParkT + dLDelta})
|
||||
table.insert( vCmd, { 21, 0, EMC.VDELTA or 0})
|
||||
-- imposto subito Y non più attaccato al trave in lavoro
|
||||
EMC.YDELTA = nil
|
||||
-- salvo posizione carrello Y in disposizione del pezzo dopo split
|
||||
local PostDispId = EgtGetPhaseDisposition( EMC.PHASE + 1)
|
||||
if PostDispId then
|
||||
EgtSetInfo( PostDispId, 'YPOS', LoadT + dLDelta)
|
||||
if not bSplit then
|
||||
EgtSetInfo( PostDispId, 'TPOS', ParkT)
|
||||
else
|
||||
EgtRemoveInfo( PostDispId, 'TPOS')
|
||||
EgtSetInfo( PostDispId, 'TPARK', ParkT)
|
||||
end
|
||||
EgtSetInfo( PostDispId, 'YPOS', ParkT + dLDelta)
|
||||
end
|
||||
-- salvo posizione grezzo rimasto e posizione carrello Y nella disposizione iniziale del pezzo succ (prossima fase dispari)
|
||||
local NextDispId = EgtGetPhaseDisposition( nNextOddPhase)
|
||||
if NextDispId then
|
||||
EgtSetInfo( NextDispId, 'TPOS', LoadT)
|
||||
EgtSetInfo( NextDispId, 'YPOS', LoadT + dLDelta)
|
||||
EgtSetInfo( NextDispId, 'TPOS', ParkT)
|
||||
EgtSetInfo( NextDispId, 'YPOS', ParkT + dLDelta)
|
||||
end
|
||||
return vCmd
|
||||
end
|
||||
@@ -1489,6 +1517,17 @@ function SpecCalcPreRot()
|
||||
return vCmd
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function CalcCharStatus( sType, dDelta)
|
||||
-- se per carrello Y
|
||||
if sType == 'Y' then
|
||||
return EgtIf( EMC.LB - dDelta < LenToPress, 1, 2)
|
||||
-- altrimenti per carrello V
|
||||
else
|
||||
return EgtIf( dDelta < LenToPress, 1, 2)
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF, dVDeltaF, bFixedDelta, bFixedPos)
|
||||
local dYPosA, dVPosA, dTPosA
|
||||
@@ -1525,6 +1564,14 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
||||
local bZmaxOk = EnsureZmax( bZmaxOk, vCmd)
|
||||
end
|
||||
|
||||
-- ribadisco pinzaggio
|
||||
if EMC.YDELTA then
|
||||
table.insert( vCmd, { 11, 1})
|
||||
end
|
||||
if EMC.VDELTA then
|
||||
table.insert( vCmd, { 12, 1})
|
||||
end
|
||||
|
||||
-- reset contatore primo riposizionamento con compensazione lettura laser
|
||||
EMC.CNT = nil
|
||||
|
||||
@@ -1556,7 +1603,7 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
||||
-- * deve effettivamente spostarsi
|
||||
-- * non si arriva da gestione passo del pellegrino
|
||||
-- * se riesce a raggiungere la posizione con le corse a disposizione per come sono posizionate le morse attualmente
|
||||
if ( dYDeltaI - dVDeltaF) >= MyMinY - MaxV and abs( dVDeltaF - dVDeltaI) > 10 * GEO.EPS_SMALL and not EMC.PILGRIMSTEP and
|
||||
if ( dYDeltaI - dVDeltaF) + 10 * GEO.EPS_SMALL >= MyMinY - MaxV and abs( dVDeltaF - dVDeltaI) > 10 * GEO.EPS_SMALL and not EMC.PILGRIMSTEP and
|
||||
( dVDeltaF - dVDeltaI > MinV - dVPosI + MyMinY - dYPosI) then
|
||||
table.insert( vCmd, { 0, 'Direct-V-Y'})
|
||||
-- se l'altra morsa non era in presa, vado a pinzare il pezzo
|
||||
@@ -1615,7 +1662,7 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
||||
dTPosI = dTPosA
|
||||
|
||||
-- blocco la morsa
|
||||
table.insert( vCmd, { 12, 1})
|
||||
table.insert( vCmd, { 12, CalcCharStatus( 'V', dVDeltaF)})
|
||||
|
||||
-- imposto i nuovi parametri di aggancio
|
||||
if EMC.YDELTANEXT and EMC.VDELTANEXT then
|
||||
@@ -1626,7 +1673,7 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
||||
dYPosA = dTPosF + dYDeltaF
|
||||
dVPosA = dTPosF + dVDeltaF
|
||||
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
|
||||
table.insert( vCmd, { 11, 1})
|
||||
table.insert( vCmd, { 11, CalcCharStatus( 'Y', dYDeltaF)})
|
||||
-- la morsa al carico è adesso in posizione
|
||||
dYDeltaI = dYDeltaF
|
||||
end
|
||||
@@ -1638,7 +1685,7 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
||||
dTPosA = -( dYPosA + dVDeltaF)
|
||||
dVPosA = dTPosA + dVDeltaF
|
||||
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
|
||||
table.insert( vCmd, { 11, 1})
|
||||
table.insert( vCmd, { 11, CalcCharStatus( 'Y', dYDeltaF)})
|
||||
-- la morsa al carico è adesso in posizione
|
||||
dYDeltaI = dYDeltaF
|
||||
end
|
||||
@@ -1661,7 +1708,7 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
||||
-- * deve effettivamente spostarsi
|
||||
-- * non si arriva da gestione passo del pellegrino
|
||||
-- * se riesce a raggiungere la posizione con le corse a disposizione per come sono posizionate le morse attualmente
|
||||
elseif ( dYDeltaF - dVDeltaI) >= MyMinY - MaxV and abs( dYDeltaF - dYDeltaI) > 10 * GEO.EPS_SMALL and not EMC.PILGRIMSTEP and
|
||||
elseif ( dYDeltaF - dVDeltaI) + 10 * GEO.EPS_SMALL >= MyMinY - MaxV and abs( dYDeltaF - dYDeltaI) > 10 * GEO.EPS_SMALL and not EMC.PILGRIMSTEP and
|
||||
( dYDeltaF - dYDeltaI < MaxY - dYPosI + MaxV - dVPosI) then
|
||||
table.insert( vCmd, { 0, 'Direct-Y-V'})
|
||||
-- se l'altra morsa non era in presa, vado a pinzare il pezzo
|
||||
@@ -1723,7 +1770,7 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
||||
dTPosI = dTPosA
|
||||
|
||||
-- blocco la morsa
|
||||
table.insert( vCmd, { 11, 1})
|
||||
table.insert( vCmd, { 11, CalcCharStatus( 'Y', dYDeltaF)})
|
||||
|
||||
-- imposto i nuovi parametri di aggancio
|
||||
if EMC.YDELTANEXT and EMC.VDELTANEXT then
|
||||
@@ -1733,7 +1780,7 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
||||
dYPosA = dTPosF + dYDeltaF
|
||||
dVPosA = dTPosF + dVDeltaF
|
||||
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
|
||||
table.insert( vCmd, { 12, 1})
|
||||
table.insert( vCmd, { 12, CalcCharStatus( 'V', dVDeltaF)})
|
||||
-- la morsa al carico è adesso in posizione
|
||||
dVDeltaI = dVDeltaF
|
||||
end
|
||||
@@ -1745,7 +1792,7 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
||||
dTPosA = dVPosA - dVDeltaF
|
||||
dYPosA = dTPosA + dYDeltaF
|
||||
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
|
||||
table.insert( vCmd, { 12, 1})
|
||||
table.insert( vCmd, { 12, CalcCharStatus( 'V', dVDeltaF)})
|
||||
-- la morsa al carico è adesso in posizione
|
||||
dVDeltaI = dVDeltaF
|
||||
end
|
||||
@@ -1858,7 +1905,7 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
||||
dTPosA = dTPosI - dVPosI + MinV
|
||||
dYPosA = dYDeltaF + dTPosA
|
||||
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
|
||||
table.insert( vCmd, { 11, 1})
|
||||
table.insert( vCmd, { 11, CalcCharStatus( 'Y', dYDeltaF)})
|
||||
table.insert( vCmd, { 12, 0})
|
||||
dTPosI = dTPosA
|
||||
EMC.YDELTA = dYDeltaF
|
||||
@@ -1875,7 +1922,7 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
||||
dVPosA = dTPosI + dVDeltaI - dTotMove
|
||||
dTPosA = dTPosI - dTotMove
|
||||
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
|
||||
table.insert( vCmd, { 11, 1})
|
||||
table.insert( vCmd, { 11, CalcCharStatus( 'Y', dYDeltaF)})
|
||||
table.insert( vCmd, { 12, 0})
|
||||
|
||||
-- aggiorno nuova posizione della morsa al carico dopo riposizionamento
|
||||
@@ -1903,12 +1950,12 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
||||
|
||||
-- imposto i nuovi parametri di aggancio
|
||||
if EMC.YDELTANEXT and EMC.VDELTANEXT then
|
||||
table.insert( vCmd, { 12, 1})
|
||||
table.insert( vCmd, { 12, CalcCharStatus( 'V', dVDeltaF)})
|
||||
table.insert( vCmd, { 21, dYDeltaF, dVDeltaF})
|
||||
elseif EMC.YDELTANEXT then
|
||||
table.insert( vCmd, { 21, dYDeltaF, 0})
|
||||
else
|
||||
table.insert( vCmd, { 12, 1})
|
||||
table.insert( vCmd, { 12, CalcCharStatus( 'V', dVDeltaF)})
|
||||
table.insert( vCmd, { 11, 0})
|
||||
-- sposto il carrello Y in parcheggio
|
||||
table.insert( vCmd, { 1, 'Y', ParkY})
|
||||
@@ -1964,7 +2011,7 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
||||
dTPosA = dTPosI + ( MaxY - dYPosI)
|
||||
dVPosA = dVDeltaF + dTPosA
|
||||
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
|
||||
table.insert( vCmd, { 12, 1})
|
||||
table.insert( vCmd, { 12, CalcCharStatus( 'V', dVDeltaF)})
|
||||
table.insert( vCmd, { 11, 0})
|
||||
dTPosI = dTPosA
|
||||
EMC.YDELTA = dYDeltaI
|
||||
@@ -1981,7 +2028,7 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
||||
dVPosA = dTPosI + dVDeltaI - dTotMove
|
||||
dTPosA = dTPosI + dTotMove
|
||||
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
|
||||
table.insert( vCmd, { 12, 1})
|
||||
table.insert( vCmd, { 12, CalcCharStatus( 'V', dVDeltaF)})
|
||||
table.insert( vCmd, { 11, 0})
|
||||
|
||||
-- aggiorno nuova posizione della morsa allo scarico dopo riposizionamento
|
||||
@@ -2007,22 +2054,12 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
||||
dYDeltaI = dYDeltaF
|
||||
end
|
||||
|
||||
-- sistemo apertura morse
|
||||
if EMC.YDELTANEXT then
|
||||
table.insert( vCmd, { 11, 1})
|
||||
end
|
||||
if not EMC.VDELTANEXT then
|
||||
table.insert( vCmd, { 12, 0})
|
||||
-- sposto il carrello Y in parcheggio
|
||||
table.insert( vCmd, { 1, 'V', ParkV})
|
||||
end
|
||||
|
||||
-- imposto i nuovi parametri di aggancio
|
||||
if EMC.YDELTANEXT and EMC.VDELTANEXT then
|
||||
table.insert( vCmd, { 11, 1})
|
||||
table.insert( vCmd, { 11, CalcCharStatus( 'Y', dYDeltaF)})
|
||||
table.insert( vCmd, { 21, dYDeltaF, dVDeltaF})
|
||||
elseif EMC.YDELTANEXT then
|
||||
table.insert( vCmd, { 11, 1})
|
||||
table.insert( vCmd, { 11, CalcCharStatus( 'Y', dYDeltaF)})
|
||||
-- sposto il carrello Y in parcheggio
|
||||
table.insert( vCmd, { 12, 0})
|
||||
table.insert( vCmd, { 1, 'V', ParkV})
|
||||
@@ -2277,17 +2314,6 @@ function SpecAdjustCarriagesOLD( dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF, d
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function CalcCharStatus( sType, dDelta)
|
||||
-- se per carrello Y
|
||||
if sType == 'Y' then
|
||||
return EgtIf( EMC.LB - dDelta < LenToPress, 1, 2)
|
||||
-- altrimenti per carrello V
|
||||
else
|
||||
return EgtIf( dDelta < LenToPress, 1, 2)
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function GetCorseDisp( dCorsaYfc, dCorsaVfc, dDistN, sSide)
|
||||
local dRecTotn = min( dDistN, dCorsaYfc+ dCorsaVfc) -- recupero possibile al netto di dCorsa..TrA)
|
||||
|
||||
@@ -21,6 +21,11 @@ H1.1:MILL_NOTIP=MillNoTip.nge
|
||||
H1.1:SAW_FLAT=TcSaw.nge
|
||||
H2.1=Saw.nge
|
||||
H3.1=ChainSaw.nge
|
||||
H5.1=AngTransm.nge
|
||||
H5.2=AngTransm.nge
|
||||
H6.1=AngTransm.nge
|
||||
H6.2=AngTransm.nge
|
||||
H7.1=AngTransmBH.nge
|
||||
|
||||
[Machinings]
|
||||
Drilling=1
|
||||
@@ -46,6 +51,12 @@ H1=6608
|
||||
H2=6615
|
||||
; Chainsaw
|
||||
H3=6616
|
||||
; Angular transmission
|
||||
H5=6603
|
||||
; Angular transmission
|
||||
H6=6603
|
||||
; Angular transmission
|
||||
H7=6617
|
||||
|
||||
[SetUp]
|
||||
Default=Standard
|
||||
|
||||
+107
-53
@@ -3,48 +3,15 @@
|
||||
-- 2022/07/22 Ver.2.4g2 DS Modifiche per ribaltamento pezzo con molto scarto iniziale.
|
||||
-- 2023/01/16 Ver.2.5a1 DS/LM Modificata posizione home della testa H3.
|
||||
-- 2023/01/23 Ver.2.5a2 DS Allineamento con FAST (per problemi scorrimento carrelli rispetto a trave).In simulazione corretta visualizzazione Sega a catena.
|
||||
-- 2023/07/26 Ver.2.5g1 DS Per NUM aggiunta gestione rotazione in alto su pezzi alti (G101 EH1) come per TPA in versione 2.3f2.
|
||||
-- 2023/07/26 Ver.2.5g2 DS Per NUM tolta segnalazione errore rotazione a Zmax per pezzi alti non gestita (era su EMT.FLAG == 5).
|
||||
-- 2023/09/29 ver 2.5i1 In BeamData e mlde aggiunta la lettura di alcuni parametri da Ts3Data.
|
||||
-- 2024/01/17 Ver.2.6a1 DS Aggiunta gestione BlockHouse come in FAST.
|
||||
-- 2024/02/09 Ver 2.6b1 LM In BeamData aggiunta funzione GetBlockedAxis che sostituisce la GetChainSawBlockedAxis.
|
||||
-- 2024/02/22 Ver 2.6b2 LM In mlse corretto calcolo pinzaggio quando testa vicina.
|
||||
-- 2024/02/23 ver 2.6c1 Rimossa chiamata funzione EgtGetSourceDir
|
||||
-- Prima versione post common
|
||||
-- Allineamento con common ver. 2.6c3
|
||||
-- 2024/02/23 ver 2.6c2 Aggiornamento BeamData per visualizzazione in simulazione
|
||||
-- 2024/02/27 ver 2.6c3 Allineamento con common ver. 2.6c4. Aggiunto parametro 'SafeXRotAxes' per rotazione motosega con pezzi alti
|
||||
-- Parametro 'SecondSupport' gestito come intero
|
||||
-- 2024/02/29 ver 2.6c4 Allineamento con common ver. 2.6c4
|
||||
-- 2024/03/04 ver 2.6c5 Modificato log con nome macchina
|
||||
-- Allineamento con common ver. 2.6c6
|
||||
-- 2024/03/12 ver 2.6c6 Allineamento con common ver. 2.6c7
|
||||
-- Migliorie alla geometria macchina e suo caricamento
|
||||
-- 2024/03/28 ver 2.6d1 Allineamento con common ver. 2.6c8
|
||||
-- 2024/03/28 ver 2.6d2 Allineamento con common ver. 2.6d2
|
||||
-- 2024/04/30 ver 2.6e1 Allineamento con common ver. 2.6e1
|
||||
-- Aggiunta variabile WoodDensity per gestione WOOD_DENSITY
|
||||
-- 2024/05/06 ver 2.6e2 Allineamento con common ver. 2.6e2
|
||||
-- 2024/05/06 ver 2.6e3 Allineamento con common ver. 2.6e3
|
||||
-- Aggiunte variabili MinJoin(xx) per gestione MIN_JOIN_(xx)
|
||||
-- 2024/06/03 ver 2.6f1 Aggiunta funzione GetSetupInfo a BeamData per nuovo automatismo
|
||||
-- 2024/07/03 ver 2.6g1 Allineamento con common ver. 2.6g1
|
||||
-- 2024/09/02 ver 2.6i1 Allineamento con common ver. 2.6i1, Rimossi file "Common-"
|
||||
-- 2024/09/02 ver 2.6i2 Corretto file YML per compilare file "Common_"
|
||||
-- 2024/09/16 ver 2.6i3 Allineamento con common ver. 2.6i2
|
||||
-- 2024/09/18 ver 2.6i4 Modificato YAML per comunicazione versioni a LiMan. Aggiunta PP_NVER, versione macchina in formato numerico.
|
||||
-- 2024/09/24 ver 2.6i5 Allineamento con common ver. 2.6i4
|
||||
-- 2024/09/24 ver 2.6i6 Allineamento con common ver. 2.6i5
|
||||
-- 2024/09/25 ver 2.6i7 Allineamento con common ver. 2.6i6
|
||||
-- 2024/10/01 ver 2.6j1 Allineamento con common ver. 2.6j1
|
||||
-- 2024/10/03 AV ver 2.6j2 Allineamento con common ver. 2.6j2
|
||||
-- Aggiunta lettura parametro ROT90 da TS3 in BeamData
|
||||
-------------------------------------
|
||||
-- NOTE VERSIONI SUCCESSIVE IN GIT --
|
||||
-------------------------------------
|
||||
|
||||
require( 'EmtGenerator')
|
||||
EgtEnableDebug( false)
|
||||
|
||||
PP_VER = '2.6j2'
|
||||
PP_NVER = '2.6.10.2'
|
||||
PP_VER = '2.6l2_DEV5'
|
||||
PP_NVER = '2.6.12.2'
|
||||
MIN_MACH_VER = '2.5k1'
|
||||
MACH_NAME = 'Essetre-FASTrl'
|
||||
|
||||
@@ -90,6 +57,8 @@ SawCOffs = 0
|
||||
ChSawLen = 90.0
|
||||
AngTr1Offs = 170
|
||||
AngTr1Len = 150
|
||||
AngTrBHOffs = 154.5
|
||||
AngTrBHLen = 90
|
||||
TurnerOffs = 200.0
|
||||
DeltaTabY = -898.0
|
||||
DeltaTabZ = -1017.8 + MillOffs -- per TPA : -1013.3 + MillOffs -- per NUM : -838.4
|
||||
@@ -107,6 +76,7 @@ BeamHeightForFixRot = 9999 -- per abilitare assegnare 500
|
||||
CoeffVM = 0.5
|
||||
NewTopC = true
|
||||
SafeXRotAxes = -150
|
||||
AggreBlockHaus = false
|
||||
|
||||
-- leggo e aggiorno con parametri da BeamData
|
||||
if BD then
|
||||
@@ -127,14 +97,14 @@ if EgtExistsFile( sData) then
|
||||
if Machine then
|
||||
if Machine.Offsets then
|
||||
NumericalControl = EgtIf( Machine.Offsets.TIPO_CN == 0, 'NUM', 'TPA')
|
||||
if Machine.Offsets.MIN_X then MaxX = -Machine.Offsets.MIN_X end
|
||||
if Machine.Offsets.MAX_X then MinX = -Machine.Offsets.MAX_X end
|
||||
MinZ = Machine.Offsets.MIN_Z or MinZ
|
||||
MaxZ = Machine.Offsets.MAX_Z or MaxZ
|
||||
MinB = Machine.Offsets.MIN_B or MinB
|
||||
MaxB = Machine.Offsets.MAX_B or MaxB
|
||||
MinC = Machine.Offsets.MIN_C or MinC
|
||||
MaxC = Machine.Offsets.MAX_C or MaxC
|
||||
if Machine.Offsets.MAX_X then MinX = - Machine.Offsets.MAX_X end
|
||||
if Machine.Offsets.MIN_X then MaxX = - Machine.Offsets.MIN_X end
|
||||
if Machine.Offsets.MIN_Z then MinZ = Machine.Offsets.MIN_Z end
|
||||
if Machine.Offsets.MAX_Z then MaxZ = Machine.Offsets.MAX_Z end
|
||||
if Machine.Offsets.MIN_B then MinB = Machine.Offsets.MIN_B end
|
||||
if Machine.Offsets.MAX_B then MaxB = Machine.Offsets.MAX_B end
|
||||
if Machine.Offsets.MIN_C then MinC = Machine.Offsets.MIN_C end
|
||||
if Machine.Offsets.MAX_C then MaxC = Machine.Offsets.MAX_C end
|
||||
MinY = Machine.Offsets.MIN_Y or Machine.Offsets.MINY or MinY
|
||||
MaxY = Machine.Offsets.MAX_Y or Machine.Offsets.MAXY or MaxY
|
||||
ParkY = Machine.Offsets.PARKYY or ParkY
|
||||
@@ -151,6 +121,8 @@ if EgtExistsFile( sData) then
|
||||
AngTr1Len = Machine.Offsets.OFFSETX_RINV_1 or AngTr1Len
|
||||
--if Machine.Offsets.OFFSETZ_RINV_2 then AngTr2Offs = Machine.Offsets.OFFSETZ_RINV_2 - EgtIf( NumericalControl == 'TPA', MillOffs, 0) end
|
||||
--AngTr2Len = Machine.Offsets.OFFSETX_RINV_2 or AngTr2Len
|
||||
if Machine.Offsets.OFFSETZ_RINV_BH then AngTrBHOffs = Machine.Offsets.OFFSETZ_RINV_BH - EgtIf( NumericalControl == 'TPA', MillOffs, 0) end
|
||||
AngTrBHLen = Machine.Offsets.OFFSETX_RINV_BH or AngTrBHLen
|
||||
TurnerOffs = Machine.Offsets.OFFSETRIB or TurnerOffs
|
||||
if Machine.Offsets.OFFSETX then DeltaTabY = - Machine.Offsets.OFFSETX end
|
||||
if Machine.Offsets.OFFSETZ then DeltaTabZ = Machine.Offsets.OFFSETZ + EgtIf( NumericalControl == 'TPA', MillOffs, 0) end
|
||||
@@ -165,6 +137,8 @@ if EgtExistsFile( sData) then
|
||||
if Machine.Offsets.MIN_JOIN_LS then MinJoinLS = Machine.Offsets.MIN_JOIN_LS end
|
||||
if Machine.Offsets.MIN_JOIN_SL then MinJoinSL = Machine.Offsets.MIN_JOIN_SL end
|
||||
if Machine.Offsets.MIN_JOIN_LL then MinJoinLL = Machine.Offsets.MIN_JOIN_LL end
|
||||
if Machine.Offsets.NEWTOPC then NewTopC = ( Machine.Offsets.NEWTOPC == 1) end
|
||||
if Machine.Offsets.AGGRE_BH then AggreBlockHaus = ( Machine.Offsets.AGGRE_BH == 1) end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -302,6 +276,48 @@ EgtSetInfo( H3Id, 'ZMAXONROT', '1,5')
|
||||
if BeamHeightForFixRot < 1000 then
|
||||
EgtSetInfo( H3Id, 'ROTATZMAX', '1')
|
||||
end
|
||||
-- Eventuale rinvio angolare
|
||||
if SecondSupport >= 3 then
|
||||
local H5Id = EmtHead {
|
||||
Name = 'H5',
|
||||
Parent = 'B',
|
||||
HSet = 'H1',
|
||||
Type = MCH_HT.MULTI,
|
||||
ExitNbr = 2,
|
||||
Pos1 = Point3d( 0, -AngTr1Len, -AngTr1Offs),
|
||||
TDir1 = Y_AX(),
|
||||
Pos2 = Point3d( 0, AngTr1Len, -AngTr1Offs),
|
||||
TDir2 = -Y_AX(),
|
||||
ADir = Z_AX(),
|
||||
Rot1W = 0.2,
|
||||
Rot2Stroke = { -120, 120},
|
||||
OthColl = { 'H2', 'B/SOLID', 'C/SOLID'},
|
||||
Geo = 'H5_HEAD/GEO',
|
||||
Aux = {'H5_HEAD/SOLID', 'H5_HEAD/COLLISION'}}
|
||||
EgtSetInfo( H5Id, 'AGB_TYPE', 2)
|
||||
EgtSetInfo( H5Id, 'AGB_DMAX', 240)
|
||||
EgtSetInfo( H5Id, 'AGB_ENCH', 44)
|
||||
EgtSetInfo( H5Id, 'AGB_ENCV', 380)
|
||||
EgtSetInfo( H5Id, 'AGB_MDIR', -Y_AX())
|
||||
EgtSetInfo( H5Id, 'ZMAXONROT', '1,15')
|
||||
end
|
||||
-- Eventuale aggregato per lavorazioni BlockHaus
|
||||
if AggreBlockHaus then
|
||||
local H7Id = EmtHead {
|
||||
Name = 'H7',
|
||||
Parent = 'B',
|
||||
HSet = 'H1',
|
||||
Type = MCH_HT.STD,
|
||||
Pos = Point3d( -AngTrBHLen, 0, -AngTrBHOffs),
|
||||
TDir = X_AX(),
|
||||
ADir = Z_AX(),
|
||||
Rot1W = 0.2,
|
||||
SolCh = MCH_SCC.ADIR_NEAR,
|
||||
OthColl = {'H2', 'B/SOLID', 'C/SOLID'},
|
||||
Geo = 'H7_HEAD/GEO',
|
||||
Aux = {'H7_HEAD/SOLID', 'H7_HEAD/COLLISION'}}
|
||||
EgtSetInfo( H7Id, 'ZMAXONROT', '1,15')
|
||||
end
|
||||
-- Morse
|
||||
local YId = EmtAxis {
|
||||
Name = 'Y',
|
||||
@@ -431,13 +447,27 @@ EmtTcPos {
|
||||
TDir = X_AX(),
|
||||
ADir = Y_AX(),
|
||||
Geo = 'BASE/T10'}
|
||||
EmtTcPos {
|
||||
Name = 'T11',
|
||||
Parent = 'Base',
|
||||
Pos = Point3d( -523.8, -88.0, -877.5),
|
||||
TDir = X_AX(),
|
||||
ADir = Y_AX(),
|
||||
Geo = 'BASE/T11'}
|
||||
|
||||
if AggreBlockHaus then
|
||||
EmtTcPos {
|
||||
Name = 'T11',
|
||||
Parent = 'Base',
|
||||
Pos = Point3d( -678.3, 1.963, -877.5),
|
||||
TDir = -Y_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'BASE/T121',
|
||||
Aux = 'BASE/T121_HS'}
|
||||
else
|
||||
EmtTcPos {
|
||||
Name = 'T11',
|
||||
Parent = 'Base',
|
||||
Pos = Point3d( -523.8, -88.0, -877.5),
|
||||
TDir = X_AX(),
|
||||
ADir = Y_AX(),
|
||||
Geo = 'BASE/T11'}
|
||||
end
|
||||
|
||||
|
||||
if not SpecialBH then
|
||||
EmtTcPos {
|
||||
Name = 'T101',
|
||||
@@ -456,6 +486,7 @@ else
|
||||
Geo = 'BASE/T101S'}
|
||||
end
|
||||
if SecondSupport == 1 then
|
||||
-- supporto per punta
|
||||
EmtTcPos {
|
||||
Name = 'T111',
|
||||
Parent = 'Base',
|
||||
@@ -463,6 +494,29 @@ if SecondSupport == 1 then
|
||||
TDir = Z_AX(),
|
||||
ADir = -X_AX(),
|
||||
Geo = 'BASE/T111'}
|
||||
elseif SecondSupport == 2 then
|
||||
-- supporto per mortasatrice
|
||||
local TcpSsId = EmtTcPos {
|
||||
Name = 'T111',
|
||||
Parent = 'Base',
|
||||
Pos = Point3d( 510.4, -113.2, -430.8),
|
||||
TDir = X_AX(),
|
||||
ADir = Z_AX(),
|
||||
Geo = 'BASE/T111M'}
|
||||
EgtSetInfo( TcpSsId, 'Mortiser', true)
|
||||
elseif SecondSupport == 3 then
|
||||
-- supporto per rinvio angolare
|
||||
local TcpSsId = EmtTcPos {
|
||||
Name = 'T91',
|
||||
Parent = 'Base',
|
||||
ExitNbr = 2,
|
||||
Pos1 = Point3d( 710.4+150, -113.2, -329.8-170),
|
||||
TDir1 = -X_AX(),
|
||||
Pos2 = Point3d( 710.4-150, -113.2, -329.8-170),
|
||||
TDir2 = X_AX(),
|
||||
ADir = Z_AX(),
|
||||
Geo = 'BASE/T91',
|
||||
Aux = 'BASE/T91_HS'}
|
||||
end
|
||||
if SpecialBH then
|
||||
EmtTcPos {
|
||||
|
||||
Binary file not shown.
+15
-5
@@ -26,6 +26,8 @@ local POS = "Pos"
|
||||
-- Geom Set
|
||||
local GS = {}
|
||||
|
||||
local bAggreBlockHaus = ( EgtGetHeadId( 'H7') ~= nil)
|
||||
|
||||
-- Configurazione posizioni
|
||||
local PositionTable={{Pos = "Pos1", TcPos = "T1", Head = "H1", Group = "G1"},
|
||||
{Pos = "Pos2", TcPos = "T2", Head = "H1", Group = "G1"},
|
||||
@@ -37,12 +39,20 @@ local PositionTable={{Pos = "Pos1", TcPos = "T1", Head = "H1", Group = "G1"},
|
||||
{Pos = "Pos8", TcPos = "T8", Head = "H1", Group = "G1"},
|
||||
{Pos = "Pos9", TcPos = "T9", Head = "H1", Group = "G1"},
|
||||
{Pos = "Pos10", TcPos = "T10", Head = "H1", Group = "G1"},
|
||||
{Pos = "Pos11", TcPos = "T11", Head = "H1", Group = "G1"},
|
||||
{Pos = "Pos11", TcPos = "T11", Head = EgtIf( bAggreBlockHaus, "H7", "H1"), Group = "G1"},
|
||||
{Pos = "Pos12", TcPos = "T42", Head = "H2", Group = "G1"},
|
||||
{Pos = "Pos13", TcPos = "T101", Head = "H3", Group = "G1"}}
|
||||
|
||||
if EgtGetTcPosId( 'T111') then
|
||||
table.insert( PositionTable, {Pos = "Pos14", TcPos = "T111", Head = "H1", Group = "G1"})
|
||||
{Pos = "Pos13", TcPos = "T101", Head = "H3", Group = "G2"}}
|
||||
local SecSuppId = EgtGetTcPosId( 'T111')
|
||||
if SecSuppId then
|
||||
local bMortiser = EgtGetInfo( SecSuppId, 'Mortiser', 'b')
|
||||
if bMortiser then
|
||||
table.insert( PositionTable, {Pos = "Pos14", TcPos = "T111", Head = "H3", Group = "G2"})
|
||||
else
|
||||
table.insert( PositionTable, {Pos = "Pos14", TcPos = "T111", Head = "H1", Group = "G2"})
|
||||
end
|
||||
end
|
||||
if EgtGetHeadId( 'H5') then
|
||||
table.insert( PositionTable, {Pos = "Pos14", TcPos = "T91", Head = "H5", Group = "G2"})
|
||||
end
|
||||
|
||||
local UsePositionHead = true
|
||||
|
||||
Binary file not shown.
Binary file not shown.
+38
-1
@@ -1,7 +1,44 @@
|
||||
==== Common_FAST Update Log ====
|
||||
|
||||
Versione 2.6-- (--/--/2024)
|
||||
- (MLDE-SIM-GEN) Nuovo aggregato 90° (H7) per fresa tipo BlockHaus. Ticket#2142
|
||||
|
||||
Versione 2.6l1 (02/12/2024)
|
||||
- (SIM) Corretto movimento VMILL durante scarico pezzo piccolo a caduta
|
||||
- (SIM-GEN) Per decidere posizione parcheggio barra dopo separazione, si considera lunghezza coda del pezzo in lavoro per evitare collisioni. Ticket#2168
|
||||
|
||||
Versione 2.6k1 (11/11/2024)
|
||||
- (GEN) Aggiunta gestione aggregato a T per NUM
|
||||
- (SIM) Tolta gestione testa dummy H4
|
||||
- (SIM-GEN) Aggiustato parametro in calcolo ingombro lavorazione. Ticket#2163
|
||||
|
||||
Versione 2.6j10 (25/10/2024)
|
||||
- (SIM-GEN) Miglioria 2.6j9. Si ribadisce pinza in presa sempre, all'inizio, in base a quella attiva
|
||||
|
||||
Versione 2.6j9 (22/10/2024)
|
||||
- (SIM-GEN) Miglioria 2.6j6. Oltre al passo pellegrino si ribadisce anche quando è scambio diretto
|
||||
|
||||
Versione 2.6j8 (21/10/2024)
|
||||
- (SIM-GEN) Corretto problema tolleranza aggiunto con versione 2.6j7
|
||||
|
||||
Versione 2.6j7 (18/10/2024)
|
||||
- (SIM-GEN) In nuova disposizione carrelli, aggiunta tolleranza di 100 EPS quando si calcola minimo posizionamento
|
||||
|
||||
Versione 2.6j6 (17/10/2024)
|
||||
- (GEN) Si ribadisce che la pinza era in presa, prima di cominciare con lo scambio del passo del pellegrino. Ticket#2121
|
||||
|
||||
Versione 2.6j5 (17/10/2024)
|
||||
- (SIM-GEN) Piccola correzione nuovo riposizionamento. Nel taglio dello scarto finale riposizionava nel vuoto. Ticket#2115
|
||||
|
||||
Versione 2.6j4 (15/10/2024)
|
||||
- (SIM-GEN) Piccola correzione nuovo riposizionamento. Non considerava i 50mm di tolleranza su primo pinzaggio dopo ribaltamento
|
||||
- (SIM-GEN) Gestione attivazione pressore verticale in nuovo riposizionamento
|
||||
|
||||
Versione 2.6j3 (11/10/2024)
|
||||
- (GEN) Corretta scrittura macro start/attesa movimenti per NUM. Veniva scritto codice per TPA.
|
||||
|
||||
Versione 2.6j2 (03/10/2024)
|
||||
- (SIM-GEN) Piccola correwzione calcolo posizione carrello durante riposizionamento, nuova gestione
|
||||
- (SIM-GEN) Piccola correzione calcolo posizione carrello durante riposizionamento, nuova gestione
|
||||
|
||||
Versione 2.6j1 (01/10/2024)
|
||||
- (SIM-GEN) Sistemato calcolo in nuova disposzione carrelli
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
|
||||
local InfoCommon_STD_PP = {
|
||||
NAME = 'Common_FAST', -- nome script PP standard
|
||||
VERSION = '2.6j2', -- versione script
|
||||
VERSION = '2.6--', -- versione script
|
||||
MIN_MACH_VER_PP_COMMON = '2.5k1' -- versione minima kernel
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user