Macchina rilasciata a cliente
This commit is contained in:
@@ -0,0 +1,113 @@
|
||||
-- BeamData.lua by Egaltech s.r.l. 2022/03/20
|
||||
-- Raccolta dati generali per Travi
|
||||
|
||||
EgtOutLog( ' KAIROS-BeamData started', 1)
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local BeamData = {
|
||||
ROT90 = false, -- flag abilitazione rotazione 90 gradi
|
||||
MIN_WIDTH = 40, -- larghezza minima del grezzo
|
||||
MIN_HEIGHT = 40, -- altezza minima del grezzo
|
||||
MAX_WIDTH = 450, -- larghezza massima del grezzo
|
||||
MAX_HEIGHT = 250, -- altezza massima del grezzo
|
||||
LEN_SHORT_PART = 1200, -- lunghezza massima pezzo corto
|
||||
LEN_VERY_SHORT_PART = 400, -- lunghezza massima pezzo molto corto (molto probabile lo scarico a caduta)
|
||||
MAX_RAW = 30000, -- massima lunghezza grezzo (deve essere minore di LenTable - RAW_OFFSET)
|
||||
STD_RAW = 14000, -- lunghezza standard della barra di grezzo
|
||||
OVM_HEAD = 10, -- sovramateriale testa
|
||||
OVM_MID = 5.4, -- sovramateriale intermedio (spessore lama)
|
||||
MINRAW_S = 750, -- minimo grezzo in coda scaricabile per sezioni piccole
|
||||
MINRAW_L = 1070, -- minimo grezzo in coda scaricabile per sezioni grandi
|
||||
MAX_LEN_SCRAP = 270, -- massima lunghezza scarto di coda
|
||||
MAX_LEN_SCRAP_START = 270, -- massima lunghezza scarto di testa
|
||||
MAX_DIM_HTCUT = 220, -- larghezza massima taglio di testa o coda
|
||||
MAX_DIM_HTCUT_HBEAM = -220, -- larghezza massima taglio di testa o coda con trave alta
|
||||
MIN_DIM_HBEAM = 190, -- altezza minima di trave alta
|
||||
MAX_DIM_DICE = 155, -- dimensione trasversale massima cubetto
|
||||
MAX_LEN_DICE = 400, -- lunghezza massima cubetto
|
||||
DECR_VERT_CUT = 12.5, -- riduzione profondità per affondamento verticale in taglio orizzontale
|
||||
COLL_SIC = 5, -- distanza di sicurezza per collisioni
|
||||
CUT_SIC = 20, -- distanza di sicurezza per tagli
|
||||
CUT_EXTRA = 5, -- affondamento extra standard per tagli di lama e fresature
|
||||
CUT_EXTRA_MIN = 1, -- affondamento extra ridotto per tagli di lama e fresature
|
||||
NZ_MINA = -0.6, -- componente limite in Z normale di una faccia (-36.8deg)
|
||||
NZ_MINB = -0.4, -- componente limite in Z normale di un insieme di facce (-23deg)
|
||||
DRILL_TOL = 0.2, -- tolleranza tra diametro foro e diametro punta
|
||||
DRILL_VZ_MIN = -0.51, -- componente limite in Z del versore di un foro
|
||||
DRILL_VX_MAX = 0.867, -- componente limite in X del versore di un foro sulle facce laterali
|
||||
DRILL_OVERLAP = 5, -- sovrapposizione tra due mezze forature
|
||||
MILL_OVERLAP = 5, -- sovrapposizione tra due mezze fresature
|
||||
MAX_DIST_HTFEA = 50.0, -- massima distanza di feature da testa o coda per essere considerata tale
|
||||
MAX_LEN_HTFEA = 2000.0, -- massima lunghezza di feature di testa o coda
|
||||
LONGCUT_ENDLEN = 600, -- lunghezza lavoro estremi iniziale e finale (std=600)
|
||||
LONGCUT_MAXLEN = 1200, -- lunghezza massima sezione di taglio longitudinale (std=1200)
|
||||
MAX_LEN_RIDGELAP_FROM_BOTTOM = 141, -- massima lunghezza ridgelap lavorabile da sotto
|
||||
MAX_LEN_RIDGELAP_FROM_BOTTOM_HBEAM = 96, -- massima lunghezza ridgelap lavorabile da sotto con trave alta
|
||||
DIM_TO_CENTER_STRIP = 100, -- larghezza minima trave per inseriemento codolo nel centro del trave; 0 = automatico
|
||||
DIM_STRIP = -1, -- dimensione codolo sostegno parti lasciate su contorno libero o archi (-1 = da Q...)
|
||||
DIM_STRIP_SMALL = 1, -- dimensione codolo piccolo (quando le parti sostenute sono sicuramente sulla parte sopra del pezzo)
|
||||
RAWCOL = { 255, 160, 32, 30}, -- colore del grezzo
|
||||
RAW_OFFSET = 2000, -- spostamento grezzo rimanente dopo split
|
||||
VICE_MINH = 110, -- altezza minima della morsa
|
||||
OFFSET_DRILL_TENON = 0, -- offset fori su tenoni verso base degli stessi (0=non fare)
|
||||
USER_HOLE_DIAM = 0, -- diametro foro per L20
|
||||
MAX_TOOL_LEN_FOR_HOR_MACH = 311, -- massima lunghezza utensile per poter fare forature (fresature) oltre i 10 gradi dalla verticale
|
||||
DRILL_VZ_MIN_LONG_TOOL = 0.984, -- componente limite per lavorazioni con punta lunga
|
||||
MAX_TOOL_LEN_BACK_HOR_MACH = 250, -- massima lunghezza utensile per poter eseguire lavorazioni (forature/svuotature) da dietro (faccia 4)
|
||||
MAX_HEIGHT_ROT_B_ABOVE = 500, -- massima altezza della trave che permette di ruotare l'asse B sopra la stessa senza collisioni
|
||||
KIOTP = 3, -- coefficiente moltiplicativo per attacco/uscita lama tangente anzichè perpendicolare
|
||||
MAXDIAM_POCK_CORNER = 30, -- diametro massimo utensile ammesso per tasche con angoli interni
|
||||
ADVANCE_TAIL_CUT = true, -- per spostare prima del taglio di separazione il taglio di coda su pezzi corti con robabile caduta
|
||||
ADVANCE_TAIL_OFFS = 5, -- accorciamento taglio di coda avanzato (minimo 1)
|
||||
}
|
||||
|
||||
-- Aggiornamento con dati da B&W
|
||||
local sData = EgtGetSourceDir().."EbwData.lua"
|
||||
if EgtExistsFile( sData) then
|
||||
local Machine = dofile( sData)
|
||||
if Machine then
|
||||
if Machine.Trave then
|
||||
BeamData.MIN_WIDTH = Machine.Trave.YMIN or BeamData.MIN_WIDTH
|
||||
BeamData.MIN_HEIGHT = Machine.Trave.ZMIN or BeamData.MIN_HEIGHT
|
||||
BeamData.MAX_WIDTH = Machine.Trave.YMAX or BeamData.MAX_WIDTH
|
||||
BeamData.MAX_HEIGHT = Machine.Trave.ZMAX or BeamData.MAX_HEIGHT
|
||||
end
|
||||
if Machine.User then
|
||||
if Machine.User.OPTIMIZATIONS_ENABLE_SLICES_F5 == 1 then
|
||||
BeamData.MAX_LEN_SCRAP = Machine.User.OPTIMIZATIONS_LENGTH_SLICES or BeamData.MAX_LEN_SCRAP
|
||||
else
|
||||
BeamData.MAX_LEN_SCRAP = 100000
|
||||
end
|
||||
if Machine.User.OPTIMIZATIONS_ENABLE_SLICES_F6 == 1 then
|
||||
BeamData.MAX_LEN_SCRAP_START = Machine.User.OPTIMIZATIONS_LENGTH_SLICES or BeamData.MAX_LEN_SCRAP_START
|
||||
else
|
||||
BeamData.MAX_LEN_SCRAP_START = 100000
|
||||
end
|
||||
BeamData.USER_HOLE_DIAM = Machine.User.L020_DIAM_HOLE or BeamData.USER_HOLE_DIAM
|
||||
BeamData.OFFSET_DRILL_TENON = Machine.User.L040_OFFSET_P1 or BeamData.OFFSET_DRILL_TENON
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function GetChainSawBlockedAxis( nInd)
|
||||
--if nInd == 1 then
|
||||
-- return 'CS=-90'
|
||||
--else
|
||||
return 'CS=0'
|
||||
--end
|
||||
end
|
||||
BeamData.GetChainSawBlockedAxis = GetChainSawBlockedAxis
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function GetMaxLenRidgeLapFromBottom( dHRaw)
|
||||
if dHRaw < BeamData.MIN_DIM_HBEAM then
|
||||
return BeamData.MAX_LEN_RIDGELAP_FROM_BOTTOM + 0.01
|
||||
else
|
||||
return BeamData.MAX_LEN_RIDGELAP_FROM_BOTTOM_HBEAM + 0.01
|
||||
end
|
||||
end
|
||||
BeamData.GetMaxLenRidgeLapFromBottom = GetMaxLenRidgeLapFromBottom
|
||||
|
||||
---------------------------------------------------------------------
|
||||
return BeamData
|
||||
@@ -0,0 +1,9 @@
|
||||
-- %TABLE_NAME%.lua by Egaltech s.r.l. %DATE_TIME%
|
||||
-- Gestione dati lavorazioni per Travi
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local %TABLE_NAME% = {
|
||||
}
|
||||
|
||||
---------------------------------------------------------------------
|
||||
return %TABLE_NAME%
|
||||
@@ -0,0 +1,13 @@
|
||||
-- CutData.lua by Egaltech s.r.l. 02/11/2023 17:30:43
|
||||
-- Gestione dati lavorazioni per Travi
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local CutData = {
|
||||
{ On = false, Name = 'MiSideInvSaw350', Type = 'HeadSide'},
|
||||
{ On = false, Name = 'MiSideSaw350', Type = 'TailSide'},
|
||||
{ On = true, Name = 'MiSideInvSaw600', Type = 'HeadSide'},
|
||||
{ On = true, Name = 'MiSideSaw600', Type = 'TailSide'}
|
||||
}
|
||||
|
||||
---------------------------------------------------------------------
|
||||
return CutData
|
||||
@@ -0,0 +1,25 @@
|
||||
-- DrillData.lua by Egaltech s.r.l. 06/12/2023 11:29:49
|
||||
-- Gestione dati lavorazioni per Travi
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local DrillData = {
|
||||
{ On = true, Name = 'DrillD05_4', Type = 'Drill'},
|
||||
{ On = true, Name = 'DrillD08', Type = 'Drill'},
|
||||
{ On = true, Name = 'DrillD08_Long', Type = 'Drill'},
|
||||
{ On = true, Name = 'DrillD10', Type = 'Drill'},
|
||||
{ On = true, Name = 'DrillD12', Type = 'Drill'},
|
||||
{ On = true, Name = 'DrillD12_Long', Type = 'Drill'},
|
||||
{ On = true, Name = 'DrillD14', Type = 'Drill'},
|
||||
{ On = true, Name = 'DrillD16', Type = 'Drill'},
|
||||
{ On = true, Name = 'DrillD18', Type = 'Drill'},
|
||||
{ On = true, Name = 'DrillD18_Short', Type = 'Drill'},
|
||||
{ On = true, Name = 'DrillD20', Type = 'Drill'},
|
||||
{ On = true, Name = 'DrillD30', Type = 'Drill'},
|
||||
{ On = true, Name = 'DrillD45', Type = 'Drill'},
|
||||
{ On = true, Name = 'DrillD38', Type = 'AngleDrill'},
|
||||
{ On = true, Name = 'DrillPockD20', Type = 'Pocket'},
|
||||
{ On = true, Name = 'DrillPockD30', Type = 'Pocket'}
|
||||
}
|
||||
|
||||
---------------------------------------------------------------------
|
||||
return DrillData
|
||||
@@ -0,0 +1,45 @@
|
||||
-- C:\EgtData\Machines\Saomad-KAIROS\Beam\EbwData.lua
|
||||
|
||||
local Offsets = {
|
||||
MIN_Y=-1225,
|
||||
MAX_Y=540,
|
||||
MIN_Z=-512,
|
||||
MAX_Z=630,
|
||||
MIN_A=-109.5,
|
||||
MAX_A=109.5,
|
||||
MIN_C=-240,
|
||||
MAX_C=240,
|
||||
MIN_X1=290,
|
||||
MAX_X1=3735,
|
||||
PARK_X1=600,
|
||||
MIN_X2=-3735,
|
||||
MAX_X2=-290,
|
||||
PARK_X2=-600,
|
||||
BEAM_LOAD=1800.0,
|
||||
BEAM_UNLOAD=-1800,
|
||||
TURN_OFFS=0,
|
||||
MILL_PIVOT=-217.00,
|
||||
TAB_OFFSET_Y=0,
|
||||
TAB_OFFSET_Z=0,
|
||||
TIPO_CN=0,
|
||||
RIBCAR=0,
|
||||
NOULOAD=0
|
||||
}
|
||||
|
||||
local Trave = {
|
||||
YMIN=30,
|
||||
YMAX=451,
|
||||
ZMIN=30,
|
||||
ZMAX=251
|
||||
}
|
||||
|
||||
local User = {
|
||||
OPTIMIZATIONS_ENABLE_SLICES_F5=1,
|
||||
OPTIMIZATIONS_ENABLE_SLICES_F6=1,
|
||||
OPTIMIZATIONS_LENGTH_SLICES=100,
|
||||
L020_DIAM_HOLE=14,
|
||||
L040_OFFSET_P1=0
|
||||
}
|
||||
|
||||
local Machine = { Offsets=Offsets, Trave=Trave, User=User}
|
||||
return Machine
|
||||
@@ -0,0 +1,30 @@
|
||||
-- GetTs3Data.lua by Egaltech s.r.l. 2023/09/22
|
||||
-- Recupero dati da file EbwData.lua di macchina
|
||||
|
||||
-- Intestazioni
|
||||
require( 'EgtBase')
|
||||
_ENV = EgtProtectGlobal()
|
||||
EgtEnableDebug( false)
|
||||
|
||||
-- Per test
|
||||
--GTSD = {}
|
||||
--GTSD.TS3PATH = 'EbwData.lua'
|
||||
|
||||
local sLog = 'GetEbwData : ' .. GTSD.TS3PATH
|
||||
EgtOutLog( sLog)
|
||||
|
||||
if EgtExistsFile( GTSD.TS3PATH) then
|
||||
local Machine = dofile( GTSD.TS3PATH)
|
||||
-- Assegno valori di interesse
|
||||
Offsets = Machine.Offsets
|
||||
_G.Offsets = Offsets
|
||||
Trave = Machine.Trave
|
||||
_G.Trave = Trave
|
||||
User = Machine.User
|
||||
_G.User = User
|
||||
end
|
||||
|
||||
-- Tutto ok
|
||||
GTSD.ERR = 0
|
||||
|
||||
EgtOutLog( ' +++ GetEbwData completed')
|
||||
@@ -0,0 +1,52 @@
|
||||
; PIndex = Type, PName, Default, Description
|
||||
; Type : d=double, l=length, s=string
|
||||
|
||||
[1]
|
||||
Name=Offsets
|
||||
1=l,YCARICO,-1460.0,YCARICO
|
||||
2=l,YSCARICO,1700.0,YSCARICO
|
||||
3=l,OFFSETRIB,150.0,OFFSETRIB
|
||||
4=l,PARKYY,480,PARKYY
|
||||
5=l,PARKVV,-480,PARKVV
|
||||
6=l,PIVOTFRESA,-177.0,PIVOTFRESA
|
||||
7=l,PIVOTLAMA,242.0,PIVOTLAMA
|
||||
8=l,OFFSETX,-900.0,OFFSETX
|
||||
9=l,OFFSETZ,-1015.0,OFFSETZ
|
||||
10=l,MIN_X,-1350,MIN_X
|
||||
11=l,MAX_X,0,MAX_X
|
||||
12=l,MIN_Y,110,MIN_Y
|
||||
13=l,MAX_Y,3735,MAX_Y
|
||||
14=l,MIN_Z,-1350,MIN_Z
|
||||
15=l,MAX_Z,0,MAX_Z
|
||||
16=d,MIN_B,-180,MIN_B
|
||||
17=d,MAX_B,360,MAX_B
|
||||
18=d,MIN_C,-360,MIN_C
|
||||
19=d,MAX_C,360,MAX_C
|
||||
20=l,MIN_V,-3735,MIN_V
|
||||
21=l,MAX_V,-110,MAX_V
|
||||
22=d,TIPO_CN,2,TIPO_CN
|
||||
23=d,OFFSETCLAMA,0,OFFSETCLAMA
|
||||
24=d,OFFSETBLAMA,0,OFFSETBLAMA
|
||||
25=d,RIBCAR,0,RIBCAR
|
||||
26=d,SECSUP,1,SECSUP
|
||||
27=d,BLOCKHAUS,0,Blockhaus Configuration
|
||||
28=l,NOULOAD,0,Max Unload Length (0=no limits)
|
||||
29=l,OFFSETX_RINV_1,150,OFFSETX_RINV_1
|
||||
30=l,OFFSETZ_RINV_1,347,OFFSETZ_RINV_1
|
||||
31=l,OFFSETX_RINV_2,150,OFFSETX_RINV_2
|
||||
32=l,OFFSETZ_RINV_2,347,OFFSETZ_RINV_2
|
||||
|
||||
[2]
|
||||
Name=Trave
|
||||
1=l,XMIN,29,XMIN
|
||||
2=l,XMAX,305,XMAX
|
||||
3=l,ZMIN,20,ZMIN
|
||||
4=l,ZMAX,625,ZMAX
|
||||
|
||||
[3]
|
||||
Name=User
|
||||
1=d,OPTIMIZATIONS_ENABLE_SLICES_F5,1,ENABLE_SLICES_ON_END
|
||||
2=d,OPTIMIZATIONS_ENABLE_SLICES_F6,1,ENABLE_SLICES_ON_START
|
||||
3=d,OPTIMIZATIONS_LENGTH_SLICES,100,SLICES_LENGTH
|
||||
4=l,L020_DIAM_HOLE,20,L020_HOLE_DIAM
|
||||
5=l,L040_OFFSET_P1,0,L040_ON_TENON_OFFSET
|
||||
@@ -0,0 +1,43 @@
|
||||
[Cut]
|
||||
1=HeadSide
|
||||
2=TailSide
|
||||
|
||||
[Drill]
|
||||
1=Drill
|
||||
2=Drill_AT
|
||||
3=Pocket
|
||||
4=AngleDrill
|
||||
|
||||
[Milling]
|
||||
1=Prof
|
||||
2=FreeContour
|
||||
3=Tenon
|
||||
4=DtTenon
|
||||
5=DtMortise
|
||||
6=DtMortise_AT
|
||||
7=BirdsMouth
|
||||
8=Chamfer
|
||||
9=Mark
|
||||
10=Text
|
||||
11=Text_AT
|
||||
12=Decor01
|
||||
13=Long2Cut
|
||||
14=Long2CutDown
|
||||
15=LongSmallCut
|
||||
16=BHSideMill
|
||||
17=CleanCorner
|
||||
18=ProfTCone
|
||||
19=Long2CutSide
|
||||
20=SmallToolContour
|
||||
21=AntiSplintMillCut
|
||||
|
||||
[Pocketing]
|
||||
1=Pocket
|
||||
2=Pocket_AT
|
||||
3=OpenPocket
|
||||
4=Mortise
|
||||
5=Mortise_AT
|
||||
|
||||
[Sawing]
|
||||
1=Sawing
|
||||
2=Mortising
|
||||
@@ -0,0 +1,33 @@
|
||||
-- MillingData.lua by Egaltech s.r.l. 05/12/2023 11:50:11
|
||||
-- Gestione dati lavorazioni per Travi
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local MillingData = {
|
||||
{ On = true, Name = 'Profiling30x180', Type = 'Prof'},
|
||||
{ On = true, Name = 'FreeCont30x180', Type = 'FreeContour'},
|
||||
{ On = true, Name = 'FreeCont20x50', Type = 'FreeContour'},
|
||||
{ On = true, Name = 'FreeCont45x80', Type = 'FreeContour'},
|
||||
{ On = true, Name = 'Mill_Tenon100x120', Type = 'Tenon'},
|
||||
{ On = true, Name = 'Mill_DtTen60x160', Type = 'DtTenon'},
|
||||
{ On = true, Name = 'Mill_DtMrt60x160', Type = 'DtMortise'},
|
||||
{ On = true, Name = 'Milling100x120', Type = 'BirdsMouth'},
|
||||
{ On = false, Name = 'Chamfer30x180', Type = 'Chamfer'},
|
||||
{ On = true, Name = 'Milling100x120', Type = 'Chamfer'},
|
||||
{ On = true, Name = 'Text45x40', Type = 'Mark'},
|
||||
{ On = true, Name = 'Text45x40', Type = 'Text'},
|
||||
{ On = true, Name = 'Text45x40', Type = 'Decor01'},
|
||||
{ On = true, Name = 'Mill_L2C100x120', Type = 'Long2Cut'},
|
||||
{ On = true, Name = 'Mill_L2CD30x180', Type = 'Long2CutDown'},
|
||||
{ On = false, Name = 'Mill_L2CD100x120', Type = 'Long2CutDown'},
|
||||
{ On = true, Name = 'Mill_L2CD30x180', Type = 'Long2CutSide'},
|
||||
{ On = true, Name = 'Mill_L2CD100x120', Type = 'Long2CutSide'},
|
||||
{ On = true, Name = 'Milling30x180', Type = 'LongSmallCut'},
|
||||
{ On = true, Name = 'MillOnSideBH', Type = 'BHSideMill'},
|
||||
{ On = true, Name = 'FreeCont30x180', Type = 'SmallToolContour'},
|
||||
{ On = true, Name = 'Milling10x50', Type = 'SmallToolContour'},
|
||||
{ On = true, Name = 'Milling30x180', Type = 'AntiSplintMillCut'},
|
||||
{ On = true, Name = 'Clean35x40', Type = 'CleanCorner'}
|
||||
}
|
||||
|
||||
---------------------------------------------------------------------
|
||||
return MillingData
|
||||
@@ -0,0 +1,21 @@
|
||||
-- PocketingData.lua by Egaltech s.r.l. 05/12/2023 08:55:15
|
||||
-- Gestione dati lavorazioni per Travi
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local PocketingData = {
|
||||
{ On = true, Name = 'Svuot100x120', Type = 'OpenPocket'},
|
||||
{ On = false, Name = 'Svuot100x150', Type = 'OpenPocket'},
|
||||
{ On = true, Name = 'Svuot60x80', Type = 'OpenPocket'},
|
||||
{ On = false, Name = 'Svuot35x70', Type = 'OpenPocket'},
|
||||
{ On = true, Name = 'Svuot20x50', Type = 'OpenPocket'},
|
||||
{ On = true, Name = 'Svuot30x180', Type = 'OpenPocket'},
|
||||
{ On = true, Name = 'Svuot45x80', Type = 'OpenPocket'},
|
||||
{ On = false, Name = 'Svuot35x70', Type = 'Pocket'},
|
||||
{ On = true, Name = 'Svuot20x50', Type = 'Pocket'},
|
||||
{ On = true, Name = 'Svuot30x180', Type = 'Pocket'},
|
||||
{ On = true, Name = 'Svuot45x80', Type = 'Pocket'},
|
||||
{ On = true, Name = 'Mortiser38.89x130', Type = 'Mortise'}
|
||||
}
|
||||
|
||||
---------------------------------------------------------------------
|
||||
return PocketingData
|
||||
@@ -0,0 +1,10 @@
|
||||
-- SawingData.lua by Egaltech s.r.l. 22/09/2023 23:00:58
|
||||
-- Gestione dati lavorazioni per Travi
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local SawingData = {
|
||||
{ On = true, Name = 'TaglioCatena', Type = 'Sawing'}
|
||||
}
|
||||
|
||||
---------------------------------------------------------------------
|
||||
return SawingData
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,4 @@
|
||||
// English machine message file 2023/12/06
|
||||
|
||||
[PLC]
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
// File dei messaggi macchina Italiano 2023/12/06
|
||||
[MDI]
|
||||
|
||||
|
||||
[PLC]
|
||||
|
||||
|
||||
[CNC]
|
||||
|
||||
|
||||
[INPUT]
|
||||
@@ -0,0 +1,262 @@
|
||||
<!DOCTYPE TS>
|
||||
<TS>
|
||||
<context>
|
||||
<name>slaeconv</name>
|
||||
<message>
|
||||
<source>700000/PLC/PMC</source>
|
||||
<translation>MACCHINA IN EMERGENZA</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700001/PLC/PMC</source>
|
||||
<translation>FUNGO SU QUADRO PREMUTO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700002/PLC/PMC</source>
|
||||
<translation>FUNGO SU CONSOLLE PREMUTO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700003/PLC/PMC</source>
|
||||
<translation>PORTE APERTE</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700004/PLC/PMC</source>
|
||||
<translation>ANOMALIA PRESENZA ARIA</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700005/PLC/PMC</source>
|
||||
<translation>CAMBIO UTENSILE INTERROTTO! PREMERE RESET PER 5 SECONDI</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700006/PLC/PMC</source>
|
||||
<translation>ANOMALIA SBLOCCO UTENSILE</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700007/PLC/PMC</source>
|
||||
<translation>ANOMALIA BLOCCO UTENSILE</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700008/PLC/PMC</source>
|
||||
<translation>ANOMALIA APERTURA PRESSORE ORIZZONTALE X2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700009/PLC/PMC</source>
|
||||
<translation>ANOMALIA CHIUSURA PRESSORE ORIZZONTALE X2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700010/PLC/PMC</source>
|
||||
<translation>ANOMALIA AVANTI PISTONE SCARICO </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700011/PLC/PMC</source>
|
||||
<translation>ANOMALIA INDIETRO PISTONE SCARICO </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700012/PLC/PMC</source>
|
||||
<translation>ANOMALIA SALITA SOLLEVATORE X1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700013/PLC/PMC</source>
|
||||
<translation>ANOMALIA DISCESA SOLLEVATORE X1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700014/PLC/PMC</source>
|
||||
<translation>ANOMALIA SALITA SOLLEVATORE X2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700015/PLC/PMC</source>
|
||||
<translation>ANOMALIA DISCESA SOLLEVATORE X2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700016/PLC/PMC</source>
|
||||
<translation>ANOMALIA SEGA AVANTI</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700017/PLC/PMC</source>
|
||||
<translation>ANOMALIA SEGA INDIETRO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700018/PLC/PMC</source>
|
||||
<translation>ANOMALIA SALITA BATTUTA INTERMEDIA INGRESSO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700019/PLC/PMC</source>
|
||||
<translation>ANOMALIA DISCESA BATTUTA INTERMEDIA INGRESSO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700020/PLC/PMC</source>
|
||||
<translation>ANOMALIA CATENE INGRESSO SU</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700021/PLC/PMC</source>
|
||||
<translation>ANOMALIA CATENE INGRESSO GIU</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700022/PLC/PMC</source>
|
||||
<translation>ANOMALIA PIATTO AVANTI X1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700023/PLC/PMC</source>
|
||||
<translation>ANOMALIA PIATTO INDIETRO X1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700024/PLC/PMC</source>
|
||||
<translation>ANOMALIA PIATTO AVANTI X2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700025/PLC/PMC</source>
|
||||
<translation>ANOMALIA PIATTO INDIETRO X2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700026/PLC/PMC</source>
|
||||
<translation>ANOMALIA SALITA PRESSORE VERTICALE X1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700027/PLC/PMC</source>
|
||||
<translation>ANOMALIA DISCESA PRESSORE VERTICALE X1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700028/PLC/PMC</source>
|
||||
<translation>ANOMALIA SALITA PRESSORE VERTICALE X2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700029/PLC/PMC</source>
|
||||
<translation>ANOMALIA DISCESA PRESSORE VERTICALE X2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700030/PLC/PMC</source>
|
||||
<translation>ANOMALIA APERTURA PRESSORE ORIZZONTALE X1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700031/PLC/PMC</source>
|
||||
<translation>ANOMALIA CHIUSURA PRESSORE ORIZZONTALE X1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700032/PLC/PMC</source>
|
||||
<translation>ANOMALIA CONDIZIONATORE QUADRO ELETTRICO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700033/PLC/PMC</source>
|
||||
<translation>SBLOCCO UT NON POSSIBILE CON MANDRINO NON FERMO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700034/PLC/PMC</source>
|
||||
<translation>ANOMALIA SBLOCCO UTENSILE 2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700035/PLC/PMC</source>
|
||||
<translation>INTERVENTO TERMICO POMPA DI LUBRIFICAZIONE</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700036/PLC/PMC</source>
|
||||
<translation>LIVELLO MINIMO OLIO LUBRIFICAZIONE</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700037/PLC/PMC</source>
|
||||
<translation>ANOMALIA APERTURA PROTEZIONE CONI SINISTRA</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700038/PLC/PMC</source>
|
||||
<translation>ANOMALIA CHIUSURA PROTEZIONE CONI SINISTRA</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700039/PLC/PMC</source>
|
||||
<translation>ANOMALIA APERTURA PROTEZIONE CONI DESTRA</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700040/PLC/PMC</source>
|
||||
<translation>ANOMALIA CHIUSURA PROTEZIONE CONI DESTRA</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700041/PLC/PMC</source>
|
||||
<translation>ANOMALIA AVANTI RULLIERA MODILE X1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700042/PLC/PMC</source>
|
||||
<translation>ANOMALIA INDIETRO RULLIERA MOBILE X1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700043/PLC/PMC</source>
|
||||
<translation>ANOMALIA AVANTI RULLIERA 100 MODILE X1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700044/PLC/PMC</source>
|
||||
<translation>ANOMALIA INDIETRO RULLIERA 100 MOBILE X1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700045/PLC/PMC</source>
|
||||
<translation>ANOMALIA AVANTI RULLIERA MODILE X2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700046/PLC/PMC</source>
|
||||
<translation>ANOMALIA INDIETRO RULLIERA MOBILE X2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700047/PLC/PMC</source>
|
||||
<translation>ANOMALIA AVANTI RULLIERA 100 MODILE X2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700048/PLC/PMC</source>
|
||||
<translation>ANOMALIA INDIETRO RULLIERA 100 MOBILE X2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700049/PLC/PMC</source>
|
||||
<translation>SCARICO PIENO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700050/PLC/PMC</source>
|
||||
<translation>PASSO LEGNO IMPEGNATO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700051/PLC/PMC</source>
|
||||
<translation>ASSE Z NON IN POSIZIONE PER START CICLO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700052/PLC/PMC</source>
|
||||
<translation>ASSE Y NON IM POSIZIONE PER START CICLO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700053/PLC/PMC</source>
|
||||
<translation>INCONGRUENZA DATI UTENSILE IN MANDRINO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700054/PLC/PMC</source>
|
||||
<translation>STOP WORKING ATTIVO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700055/PLC/PMC</source>
|
||||
<translation>AUTO OFF ATTIVO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700056/PLC/PMC</source>
|
||||
<translation>LUNGHEZZA PEZZO ERRATA</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700057/PLC/PMC</source>
|
||||
<translation>LARGHEZZA PEZZO ERRATA</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700058/PLC/PMC</source>
|
||||
<translation>SPESSORE PEZZO ERRATO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700059/PLC/PMC</source>
|
||||
<translation>FEED HOLD - SPINDLE HOLD</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700060/PLC/PMC</source>
|
||||
<translation>PRERISCALDO MANDRINO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700061/PLC/PMC</source>
|
||||
<translation>PRERISCALDO MANDRINO IN CORSO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700062/PLC/PMC</source>
|
||||
<translation>SELETTORE BYPASS PULSANTIERA WIRELESS ATTIVO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700063/PLC/PMC</source>
|
||||
<translation>VALVOLA PROPORZIONALE SMC PROFIBUS CHIUSURA PINZE FAULT</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
@@ -1,93 +0,0 @@
|
||||
# Saomad-KAIROS-MK1
|
||||
|
||||
|
||||
|
||||
## Getting started
|
||||
|
||||
To make it easy for you to get started with GitLab, here's a list of recommended next steps.
|
||||
|
||||
Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)!
|
||||
|
||||
## Add your files
|
||||
|
||||
* [Create](https://docs.gitlab.com/user/project/repository/web_editor/#create-a-file) or [upload](https://docs.gitlab.com/user/project/repository/web_editor/#upload-a-file) files
|
||||
* [Add files using the command line](https://docs.gitlab.com/topics/git/add_files/#add-files-to-a-git-repository) or push an existing Git repository with the following command:
|
||||
|
||||
```
|
||||
cd existing_repo
|
||||
git remote add origin https://gitlab.steamware.net/egalware-machines/saomad/saomad-kairos-mk1.git
|
||||
git branch -M main
|
||||
git push -uf origin main
|
||||
```
|
||||
|
||||
## Integrate with your tools
|
||||
|
||||
* [Set up project integrations](https://gitlab.steamware.net/egalware-machines/saomad/saomad-kairos-mk1/-/settings/integrations)
|
||||
|
||||
## Collaborate with your team
|
||||
|
||||
* [Invite team members and collaborators](https://docs.gitlab.com/user/project/members/)
|
||||
* [Create a new merge request](https://docs.gitlab.com/user/project/merge_requests/creating_merge_requests/)
|
||||
* [Automatically close issues from merge requests](https://docs.gitlab.com/user/project/issues/managing_issues/#closing-issues-automatically)
|
||||
* [Enable merge request approvals](https://docs.gitlab.com/user/project/merge_requests/approvals/)
|
||||
* [Set auto-merge](https://docs.gitlab.com/user/project/merge_requests/auto_merge/)
|
||||
|
||||
## Test and Deploy
|
||||
|
||||
Use the built-in continuous integration in GitLab.
|
||||
|
||||
* [Get started with GitLab CI/CD](https://docs.gitlab.com/ci/quick_start/)
|
||||
* [Analyze your code for known vulnerabilities with Static Application Security Testing (SAST)](https://docs.gitlab.com/user/application_security/sast/)
|
||||
* [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/topics/autodevops/requirements/)
|
||||
* [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/user/clusters/agent/)
|
||||
* [Set up protected environments](https://docs.gitlab.com/ci/environments/protected_environments/)
|
||||
|
||||
***
|
||||
|
||||
# Editing this README
|
||||
|
||||
When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thanks to [makeareadme.com](https://www.makeareadme.com/) for this template.
|
||||
|
||||
## Suggestions for a good README
|
||||
|
||||
Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information.
|
||||
|
||||
## Name
|
||||
Choose a self-explaining name for your project.
|
||||
|
||||
## Description
|
||||
Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors.
|
||||
|
||||
## Badges
|
||||
On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge.
|
||||
|
||||
## Visuals
|
||||
Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method.
|
||||
|
||||
## Installation
|
||||
Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection.
|
||||
|
||||
## Usage
|
||||
Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README.
|
||||
|
||||
## Support
|
||||
Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc.
|
||||
|
||||
## Roadmap
|
||||
If you have ideas for releases in the future, it is a good idea to list them in the README.
|
||||
|
||||
## Contributing
|
||||
State if you are open to contributions and what your requirements are for accepting them.
|
||||
|
||||
For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self.
|
||||
|
||||
You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser.
|
||||
|
||||
## Authors and acknowledgment
|
||||
Show your appreciation to those who have contributed to the project.
|
||||
|
||||
## License
|
||||
For open source projects, say how it is licensed.
|
||||
|
||||
## Project status
|
||||
If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers.
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,112 @@
|
||||
; Commento per evitare BOM con UTF-8
|
||||
[General]
|
||||
Material=Beam
|
||||
NCType=5 ; 1=Tpa, 2=Num Flexium, 3=Num Axium APServer, 4=Num Axium PCToolkit, 5=Siemens_Sharp7
|
||||
Flow=2
|
||||
IsoFileDir=\\192.168.214.253\iso
|
||||
Ip=192.168.214.1
|
||||
Rack=0
|
||||
Slot=1
|
||||
Debug=2
|
||||
|
||||
[MainVariables]
|
||||
; 1 = Name, Variable Path, ReadType, Type
|
||||
; ReadType => o=one time;c=continuous
|
||||
; Type => plc;cn
|
||||
1=Data_ToRead,302:0.0:1,c,plc
|
||||
2=Reset_State,302:0.1:1,c,plc
|
||||
3=Running,302:2.0:2,c,plc
|
||||
;1=Data_ToRead,302:0.0:3,c,plc
|
||||
;2=Reset_State,302:1.0:2,c,plc
|
||||
;3=Running,302:2.0:2,c,plc
|
||||
4=P_Prod,302:4.0:2,c,plc
|
||||
5=P_Machgroup,302:6.0:2,c,plc
|
||||
6=P_Part,302:8.0:2,c,plc
|
||||
7=P_State,302:10.0:2,c,plc
|
||||
8=Laser_X,302:12.0:2,c,plc
|
||||
9=Laser_Y,302:14.0:2,c,plc
|
||||
10=Laser_Z,302:16.0:2,c,plc
|
||||
11=Alarms1,302:18.0:2,c,plc
|
||||
12=Alarms2,302:20.0:2,c,plc
|
||||
13=Alarms3,302:22.0:2,c,plc
|
||||
14=Alarms4,302:24.0:2,c,plc
|
||||
15=Alarms5,302:26.0:2,c,plc
|
||||
16=Alarms6,302:28.0:2,c,plc
|
||||
17=Data_Readed,301:0.0:1,c,plc
|
||||
18=Reset_Readed,301:0.1:1,c,plc
|
||||
19=ISO_Num,301:2.0:2,c,plc
|
||||
20=Reset_Step,301:1.4:1,c,plc
|
||||
21=Reset_Step_Ok,302:0.2:1,c,plc
|
||||
22=NC_Status,302:30.0:2,c,plc
|
||||
23=NC_Mode,302:32.0:2,c,plc
|
||||
24=Open_Clamp,302:0.4:1,c,plc
|
||||
25=PLC_Messages1,302:18.0:2,c,plc
|
||||
26=PLC_Messages2,302:20.0:2,c,plc
|
||||
27=PLC_Messages3,302:22.0:2,c,plc
|
||||
28=PLC_Messages4,302:24.0:2,c,plc
|
||||
29=PLC_Messages5,302:26.0:2,c,plc
|
||||
30=PLC_Messages6,302:28.0:2,c,plc
|
||||
|
||||
[Languages]
|
||||
Enable=0
|
||||
Language1=Italiano,Ita.txt
|
||||
Language2=English,Eng.txt
|
||||
|
||||
[Tools]
|
||||
Drillbit=1
|
||||
Sawblade=1
|
||||
Mill=1
|
||||
Mortise=1
|
||||
Chisel=0
|
||||
DrillMaker=MakeWoodDrill.lua
|
||||
SawbladeMaker=MakeSawblade.lua
|
||||
MillMaker=MakeWoodCylMill.lua
|
||||
MortiseMaker=MakeMortise.lua
|
||||
ChiselMaker=MakeChisel.lua
|
||||
Active=0
|
||||
|
||||
[ToolHolder]
|
||||
H1.1=Standard.nge
|
||||
H1.1:MILL_NOTIP=MillNoTip.nge
|
||||
H1.1:SAW_FLAT=TcSaw2.nge
|
||||
H3.1=ChainSaw.nge
|
||||
|
||||
[Machinings]
|
||||
Drilling=1
|
||||
Sawing=1
|
||||
Milling=1
|
||||
Pocketing=1
|
||||
Mortising=1
|
||||
Chiseling=0
|
||||
SawRoughing=0
|
||||
SawFinishing=0
|
||||
GenMachining=0
|
||||
SurfFinishing=1
|
||||
|
||||
[Machining]
|
||||
InitScript=InitMach.lua
|
||||
ExitScript=ExitMach.lua
|
||||
|
||||
[Disposition]
|
||||
;InitScript=InitDisp.lua
|
||||
|
||||
[Heads]
|
||||
; 5 axis head
|
||||
H1=6608
|
||||
; 5 axis saw
|
||||
H2=6615
|
||||
; Chainsaw
|
||||
H3=6616
|
||||
; Angular transmission
|
||||
H5=6603
|
||||
|
||||
[SetUp]
|
||||
Default=Standard
|
||||
|
||||
[Estimations]
|
||||
Enable=1
|
||||
WinPlace=0,458,74,669,933
|
||||
|
||||
[VMill]
|
||||
Enable=1
|
||||
Save=0
|
||||
@@ -0,0 +1,561 @@
|
||||
-- Descrizione macchina Saomad-KAIROS by EgalWare s.r.l. 2023/12/07
|
||||
-- 2023/09/22 DS ver 2.5i1 Prima versione
|
||||
-- 2023/10/06 DS ver 2.5j1 Completato modello macchina e simulazione.
|
||||
-- 2023/10/14 DS ver 2.5j2 Generazione di semplici programmi di lavorazione.
|
||||
-- 2023/10/16 DS ver 2.5j3 Commenti prima di movimenti carrelli con sporgenza pinzaggi e relative ripetizioni ora sono esecuzioni.
|
||||
-- 2023/10/18 DS ver 2.5j4 Aggiunta gestione nuovi tipi di scambio. Migliorato controllo pinzaggio per limiti corse X1 e X2.
|
||||
-- 2023/10/24 DS ver 2.5j5 Ulteriori migliorie agli scambi. Gestione ripartenze.
|
||||
-- 2023/11/27 DS ver 2.5k3 Aggiunta gestione ripartenze.
|
||||
-- 2023/11/29 DS ver 2.5k6 Aggiunti diversi scambi carrelli. Corretto SpecAdjustCarrA3 in mlse.
|
||||
-- 2023/12/07 DS ver 2.5l7 Modifiche ed aggiustamenti vari durante le prove.
|
||||
-- 2023/12/13 AV ver.2.5l8 Piccola correzione per errore digitazione variabile in calcolo riposizionamento carrelli (SpecAdjustCarrB3)
|
||||
|
||||
require( 'EmtGenerator')
|
||||
EgtEnableDebug( false)
|
||||
|
||||
PP_VER = '2.5l8'
|
||||
MIN_MACH_VER = '2.5j1'
|
||||
|
||||
EgtOutLog ( '** Saomad-KAIROS '..PP_VER..' (MinMach '.. MIN_MACH_VER ..') **', 1)
|
||||
|
||||
-- Parametri macchina
|
||||
NumericalControl = 'SIEMENS'
|
||||
ChainSaw = false
|
||||
MinY = -1225
|
||||
MaxY = 690
|
||||
ParkY = 400
|
||||
FmaxY = 45000
|
||||
MinZ = -512
|
||||
MaxZ = 630
|
||||
ParkZ = 620
|
||||
FmaxZ = 45000
|
||||
MinA = -109.5
|
||||
MaxA = 109.5
|
||||
ParkA = 0
|
||||
FmaxA = 10440
|
||||
MinC = -240
|
||||
MaxC = 240
|
||||
ParkC = 90
|
||||
FmaxC = 18000
|
||||
MillOffs = 217.0
|
||||
ChSawLen = 90.0
|
||||
MinX1 = 290.0
|
||||
MaxX1 = 3760.0
|
||||
ParkX1 = 480.0
|
||||
FmaxX1 = 45000
|
||||
MinX2 = -3760.0
|
||||
MaxX2 = -290.0
|
||||
ParkX2 = -480.0
|
||||
FmaxX2 = 45000
|
||||
LoadT = 1800.0
|
||||
UnloadT = -1800
|
||||
TurnerOffs = 0
|
||||
MaxHOpen = 460
|
||||
MaxVOpen = 280
|
||||
LenToPress = 500
|
||||
MinRX = -10
|
||||
MidRX = 130
|
||||
MaxRX = 430
|
||||
DeltaTabY = 0
|
||||
DeltaTabZ = 0
|
||||
DimTabY = 500
|
||||
DimTabX = 34000
|
||||
DistBack = 880
|
||||
StartRotation = true
|
||||
AutomaticRotation = true
|
||||
AutoRotMinLen = 2600
|
||||
MaxUnloadLen = 0
|
||||
DefTcPos = 'T1'
|
||||
CoeffVM = 0.5
|
||||
|
||||
-- Aggiornamento con dati da B&W
|
||||
local sData = EgtGetSourceDir().."Beam\\EbwData.lua"
|
||||
if EgtExistsFile( sData) then
|
||||
local Machine = dofile( sData)
|
||||
if Machine then
|
||||
if Machine.Offsets then
|
||||
if Machine.Offsets.TIPO_CN == 0 then
|
||||
NumericalControl = 'SIEMENS'
|
||||
end
|
||||
if Machine.Offsets.MIN_Y then MinY = Machine.Offsets.MIN_Y end
|
||||
if Machine.Offsets.MAX_Y then MaxY = Machine.Offsets.MAX_Y 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_A then MinA = Machine.Offsets.MIN_A end
|
||||
if Machine.Offsets.MAX_A then MaxA = Machine.Offsets.MAX_A 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
|
||||
if Machine.Offsets.MILL_PIVOT then MillOffs = - Machine.Offsets.MILL_PIVOT end
|
||||
if Machine.Offsets.MIN_X1 then MinX1 = Machine.Offsets.MIN_X1 end
|
||||
if Machine.Offsets.MAX_X1 then MaxX1 = Machine.Offsets.MAX_X1 end
|
||||
if Machine.Offsets.MIN_X2 then MinX2 = Machine.Offsets.MIN_X2 end
|
||||
if Machine.Offsets.MAX_X2 then MaxX2 = Machine.Offsets.MAX_X2 end
|
||||
ParkX1 = Machine.Offsets.PARK_X1 or ParkX1
|
||||
ParkX2 = Machine.Offsets.PARK_X2 or ParkX2
|
||||
if Machine.Offsets.BEAM_LOAD then LoadT = Machine.Offsets.BEAM_LOAD end
|
||||
if Machine.Offsets.BEAM_UNLOAD then UnloadT = Machine.Offsets.BEAM_UNLOAD end
|
||||
TurnerOffs = Machine.Offsets.TURN_OFFS or TurnerOffs
|
||||
if Machine.Offsets.TAB_OFFSET_Y then DeltaTabY = Machine.Offsets.TAB_OFFSET_Y end
|
||||
if Machine.Offsets.TAB_OFFSET_Z then DeltaTabZ = Machine.Offsets.TAB_OFFSET_Z end
|
||||
if Machine.Offsets.NOULOAD then MaxUnloadLen = Machine.Offsets.NOULOAD end
|
||||
end
|
||||
ParkY = EgtClamp( ParkY, MinY, MaxY)
|
||||
ParkZ = EgtClamp( ParkZ, MinZ, MaxZ)
|
||||
ParkA = EgtClamp( ParkA, MinA, MaxA)
|
||||
ParkC = EgtClamp( ParkC, MinC, MaxC)
|
||||
end
|
||||
end
|
||||
|
||||
EmtGeneral {
|
||||
File='Saomad-KAIROS-MK1.nge',
|
||||
Offset = Vector3d( 0.0, -35.34, -804.0),
|
||||
AxisMaxAdjust = 30,
|
||||
AxisMaxRotAdj = 0.5,
|
||||
ExitMaxAdjust = 30,
|
||||
ExitMaxRotAdj = 0.5,
|
||||
AngDeltaMinForHome = 165,
|
||||
Special = 'Saomad-KAIROS-MK1.mlse',
|
||||
Processor = 'Saomad-KAIROS-MK1.mlpe'}
|
||||
local BaseId = EmtBase {
|
||||
Name = 'Base',
|
||||
Geo='BASE/GEO',
|
||||
Aux={'BASE/SOLID', 'BASE/LOAD', 'BASE/UNLOAD','BASE/TC', 'BASE/SIGN', 'BASE/COLLISION'}}
|
||||
EmtAxis {
|
||||
Name = 'RX1',
|
||||
Parent = 'Base',
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = X_AX(),
|
||||
Pos = Point3d( -1194.4, -513.5, -52.4),
|
||||
Stroke = {MinRX, MaxRX},
|
||||
Home = MinRX,
|
||||
Geo = 'RX1_AXIS/GEO',
|
||||
Aux = {'RX1_AXIS/SOLID', 'RX1_AXIS/COLLISION'}}
|
||||
EmtAxis {
|
||||
Name = 'RX2',
|
||||
Parent = 'Base',
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = -X_AX(),
|
||||
Pos = Point3d( 1194.4, -513.5, -52.4),
|
||||
Stroke = {MinRX, MaxRX},
|
||||
Home = MinRX,
|
||||
Geo = 'RX2_AXIS/GEO',
|
||||
Aux = {'RX2_AXIS/SOLID', 'RX2_AXIS/COLLISION'}}
|
||||
local YId = EmtAxis {
|
||||
Name = 'Y',
|
||||
Parent = 'Base',
|
||||
Token = 'Y1',
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = Y_AX(),
|
||||
Pos = Point3d( -639.5, 372.66, 945.7),
|
||||
Stroke = {MinY, MaxY},
|
||||
Home = ParkY,
|
||||
Geo = 'Y_AXIS/GEO',
|
||||
Aux = 'Y_AXIS/SOLID'}
|
||||
EmtAxis {
|
||||
Name = 'Z',
|
||||
Parent = 'Y',
|
||||
Token = 'Z1',
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = Z_AX(),
|
||||
Pos = Point3d( -19.25, -113.54, 790.0),
|
||||
Stroke = {MinZ, MaxZ},
|
||||
Home = ParkZ,
|
||||
Geo = 'Z_AXIS/GEO',
|
||||
Aux = {'Z_AXIS/SOLID', 'Z_AXIS/COLLISION'}}
|
||||
local CId = EmtAxis {
|
||||
Name = 'C',
|
||||
Parent = 'Z',
|
||||
Token = 'C1',
|
||||
Type = MCH_AT.ROTARY,
|
||||
Dir = -Z_AX(),
|
||||
Pos = Point3d( 0, 0, 0),
|
||||
Stroke = {MinC, MaxC},
|
||||
Home = ParkC,
|
||||
Geo = 'C_AXIS/GEO',
|
||||
Aux = {'C_AXIS/SOLID', 'C_AXIS/COLLISION'}}
|
||||
EmtAxis {
|
||||
Name = 'A',
|
||||
Parent = 'C',
|
||||
Token = 'A1',
|
||||
Type = MCH_AT.ROTARY,
|
||||
Dir = X_AX(),
|
||||
Pos = Point3d( 0, 0, MillOffs),
|
||||
Stroke = {MinA, MaxA},
|
||||
Home = ParkA,
|
||||
Geo = 'A_AXIS/GEO',
|
||||
Aux = {'A_AXIS/SOLID', 'A_AXIS/COLLISION'}}
|
||||
-- Frese
|
||||
local H1Id = EmtHead {
|
||||
Name = 'H1',
|
||||
Parent = 'A',
|
||||
HSet = 'H1',
|
||||
Type = MCH_HT.STD,
|
||||
Pos = Point3d( 0, 0, 0),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Rot1W = 2,
|
||||
OthColl = {'A/SOLID', 'C/SOLID'},
|
||||
Geo = 'H1_HEAD/GEO'}
|
||||
EgtSetInfo( H1Id, 'ZMAXONROT', '1,60')
|
||||
-- Sega a catena
|
||||
if ChainSaw then
|
||||
EmtAxis {
|
||||
Name = 'CS',
|
||||
Parent = 'A',
|
||||
Token = '**',
|
||||
Type = MCH_AT.ROTARY,
|
||||
Dir = Z_AX(),
|
||||
Pos = Point3d( 0, 0, 0),
|
||||
Stroke = { -90, 90},
|
||||
Home = 0,
|
||||
Geo = 'CS_AXIS/GEO'}
|
||||
local H3Id = EmtHead {
|
||||
Name = 'H3',
|
||||
Parent = 'CS',
|
||||
HSet = 'H1',
|
||||
Type = MCH_HT.STD,
|
||||
Pos = Point3d( 0, 0, -ChSawLen),
|
||||
TDir = X_AX(),
|
||||
ADir = Z_AX(),
|
||||
Rot1W = 0.2,
|
||||
SolCh = MCH_SCC.ADIR_NEAR,
|
||||
OthColl = {'A/SOLID', 'C/SOLID'},
|
||||
Geo = 'H3_HEAD/GEO'}
|
||||
EgtSetInfo( H3Id, 'ZMAXONROT', '1,5')
|
||||
end
|
||||
-- Morse
|
||||
local X1Id = EmtAxis {
|
||||
Name = 'X1',
|
||||
Token = 'X1',
|
||||
Parent = 'Base',
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = -X_AX(),
|
||||
Pos = Point3d( -953.0, 111.75, 1450.0),
|
||||
Stroke = { MinX1, MaxX1},
|
||||
Home = ParkX1,
|
||||
Geo = 'X1_AXIS/GEO',
|
||||
Aux = {'X1_AXIS/SOLID', 'X1_AXIS/COLLISION'}}
|
||||
local PX1Id = EmtAxis {
|
||||
Name = 'PX1',
|
||||
Parent = 'X1',
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = -Y_AX(),
|
||||
Pos = Point3d( -904.0, -276.5, 1449.0),
|
||||
Stroke = { 0, MaxHOpen},
|
||||
Home = MaxHOpen,
|
||||
Geo = 'PX1_AXIS/GEO',
|
||||
Aux = {'PX1_AXIS/SOLID', 'PX1_AXIS/COLLISION'}}
|
||||
local QX1Id = EmtAxis {
|
||||
Name = 'QX1',
|
||||
Parent = 'X1',
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = Z_AX(),
|
||||
Pos = Point3d( -904.0, -276.5, 1449.0),
|
||||
Stroke = { 0, MaxVOpen},
|
||||
Home = MaxVOpen,
|
||||
Geo = 'QX1_AXIS/GEO',
|
||||
Aux = {'QX1_AXIS/SOLID', 'QX1_AXIS/COLLISION'}}
|
||||
local X2Id = EmtAxis {
|
||||
Name = 'X2',
|
||||
Token = 'X2',
|
||||
Parent = 'Base',
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = -X_AX(),
|
||||
Pos = Point3d( 953.0, 111.75, 1450.0),
|
||||
Stroke = { MinX2, MaxX2},
|
||||
Home = ParkX2,
|
||||
Geo = 'X2_AXIS/GEO',
|
||||
Aux = {'X2_AXIS/SOLID', 'X2_AXIS/COLLISION'}}
|
||||
local PX2Id = EmtAxis {
|
||||
Name = 'PX2',
|
||||
Parent = 'X2',
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = -Y_AX(),
|
||||
Pos = Point3d( 904.0, -276.5, 1449.0),
|
||||
Stroke = { 0, MaxHOpen},
|
||||
Home = MaxHOpen,
|
||||
Geo = 'PX2_AXIS/GEO',
|
||||
Aux = {'PX2_AXIS/SOLID', 'PX2_AXIS/COLLISION'}}
|
||||
local QX2Id = EmtAxis {
|
||||
Name = 'QX2',
|
||||
Parent = 'X2',
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = Z_AX(),
|
||||
Pos = Point3d( 904.0, -276.5, 1449.0),
|
||||
Stroke = { 0, MaxVOpen},
|
||||
Home = MaxVOpen,
|
||||
Geo = 'QX2_AXIS/GEO',
|
||||
Aux = {'QX2_AXIS/SOLID', 'QX2_AXIS/COLLISION'}}
|
||||
EmtAxis {
|
||||
Name = 'T',
|
||||
Parent = 'Base',
|
||||
--Token = '**',
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = - X_AX(),
|
||||
Pos = Point3d( 0, 613.16, -830.037),
|
||||
Stroke = { -30000, 30000},
|
||||
Home = LoadT,
|
||||
Geo = 'T_AXIS/GEO'}
|
||||
EmtTable {
|
||||
Name = 'Tab',
|
||||
Parent = 'T',
|
||||
Type = MCH_TT.FLAT,
|
||||
Ref1 = Point3d( -DimTabX, DeltaTabY - DimTabY, DeltaTabZ),
|
||||
Scale = { DimTabX / 20000, DimTabY / 500, 1},
|
||||
Geo = 'TABLE/GEO',
|
||||
Aux = 'TABLE/SOLID'}
|
||||
-- ToolChanger
|
||||
local ptTcCen = Point3d( 0, 1633.0, 79.2)
|
||||
EmtTcPos {
|
||||
Name = 'T1',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen + VectorFromPolar( 400, -3 * 22.5),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'BASE/T1'}
|
||||
EmtTcPos {
|
||||
Name = 'T2',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen + VectorFromPolar( 400, -2 * 22.5),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'BASE/T2'}
|
||||
EmtTcPos {
|
||||
Name = 'T3',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen + VectorFromPolar( 400, -1 * 22.5),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'BASE/T3'}
|
||||
EmtTcPos {
|
||||
Name = 'T4',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen + VectorFromPolar( 400, 0 * 22.5),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'BASE/T4'}
|
||||
EmtTcPos {
|
||||
Name = 'T5',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen + VectorFromPolar( 400, 1 * 22.5),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'BASE/T5'}
|
||||
EmtTcPos {
|
||||
Name = 'T6',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen + VectorFromPolar( 400, 2 * 22.5),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'BASE/T6'}
|
||||
EmtTcPos {
|
||||
Name = 'T7',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen + VectorFromPolar( 400, 3 * 22.5),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'BASE/T7'}
|
||||
EmtTcPos {
|
||||
Name = 'T8',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen + VectorFromPolar( 400, 4 * 22.5),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'BASE/T8'}
|
||||
EmtTcPos {
|
||||
Name = 'T9',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen + VectorFromPolar( 400, 5 * 22.5),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'BASE/T9'}
|
||||
EmtTcPos {
|
||||
Name = 'T10',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen + VectorFromPolar( 400, 6 * 22.5),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'BASE/T10'}
|
||||
EmtTcPos {
|
||||
Name = 'T11',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen + VectorFromPolar( 400, 7 * 22.5),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'BASE/T11'}
|
||||
EmtTcPos {
|
||||
Name = 'T12',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen + VectorFromPolar( 400, 8 * 22.5),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'BASE/T12'}
|
||||
EmtTcPos {
|
||||
Name = 'T13',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen + VectorFromPolar( 400, 9 * 22.5),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'BASE/T13'}
|
||||
EmtTcPos {
|
||||
Name = 'T14',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen + VectorFromPolar( 400, 10 * 22.5),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'BASE/T14'}
|
||||
EmtTcPos {
|
||||
Name = 'T15',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen + VectorFromPolar( 400, 11 * 22.5),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'BASE/T15'}
|
||||
if ChainSaw then
|
||||
EmtTcPos {
|
||||
Name = 'T16',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen + VectorFromPolar( 400, 12 * 22.5) - ChSawLen * Z_AX(),
|
||||
TDir = -Y_AX(),
|
||||
ADir = Z_AX(),
|
||||
Geo = 'BASE/T16CS'}
|
||||
else
|
||||
EmtTcPos {
|
||||
Name = 'T16',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen + VectorFromPolar( 400, 12 * 22.5),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'BASE/T16'}
|
||||
end
|
||||
EmtTcPos {
|
||||
Name = 'T17',
|
||||
Parent = 'Base',
|
||||
Pos = Point3d( 0.0, 1693.5, 534.5),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'BASE/T17'}
|
||||
|
||||
-- Aggiusto posizioni geometriche
|
||||
local vtMove = Vector3d( 0, ( DeltaTabY - 0), ( DeltaTabZ - 0))
|
||||
local vtMoveY = Vector3d( 0, 0, ( DeltaTabZ - 0))
|
||||
EgtMove( EgtGetFirstNameInGroup( BaseId, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( BaseId, 'LOAD'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( BaseId, 'UNLOAD'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( BaseId, 'TC'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( BaseId, 'SIGN'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( BaseId, 'COLLISION'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( X1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( X1Id, 'COLLISION'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( PX1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( PX1Id, 'COLLISION'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( QX1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( QX1Id, 'COLLISION'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( X2Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( X2Id, 'COLLISION'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( PX2Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( PX2Id, 'COLLISION'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( QX2Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( QX2Id, 'COLLISION'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( YId, 'SOLID'), vtMoveY, GDB_RT.GLOB)
|
||||
|
||||
-- Assegno identificativi alle spie delle morse
|
||||
PX1LightId = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( X1Id, 'SOLID') or GDB_ID.NULL, 'Light')
|
||||
PX2LightId = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( X2Id, 'SOLID') or GDB_ID.NULL, 'Light')
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- Funzioni richiamate per modificare i dati macchina in casi particolari
|
||||
--function OnSetTable()
|
||||
--end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function OnSetHead()
|
||||
-- Se testa con sega a catena
|
||||
if EMC.HEAD == 'H3' then
|
||||
-- aggiustamenti per distanza
|
||||
local dDist = EgtIf( EMC.DIST and abs( EMC.DIST) > 1, EMC.DIST, ChSawLen)
|
||||
EmtModifyExitPosition( EMC.HEAD, EMC.EXIT, Point3d( 0, 0, -dDist))
|
||||
if not EMC.VER or EMC.VER < '2.5h2' then
|
||||
local vtMove = Point3d( 0, 0, -dDist) - Point3d( EMC.EXITPOS)
|
||||
local ExitId = EgtGetFirstNameInGroup( EgtGetHeadId( EMC.HEAD), 'T'..tostring( EMC.EXIT))
|
||||
EgtMove( ExitId, vtMove)
|
||||
end
|
||||
-- recupero valore asse CS bloccato
|
||||
local sVal = EgtGetMachiningParam( MCH_MP.BLOCKEDAXIS)
|
||||
local dPosCS = tonumber( sVal:sub( 4) or '')
|
||||
EmtModifyAxisHome( 'C', GetChainSawCHomeFromVirtualAxis( dPosCS))
|
||||
else
|
||||
EmtModifyAxisHome( 'C', ParkC)
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- Funzione che calcola l'angolo Home di C per la sega a catena dal valore dell'asse virtuale
|
||||
function GetChainSawCHomeFromVirtualAxis( dPosCS)
|
||||
-- se CS=0 -> HomeC = -90
|
||||
if abs( dPosCS) < 0.1 then
|
||||
return 90
|
||||
-- altrimenti CS=90 -> HomeC = -180
|
||||
else
|
||||
return 0
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- Funzione per impostare spia stato morsa carrello X1
|
||||
function SetPX1Light( bClosed)
|
||||
if not PX1LightId then return end
|
||||
EgtSetColor( PX1LightId, EgtIf( bClosed, 'RED', 'LIME'))
|
||||
if bClosed then
|
||||
EgtSetInfo( PX1LightId, 'On', '1')
|
||||
else
|
||||
EgtRemoveInfo( PX1LightId, 'On')
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- Funzione per leggere lo stato della morsa carrello X1
|
||||
function GetPX1Light()
|
||||
if not PX1LightId then return false end
|
||||
return ( EgtGetInfo( PX1LightId, 'On') == '1')
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- Funzione per impostare spia stato morsa carrello X2
|
||||
function SetPX2Light( bClosed)
|
||||
if not PX2LightId then return end
|
||||
EgtSetColor( PX2LightId, EgtIf( bClosed, 'RED', 'LIME'))
|
||||
if bClosed then
|
||||
EgtSetInfo( PX2LightId, 'On', '1')
|
||||
else
|
||||
EgtRemoveInfo( PX2LightId, 'On')
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- Funzione per leggere lo stato della morsa carrello X2
|
||||
function GetPX2Light()
|
||||
if not PX2LightId then return false end
|
||||
return ( EgtGetInfo( PX2LightId, 'On') == '1')
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- Funzione per resettare tutte le attivazioni della macchina
|
||||
function OnResetMachine()
|
||||
EmtUnlinkAllRawPartsFromGroups()
|
||||
EmtUnlinkAllFixturesFromGroups()
|
||||
SetPX1Light( false)
|
||||
SetPX2Light( false)
|
||||
-- nascondo Vmill
|
||||
local nRawId = EgtGetFirstRawPart()
|
||||
while nRawId do
|
||||
local nVmId = EgtGetFirstNameInGroup( nRawId, 'VMill')
|
||||
local nId = EgtGetFirstInGroup( nRawId)
|
||||
while nId do
|
||||
EgtSetStatus( nId, EgtIf( nId ~= nVmId, GDB_ST.ON, GDB_ST.OFF))
|
||||
nId = EgtGetNext( nId)
|
||||
end
|
||||
nRawId = EgtGetNextRawPart( nRawId)
|
||||
end
|
||||
EgtSetStatus( EgtGetFirstNameInGroup( GDB_ID.ROOT, 'VMill') or GDB_ID.NULL, GDB_ST.OFF)
|
||||
end
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -0,0 +1,36 @@
|
||||
-- 2023/09/22 13:00:00
|
||||
-- Machining Exit for Saomad-KAIROS machine
|
||||
|
||||
-- Intestazioni
|
||||
require( 'EgtBase')
|
||||
_ENV = EgtProtectGlobal()
|
||||
EgtEnableDebug( false)
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
-- *** Uscita da Lavorazioni ***
|
||||
|
||||
-- Nascondo il pezzo così marcato e le geometrie aggiunte, visualizzo il Box
|
||||
local function ProcessPart( PartId)
|
||||
-- visualizzo il Box
|
||||
EgtSetStatus( EgtGetFirstNameInGroup( PartId, 'Box') or GDB_ID.NULL, GDB_ST.ON)
|
||||
end
|
||||
|
||||
-- Disabilito segnalazione modifica progetto
|
||||
local bEnMod = EgtGetEnableModified()
|
||||
EgtDisableModified()
|
||||
|
||||
-- Processo i pezzi nella radice (già chiusi tutti i gruppi di lavoro)
|
||||
local PartId = EgtGetFirstPart()
|
||||
while PartId do
|
||||
ProcessPart( PartId)
|
||||
PartId = EgtGetNextPart( PartId)
|
||||
end
|
||||
|
||||
EgtZoom( SCE_ZM.ALL, false)
|
||||
|
||||
-- Ripristino segnalazione modifica progetto
|
||||
if bEnMod then
|
||||
EgtEnableModified()
|
||||
end
|
||||
|
||||
MACH.ERR = 0
|
||||
@@ -0,0 +1,44 @@
|
||||
-- 2023/09/22 13:00:00
|
||||
-- Machining Init for Saomad-KAIROS machine
|
||||
|
||||
-- Intestazioni
|
||||
require( 'EgtBase')
|
||||
_ENV = EgtProtectGlobal()
|
||||
EgtEnableDebug( false)
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
-- *** Ingresso in Lavorazioni ***
|
||||
|
||||
-- Rendo visibile il pezzo e le geometrie aggiunte, nascondo il Box
|
||||
local function ProcessPart( PartId)
|
||||
-- nascondo il Box
|
||||
EgtSetStatus( EgtGetFirstNameInGroup( PartId, 'Box') or GDB_ID.NULL, GDB_ST.OFF)
|
||||
end
|
||||
|
||||
-- Disabilito segnalazione modifica progetto
|
||||
local bEnMod = EgtGetEnableModified()
|
||||
EgtDisableModified()
|
||||
|
||||
-- Processo i pezzi nella radice
|
||||
local PartId = EgtGetFirstPart()
|
||||
while PartId do
|
||||
ProcessPart( PartId)
|
||||
PartId = EgtGetNextPart( PartId)
|
||||
end
|
||||
|
||||
-- Processo i pezzi già nei gruppi di lavoro (quando appena lanciata Process)
|
||||
local GhostId = EgtGetFirstGhostPart()
|
||||
while GhostId do
|
||||
local PartId = EgtGetInfo( GhostId, GDB_SI.SOURCE, 'i')
|
||||
if PartId then
|
||||
ProcessPart( PartId)
|
||||
end
|
||||
GhostId = EgtGetNextGhostPart( GhostId)
|
||||
end
|
||||
|
||||
-- Ripristino segnalazione modifica progetto
|
||||
if bEnMod then
|
||||
EgtEnableModified()
|
||||
end
|
||||
|
||||
MACH.ERR = 0
|
||||
@@ -0,0 +1,207 @@
|
||||
-- Gestione attrezzaggio per Saomad-KAIROS - 2023/10/16
|
||||
|
||||
-- Intestazioni
|
||||
require( 'EgtBase')
|
||||
_ENV = EgtProtectGlobal()
|
||||
EgtEnableDebug( false)
|
||||
|
||||
-- Tavola di passaggio valori
|
||||
local STU = {}
|
||||
STU.TUUID = ""
|
||||
STU.TCPOS = ""
|
||||
STU.HEAD = ""
|
||||
STU.GROUP = ""
|
||||
STU.POS = ""
|
||||
STU.EXIT = 0
|
||||
STU.INDEX = 0
|
||||
STU.HEAD1 = ""
|
||||
STU.HEAD2 = ""
|
||||
STU.ISVALID = false
|
||||
STU.ERR = 0
|
||||
_G.STU = STU
|
||||
|
||||
local INVALIDPOS = ""
|
||||
local POS = "Pos"
|
||||
|
||||
-- Geom Set
|
||||
local GS = {}
|
||||
|
||||
-- Configurazione posizioni
|
||||
local PositionTable={{Pos = "Pos1", TcPos = "T1", Head = "H1", Group = "G1"},
|
||||
{Pos = "Pos2", TcPos = "T2", Head = "H1", Group = "G1"},
|
||||
{Pos = "Pos3", TcPos = "T3", Head = "H1", Group = "G1"},
|
||||
{Pos = "Pos4", TcPos = "T4", Head = "H1", Group = "G1"},
|
||||
{Pos = "Pos5", TcPos = "T5", Head = "H1", Group = "G1"},
|
||||
{Pos = "Pos6", TcPos = "T6", Head = "H1", Group = "G1"},
|
||||
{Pos = "Pos7", TcPos = "T7", Head = "H1", Group = "G1"},
|
||||
{Pos = "Pos8", TcPos = "T8", Head = "H1", Group = "G1"},
|
||||
{Pos = "Pos9", TcPos = "T9", Head = "H1", Group = "G2"},
|
||||
{Pos = "Pos10", TcPos = "T10", Head = "H1", Group = "G2"},
|
||||
{Pos = "Pos11", TcPos = "T11", Head = "H1", Group = "G2"},
|
||||
{Pos = "Pos12", TcPos = "T12", Head = "H1", Group = "G2"},
|
||||
{Pos = "Pos13", TcPos = "T13", Head = "H1", Group = "G2"},
|
||||
{Pos = "Pos14", TcPos = "T14", Head = "H1", Group = "G2"},
|
||||
{Pos = "Pos15", TcPos = "T15", Head = "H1", Group = "G2"},
|
||||
{Pos = "Pos16", TcPos = "T16", Head = "H1", Group = "G2"},
|
||||
{Pos = "Pos17", TcPos = "T17", Head = "H1", Group = "G3"}}
|
||||
if EgtGetHeadId( 'H3') then
|
||||
PositionTable[16].Head = 'H3'
|
||||
end
|
||||
|
||||
local UsePositionHead = true
|
||||
|
||||
local function IsInGeomSet( ToolHead, PosHead)
|
||||
for GsIndex = 1, #GS do
|
||||
local bToolHead = false
|
||||
local bPosHead = false
|
||||
for HIndex = 1, #GS[GsIndex] do
|
||||
if GS[GsIndex][HIndex] == ToolHead then
|
||||
bToolHead = true
|
||||
elseif GS[GsIndex][HIndex] == PosHead then
|
||||
bPosHead = true
|
||||
end
|
||||
if bToolHead and bPosHead then
|
||||
return true
|
||||
end
|
||||
end
|
||||
if bToolHead and bPosHead then
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
function STU.IsCompatibleHeads()
|
||||
STU.ISVALID = false
|
||||
if IsInGeomSet(STU.HEAD1, STU.HEAD2) then
|
||||
STU.ISVALID = true
|
||||
else
|
||||
STU.ISVALID = false
|
||||
end
|
||||
end
|
||||
|
||||
function STU.GetValidHeadExitForPos()
|
||||
-- se TUUID non valido restituisco errore
|
||||
local ToolName = EgtTdbGetToolFromUUID( STU.TUUID)
|
||||
if ToolName == nill then
|
||||
STU.ERR = 1
|
||||
return
|
||||
end
|
||||
EgtTdbSetCurrTool( ToolName)
|
||||
local CurrToolHead = EgtTdbGetCurrToolParam( MCH_TP.HEAD)
|
||||
STU.EXIT = EgtTdbGetCurrToolParam( MCH_TP.EXIT)
|
||||
-- recupero testa predefinita per la posizione corrente
|
||||
local CurrPosHead
|
||||
for i = 1, #PositionTable do
|
||||
if PositionTable[i].TcPos == STU.TCPOS then
|
||||
CurrPosHead = PositionTable[i].Head
|
||||
break
|
||||
end
|
||||
end
|
||||
-- verifico se la testa è quella della posizione predefinita
|
||||
if CurrPosHead == CurrToolHead then
|
||||
STU.HEAD = CurrToolHead
|
||||
STU.ERR = 0
|
||||
return
|
||||
-- verifico se la testa è compatibile con quella della posizione predefinita
|
||||
elseif IsInGeomSet( CurrToolHead, CurrPosHead) then
|
||||
if UsePositionHead then
|
||||
STU.HEAD = CurrPosHead
|
||||
STU.ERR = 0
|
||||
return
|
||||
else
|
||||
STU.HEAD = CurrToolHead
|
||||
STU.ERR = 0
|
||||
return
|
||||
end
|
||||
-- la testa non è compatibile con quella della posizione predefinita
|
||||
else
|
||||
STU.HEAD = INVALIDPOS
|
||||
STU.ERR = 0
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
function STU.IsValidTcPosFromHead()
|
||||
STU.ISVALID = false
|
||||
for i = 1, #PositionTable do
|
||||
if PositionTable[i].TcPos == STU.TCPOS then
|
||||
if PositionTable[i].Head == STU.HEAD then
|
||||
STU.ISVALID = true
|
||||
STU.ERR = 0
|
||||
return
|
||||
elseif IsInGeomSet(PositionTable[i].Head, STU.HEAD) then
|
||||
STU.ISVALID = true
|
||||
STU.ERR = 0
|
||||
return
|
||||
end
|
||||
STU.ISVALID = false
|
||||
STU.ERR = 0
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function STU.GetTcPosHeadGroupFromPos()
|
||||
for i = 1, #PositionTable do
|
||||
if PositionTable[i].Pos == (POS .. tostring(STU.INDEX)) then
|
||||
STU.TCPOS = PositionTable[i].TcPos
|
||||
STU.HEAD = PositionTable[i].Head
|
||||
STU.GROUP = PositionTable[i].Group
|
||||
STU.ERR = 0
|
||||
return
|
||||
end
|
||||
end
|
||||
STU.TCPOS = INVALIDPOS
|
||||
STU.HEAD = INVALIDPOS
|
||||
STU.GROUP = INVALIDPOS
|
||||
STU.ERR = 1
|
||||
end
|
||||
|
||||
function STU.GetPosFromTcPos()
|
||||
for i = 1, #PositionTable do
|
||||
if PositionTable[i].TcPos == STU.TCPOS then
|
||||
STU.POS = PositionTable[i].Pos
|
||||
STU.ERR = 0
|
||||
return
|
||||
end
|
||||
end
|
||||
STU.POS = INVALIDPOS
|
||||
STU.ERR = 1
|
||||
end
|
||||
|
||||
function STU.GetGroupFromTcPos()
|
||||
for i = 1, #PositionTable do
|
||||
if PositionTable[i].TcPos == STU.TCPOS then
|
||||
STU.GROUP = PositionTable[i].Group
|
||||
STU.ERR = 0
|
||||
return
|
||||
end
|
||||
end
|
||||
STU.GROUP = INVALIDPOS
|
||||
STU.ERR = 1
|
||||
end
|
||||
|
||||
function STU.GetHeadFromPos()
|
||||
for i = 1, #PositionTable do
|
||||
if PositionTable[i].Pos == (POS .. tostring(STU.INDEX)) then
|
||||
STU.HEAD = PositionTable[i].Head
|
||||
STU.ERR = 0
|
||||
return
|
||||
end
|
||||
end
|
||||
STU.HEAD = INVALIDPOS
|
||||
STU.ERR = 1
|
||||
end
|
||||
|
||||
function STU.GetTcPosFromPos()
|
||||
for i = 1, #PositionTable do
|
||||
if PositionTable[i].Pos == (POS .. tostring(STU.INDEX)) then
|
||||
STU.TCPOS = PositionTable[i].TcPos
|
||||
STU.ERR = 0
|
||||
return
|
||||
end
|
||||
end
|
||||
STU.TCPOS = INVALIDPOS
|
||||
STU.ERR = 1
|
||||
end
|
||||
@@ -0,0 +1,19 @@
|
||||
; Commento per evitare BOM con UTF-8
|
||||
[General]
|
||||
Pos1=T1;H1;1/4275A573-54A7-40FA-B828-D108298E1F69/Fresa45x80
|
||||
Pos2=T2
|
||||
Pos3=T3
|
||||
Pos4=T4;H1;1/D077C810-A58B-41DE-A3F5-D2187EBB1B67/Fresa100x120
|
||||
Pos5=T5;H1;1/E7F6A2BB-1F66-48B9-9561-496231C33403/FresaDT60x160
|
||||
Pos6=T6;H1;1/B5B974EF-D18A-45DE-9842-05B91639BE91/PuntaD14
|
||||
Pos7=T7
|
||||
Pos8=T8
|
||||
Pos9=T9
|
||||
Pos10=T10;H1;1/FDD392CA-7100-404C-AE0B-96FCA08959E0/Lama350
|
||||
Pos11=T11
|
||||
Pos12=T12
|
||||
Pos13=T13
|
||||
Pos14=T14
|
||||
Pos15=T15
|
||||
Pos16=T16
|
||||
Pos17=T17;H1;1/2CC5CD84-B083-4122-8548-9B2AA54A52E7/Lama600
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user