Prima versione (derivata da Kairos023)

This commit is contained in:
andrea.villa
2024-06-27 12:46:19 +02:00
parent c850dc52b1
commit 3c118c92de
30 changed files with 8684 additions and 93 deletions
+8
View File
@@ -0,0 +1,8 @@
/Tools
/Machinings
/SetUp
/Beam/CutData.lua
/Beam/DrillData.lua
/Beam/MillingData.lua
/Beam/PocketingData.lua
/Beam/SawingData.lua
+100
View File
@@ -0,0 +1,100 @@
{
"Lua.diagnostics.globals": [
"EmtTcPos",
"EgtGetAllTcPosNames",
"EgtGetFirstNameInGroup",
"EgtSetStatus",
"EgtEmptyGroup",
"EgtGetFirstRawPart",
"EmtLinkRawPartToGroup",
"EgtVerifyRawPartPhase",
"EgtGetNextRawPart",
"EMT",
"EgtOutText",
"EgtGetFirstPartInRawPart",
"EmtSetLastError",
"EgtGetToolsInCurrSetupPos",
"EgtLoadTool",
"EgtSetName",
"EgtGroup",
"EgtSetLevel",
"EgtOutLog",
"EmtUnlinkAllRawPartsFromGroups",
"EgtSetAxisPos",
"EgtGetPhaseCount",
"EgtGetCurrMachGroup",
"EgtErase",
"EgtVolZmapBox",
"EgtSetColor",
"EgtGetFirstInGroup",
"EgtGetNext",
"EgtGetFirstOperation",
"EgtGetOperationType",
"EgtSetOperationStatus",
"EgtGetNextOperation",
"EgtGetDebugLevel",
"EgtGetAxisId",
"EgtGetBaseId",
"EgtMove",
"EgtTdbGetCurrToolParam",
"EmtAddCollisionObjEx",
"EgtGetNextActiveOperation",
"EgtGetFirstActiveOperation",
"EgtSetCurrMachining",
"EgtGetMachiningParam",
"EgtSetMode",
"EgtGetHeadId",
"EgtPause",
"EgtGetAxisPos",
"EgtGetOperationName",
"EgtGetMachiningGeometry",
"EgtVolZmapPartCount",
"EgtVolZmapPartVolume",
"EgtRemoveVolZmapPart",
"EgtDraw",
"EgtNumToString",
"EgtSplitString",
"EmtUnlinkRawPartFromGroup",
"EgtRelocate",
"EgtVolZmapGetEdges",
"EgtGetCurrMachineName",
"EgtGetCurrMachineDir",
"EgtGetStringFromIni",
"EgtGetCurrFilePath",
"EgtGetMachGroupName",
"EgtSaveObjToFile",
"EmtSetOutstrokeInfo",
"EgtTdbSetCurrTool",
"EgtUiUnitsAreMM",
"EgtGetAxisHomePos",
"EgtSetInfo",
"EgtGetTcPosId",
"EgtGetName",
"EgtGetCurrMachining",
"EgtOutBox",
"EgtResetCurrMachining",
"EgtGetPhaseDisposition",
"EgtExistsFile",
"EmtGeneral",
"EmtBase",
"EmtAxis",
"EmtHead",
"EmtTable",
"EmtModifyExitPosition",
"EmtModifyAxisHome",
"EgtRemoveInfo",
"EmtUnlinkAllFixturesFromGroups",
"EMC",
"EgtSetCurrPhase",
"EgtTdbGetToolFromUUID",
"EgtGetPrevActiveOperation",
"EgtExistsInfo",
"EgtGetLastInGroup",
"EmtGetAxesPos",
"EgtRemoveOperationHome",
"EgtGetPartInRawPartCount",
"EgtGetOperationPhase",
"EgtSetOperationMode",
"EgtSetCalcTool"
]
}
+113
View File
@@ -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 = 205, -- larghezza massima taglio di testa o coda
MAX_DIM_HTCUT_HBEAM = -195, -- 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
+9
View File
@@ -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%
+45
View File
@@ -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=910,
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
+52
View File
@@ -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
+43
View File
@@ -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
+4
View File
@@ -0,0 +1,4 @@
// English machine message file 2023/12/06
[PLC]
+11
View File
@@ -0,0 +1,11 @@
// File dei messaggi macchina Italiano 2023/12/06
[MDI]
[PLC]
[CNC]
[INPUT]
+262
View File
@@ -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>
-93
View File
@@ -1,93 +0,0 @@
# Saomad-Kairos
## 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/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files
- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) 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.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/-/settings/integrations)
## Collaborate with your team
- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/)
- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html)
- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically)
- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/)
- [ ] [Set auto-merge](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html)
## Test and Deploy
Use the built-in continuous integration in GitLab.
- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/index.html)
- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing (SAST)](https://docs.gitlab.com/ee/user/application_security/sast/)
- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html)
- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/)
- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html)
***
# 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
+112
View File
@@ -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
+493
View File
@@ -0,0 +1,493 @@
-- Descrizione macchina Saomad-KAIROS by EgalWare s.r.l. 2024/06/27
-- 2024/06/27 ver 2.6f1 Prima versione (derivata da Kairos023)
require( 'EmtGenerator')
EgtEnableDebug( false)
PP_VER = '2.6f1'
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 = 910
ParkZ = 900
FmaxZ = 45000
MinA = -109.5
MaxA = 109.5
ParkA = 0
FmaxA = 10440
MinC = -240
MaxC = 240
ParkC = 90
FmaxC = 18000
MillOffs = 217.0
ChSawLen = 141.5
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 = 301
MaxVOpen = 621
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.nge',
Offset = Vector3d( 0.0, -835, -779.06),
AxisMaxAdjust = 30,
AxisMaxRotAdj = 0.5,
ExitMaxAdjust = 30,
ExitMaxRotAdj = 0.5,
AngDeltaMinForHome = 165,
Special = 'Saomad-KAIROS.mlse',
Processor = 'Saomad-KAIROS.mlpe'}
local BaseId = EmtBase {
Name = 'Base',
Geo='BASE/GEO',
Aux={'BASE/SOLID', 'BASE/LOAD', 'BASE/UNLOAD', 'BASE/TC', 'BASE/TC2', 'BASE/SIGN', 'BASE/COLLISION'}}
local YId = EmtAxis {
Name = 'Y',
Parent = 'Base',
Token = 'Y1',
Type = MCH_AT.LINEAR,
Dir = Y_AX(),
Pos = Point3d( -278.7237, 322.3254, 2068.04),
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( 0.0257, -151.1589, 627.0044),
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, 600.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 = Y_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
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')
-- Morse
local X1Id = EmtAxis {
Name = 'X1',
Token = 'X1',
Parent = 'Base',
Type = MCH_AT.LINEAR,
Dir = -X_AX(),
Pos = Point3d( -1253.5, 245.0, 918.94),
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( -1253.5, 95.0, 918.94),
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( -874.2, -22.5, 668.9787),
Stroke = { 0, MaxVOpen},
Home = MaxVOpen,
Geo = 'QX1_AXIS/GEO',
Aux = 'QX1_AXIS/SOLID'}
local X2Id = EmtAxis {
Name = 'X2',
Token = 'X2',
Parent = 'Base',
Type = MCH_AT.LINEAR,
Dir = -X_AX(),
Pos = Point3d( 1253.5001, 245.0, 918.94),
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( 1253.5001, 95.0, 918.94),
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( 874.2001, 640.4727, -1591.561),
Stroke = { 0, MaxVOpen},
Home = MaxVOpen,
Geo = 'QX2_AXIS/GEO',
Aux = 'QX2_AXIS/SOLID'}
EmtAxis {
Name = 'T',
Parent = 'Base',
--Token = '**',
Type = MCH_AT.LINEAR,
Dir = - X_AX(),
Pos = Point3d( 0, 0, 0),
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 10 posizioni verticale
local ptTcCen = Point3d( -520.9759, -817, 1056.0424)
EmtTcPos {
Name = 'T1',
Parent = 'Base',
Pos = ptTcCen,
TDir = X_AX(),
ADir = Y_AX(),
Geo = 'BASE/T1'}
EmtTcPos {
Name = 'T2',
Parent = 'Base',
Pos = ptTcCen - Vector3d( 0, 0, 110),
TDir = X_AX(),
ADir = Y_AX(),
Geo = 'BASE/T2'}
EmtTcPos {
Name = 'T3',
Parent = 'Base',
Pos = ptTcCen - Vector3d( 0, 0, 110*2),
TDir = X_AX(),
ADir = Y_AX(),
Geo = 'BASE/T3'}
EmtTcPos {
Name = 'T4',
Parent = 'Base',
Pos = ptTcCen - Vector3d( 0, 0, 110*3),
TDir = X_AX(),
ADir = Y_AX(),
Geo = 'BASE/T4'}
EmtTcPos {
Name = 'T5',
Parent = 'Base',
Pos = ptTcCen - Vector3d( 0, 0, 110*4),
TDir = X_AX(),
ADir = Y_AX(),
Geo = 'BASE/T5'}
EmtTcPos {
Name = 'T6',
Parent = 'Base',
Pos = ptTcCen - Vector3d( 0, 0, 110*5),
TDir = X_AX(),
ADir = Y_AX(),
Geo = 'BASE/T6'}
EmtTcPos {
Name = 'T7',
Parent = 'Base',
Pos = ptTcCen - Vector3d( 0, 0, 110*6),
TDir = X_AX(),
ADir = Y_AX(),
Geo = 'BASE/T7'}
EmtTcPos {
Name = 'T8',
Parent = 'Base',
Pos = ptTcCen - Vector3d( 0, 0, 110*7),
TDir = X_AX(),
ADir = Y_AX(),
Geo = 'BASE/T8'}
EmtTcPos {
Name = 'T9',
Parent = 'Base',
Pos = ptTcCen - Vector3d( 0, 0, 110*8),
TDir = X_AX(),
ADir = Y_AX(),
Geo = 'BASE/T9'}
EmtTcPos {
Name = 'T10',
Parent = 'Base',
Pos = ptTcCen - Vector3d( 0, 0, 110*9),
TDir = X_AX(),
ADir = Y_AX(),
Geo = 'BASE/T10'}
EmtTcPos {
Name = 'T11',
Parent = 'Base',
Pos = ptTcCen - Vector3d( 0, 0, 110*10),
TDir = X_AX(),
ADir = Y_AX(),
Geo = 'BASE/T11'}
-- ToolChanger lama
EmtTcPos {
Name = 'T21',
Parent = 'Base',
Pos = Point3d( 518.0241, -748.997, 271.8273),
TDir = -X_AX(),
ADir = -Y_AX(),
Geo = 'BASE/T21'}
-- ToolChanger motosega
EmtTcPos {
Name = 'T22',
Parent = 'Base',
Pos = Point3d( 656.5865, -768.913, 715.2899),
TDir = -X_AX(),
ADir = Z_AX(),
Geo = 'BASE/T22'}
-- 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, 'TC2'), 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( 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( YId, 'SOLID'), vtMoveY, GDB_RT.GLOB)
-- Assegno identificativi alle spie delle morse
PX1LightId = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( PX1Id, 'SOLID') or GDB_ID.NULL, 'Light')
PX2LightId = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( PX2Id, '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
+1430
View File
File diff suppressed because it is too large Load Diff
+3847
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+46
View File
@@ -0,0 +1,46 @@
Origins are defined in respect to GLOBAL
♫ Y_AXIS
X:-278.7237, Y:1157.3264, Z:2847.1
♫ Z_AXIS
X:0.0257, Y:683.8421, Z:1431.0044
♫ C_AXIS
X:0, Y:835.001, Z:1404.0
♫ A_AXIS
X:0, Y:835.001, Z:1021.0
♫ H1_HEAD_T1
X:0, Y:835.001, Z:804.0
♫ CS_AXIS
X:0, Y:835.001, Z:804.0
♫ H3_HEAD_T1
X:145.0, Y:835.001, Z:662.5
♫ X1_AXIS
X:-1253.5, Y:1080.001, Z:1698.0
♫ PX1_AXIS
X:-1253.5, Y:930.001, Z:1698.0
♫ QX1_AXIS
X:-874.2, Y:812.501, Z:1475.4737
♫ X2_AXIS
X:1253.5001, Y:1080.001, Z:1698.0
♫ PX2_AXIS
X:1253.5001, Y:930.001, Z:1698.0
♫ QX2_AXIS
X:874.2001, Y:1475.4737, Z:-812.501
♫ T_AXIS
X:0, Y:835.001, Z:804.0
♫ TABLE_R1
X:-20000.0, Y:335.001, Z:804.0
+46
View File
@@ -0,0 +1,46 @@
Origins are defined in respect to H1_HEAD_T1
♫ Y_AXIS
X:-278.7237, Y:322.3254, Z:2068.04
♫ Z_AXIS
X:0.0257, Y:-151.1589, Z:627.0044
♫ C_AXIS
X:0, Y:0, Z:600.0
♫ A_AXIS
X:0, Y:0, Z:217.0
♫ H1_HEAD_T1 (ORIGIN)
X:0, Y:0, Z:0
♫ CS_AXIS
X:0, Y:0, Z:0
♫ H3_HEAD_T1
X:0, Y:0, Z:-141.5
♫ X1_AXIS
X:-1253.5, Y:245.0, Z:918.94
♫ PX1_AXIS
X:-1253.5, Y:95.0, Z:918.94
♫ QX1_AXIS
X:-874.2, Y:-22.5, Z:668.9787
♫ X2_AXIS
X:1253.5001, Y:245.0, Z:918.94
♫ PX2_AXIS
X:1253.5001, Y:95.0, Z:918.94
♫ QX2_AXIS
X:874.2001, Y:613.0377, Z:-1591.561
♫ T_AXIS
X:0, Y:0, Z:0
♫ TABLE_R1
X:-20000.0, Y:-500.0, Z:0
+36
View File
@@ -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
+44
View File
@@ -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
+203
View File
@@ -0,0 +1,203 @@
-- 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 = "G1"},
{Pos = "Pos10", TcPos = "T10", Head = "H1", Group = "G1"},
{Pos = "Pos11", TcPos = "T11", Head = "H1", Group = "G1"},
{Pos = "Pos12", TcPos = "T21", Head = "H1", Group = "G2"},
{Pos = "Pos13", TcPos = "T22", Head = "H3", Group = "G3"}}
if EgtGetHeadId( 'H3') then
PositionTable[13].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
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.