- Gli assi dei bancaletti si chiamano ora con "PL"

- Aggiunto descrizione cambio utensile in MLDE
This commit is contained in:
andrea.villa
2025-01-27 16:01:42 +01:00
parent 6f41b04fce
commit 7d4813e1d5
8 changed files with 312 additions and 454 deletions
+17
View File
@@ -0,0 +1,17 @@
/Tools
/Machinings
/SetUp
/Beam/Ts3Data.bak
/Beam/CutData.lua
/Beam/DrillData.lua
/Beam/MillingData.lua
/Beam/PocketingData.lua
/Beam/SawingData.lua
/Beam/Ts3Data.lua
/Wall/Ts3Data.bak
/Wall/CutData.lua
/Wall/DrillData.lua
/Wall/MillingData.lua
/Wall/PocketingData.lua
/Wall/SawingData.lua
/Wall/Ts3Data.lua
+3 -3
View File
@@ -30,9 +30,9 @@ function OnProgramStart()
-- acquisizione nome attrezzaggio
local sSetupName = EgtGetInfo( EgtGetCurrSetup() or GDB_ID.NULL, 'Name') or ' '
-- Intestazione processo 1
EmtOutput( EgtIf( EMT.INFO, '; '..EMT.INFO, ';Program Start'))
EmtOutput( ';'.. MLE_INFO)
EmtOutput( ';'.. 'ToolingSetUp:'..sSetupName)
EmtOutput( EgtIf( EMT.INFO, '( '..EMT.INFO, ';Program Start'))
EmtOutput( '( '.. MLE_INFO)
EmtOutput( '( '.. 'ToolingSetUp:'..sSetupName)
end
---------------------------------------------------------------------
+265 -63
View File
@@ -10,9 +10,50 @@ NumericalControl = 'TECNOS'
TabX = 362.0064
TabY = -1734.5386
TabZ = -456.0497
-- DATI TESTE --
-- DATI BANCALETTI --
-- DATI SOTTOPEZZI --
----------------------------------------------------
-------------------- CORSE ASSI --------------------
----------------------------------------------------
XAxisStroke = {-9999, 9999}
YAxisStroke = {-9999, 9999}
ZAxisStroke = {-9999, 9999}
CAxisStroke = {-270, 270}
AAxisStroke = {-110, 110}
----------------------------------------------------
-------------------- DATI TESTE --------------------
----------------------------------------------------
-- testa 5 assi
H11Pos = Vector3d( 0, 0, 0)
-- gruppo forare
H21Pos = H11Pos + Vector3d( -114.005, 522.001, 390.95)
-- teste gruppo forare
H2101 = H21Pos + Vector3d( 0, 0, 0)
H2102 = H21Pos + Vector3d( 32, 0, 0)
H2103 = H21Pos + Vector3d( 64, 0, 0)
H2104 = H21Pos + Vector3d( 96, 0, 0)
H2105 = H21Pos + Vector3d( 128, 0, 0)
H2106 = H21Pos + Vector3d( 160, 0, 0)
H2107 = H21Pos + Vector3d( 192, 0, 0)
H2108 = H21Pos + Vector3d( 0, 64, 0)
H2109 = H21Pos + Vector3d( 0, 96, 0)
H2110 = H21Pos + Vector3d( 0, 128, 0)
H2111 = H21Pos + Vector3d( 0, 160, 0)
H2131 = H21Pos + Vector3d( -32, 32, -51.2)
H2133 = H21Pos + Vector3d( -32, -32, -51.2)
H2135 = H21Pos + Vector3d( 224, 64, -51.2)
H2136 = H21Pos + Vector3d( 224, 96, -51.2)
H2137 = H21Pos + Vector3d( 160, 64, -51.2)
H2138 = H21Pos + Vector3d( 160, 96, -51.2)
-- lametta su gruppo a forare
H2150 = H21Pos + Vector3d( 192, 192.5, -8.2)
----------------------------------------------------
----------------- DATI BANCALETTI ------------------
----------------------------------------------------
----------------------------------------------------
----------------- DATI SOTTOPEZZI-------------------
----------------------------------------------------
----------------------------------------------------------------------
EmtGeneral {
@@ -34,7 +75,7 @@ EmtAxis {
Type = MCH_AT.LINEAR,
Dir = X_AX(),
Pos = Point3d(0, 0, 0),
Stroke = {-3600, 0},
Stroke = XAxisStroke,
Home = 0,
Geo = 'X_AXIS/GEO',
Aux = { 'X_AXIS/SOLID', 'X_AXIS/TCR'}}
@@ -45,7 +86,7 @@ EmtAxis {
Type = MCH_AT.LINEAR,
Dir = Y_AX(),
Pos = Point3d(0, 0, 0),
Stroke = {-1660, 70},
Stroke = YAxisStroke,
Home = 0,
Geo = 'Y_AXIS/GEO',
Aux = 'Y_AXIS/SOLID'}
@@ -56,7 +97,7 @@ EmtAxis {
Type = MCH_AT.LINEAR,
Dir = Z_AX(),
Pos = Point3d(0, 0, 0),
Stroke = {-850.9, 200},
Stroke = ZAxisStroke,
Home = 0,
Geo = 'Z1_AXIS/GEO',
Aux = 'Z1_AXIS/SOLID'}
@@ -67,7 +108,7 @@ EmtAxis {
Type = MCH_AT.ROTARY,
Dir = Z_AX(),
Pos = Point3d(0, 0, 379),
Stroke = {-321, 321},
Stroke = CAxisStroke,
Home = 0,
Geo = 'C_AXIS/GEO',
Aux = 'C_AXIS/SOLID'}
@@ -78,7 +119,7 @@ EmtAxis {
Type = MCH_AT.ROTARY,
Dir = -X_AX(),
Pos = Point3d( -86.5, 0, 135),
Stroke = {-110, 110},
Stroke = AAxisStroke,
Home = 0,
Geo = 'A_AXIS/GEO',
Aux = 'A_AXIS/SOLID'}
@@ -87,7 +128,7 @@ EmtHead {
Parent = 'A',
HSet = 'H11',
Type = MCH_HT.STD,
Pos = Point3d( 0, 0, 0),
Pos = H11Pos,
TDir = Z_AX(),
ADir = -X_AX(),
SolCh = MCH_SCC.ADIR_ZP,
@@ -99,11 +140,172 @@ EmtAxis {
Token = 'Z',
Type = MCH_AT.LINEAR,
Dir = Z_AX(),
Pos = Point3d(0,0,0),
Pos = Point3d( 0, 0, 0),
Stroke = {-850.9, 200},
Home = 0,
Geo = 'Z2_AXIS/GEO',
Aux = 'Z2_AXIS/SOLID'}
EmtHead {
Name = 'H21',
Parent = 'Z2',
HSet = 'H21',
Type = MCH_HT.MULTI,
ExitNbr = 18,
Pos1 = H2101,
TDir1 = Z_AX(),
Pos2 = H2102,
TDir2 = Z_AX(),
Pos3 = H2103,
TDir3 = Z_AX(),
Pos4 = H2104,
TDir4 = Z_AX(),
Pos5 = H2105,
TDir5 = Z_AX(),
Pos6 = H2106,
TDir6 = Z_AX(),
Pos7 = H2107,
TDir7 = Z_AX(),
Pos8 = H2108,
TDir8 = Z_AX(),
Pos9 = H2109,
TDir9 = Z_AX(),
Pos10 = H2110,
TDir10 = Z_AX(),
Pos11 = H2111,
TDir11 = Z_AX(),
Pos12 = H2131,
TDir12 = -Y_AX(),
Pos13 = H2133,
TDir13 = Y_AX(),
Pos14 = H2135,
TDir14 = -X_AX(),
Pos15 = H2136,
TDir15 = -X_AX(),
Pos16 = H2137,
TDir16 = X_AX(),
Pos17 = H2138,
TDir17 = X_AX(),
Pos18 = H2150,
TDir18 = -Y_AX(),
Geo = 'H21_HEAD/GEO',
Aux = {'H21_HEAD/SOLID', 'H21_HEAD/SOL_T1', 'H21_HEAD/SOL_T2', 'H21_HEAD/SOL_T3', 'H21_HEAD/SOL_T4', 'H21_HEAD/SOL_T5',
'H21_HEAD/SOL_T6', 'H21_HEAD/SOL_T7', 'H21_HEAD/SOL_T8', 'H21_HEAD/SOL_T9', 'H21_HEAD/SOL_T10', 'H21_HEAD/SOL_T11',
'H21_HEAD/SOL_T31', 'H21_HEAD/SOL_T35', 'H21_HEAD/SOL_T36', 'H21_HEAD/SOL_T50'}}
-- Tool Changer
local ptTcR = Point3d( 75, 434.95, -410)
EmtTcPos {
Name = 'T1',
Parent = 'X',
Pos = ptTcR + VectorFromSpherical( 266, 90, 22.5 * 4),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'X_AXIS/T1'}
EmtTcPos {
Name = 'T2',
Parent = 'X',
Pos = ptTcR + VectorFromSpherical( 266, 90, 22.5 * 3),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'X_AXIS/T2'}
EmtTcPos {
Name = 'T3',
Parent = 'X',
Pos = ptTcR + VectorFromSpherical( 266, 90, 22.5 * 2),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'X_AXIS/T3'}
EmtTcPos {
Name = 'T4',
Parent = 'X',
Pos = ptTcR + VectorFromSpherical( 266, 90, 22.5 * 1),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'X_AXIS/T4'}
EmtTcPos {
Name = 'T5',
Parent = 'X',
Pos = ptTcR + VectorFromSpherical( 266, 90, 0),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'X_AXIS/T5'}
EmtTcPos {
Name = 'T6',
Parent = 'X',
Pos = ptTcR + VectorFromSpherical( 266, 90, -22.5 * 1),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'X_AXIS/T6'}
EmtTcPos {
Name = 'T7',
Parent = 'X',
Pos = ptTcR + VectorFromSpherical( 266, 90, -22.5 * 2),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'X_AXIS/T7'}
EmtTcPos {
Name = 'T8',
Parent = 'X',
Pos = ptTcR + VectorFromSpherical( 266, 90, -22.5 * 3),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'X_AXIS/T8'}
EmtTcPos {
Name = 'T9',
Parent = 'X',
Pos = ptTcR + VectorFromSpherical( 266, 90, -22.5 * 4),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'X_AXIS/T9'}
EmtTcPos {
Name = 'T10',
Parent = 'X',
Pos = ptTcR + VectorFromSpherical( 266, 90, -22.5 * 5),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'X_AXIS/T10'}
EmtTcPos {
Name = 'T11',
Parent = 'X',
Pos = ptTcR + VectorFromSpherical( 266, 90, -22.5 * 6),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'X_AXIS/T11'}
EmtTcPos {
Name = 'T12',
Parent = 'X',
Pos = ptTcR + VectorFromSpherical( 266, 90, -22.5 * 7),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'X_AXIS/T12'}
EmtTcPos {
Name = 'T13',
Parent = 'X',
Pos = ptTcR + VectorFromSpherical( 266, 90, -22.5 * 8),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'X_AXIS/T13'}
EmtTcPos {
Name = 'T14',
Parent = 'X',
Pos = ptTcR + VectorFromSpherical( 266, 90, -22.5 * 9),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'X_AXIS/T14'}
EmtTcPos {
Name = 'T15',
Parent = 'X',
Pos = ptTcR + VectorFromSpherical( 266, 90, -22.5 * 10),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'X_AXIS/T15'}
EmtTcPos {
Name = 'T16',
Parent = 'X',
Pos = ptTcR + VectorFromSpherical( 266, 90, -22.5 * 11),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'X_AXIS/T16'}
-- Tavola
EmtTable {
@@ -114,95 +316,95 @@ EmtTable {
Geo = 'TABLE/GEO',
Aux = 'TABLE/SOLID'}
-- bancaletti
local T1Id = EmtAxis {
Name = 'T1',
local PL1Id = EmtAxis {
Name = 'PL1',
Parent = 'Tab',
Type = MCH_AT.LINEAR,
Dir = X_AX(),
Pos = Point3d(0, 0, 0),
Stroke = {0, 2000},
Home = 0,
Geo = 'T1_AXIS/GEO',
Aux = 'T1_AXIS/SOLID'}
EgtSetInfo( T1Id, 'MDist', 10)
EgtSetInfo( T1Id, 'PDist', 130)
EgtSetInfo( T1Id, 'Next', 'T2')
EgtMove( T1Id, Vector3d( 0, 0, 0), GDB_RT.GLOB)
local T2Id = EmtAxis {
Name = 'T2',
Geo = 'PL1_AXIS/GEO',
Aux = 'PL1_AXIS/SOLID'}
EgtSetInfo( PL1Id, 'MDist', 10)
EgtSetInfo( PL1Id, 'PDist', 130)
EgtSetInfo( PL1Id, 'Next', 'PL2')
EgtMove( PL1Id, Vector3d( 0, 0, 0), GDB_RT.GLOB)
local PL2Id = EmtAxis {
Name = 'PL2',
Parent = 'Tab',
Type = MCH_AT.LINEAR,
Dir = X_AX(),
Pos = Point3d(0, 0, 0),
Stroke = {200, 2100},
Home = 200,
Geo = 'T2_AXIS/GEO',
Aux = 'T2_AXIS/SOLID'}
EgtSetInfo( T2Id, 'MDist', 10)
EgtSetInfo( T2Id, 'PDist', 130)
EgtSetInfo( T2Id, 'Prev', 'T1')
EgtSetInfo( T2Id, 'Next', 'T3')
EgtMove( T2Id, Vector3d( -200, 0, 0), GDB_RT.GLOB)
local T3Id = EmtAxis {
Name = 'T3',
Geo = 'PL2_AXIS/GEO',
Aux = 'PL2_AXIS/SOLID'}
EgtSetInfo( PL2Id, 'MDist', 10)
EgtSetInfo( PL2Id, 'PDist', 130)
EgtSetInfo( PL2Id, 'Prev', 'PL1')
EgtSetInfo( PL2Id, 'Next', 'PL3')
EgtMove( PL2Id, Vector3d( -200, 0, 0), GDB_RT.GLOB)
local PL3Id = EmtAxis {
Name = 'PL3',
Parent = 'Tab',
Type = MCH_AT.LINEAR,
Dir = X_AX(),
Pos = Point3d(0, 0, 0),
Stroke = {400, 2200},
Home = 400,
Geo = 'T3_AXIS/GEO',
Aux = 'T3_AXIS/SOLID'}
EgtSetInfo( T3Id, 'MDist', 10)
EgtSetInfo( T3Id, 'PDist', 130)
EgtSetInfo( T3Id, 'Prev', 'T2')
EgtSetInfo( T3Id, 'Next', 'T4')
EgtMove( T3Id, Vector3d( -400, 0, 0), GDB_RT.GLOB)
local T4Id = EmtAxis {
Name = 'T4',
Geo = 'PL3_AXIS/GEO',
Aux = 'PL3_AXIS/SOLID'}
EgtSetInfo( PL3Id, 'MDist', 10)
EgtSetInfo( PL3Id, 'PDist', 130)
EgtSetInfo( PL3Id, 'Prev', 'PL2')
EgtSetInfo( PL3Id, 'Next', 'PL4')
EgtMove( PL3Id, Vector3d( -400, 0, 0), GDB_RT.GLOB)
local PL4Id = EmtAxis {
Name = 'PL4',
Parent = 'Tab',
Type = MCH_AT.LINEAR,
Dir = X_AX(),
Pos = Point3d(0, 0, 0),
Stroke = {800, 2600},
Home = 2600,
Geo = 'T4_AXIS/GEO',
Aux = 'T4_AXIS/SOLID'}
EgtSetInfo( T4Id, 'MDist', 10)
EgtSetInfo( T4Id, 'PDist', 130)
EgtSetInfo( T4Id, 'Prev', 'T3')
EgtSetInfo( T4Id, 'Next', 'T5')
EgtMove( T4Id, Vector3d( -2600, 0, 0), GDB_RT.GLOB)
local T5Id = EmtAxis {
Name = 'T5',
Geo = 'PL4_AXIS/GEO',
Aux = 'PL4_AXIS/SOLID'}
EgtSetInfo( PL4Id, 'MDist', 10)
EgtSetInfo( PL4Id, 'PDist', 130)
EgtSetInfo( PL4Id, 'Prev', 'PL3')
EgtSetInfo( PL4Id, 'Next', 'PL5')
EgtMove( PL4Id, Vector3d( -2600, 0, 0), GDB_RT.GLOB)
local PL5Id = EmtAxis {
Name = 'PL5',
Parent = 'Tab',
Type = MCH_AT.LINEAR,
Dir = X_AX(),
Pos = Point3d(0, 0, 0),
Stroke = {900, 2800},
Home = 2800,
Geo = 'T5_AXIS/GEO',
Aux = 'T5_AXIS/SOLID'}
EgtSetInfo( T5Id, 'MDist', 10)
EgtSetInfo( T5Id, 'PDist', 130)
EgtSetInfo( T5Id, 'Prev', 'T4')
EgtSetInfo( T5Id, 'Next', 'T6')
EgtMove( T5Id, Vector3d( -2800, 0, 0), GDB_RT.GLOB)
local T6Id = EmtAxis {
Name = 'T6',
Geo = 'PL5_AXIS/GEO',
Aux = 'PL5_AXIS/SOLID'}
EgtSetInfo( PL5Id, 'MDist', 10)
EgtSetInfo( PL5Id, 'PDist', 130)
EgtSetInfo( PL5Id, 'Prev', 'PL4')
EgtSetInfo( PL5Id, 'Next', 'PL6')
EgtMove( PL5Id, Vector3d( -2800, 0, 0), GDB_RT.GLOB)
local PL6Id = EmtAxis {
Name = 'PL6',
Parent = 'Tab',
Type = MCH_AT.LINEAR,
Dir = X_AX(),
Pos = Point3d(0, 0, 0),
Stroke = {1000, 3000},
Home = 3000,
Geo = 'T6_AXIS/GEO',
Aux = 'T6_AXIS/SOLID'}
EgtSetInfo( T6Id, 'MDist', 10)
EgtSetInfo( T6Id, 'PDist', 130)
EgtSetInfo( T6Id, 'Prev', 'T5')
EgtMove( T6Id, Vector3d( -3000, 0, 0), GDB_RT.GLOB)
Geo = 'PL6_AXIS/GEO',
Aux = 'PL6_AXIS/SOLID'}
EgtSetInfo( PL6Id, 'MDist', 10)
EgtSetInfo( PL6Id, 'PDist', 130)
EgtSetInfo( PL6Id, 'Prev', 'PL5')
EgtMove( PL6Id, Vector3d( -3000, 0, 0), GDB_RT.GLOB)
---------------------------------------------------------------------
-- Funzioni richiamate per modificare i dati macchina in casi particolari
--------------------------------------------------------------------------------
+4 -202
View File
@@ -18,11 +18,6 @@ end
---------------------------------------------------------------------
-- *** SIMULATION ***
---------------------------------------------------------------------
local bSimuToolChange = false
local nUnloadTool
local nCountChangeT = 0
local TChangePos = {}
local nTmaxCone = 8
---------------------------------------------------------------------
function OnSimulStart()
@@ -42,17 +37,12 @@ end
---------------------------------------------------------------------
function OnSimulEnd()
ExecUnloading()
end
---------------------------------------------------------------------
function OnSimulDispositionStart()
EMT.OPEISDISP = true
nTmaxCone = 8
if EMT.SIM1ST then
TChangePos[1] = 1
TChangePos[2] = 0
end
-- nascondo lavorazioni che risulterebbero in posizione diversa dai pezzi
local nMchId = EgtGetNextOperation( EgtGetPhaseDisposition( EMT.PHASE))
while nMchId do
@@ -60,15 +50,10 @@ function OnSimulDispositionStart()
EgtSetOperationStatus( nMchId, false)
nMchId = EgtGetNextOperation( nMchId)
end
if EMT.SIM1ST then
-- visualizzo tutti i coni del magazzino
ShowHideCone( 1, nTmaxCone, true)
end
end
---------------------------------------------------------------------
function OnSimulDispositionEnd()
-- Se prima disposizione
if EMT.PHASE == 1 then
-- Se vero inizio e abilitato creo gli Zmap
@@ -110,30 +95,6 @@ end
---------------------------------------------------------------------
function OnSimulToolSelect()
-- se cambia testa va al cambio utensile
if ( EMT.TCPOS ~= EMT.PREVTCPOS) then
-- se ho scaricato il mandrino principale o ancora non carico
if nUnloadTool ~= 2 or not EMT.PREVTCPOS then
-- nascondo la testa attuale per non farla visualizzare nel movimento di cambio
EgtSetMode( EgtGetHeadId( EMT.HEAD), GDB_MD.HIDDEN)
end
SimuToolChange( EgtGetHeadId( EMT.HEAD), 1, EMT.TCPOS, nTmaxCone) -- carico l'utensile
else -- se stesse posizioni
if nUnloadTool == 0 then -- se ho scaricato il madrino per lunghezza eccessiva
EgtSetMode( EgtGetHeadId( EMT.HEAD), GDB_MD.HIDDEN) -- nascondo la testa
SimuToolChange( EgtGetHeadId( EMT.HEAD), 1, EMT.TCPOS, nTmaxCone) -- carico l'utensile
else
-- se la testa non è stata scaricata la mostro
local nHeadId = EgtGetHeadId( EMT.HEAD)
EgtSetMode( nHeadId, GDB_MD.STD)
end
end
-- aquisisco lunghezza utensile
if EMT.TOOL ~= '' then
EMT.TOTLENGTH = EgtTdbGetCurrToolParam(MCH_TP.TOTLEN)
end
-- se attivo Vmill
if EMT.VMILL then
SetToolForVmill( EMT.TOOL, EMT.HEAD, EMT.EXIT, EMT.VMILL)
@@ -142,51 +103,7 @@ end
---------------------------------------------------------------------
function OnSimulToolDeselect()
-- se testa utilizzata non è gruppo a forare
if EMT.HEAD ~= 'H43' and EMT.HEAD ~= 'H45' then
-- se cambia posizione attivo il cambio utensile
if EMT.TCPOS ~= EMT.NEXTTCPOS then -- se cambio utensile
local nHeadId = EgtGetHeadId( EMT.HEAD)
-- se prossima testa è a forare o tastatore verifico se scaricare o no l'utensile
if EMT.NEXTHEAD == 'H43' or EMT.NEXTHEAD == 'H45' then
-- se teste rinvio le scarico comunque
if EMT.HEAD == 'H12' or EMT.HEAD == 'H13' or EMT.HEAD == 'H14' or EMT.HEAD == 'H15' then
SimuToolChange( nHeadId, 2, EMT.TCPOS, nTmaxCone)
else
-- ricavo la lunghezza utensile
EMT.TOTLENGTH = EgtTdbGetCurrToolParam(MCH_TP.TOTLEN)
-- se maggiore della lunghezza consentita scarico la testa
if (EMT.TOTLENGTH and EMT.TOTLENGTH > nMaxLenTool) or EMT.NEXTHEAD == 'H45' then -- ori 156
nUnloadTool = 2
SimuToolChange( nHeadId, 2, EMT.TCPOS, nTmaxCone)
else -- altrimenti mantengo l'utensile sul mandrino
nUnloadTool = 2
-- in questo caso almeno un caricamento utensile è stato fatto
if nCountChangeT == 0 then nCountChangeT = 1 end
EMT.UNHIDEHEAD = EMT.HEAD
end
end
else -- atrimenti prossima testa non gruppo a forare
SimuToolChange( nHeadId, 0, EMT.TCPOS, nTmaxCone) -- scarico utensile
end
end
EMT.PREVTCPOS = EMT.TCPOS
-- altrimenti testa a forare
else
-- se testa succesiva non è gruppo a forare e posizioni differenti scarico utensile
if EMT.NEXTTCPOS ~= 'T43' and EMT.PREVTCPOS and EMT.PREVTCPOS ~= EMT.NEXTTCPOS then
if nUnloadTool and nUnloadTool ~= 0 then
-- rialzo slitta della testa H43
MoveHead( EgtGetHeadId( EMT.HEAD), Z_AX(), 200)
if nUnloadTool == 2 then
SimuToolChange( EgtGetHeadId( EMT.UNHIDEHEAD), 0, EMT.PREVTCPOS, nTmaxCone)
else
SimuToolChange( EgtGetHeadId( EMT.PREVHEAD), 0, EMT.PREVTCPOS, nTmaxCone)
end
end
end
end
EMT.PREVHEAD = EMT.HEAD
end
---------------------------------------------------------------------
@@ -242,121 +159,6 @@ end
function OnSimulMoveEnd()
end
---------------------------------------------------------------------
function SimuToolChange( nHeadId, nShowHead, sPos, nMaxCone)
if not bSimuToolChange then
SimulMoveAxes( 'Y', 0.0, 100, 'C', 0, 100, 'B', 0, 100)
if nShowHead == 0 or nShowHead == 2 then
if nHeadId then EgtSetMode( nHeadId, GDB_MD.HIDDEN) end
elseif nShowHead == 1 then
if nHeadId then EgtSetMode( nHeadId, GDB_MD.STD) end
end
else
if nShowHead == 0 or nShowHead == 2 then
if nUnloadTool ~= 0 then -- scarico utensile
SimulMoveAxes( 'Y', 0.0, 100, 'C', 0.0, 100, 'B', 0.0, 100)
SimulMoveAxis( 'Z', -100.000, 10)
SimulMoveCharger( sPos, (nMaxCone-1), 90)
SimulMoveAxis( 'Z', 0.0, 10)
if nHeadId then EgtSetMode( nHeadId, GDB_MD.HIDDEN) end
SimulChangeCone( sPos, true)
SimulMoveAxis( 'Z', -100, 10)
else
SimulMoveAxis( 'Z', 0, 10)
end
nUnloadTool = 0
elseif nShowHead == 1 then -- carico utensile
SimulMoveAxes( 'Y', 0.0, 100, 'C', 0.0, 100, 'B', 0.0, 100)
SimulMoveAxis( 'Z', 0.0, 10)
SimulMoveCharger( sPos, (nMaxCone-1), 0)
SimulMoveAxis( 'Z', -100, 10)
if nHeadId then EgtSetMode( nHeadId, GDB_MD.STD) end
SimulChangeCone( sPos, false)
SimulMoveAxis( 'B', 0.0, 10)
nUnloadTool = 1
else
SimulMoveAxes( 'Y', 0.0, 100, 'C', 0.0, 100, 'B', 0.0, 100)
nUnloadTool = 2
end
if nShowHead ~= 0 then
SimulMoveAxis( 'Y', 0.0, 10)
SimulMoveAxis( 'Z', 0, 10)
end
end
nCountChangeT = nCountChangeT + 1
end
---------------------------------------------------------------------
function HideAllmainHeads()
EgtSetMode( EgtGetHeadId( 'H11'), GDB_MD.HIDDEN) -- nascondo la testa
EgtSetMode( EgtGetHeadId( 'H12'), GDB_MD.HIDDEN) -- nascondo la testa
EgtSetMode( EgtGetHeadId( 'H13'), GDB_MD.HIDDEN) -- nascondo la testa
EgtSetMode( EgtGetHeadId( 'H14'), GDB_MD.HIDDEN) -- nascondo la testa
EgtSetMode( EgtGetHeadId( 'H15'), GDB_MD.HIDDEN) -- nascondo la testa
nCountChangeT = 1
end
---------------------------------------------------------------------
function ShowHideCone( nPosIni, nPosEnd, bShowCone)
if nPosIni and nPosEnd then
-- imposto flag visualizzazione
local nMode = EgtIf( bShowCone, GDB_MD.STD, GDB_MD.HIDDEN)
-- trovo Id cartella solid
local nIdSolidTc = EgtGetFirstNameInGroup( EgtGetAxisId( 'TC'), 'SOLID')
-- ciclo sui coni
for nPos = nPosIni, nPosEnd do
-- trovo Id cono
local sConeName = 'CONE_'.. EgtNumToString( ( nPos + 100), 0)
local nIdCone = EgtGetFirstNameInGroup( nIdSolidTc, sConeName)
if nIdCone then
EgtSetMode( nIdCone, nMode)
end
end
end
end
---------------------------------------------------------------------
function SimulChangeCone( sPos, bShowCone)
if sPos then
local sPosT = sPos:sub(2)
local nPosT = tonumber(sPosT)
ShowHideCone( nPosT, nPosT, bShowCone)
end
end
---------------------------------------------------------------------
function SimulMoveCharger( sPos, nMaxPos, nOldvalue)
if sPos then
local sPosT = sPos:sub(2)
local nPosT = tonumber(sPosT)
local nVer = 1
local nMovStep = 0
nStep = nPosT - TChangePos[1]
if abs(nStep) <= 0 then -- se numero di passi è a ritornare
nVer = -1
nMovStep = abs(nStep) * ( 595 / nMaxPos) * nVer
else -- altrimenti numero passi è oltre la metà giro
nVer = 1
nMovStep = abs(nStep) * ( 595 / nMaxPos) * nVer
end
TChangePos[1] = nPosT
TChangePos[2] = TChangePos[2] + nMovStep
if abs(nMovStep) > 0 then
SimulMoveAxis( 'Y', TChangePos[2], 10)
SimulMoveAxis( 'B', 90.0, 10)
SimulMoveAxes( 'TC', 100, 7)
end
else
SimulMoveAxis( 'Y', nOldvalue, 10)
SimulMoveAxes( 'TC', 0, 7)
end
end
---------------------------------------------------------------------
function MoveHead( nGrpId, vtVers, dPos, bLoc)
local dVal = EgtGetInfo( nGrpId or GDB_ID.NULL, 'Val')
@@ -435,9 +237,9 @@ function OnEstimProgramStart()
-- imposto inizio movimenti da Home
EMT.L1 = EgtGetAxisHomePos( 'X')
EMT.L2 = EgtGetAxisHomePos( 'Y')
EMT.L3 = EgtGetAxisHomePos( 'Z')
EMT.L3 = EgtGetAxisHomePos( 'Z1')
EMT.R1 = EgtGetAxisHomePos( 'C')
EMT.R2 = EgtGetAxisHomePos( 'B')
EMT.R2 = EgtGetAxisHomePos( 'A')
-- aggiorno valori come precedenti
EmtUpdatePrev()
-- totalizzatori tempi e lunghezze
-26
View File
@@ -14,32 +14,6 @@ Egm = require( 'EmtGenMachining')
---------------------------------------------------------------------
-- *** OnSpecialMoveZup ***
---------------------------------------------------------------------
function OnSpecialMoveZup()
--EgtOutLog( 'OnSpecialMoveZup : ' .. EMC.HEAD .. '.' .. tostring( EMC.EXIT))
-- Inizializzo codice di errore
EMC.ERR = 1
-- recupero Z1 home
local dZmax = EgtGetAxisHomePos( 'Z')
-- se testa 5 assi e utensile sdraiato molto alto
if EMC.R2 and EMC.TDIR[3] < 0.79 and EMC.L3 > dZmax - 200 then
-- sistemo asse rotante
EMC.R2 = EgtIf( ( EMC.R2 > 0), 37.5, - 37.5)
-- ricalcolo versore utensile
EMC.TDIR = EgtGetCalcToolDirFromAngles( EMC.R1, EMC.R2)
-- dichiaro modificato
EMC.MODIF = true
else
EMC.MODIF = false
end
EMC.ERR = 0
end
---------------------------------------------------------------------
-- *** OnSpecialApplyDisposition & OnPostApplyMachining ***
---------------------------------------------------------------------
Binary file not shown.
+13 -158
View File
@@ -1,5 +1,5 @@
-- 2024/10/10 10:00:00
-- Disposition Init for Cms-PK_PL machine
-- Disposition Init for Masterwood_Project265 machine
-- Intestazioni
require( 'EgtBase')
@@ -13,7 +13,7 @@ local ColA = Color3d( 255, 165, 0, 30)
--------------------------------------------------------------------------------
-- * Verifica esistenza MachGroup *
if not EgtGetCurrMachGroup() then
local sErr = 'InitDisp for Cms-PK_PL : missing CurrMachGroup'
local sErr = 'InitDisp for Masterwood_Project265 : missing CurrMachGroup'
EgtOutLog( sErr)
EgtOutText( sErr)
DISP.ERR = 1
@@ -42,7 +42,7 @@ local b3Part = EgtGetBBoxGlob( Pz or GDB_ID.NULL, GDB_BB.STANDARD)
local b3Solid = EgtGetBBoxGlob( Ls or GDB_ID.NULL, GDB_BB.STANDARD)
-- Se pezzo vuoto, non devo fare alcunchè
if b3Part:isEmpty() then
local sErr = 'InitDisp for Cms-PK_PL : empty part'
local sErr = 'InitDisp for Masterwood_Project265 : empty part'
EgtOutLog( sErr)
EgtOutText( sErr)
DISP.ERR = 2
@@ -99,7 +99,7 @@ else
end
end
if not nRaw then
local sErr = 'InitDisp for Cms-PK_PL : error defining raw part'
local sErr = 'InitDisp for Masterwood_Project265 : error defining raw part'
EgtOutLog( sErr)
EgtOutText( sErr)
DISP.ERR = 3
@@ -109,28 +109,28 @@ local b3Raw = EgtGetRawPartBBox( nRaw)
local bVac = ( b3Raw:getDimY() >= 120)
local vtOffs, nCorn
if sRefY == 'B' and sRefX == 'L' then
vtOffs = Vector3d( 0, 0, 30)
vtOffs = Vector3d( 0, 0, 0)
nCorn = MCH_CR.BL
elseif sRefY == 'B' and sRefX == 'R' then
vtOffs = Vector3d( 1700, 0, 30)
vtOffs = Vector3d( 1700, 0, 0)
nCorn = MCH_CR.BR
elseif sRefY == 'M' and sRefX == 'L' then
vtOffs = Vector3d( 0, 675-10, 30)
vtOffs = Vector3d( 0, 675-10, 0)
nCorn = MCH_CR.TL
elseif sRefY == 'M' and sRefX == 'R' then
vtOffs = Vector3d( 1700, 675-10, 30)
vtOffs = Vector3d( 1700, 675-10, 0)
nCorn = MCH_CR.TR
elseif sRefY == 'N' and sRefX == 'L' then
vtOffs = Vector3d( 0, 675+10, 30)
vtOffs = Vector3d( 0, 675+10, 0)
nCorn = MCH_CR.BL
elseif sRefY == 'N' and sRefX == 'R' then
vtOffs = Vector3d( 1700, 675+10, 30)
vtOffs = Vector3d( 1700, 675+10, 0)
nCorn = MCH_CR.BR
elseif sRefY == 'T' and sRefX == 'L' then
vtOffs = Vector3d( 0, 1350, 30)
vtOffs = Vector3d( 0, 1350, 0)
nCorn = MCH_CR.TL
elseif sRefY == 'T' and sRefX == 'R' then
vtOffs = Vector3d( 1700, 1350, 30)
vtOffs = Vector3d( 1700, 1350, 0)
nCorn = MCH_CR.TR
end
if not bVac then
@@ -141,156 +141,11 @@ if not bVac then
end
end
if not EgtMoveToCornerRawPart( nRaw, vtOffs, nCorn) then
local sErr = 'InitDisp for Cms-PK_PL : error positioning raw part on table'
local sErr = 'InitDisp for Masterwood_Project265 : error positioning raw part on table'
EgtOutLog( sErr)
EgtOutText( sErr)
DISP.ERR = 4
return
end
-- Posizionamento dei piani di lavoro, carrelli e ventose
local DIMT_X = 120
local OFFS_MIN_T = 200
local DIMV_Y = 100
local OFFS_MIN_V = 120
local SAFE_DIST = dSafeDist + dOverMatXY
b3Raw = EgtGetRawPartBBox( nRaw)
b3Raw:toLoc( frTab)
-- barre (4)
local vbT = { false, false, false, false}
local vsNamT = { 'T1', 'T2', 'T3', 'T4'}
local vdPosT = { EgtGetAxisHomePos( 'T1'), EgtGetAxisHomePos( 'T2'), EgtGetAxisHomePos( 'T3'), EgtGetAxisHomePos( 'T4')}
if b3Raw:getDimX() < 300 then
if sRefX == 'L' then
vbT[1] = true
vdPosT[1] = b3Raw:getCenter():getX() - DIMT_X / 2
else
vbT[4] = true
vdPosT[2] = vdPosT[1] + OFFS_MIN_T
vdPosT[3] = vdPosT[2] + OFFS_MIN_T
vdPosT[4] = b3Raw:getCenter():getX() - DIMT_X / 2
end
elseif b3Raw:getDimX() < 650 then
if sRefX == 'L' then
vbT[1] = true ; vbT[2] = true
vdPosT[1] = b3Raw:getMin():getX() + SAFE_DIST
vdPosT[2] = b3Raw:getMax():getX() - SAFE_DIST - DIMT_X
else
vbT[3] = true ; vbT[4] = true
vdPosT[2] = vdPosT[1] + OFFS_MIN_T
vdPosT[3] = b3Raw:getMin():getX() + SAFE_DIST
vdPosT[4] = b3Raw:getMax():getX() - SAFE_DIST - DIMT_X
end
elseif b3Raw:getDimX() < 1000 then
if sRefX == 'L' then
vbT[1] = true ; vbT[2] = true ; vbT[3] = true
vdPosT[1] = b3Raw:getMin():getX() + SAFE_DIST
vdPosT[3] = b3Raw:getMax():getX() - SAFE_DIST - DIMT_X
vdPosT[2] = ( vdPosT[1] + vdPosT[3]) / 2
else
vbT[2] = true ; vbT[3] = true ; vbT[4] = true
vdPosT[2] = b3Raw:getMin():getX() + SAFE_DIST
vdPosT[4] = b3Raw:getMax():getX() - SAFE_DIST - DIMT_X
vdPosT[3] = ( vdPosT[2] + vdPosT[4]) / 2
end
else
vbT[1] = true ; vbT[2] = true ; vbT[3] = true ; vbT[4] = true
vdPosT[1] = b3Raw:getMin():getX() + SAFE_DIST
vdPosT[4] = b3Raw:getMax():getX() - SAFE_DIST - DIMT_X
vdPosT[2] = 0.666 * vdPosT[1] + 0.334 * vdPosT[4]
vdPosT[3] = 0.334 * vdPosT[1] + 0.666 * vdPosT[4]
end
for i = 1, #vbT do
EgtMoveDispAxis( vsNamT[i], vdPosT[i])
end
-- carrelli per ventose o morse (3)
local vbV = { false, false, false}
local vdPosV = { EgtGetAxisHomePos( 'T11'), EgtGetAxisHomePos( 'T12'), EgtGetAxisHomePos( 'T13')}
if not bVac then
if sRefY == 'B' then
vbV[1] = true
vdPosV[1] = b3Raw:getMin():getY() - DIMV_Y / 2 - 10
elseif sRefY == 'M' then
vbV[2] = true
vdPosV[2] = b3Raw:getMax():getY() - DIMV_Y / 2 + 10
elseif sRefY == 'N' then
vbV[2] = true
vdPosV[2] = b3Raw:getMin():getY() - DIMV_Y / 2 - 10
elseif sRefY == 'T' then
vbV[3] = true
vdPosV[2] = vdPosV[1] + OFFS_MIN_V
vdPosV[3] = b3Raw:getMax():getY() - DIMV_Y / 2 + 10
end
elseif b3Raw:getDimY() < 260 then
if b3Raw:getMin():getY() < 675 then
vbV[1] = true
vdPosV[1] = b3Raw:getCenter():getY() - DIMV_Y / 2
else
vbV[3] = true
vdPosV[2] = vdPosV[1] + OFFS_MIN_V
vdPosV[3] = b3Raw:getCenter():getY() - DIMV_Y / 2
end
elseif b3Raw:getDimY() < 450 then
if b3Raw:getMin():getY() < 675 then
vbV[1] = true ; vbV[2] = true
vdPosV[1] = b3Raw:getMin():getY() + SAFE_DIST
vdPosV[2] = b3Raw:getMax():getY() - SAFE_DIST - DIMV_Y
else
vbV[2] = true ; vbV[3] = true
vdPosV[2] = b3Raw:getMin():getY() + SAFE_DIST
vdPosV[3] = b3Raw:getMax():getY() - SAFE_DIST - DIMV_Y
end
else
vbV[1] = true ; vbV[2] = true ; vbV[3] = true
vdPosV[1] = b3Raw:getMin():getY() + SAFE_DIST
vdPosV[3] = b3Raw:getMax():getY() - SAFE_DIST - DIMV_Y
vdPosV[2] = ( vdPosV[1] + vdPosV[3]) / 2
end
for i = 1, #vbT do
if vbT[i] then
for j = 1, #vbV do
local sVac = vsNamT[ i] .. tostring( j)
EgtMoveDispAxis( sVac, vdPosV[j])
end
end
end
-- ventose o morse
for i = 1, #vbT do
if vbT[i] then
local dPosX = vdPosT[i] + DIMT_X / 2
for j = 1, #vbV do
if vbV[j] then
if bVac then
EgtAddFixture( 'Vac120x100H30', Point3d( dPosX, vdPosV[j] + DIMV_Y / 2, 0))
else
EgtAddFixture( 'ViseH30', Point3d( dPosX, vdPosV[j] + DIMV_Y / 2, 0), 0, b3Raw:getDimZ())
end
end
end
end
end
-- riferimenti
local dRefX = EgtIf( sRefX == 'L', -10, 1710)
if sRefY == 'B' then
EgtAddFixture( 'RefD20', Point3d( dRefX, 100, 0))
for i = 1, #vbT do
if bVac and vbT[i] then EgtAddFixture( 'RefD20', Point3d( vdPosT[i] + DIMT_X / 2, -10, 0)) end
end
elseif sRefY == 'M' then
EgtAddFixture( 'RefD20', Point3d( dRefX, 675-110, 0))
for i = 1, #vbT do
if bVac and vbT[i] then EgtAddFixture( 'RefD20', Point3d( vdPosT[i] + DIMT_X / 2, 675, 0)) end
end
elseif sRefY == 'N' then
EgtAddFixture( 'RefD20', Point3d( dRefX, 675+110, 0))
for i = 1, #vbT do
if bVac and vbT[i] then EgtAddFixture( 'RefD20', Point3d( vdPosT[i] + DIMT_X / 2, 675, 0)) end
end
elseif sRefY == 'T' then
EgtAddFixture( 'RefD20', Point3d( dRefX, 1350-100, 0))
for i = 1, #vbT do
if bVac and vbT[i] then EgtAddFixture( 'RefD20', Point3d( vdPosT[i] + DIMT_X / 2, 1350+10, 0)) end
end
end
DISP.ERR = 0
+10 -2
View File
@@ -37,7 +37,7 @@ local INVALIDPOS = ""
local POS = "Pos"
-- Geom Set
local GS = {{'H11','H12','H13','H14','H15'}}
local GS = {}
-- Configurazione posizioni
local PositionTable={{Pos = "Pos1", TcPos = "T01", Head = "H11", Group = "G1"},
@@ -48,7 +48,15 @@ local PositionTable={{Pos = "Pos1", TcPos = "T01", Head = "H11", Group = "G1"},
{Pos = "Pos6", TcPos = "T06", Head = "H11", Group = "G1"},
{Pos = "Pos7", TcPos = "T07", Head = "H11", Group = "G1"},
{Pos = "Pos8", TcPos = "T08", Head = "H11", Group = "G1"},
{Pos = "Pos9", TcPos = "T17", Head = "H11", Group = "G2"}}
{Pos = "Pos9", TcPos = "T09", Head = "H11", Group = "G1"},
{Pos = "Pos10", TcPos = "T10", Head = "H11", Group = "G1"},
{Pos = "Pos11", TcPos = "T11", Head = "H11", Group = "G1"},
{Pos = "Pos12", TcPos = "T12", Head = "H11", Group = "G1"},
{Pos = "Pos13", TcPos = "T13", Head = "H11", Group = "G1"},
{Pos = "Pos14", TcPos = "T14", Head = "H11", Group = "G1"},
{Pos = "Pos15", TcPos = "T15", Head = "H11", Group = "G1"},
{Pos = "Pos16", TcPos = "T16", Head = "H11", Group = "G1"},
{Pos = "Pos17", TcPos = "T81", Head = "H21", Group = "G2"}}
local UsePositionHead = false