Compare commits
65 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 54f5c7e488 | |||
| 62d5cefb35 | |||
| 913be3f3e7 | |||
| 898380b4ba | |||
| ec79024eb3 | |||
| f9fb148fd8 | |||
| 6780390b28 | |||
| 482e6fb281 | |||
| ef60e7916c | |||
| d89163d208 | |||
| 8cd916754f | |||
| 3188a7c976 | |||
| 3da0b82f13 | |||
| ff8d632c04 | |||
| 7a565f0618 | |||
| fa0be99e58 | |||
| aa61e122df | |||
| 8195fe4d3e | |||
| 414434ae28 | |||
| aa49d110ef | |||
| 89aaa5941f | |||
| 42b9cac647 | |||
| 07f37a21e6 | |||
| 761653699d | |||
| facb55621a | |||
| 16eb684d4e | |||
| 26596555ee | |||
| e574a01ff5 | |||
| f559be5e4a | |||
| 4c62569373 | |||
| f3c41b1b80 | |||
| 043478e7b9 | |||
| 8a707155e7 | |||
| ca80f2950b | |||
| fd9439452d | |||
| 41df1c1e24 | |||
| 719864ee49 | |||
| 183c3e2e06 | |||
| e07e222ec3 | |||
| 163729319a | |||
| f49747ac94 | |||
| 949d44011f | |||
| 442d37e8e2 | |||
| 5e51c37da0 | |||
| 5f8e1d47f1 | |||
| 225aef964e | |||
| 8a82349ea7 | |||
| 2451607d90 | |||
| e93405a828 | |||
| 27ec467b40 | |||
| 6d4b1b0254 | |||
| d2b8530c30 | |||
| cce36780c2 | |||
| ff7a1ed430 | |||
| 2458fcba22 | |||
| 00b46b98d6 | |||
| 4f38f2805e | |||
| 653eb2dadb | |||
| 3044f43826 | |||
| 11e76bd5a7 | |||
| adee9b835c | |||
| ef9a446830 | |||
| fabcacaea0 | |||
| 2600eb720a | |||
| 4665f4cfa6 |
Vendored
+86
-1
@@ -96,6 +96,91 @@
|
|||||||
"EgtGetOperationPhase",
|
"EgtGetOperationPhase",
|
||||||
"EgtSetOperationMode",
|
"EgtSetOperationMode",
|
||||||
"EgtSetCalcTool",
|
"EgtSetCalcTool",
|
||||||
"EmtModifyAxisStroke"
|
"EmtModifyAxisStroke",
|
||||||
|
"EgtGetValInNotes",
|
||||||
|
"EgtGetInfo",
|
||||||
|
"EgtIf",
|
||||||
|
"EgtGetCalcAuxDirFromAngles",
|
||||||
|
"abs",
|
||||||
|
"sqrt",
|
||||||
|
"EgtJoinTables",
|
||||||
|
"min",
|
||||||
|
"BBox3d",
|
||||||
|
"max",
|
||||||
|
"EgtGetRawPartBBox",
|
||||||
|
"sin",
|
||||||
|
"AreSameVectorApprox",
|
||||||
|
"Point3d",
|
||||||
|
"Vector3d",
|
||||||
|
"AddToolToCollisionObj",
|
||||||
|
"AddToolHolderToCollisionObj",
|
||||||
|
"SetToolForVmill",
|
||||||
|
"EmtGetVMillStep",
|
||||||
|
"EgtGetBBoxGlob",
|
||||||
|
"Frame3d",
|
||||||
|
"AddToCollisionCheck",
|
||||||
|
"DumpCollisionCheck",
|
||||||
|
"EgtEnableDebug",
|
||||||
|
"EmtOutput",
|
||||||
|
"EmtLenToString",
|
||||||
|
"EmtResetPrev",
|
||||||
|
"EmtAdjustRotaryAxes",
|
||||||
|
"EmtUpdatePrev",
|
||||||
|
"EmtResetPrevLinear",
|
||||||
|
"EmtGetAxis",
|
||||||
|
"EmtAdjustCenterAxes",
|
||||||
|
"EmtGetFeed",
|
||||||
|
"EmtAdjustLinearAxes",
|
||||||
|
"SphericalFromVector",
|
||||||
|
"EmtGetAngO2",
|
||||||
|
"EgtClamp",
|
||||||
|
"AreSameOrOppositeVectorApprox",
|
||||||
|
"EgtGetAxisDir",
|
||||||
|
"EgtVolZmapGetPartBBoxGlob",
|
||||||
|
"SimulMoveAxis",
|
||||||
|
"EgtGetGlobFrame",
|
||||||
|
"EgtSplitPath",
|
||||||
|
"EgtPlaneVolZmapInters",
|
||||||
|
"EgtTableAdd",
|
||||||
|
"EgtTableFill",
|
||||||
|
"EgtSurfFlatRegion",
|
||||||
|
"EgtSurfFrIntersect",
|
||||||
|
"EgtSurfArea",
|
||||||
|
"ceil",
|
||||||
|
"pow",
|
||||||
|
"EgtGetEnableUI",
|
||||||
|
"EmtSetSimulPause",
|
||||||
|
"EgtResetAxisPos",
|
||||||
|
"EmtTleStart",
|
||||||
|
"EmtLenToMF",
|
||||||
|
"EmtSecToHMS",
|
||||||
|
"EmtTleAddTotal",
|
||||||
|
"EmtTleAddTool",
|
||||||
|
"EmtTleEnd",
|
||||||
|
"EmtTleAddMachining",
|
||||||
|
"GDB_ID",
|
||||||
|
"GDB_ST",
|
||||||
|
"MCH_TP",
|
||||||
|
"GEO",
|
||||||
|
"X_AX",
|
||||||
|
"Y_AX",
|
||||||
|
"Z_AX",
|
||||||
|
"MCH_TY",
|
||||||
|
"MCH_SCC",
|
||||||
|
"MCH_AT",
|
||||||
|
"MCH_TT",
|
||||||
|
"GDB_RT",
|
||||||
|
"MCH_MP",
|
||||||
|
"GDB_FR",
|
||||||
|
"GDB_LV",
|
||||||
|
"GDB_BB",
|
||||||
|
"EgtGetColor",
|
||||||
|
"SimulMoveAxes",
|
||||||
|
"MCH_SIM_STEP",
|
||||||
|
"MCH_OY",
|
||||||
|
"GDB_MD",
|
||||||
|
"MCH_MY",
|
||||||
|
"Color3d",
|
||||||
|
"tan"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
+1350
-555
File diff suppressed because it is too large
Load Diff
+3
-2
@@ -59,11 +59,12 @@ local BeamData = {
|
|||||||
MAXDIAM_POCK_CORNER = 30, -- diametro massimo utensile ammesso per tasche con angoli interni
|
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 probabile caduta
|
ADVANCE_TAIL_CUT = true, -- per spostare prima del taglio di separazione il taglio di coda su pezzi corti con probabile caduta
|
||||||
ADVANCE_TAIL_OFFS = 5, -- accorciamento taglio di coda avanzato (minimo 1)
|
ADVANCE_TAIL_OFFS = 5, -- accorciamento taglio di coda avanzato (minimo 1)
|
||||||
STRATEGIES_CONFIG_FILE = 'Std2.json'
|
STRATEGIES_CONFIG_FILE = 'Std2.json',
|
||||||
|
FASTCLAMPING = false
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Aggiornamento con dati da B&W
|
-- Aggiornamento con dati da B&W
|
||||||
local sData = EgtGetSourceDir().."EbwData.lua"
|
local sData = EgtGetCurrMachineDir().."\\Beam\\EbwData.lua"
|
||||||
if EgtExistsFile( sData) then
|
if EgtExistsFile( sData) then
|
||||||
local Machine = dofile( sData)
|
local Machine = dofile( sData)
|
||||||
if Machine then
|
if Machine then
|
||||||
|
|||||||
+10
-7
@@ -22,9 +22,7 @@ local BeamData = {
|
|||||||
OVM_MID = 5.4, -- sovramateriale intermedio (spessore lama)
|
OVM_MID = 5.4, -- sovramateriale intermedio (spessore lama)
|
||||||
MINRAW_S = 750, -- minimo grezzo in coda scaricabile per sezioni piccole
|
MINRAW_S = 750, -- minimo grezzo in coda scaricabile per sezioni piccole
|
||||||
MINRAW_L = 1070, -- minimo grezzo in coda scaricabile per sezioni grandi
|
MINRAW_L = 1070, -- minimo grezzo in coda scaricabile per sezioni grandi
|
||||||
MAX_DIM_HTCUT = 130, -- SOLO DICE larghezza massima taglio di testa o coda
|
SAFE_DIM_DICE = 110, -- dimensione trasversale ridotta cubetto, valida in tutte le posizioni
|
||||||
MIN_DIM_HBEAM = 621, -- SOLO DICE altezza minima di trave alta
|
|
||||||
MAX_DIM_DICE = 110, -- dimensione trasversale massima cubetto
|
|
||||||
MAX_LEN_DICE = 400, -- SOLO DICE lunghezza massima cubetto
|
MAX_LEN_DICE = 400, -- SOLO DICE lunghezza massima cubetto
|
||||||
COLL_SIC = 5, -- distanza di sicurezza per collisioni
|
COLL_SIC = 5, -- distanza di sicurezza per collisioni
|
||||||
CUT_SIC = 20, -- distanza di sicurezza per tagli
|
CUT_SIC = 20, -- distanza di sicurezza per tagli
|
||||||
@@ -40,6 +38,7 @@ local BeamData = {
|
|||||||
VICE_MINH = 110, -- altezza minima della morsa
|
VICE_MINH = 110, -- altezza minima della morsa
|
||||||
VICE_MAXH = 370, -- altezza massima zona pinzaggio orizzontale
|
VICE_MAXH = 370, -- altezza massima zona pinzaggio orizzontale
|
||||||
USER_HOLE_DIAM = 0, -- diametro foro per L20
|
USER_HOLE_DIAM = 0, -- diametro foro per L20
|
||||||
|
FASTCLAMPING = false
|
||||||
}
|
}
|
||||||
|
|
||||||
-- costanti riportate da mlde non necessarie per automatismo (sostituire con GetParameters o simile)
|
-- costanti riportate da mlde non necessarie per automatismo (sostituire con GetParameters o simile)
|
||||||
@@ -55,7 +54,7 @@ MldeParameters.DeltaTabZ = 0
|
|||||||
|
|
||||||
-- Aggiornamento con dati macchina personalizzati
|
-- Aggiornamento con dati macchina personalizzati
|
||||||
-- TODO sostituire con GetParameters o simile
|
-- TODO sostituire con GetParameters o simile
|
||||||
local sData = EgtGetSourceDir().."EbwData.lua"
|
local sData = EgtGetCurrMachineDir().."\\Beam\\EbwData.lua"
|
||||||
if EgtExistsFile( sData) then
|
if EgtExistsFile( sData) then
|
||||||
local Machine = dofile( sData)
|
local Machine = dofile( sData)
|
||||||
if Machine then
|
if Machine then
|
||||||
@@ -94,9 +93,9 @@ local function GetBlockedAxis( sHead, nToolType, sBlockedAxis)
|
|||||||
elseif nToolType == MCH_TY.MORTISE_STD then
|
elseif nToolType == MCH_TY.MORTISE_STD then
|
||||||
if sHead == 'H3' then
|
if sHead == 'H3' then
|
||||||
if sBlockedAxis == 'parallel' then
|
if sBlockedAxis == 'parallel' then
|
||||||
return 'A=0'
|
return 'CS=-90'
|
||||||
elseif sBlockedAxis == 'perpendicular' then
|
elseif sBlockedAxis == 'perpendicular' then
|
||||||
return 'A=90'
|
return 'CS=0'
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
return ''
|
return ''
|
||||||
@@ -271,7 +270,7 @@ local function GetSetupInfo( sHead)
|
|||||||
SetupInfo.dCAxisSideEncumbrance = 200
|
SetupInfo.dCAxisSideEncumbrance = 200
|
||||||
SetupInfo.bToolOnAggregate = false
|
SetupInfo.bToolOnAggregate = false
|
||||||
SetupInfo.vtRotationAxisC = EgtGetAxisDir( 'C')
|
SetupInfo.vtRotationAxisC = EgtGetAxisDir( 'C')
|
||||||
SetupInfo.vtRotationAxisAB = EgtGetAxisDir( 'B')
|
SetupInfo.vtRotationAxisAB = EgtGetAxisDir( 'A')
|
||||||
|
|
||||||
-- TODO da rimuovere quando si fara PreSimulation di asse Z per frese
|
-- TODO da rimuovere quando si fara PreSimulation di asse Z per frese
|
||||||
SetupInfo.dPivot = MldeParameters.MillOffs
|
SetupInfo.dPivot = MldeParameters.MillOffs
|
||||||
@@ -283,6 +282,10 @@ local function GetSetupInfo( sHead)
|
|||||||
SetupInfo.GetMinNz = GetMinNzTopHead
|
SetupInfo.GetMinNz = GetMinNzTopHead
|
||||||
SetupInfo.GetPreCollisionData = GetPreCollisionData
|
SetupInfo.GetPreCollisionData = GetPreCollisionData
|
||||||
SetupInfo.GetSCC = GetSCC
|
SetupInfo.GetSCC = GetSCC
|
||||||
|
-- sega a catena
|
||||||
|
elseif sHead == 'H3' then
|
||||||
|
SetupInfo.HeadType = { bTop = true, bBottom = false}
|
||||||
|
SetupInfo.PreferredSide = {}
|
||||||
-- rinvio angolare 90° (considerato come fosse una testa da sotto)
|
-- rinvio angolare 90° (considerato come fosse una testa da sotto)
|
||||||
elseif sHead == 'H5' then
|
elseif sHead == 'H5' then
|
||||||
SetupInfo.bToolOnAggregate = true
|
SetupInfo.bToolOnAggregate = true
|
||||||
|
|||||||
+1
-1
@@ -28,7 +28,7 @@ local Offsets = {
|
|||||||
|
|
||||||
local Trave = {
|
local Trave = {
|
||||||
YMIN=30,
|
YMIN=30,
|
||||||
YMAX=251,
|
YMAX=291,
|
||||||
ZMIN=30,
|
ZMIN=30,
|
||||||
ZMAX=621
|
ZMAX=621
|
||||||
}
|
}
|
||||||
|
|||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
|
||||||
|
REM Compilazione degli script macchina Egaltech 2024.02.22
|
||||||
|
REM Per togliere info di debug aggiungere flag -s prima del nome del file di input
|
||||||
|
|
||||||
|
REM Compilazione 32 bit e copia file da non compilare
|
||||||
|
|
||||||
|
@echo off
|
||||||
|
|
||||||
|
REM chiedo all'utente la versione da assegnare alla macchina da compilare
|
||||||
|
set /p "machineVersion=Inserisci versione: "
|
||||||
|
|
||||||
|
REM variabili per costruire i percorsi delle cartelle
|
||||||
|
set "machineName=Saomad-KAIROS-MK2"
|
||||||
|
set "deployFolder=C:\MachinesDeploy"
|
||||||
|
set "machinePath=%deployFolder%\%machineName%\"
|
||||||
|
set "fullPathSource=%deployFolder%\%machineName%\%machineVersion%\%machineName%"
|
||||||
|
set "fullPathZip=%deployFolder%\%machineName%\%machineVersion%"
|
||||||
|
|
||||||
|
REM elimino eventuale cartella esistente
|
||||||
|
rmdir /s /Q %fullPathZip%
|
||||||
|
|
||||||
|
REM copio i sorgenti nel percorso di destinazione
|
||||||
|
ROBOCOPY . %fullPathSource%\ /E /XF "Compile.bat" /XF ".gitignore" /XD ".git" /XF "UpdateLog.txt"
|
||||||
|
REM copio i sorgenti nel percorso temporaneo per i compilati
|
||||||
|
ROBOCOPY . %fullPathSource%\bin\%machineName%\ /E /XF "Compile.bat" /XF ".gitignore" /XD ".git" /XF "UpdateLog.txt"
|
||||||
|
|
||||||
|
REM copio i file compilati nel percorso temporaneo per i compilati
|
||||||
|
\EgtProg\Dll32\luac54 -o %fullPathSource%\bin\%machineName%\Saomad-KAIROS-MK2.mlpe -s Saomad-KAIROS-MK2.mlpe
|
||||||
|
\EgtProg\Dll32\luac54 -o %fullPathSource%\bin\%machineName%\Saomad-KAIROS-MK2.mlse -s Saomad-KAIROS-MK2.mlse
|
||||||
|
\EgtProg\Dll32\luac54 -o %fullPathSource%\bin\%machineName%\Saomad-KAIROS-MK2.SIEMENS.mlpe -s Saomad-KAIROS-MK2.SIEMENS.mlpe
|
||||||
|
|
||||||
|
REM comprimo i file compilati in uno zip pronto per essere distribuito
|
||||||
|
tar.exe acvf %fullPathZip%\%machineName%.zip -C %fullPathSource%\bin\ %machineName%\*.*
|
||||||
|
|
||||||
|
REM elimino il percorso temporaneo
|
||||||
|
rmdir /s /Q %fullPathSource%\bin\
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -3,8 +3,8 @@
|
|||||||
Material=Beam
|
Material=Beam
|
||||||
NCType=5 ; 1=Tpa, 2=Num Flexium, 3=Num Axium APServer, 4=Num Axium PCToolkit, 5=Siemens_Sharp7
|
NCType=5 ; 1=Tpa, 2=Num Flexium, 3=Num Axium APServer, 4=Num Axium PCToolkit, 5=Siemens_Sharp7
|
||||||
Flow=2
|
Flow=2
|
||||||
IsoFileDir=\\192.168.214.253\iso
|
IsoFileDir=\\192.168.0.253\iso
|
||||||
Ip=192.168.214.1
|
Ip=192.168.0.1
|
||||||
Rack=0
|
Rack=0
|
||||||
Slot=1
|
Slot=1
|
||||||
Debug=2
|
Debug=2
|
||||||
@@ -47,6 +47,15 @@ Debug=2
|
|||||||
29=PLC_Messages5,302:26.0:2,c,plc
|
29=PLC_Messages5,302:26.0:2,c,plc
|
||||||
30=PLC_Messages6,302:28.0:2,c,plc
|
30=PLC_Messages6,302:28.0:2,c,plc
|
||||||
31=W_Carico,301:8.0:2,c,plc
|
31=W_Carico,301:8.0:2,c,plc
|
||||||
|
32=NextPartL,301:10.0:2,c,plc
|
||||||
|
33=NextPartW,301:12.0:2,c,plc
|
||||||
|
34=NextPartH,301:14.0:2,c,plc
|
||||||
|
35=NextPartPressX1,301:16.0:4,c,plc
|
||||||
|
36=NextPartFeed,301:20.0:4,c,plc
|
||||||
|
37=NextPartAcc,301:24.0:4,c,plc
|
||||||
|
38=NextPartRef1,301:28.0:4,c,plc
|
||||||
|
39=NextPartRef2,301:32.0:4,c,plc
|
||||||
|
40=Stop_Working,301:1.7:1,c,plc
|
||||||
|
|
||||||
[Languages]
|
[Languages]
|
||||||
Enable=0
|
Enable=0
|
||||||
@@ -110,7 +119,7 @@ Default=Standard
|
|||||||
|
|
||||||
[Estimations]
|
[Estimations]
|
||||||
Enable=1
|
Enable=1
|
||||||
WinPlace=0,698,85,669,863
|
WinPlace=0,-1270,21,669,863
|
||||||
|
|
||||||
[VMill]
|
[VMill]
|
||||||
Enable=1
|
Enable=1
|
||||||
@@ -9,8 +9,8 @@
|
|||||||
require( 'EmtGenerator')
|
require( 'EmtGenerator')
|
||||||
EgtEnableDebug( false)
|
EgtEnableDebug( false)
|
||||||
|
|
||||||
PP_VER = '2.7l3'
|
PP_VER = '3.1d1_DEV7'
|
||||||
MIN_MACH_VER = '2.7l2'
|
MIN_MACH_VER = '3.1c1'
|
||||||
|
|
||||||
EgtOutLog ( '** Saomad-KAIROS '..PP_VER..' (MinMach '.. MIN_MACH_VER ..') **', 1)
|
EgtOutLog ( '** Saomad-KAIROS '..PP_VER..' (MinMach '.. MIN_MACH_VER ..') **', 1)
|
||||||
|
|
||||||
@@ -63,9 +63,24 @@ AutoRotMinLen = 2600
|
|||||||
MaxUnloadLen = 0
|
MaxUnloadLen = 0
|
||||||
DefTcPos = 'T101'
|
DefTcPos = 'T101'
|
||||||
CoeffVM = 0.5
|
CoeffVM = 0.5
|
||||||
|
DistZClampToTable = 5 -- distanza tra la tavola e il punto più basso della morsa
|
||||||
|
ClampingCoeffMin = nil -- coefficiente di fissaggio, se 0 o nil non fa controllo, per il momento da inizializzare da Ts3Data
|
||||||
|
ClampSmallH = 98.5 -- dimensioni area di pinzaggio
|
||||||
|
ClampH = 440.9
|
||||||
|
ClampL = 1491
|
||||||
|
ClampSmallL = 994.4 -- dimensioni area di pinzaggio
|
||||||
|
ClampFrontAngle = 35 -- angolo pinza frontale
|
||||||
|
MinJoinVV = 75
|
||||||
|
MinJoinSS = 100
|
||||||
|
MinJoinLS = 290
|
||||||
|
MinJoinSL = 100
|
||||||
|
MinJoinLL = 400
|
||||||
|
-- variabili per pinzaggio
|
||||||
|
CLAMP_MAXDIST_2CLAMP = 3000 -- massima distanza tra ingombro lavorazione e pinza quando il pezzo è staffato con entrtambe le pinze (lavorazioni centrali)
|
||||||
|
CLAMP_MAXDIST_1CLAMP = 500 -- massima distanza tra ingombro lavorazione e pinza quando il pezzo è staffato con una sola pinza (lavorazioni testa-coda)
|
||||||
|
|
||||||
-- Aggiornamento con dati da B&W
|
-- Aggiornamento con dati da B&W
|
||||||
local sData = EgtGetSourceDir().."Beam\\EbwData.lua"
|
local sData = EgtGetCurrMachineDir().."\\Beam\\EbwData.lua"
|
||||||
if EgtExistsFile( sData) then
|
if EgtExistsFile( sData) then
|
||||||
local Machine = dofile( sData)
|
local Machine = dofile( sData)
|
||||||
if Machine then
|
if Machine then
|
||||||
@@ -94,6 +109,12 @@ if EgtExistsFile( sData) then
|
|||||||
if Machine.Offsets.TAB_OFFSET_Y then DeltaTabY = Machine.Offsets.TAB_OFFSET_Y end
|
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.TAB_OFFSET_Z then DeltaTabZ = Machine.Offsets.TAB_OFFSET_Z end
|
||||||
if Machine.Offsets.NOULOAD then MaxUnloadLen = Machine.Offsets.NOULOAD end
|
if Machine.Offsets.NOULOAD then MaxUnloadLen = Machine.Offsets.NOULOAD end
|
||||||
|
if Machine.Offsets.MIN_JOIN_VV then MinJoinVV = EgtClamp( Machine.Offsets.MIN_JOIN_VV, 60, 150) end
|
||||||
|
if Machine.Offsets.MIN_JOIN_SS then MinJoinSS = EgtClamp( Machine.Offsets.MIN_JOIN_SS, 80, 275) end
|
||||||
|
if Machine.Offsets.MIN_JOIN_LS then MinJoinLS = EgtClamp( Machine.Offsets.MIN_JOIN_LS, 250, 400) end
|
||||||
|
if Machine.Offsets.MIN_JOIN_SL then MinJoinSL = EgtClamp( Machine.Offsets.MIN_JOIN_SL, 80, 400) end
|
||||||
|
if Machine.Offsets.MIN_JOIN_LL then MinJoinLL = EgtClamp( Machine.Offsets.MIN_JOIN_LL, 300, 600) end
|
||||||
|
if Machine.Offsets.COEFF_CLAMP_CHECK then ClampingCoeffMin = Machine.Offsets.COEFF_CLAMP_CHECK end
|
||||||
end
|
end
|
||||||
ParkY = EgtClamp( ParkY, MinY, MaxY)
|
ParkY = EgtClamp( ParkY, MinY, MaxY)
|
||||||
ParkZ = EgtClamp( ParkZ, MinZ, MaxZ)
|
ParkZ = EgtClamp( ParkZ, MinZ, MaxZ)
|
||||||
@@ -102,17 +123,22 @@ if EgtExistsFile( sData) then
|
|||||||
UnloadSmT = UnloadT
|
UnloadSmT = UnloadT
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
-- Aggiorno valori MinJoin
|
||||||
|
MinJoin = MinJoinSS
|
||||||
|
MinOther = abs( MinX1) + abs( MaxX2) + MinJoin
|
||||||
|
DeltaTol = 210
|
||||||
|
|
||||||
EmtGeneral {
|
EmtGeneral {
|
||||||
File='Saomad-KAIROS.nge',
|
File='Saomad-KAIROS-MK2.nge',
|
||||||
Offset = Vector3d( 0.0, -835, -779.06),
|
Offset = Vector3d( 0.0, -835, -779.06),
|
||||||
AxisMaxAdjust = 30,
|
AxisMaxAdjust = 30,
|
||||||
AxisMaxRotAdj = 0.5,
|
AxisMaxRotAdj = 0.5,
|
||||||
ExitMaxAdjust = 30,
|
ExitMaxAdjust = 30,
|
||||||
ExitMaxRotAdj = 0.5,
|
ExitMaxRotAdj = 0.5,
|
||||||
AngDeltaMinForHome = 165,
|
--AngDeltaMinForHome = 165,
|
||||||
Special = 'Saomad-KAIROS.mlse',
|
NewLinkMgr = 1,
|
||||||
Processor = 'Saomad-KAIROS.mlpe'}
|
Special = 'Saomad-KAIROS-MK2.mlse',
|
||||||
|
Processor = 'Saomad-KAIROS-MK2.mlpe'}
|
||||||
local BaseId = EmtBase {
|
local BaseId = EmtBase {
|
||||||
Name = 'Base',
|
Name = 'Base',
|
||||||
Geo='BASE/GEO',
|
Geo='BASE/GEO',
|
||||||
@@ -150,7 +176,7 @@ local CId = EmtAxis {
|
|||||||
Home = ParkC,
|
Home = ParkC,
|
||||||
Geo = 'C_AXIS/GEO',
|
Geo = 'C_AXIS/GEO',
|
||||||
Aux = {'C_AXIS/SOLID', 'C_AXIS/COLLISION'}}
|
Aux = {'C_AXIS/SOLID', 'C_AXIS/COLLISION'}}
|
||||||
EmtAxis {
|
local AId = EmtAxis {
|
||||||
Name = 'A',
|
Name = 'A',
|
||||||
Parent = 'C',
|
Parent = 'C',
|
||||||
Token = 'A1',
|
Token = 'A1',
|
||||||
@@ -173,7 +199,7 @@ local H1Id = EmtHead {
|
|||||||
Rot1W = 2,
|
Rot1W = 2,
|
||||||
OthColl = {'A/SOLID', 'C/SOLID'},
|
OthColl = {'A/SOLID', 'C/SOLID'},
|
||||||
Geo = 'H1_HEAD/GEO'}
|
Geo = 'H1_HEAD/GEO'}
|
||||||
EgtSetInfo( H1Id, 'ZMAXONROT', '1,60')
|
--EgtSetInfo( H1Id, 'ZMAXONROT', '1,60')
|
||||||
-- Sega a catena
|
-- Sega a catena
|
||||||
EmtAxis {
|
EmtAxis {
|
||||||
Name = 'CS',
|
Name = 'CS',
|
||||||
@@ -197,7 +223,7 @@ local H3Id = EmtHead {
|
|||||||
SolCh = MCH_SCC.ADIR_NEAR,
|
SolCh = MCH_SCC.ADIR_NEAR,
|
||||||
OthColl = {'A/SOLID', 'C/SOLID'},
|
OthColl = {'A/SOLID', 'C/SOLID'},
|
||||||
Geo = 'H3_HEAD/GEO'}
|
Geo = 'H3_HEAD/GEO'}
|
||||||
EgtSetInfo( H3Id, 'ZMAXONROT', '1,5')
|
--EgtSetInfo( H3Id, 'ZMAXONROT', '1,5')
|
||||||
-- Morse
|
-- Morse
|
||||||
local X1Id = EmtAxis {
|
local X1Id = EmtAxis {
|
||||||
Name = 'X1',
|
Name = 'X1',
|
||||||
@@ -219,7 +245,7 @@ local PX1Id = EmtAxis {
|
|||||||
Stroke = { 0, MaxHOpen},
|
Stroke = { 0, MaxHOpen},
|
||||||
Home = MaxHOpen,
|
Home = MaxHOpen,
|
||||||
Geo = 'PX1_AXIS/GEO',
|
Geo = 'PX1_AXIS/GEO',
|
||||||
Aux = {'PX1_AXIS/SOLID', 'PX1_AXIS/COLLISION'}}
|
Aux = {'PX1_AXIS/SOLID', 'PX1_AXIS/COLLISION', 'PX1_AXIS/CLAMP_CHECK'}}
|
||||||
local QX1Id = EmtAxis {
|
local QX1Id = EmtAxis {
|
||||||
Name = 'QX1',
|
Name = 'QX1',
|
||||||
Parent = 'X1',
|
Parent = 'X1',
|
||||||
@@ -250,7 +276,7 @@ local PX2Id = EmtAxis {
|
|||||||
Stroke = { 0, MaxHOpen},
|
Stroke = { 0, MaxHOpen},
|
||||||
Home = MaxHOpen,
|
Home = MaxHOpen,
|
||||||
Geo = 'PX2_AXIS/GEO',
|
Geo = 'PX2_AXIS/GEO',
|
||||||
Aux = {'PX2_AXIS/SOLID', 'PX2_AXIS/COLLISION'}}
|
Aux = {'PX2_AXIS/SOLID', 'PX2_AXIS/COLLISION', 'PX2_AXIS/CLAMP_CHECK'}}
|
||||||
local QX2Id = EmtAxis {
|
local QX2Id = EmtAxis {
|
||||||
Name = 'QX2',
|
Name = 'QX2',
|
||||||
Parent = 'X2',
|
Parent = 'X2',
|
||||||
@@ -389,11 +415,13 @@ EgtMove( EgtGetFirstNameInGroup( X1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
|||||||
EgtMove( EgtGetFirstNameInGroup( X1Id, 'COLLISION'), vtMove, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( X1Id, 'COLLISION'), vtMove, GDB_RT.GLOB)
|
||||||
EgtMove( EgtGetFirstNameInGroup( PX1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( PX1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||||
EgtMove( EgtGetFirstNameInGroup( PX1Id, 'COLLISION'), vtMove, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( PX1Id, 'COLLISION'), vtMove, GDB_RT.GLOB)
|
||||||
|
EgtMove( EgtGetFirstNameInGroup( PX1Id, 'CLAMP_CHECK'), vtMove + Vector3d(0,0,DistZClampToTable), GDB_RT.GLOB)
|
||||||
EgtMove( EgtGetFirstNameInGroup( QX1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( QX1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||||
EgtMove( EgtGetFirstNameInGroup( X2Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( X2Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||||
EgtMove( EgtGetFirstNameInGroup( X2Id, 'COLLISION'), vtMove, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( X2Id, 'COLLISION'), vtMove, GDB_RT.GLOB)
|
||||||
EgtMove( EgtGetFirstNameInGroup( PX2Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( PX2Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||||
EgtMove( EgtGetFirstNameInGroup( PX2Id, 'COLLISION'), vtMove, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( PX2Id, 'COLLISION'), vtMove, GDB_RT.GLOB)
|
||||||
|
EgtMove( EgtGetFirstNameInGroup( PX2Id, 'CLAMP_CHECK'), vtMove + Vector3d(0,0,DistZClampToTable), GDB_RT.GLOB)
|
||||||
EgtMove( EgtGetFirstNameInGroup( QX2Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( QX2Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||||
EgtMove( EgtGetFirstNameInGroup( YId, 'SOLID'), vtMoveY, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( YId, 'SOLID'), vtMoveY, GDB_RT.GLOB)
|
||||||
|
|
||||||
@@ -414,8 +442,8 @@ function OnSetHead()
|
|||||||
local dDist = EgtIf( EMC.DIST and abs( EMC.DIST) > 1, EMC.DIST, ChSawLen)
|
local dDist = EgtIf( EMC.DIST and abs( EMC.DIST) > 1, EMC.DIST, ChSawLen)
|
||||||
EmtModifyExitPosition( EMC.HEAD, EMC.EXIT, Point3d( 0, 0, -dDist))
|
EmtModifyExitPosition( EMC.HEAD, EMC.EXIT, Point3d( 0, 0, -dDist))
|
||||||
-- recupero valore asse CS bloccato
|
-- recupero valore asse CS bloccato
|
||||||
local sVal = EgtGetMachiningParam( MCH_MP.BLOCKEDAXIS)
|
local sVal = EgtGetMachiningParam( MCH_MP.BLOCKEDAXIS) or ''
|
||||||
local dPosCS = tonumber( sVal:sub( 4) or '')
|
local dPosCS = tonumber( sVal:sub( 4)) or 0
|
||||||
EmtModifyAxisHome( 'C', GetChainSawCHomeFromVirtualAxis( dPosCS))
|
EmtModifyAxisHome( 'C', GetChainSawCHomeFromVirtualAxis( dPosCS))
|
||||||
-- limiti asse A
|
-- limiti asse A
|
||||||
EmtModifyAxisStroke( 'A', { -91, 91})
|
EmtModifyAxisStroke( 'A', { -91, 91})
|
||||||
@@ -502,3 +530,53 @@ function OnResetMachine()
|
|||||||
end
|
end
|
||||||
EgtSetStatus( EgtGetFirstNameInGroup( GDB_ID.ROOT, 'VMill') or GDB_ID.NULL, GDB_ST.OFF)
|
EgtSetStatus( EgtGetFirstNameInGroup( GDB_ID.ROOT, 'VMill') or GDB_ID.NULL, GDB_ST.OFF)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
function UpdateMinJoinDeltaTol( SB, HB, LB)
|
||||||
|
local L_SMALL = 800
|
||||||
|
local H_V = 90
|
||||||
|
local H_S = 200
|
||||||
|
local H_L = 400
|
||||||
|
local W_V = 90
|
||||||
|
local W_S = 150
|
||||||
|
local W_L = 250
|
||||||
|
local DELTA_TOL_S = 210
|
||||||
|
local DELTA_TOL_V = 110
|
||||||
|
local DELTA_TOL_L = 410
|
||||||
|
if SB <= W_V and HB <= H_V then
|
||||||
|
MinJoin = MinJoinVV
|
||||||
|
DeltaTol = DELTA_TOL_V
|
||||||
|
elseif LB <= L_SMALL then
|
||||||
|
MinJoin = MinJoinSS
|
||||||
|
DeltaTol = DELTA_TOL_S
|
||||||
|
else
|
||||||
|
local dMinJoinS
|
||||||
|
local dMinJoinL
|
||||||
|
if SB <= W_S then
|
||||||
|
dMinJoinS = MinJoinSS
|
||||||
|
dMinJoinL = MinJoinLS
|
||||||
|
elseif SB <= W_L then
|
||||||
|
local Coeff = ( SB - W_S) / ( W_L - W_S)
|
||||||
|
dMinJoinS = ( 1 - Coeff) * MinJoinSS + Coeff * MinJoinSL
|
||||||
|
dMinJoinL = ( 1 - Coeff) * MinJoinLS + Coeff * MinJoinLL
|
||||||
|
else
|
||||||
|
dMinJoinS = MinJoinSL
|
||||||
|
dMinJoinL = MinJoinLL
|
||||||
|
end
|
||||||
|
if HB <= H_S then
|
||||||
|
MinJoin = dMinJoinS
|
||||||
|
DeltaTol = DELTA_TOL_S
|
||||||
|
elseif HB <= H_L then
|
||||||
|
local Coeff = ( HB - H_S) / ( H_L - H_S)
|
||||||
|
MinJoin = ( 1 - Coeff) * dMinJoinS + Coeff * dMinJoinL
|
||||||
|
DeltaTol = ( 1 - Coeff) * DELTA_TOL_S + Coeff * DELTA_TOL_L
|
||||||
|
else
|
||||||
|
MinJoin = dMinJoinL
|
||||||
|
DeltaTol = DELTA_TOL_L
|
||||||
|
end
|
||||||
|
if SB < W_V then
|
||||||
|
DeltaTol = DELTA_TOL_V
|
||||||
|
end
|
||||||
|
end
|
||||||
|
MinOther = abs( MinX1) + abs( MaxX2) + MinJoin
|
||||||
|
end
|
||||||
@@ -7,13 +7,15 @@ EgtEnableDebug( false)
|
|||||||
|
|
||||||
LONG_TOOL_MINLEN = 221
|
LONG_TOOL_MINLEN = 221
|
||||||
BIG_TOOL_DIAM = 300
|
BIG_TOOL_DIAM = 300
|
||||||
|
ALL_CLAMP_POS = {}
|
||||||
|
CLAMP_POS = {}
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
-- *** GENERATION ***
|
-- *** GENERATION ***
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
local sBaseDir = EgtGetSourceDir()
|
local sBaseDir = EgtGetCurrMachineDir()
|
||||||
if NumericalControl == 'SIEMENS' then
|
if NumericalControl == 'SIEMENS' then
|
||||||
dofile( sBaseDir .. 'Saomad-KAIROS.SIEMENS.mlpe')
|
dofile( sBaseDir .. '\\Saomad-KAIROS-MK2.SIEMENS.mlpe')
|
||||||
else
|
else
|
||||||
EmtSetLastError( 1201, 'Numerical Control error : unkwnown type')
|
EmtSetLastError( 1201, 'Numerical Control error : unkwnown type')
|
||||||
end
|
end
|
||||||
@@ -30,10 +32,20 @@ function OnSimulStart()
|
|||||||
if vTcPos then
|
if vTcPos then
|
||||||
for i = 1, #vTcPos do
|
for i = 1, #vTcPos do
|
||||||
local vTools = EgtGetToolsInCurrSetupPos( vTcPos[i])
|
local vTools = EgtGetToolsInCurrSetupPos( vTcPos[i])
|
||||||
if vTools and vTools[1] then
|
for j = 1, #( vTools or {}) do
|
||||||
EgtLoadTool( vTcPos[i], 1, vTools[1])
|
if vTools[j] ~= '' then
|
||||||
ShowToolInTcPos( vTcPos[i], true)
|
EgtLoadTool( vTcPos[i], j, vTools[j])
|
||||||
|
-- Aggiunto controllo lunghezza lama minima * 0.9 per ricavare la tolleranza del VMILL
|
||||||
|
if EgtTdbSetCurrTool(vTools[j]) then -- set utensile corrente
|
||||||
|
if EgtTdbGetCurrToolParam( MCH_TP.TYPE) == MCH_TY.SAW_STD or EgtTdbGetCurrToolParam( MCH_TP.TYPE) == MCH_TY.SAW_FLAT then -- controllo tipo utensile sega
|
||||||
|
local dCurrSawLen = EgtTdbGetCurrToolParam( MCH_TP.LEN) * 0.9
|
||||||
|
-- se non definito o minore del valore precedente aggiorna la tolleranza
|
||||||
|
EMT.VMILLTOL = EgtIf( not EMT.VMILLTOL or dCurrSawLen < EMT.VMILLTOL, dCurrSawLen, EMT.VMILLTOL)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
ShowToolInTcPos( vTcPos[i], true)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
-- Carico l'utensile iniziale o di default sulla testa
|
-- Carico l'utensile iniziale o di default sulla testa
|
||||||
@@ -97,6 +109,29 @@ function OnSimulStart()
|
|||||||
end
|
end
|
||||||
-- Preparo lista collisioni vuota
|
-- Preparo lista collisioni vuota
|
||||||
EMT.COLLIDE = {}
|
EMT.COLLIDE = {}
|
||||||
|
|
||||||
|
-- si crea gruppo temporaneo appoggio controllo clamping
|
||||||
|
CLAMP_CHECK_GROUP = EgtGetFirstNameInGroup( GDB_ID.ROOT, 'CLAMP_CHECK')
|
||||||
|
CLAMP_CHECK_INTERS = EgtGetFirstNameInGroup( GDB_ID.ROOT, 'CLAMP_INTERS')
|
||||||
|
|
||||||
|
if CLAMP_CHECK_GROUP then
|
||||||
|
EgtEmptyGroup( CLAMP_CHECK_GROUP)
|
||||||
|
else
|
||||||
|
local frClampCheckGroup = Frame3d( ORIG(), GDB_FR.FRONT)
|
||||||
|
CLAMP_CHECK_GROUP = EgtGroup( GDB_ID.ROOT, frClampCheckGroup)
|
||||||
|
EgtSetName( CLAMP_CHECK_GROUP, 'CLAMP_CHECK')
|
||||||
|
EgtSetLevel( CLAMP_CHECK_GROUP, GDB_LV.TEMP)
|
||||||
|
EgtSetStatus( CLAMP_CHECK_GROUP, GDB_ST.OFF)
|
||||||
|
end
|
||||||
|
|
||||||
|
if CLAMP_CHECK_INTERS then
|
||||||
|
EgtEmptyGroup( CLAMP_CHECK_INTERS)
|
||||||
|
else
|
||||||
|
CLAMP_CHECK_INTERS = EgtGroup( GDB_ID.ROOT)
|
||||||
|
EgtSetName( CLAMP_CHECK_INTERS, 'CLAMP_INTERS')
|
||||||
|
EgtSetLevel( CLAMP_CHECK_INTERS, GDB_LV.TEMP)
|
||||||
|
EgtSetStatus( CLAMP_CHECK_INTERS, GDB_ST.OFF)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
@@ -122,13 +157,13 @@ function OnSimulDispositionStart()
|
|||||||
-- Determino dimensioni del grezzo
|
-- Determino dimensioni del grezzo
|
||||||
local nSolId = EgtGetFirstNameInGroup( EgtGetFirstRawPart() or GDB_ID.NULL, 'RawSolid') or GDB_ID.NULL
|
local nSolId = EgtGetFirstNameInGroup( EgtGetFirstRawPart() or GDB_ID.NULL, 'RawSolid') or GDB_ID.NULL
|
||||||
local b3Sol = EgtGetBBoxGlob( nSolId, GDB_BB.STANDARD)
|
local b3Sol = EgtGetBBoxGlob( nSolId, GDB_BB.STANDARD)
|
||||||
EMT.LB = 0
|
EMT.LENGTHBEAM = 0
|
||||||
EMT.SB = 0
|
EMT.WIDTHBEAM = 0
|
||||||
EMT.HB = 0
|
EMT.HEIGHTBEAM = 0
|
||||||
if b3Sol then
|
if b3Sol then
|
||||||
EMT.LB = b3Sol:getDimX()
|
EMT.LENGTHBEAM = b3Sol:getDimX()
|
||||||
EMT.SB = b3Sol:getDimY()
|
EMT.WIDTHBEAM = b3Sol:getDimY()
|
||||||
EMT.HB = b3Sol:getDimZ()
|
EMT.HEIGHTBEAM = b3Sol:getDimZ()
|
||||||
end
|
end
|
||||||
-- Se vero inizio e abilitato creo gli Zmap
|
-- Se vero inizio e abilitato creo gli Zmap
|
||||||
EMT.VMILL = {}
|
EMT.VMILL = {}
|
||||||
@@ -193,7 +228,7 @@ function OnSimulDispositionStart()
|
|||||||
end
|
end
|
||||||
table.insert( EMT.VMILL, VMillId)
|
table.insert( EMT.VMILL, VMillId)
|
||||||
end
|
end
|
||||||
nPartRawId = EgtGetNextRawPart( nPartRawId)
|
nPartRawId = EgtGetNextRawPart( nPartRawId)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
-- fasi successive
|
-- fasi successive
|
||||||
@@ -234,18 +269,22 @@ function OnSimulDispositionStart()
|
|||||||
local nOrd = GetPhaseOrd( EMT.PHASE)
|
local nOrd = GetPhaseOrd( EMT.PHASE)
|
||||||
local nScrapOrd = GetPhaseOrd( EgtGetPhaseCount()) + 1
|
local nScrapOrd = GetPhaseOrd( EgtGetPhaseCount()) + 1
|
||||||
local b3Raw = BBox3d()
|
local b3Raw = BBox3d()
|
||||||
|
local b3Bar = BBox3d()
|
||||||
|
local b3Part = BBox3d()
|
||||||
local nPartRawId, nScrapRawId
|
local nPartRawId, nScrapRawId
|
||||||
local nRawId = EgtGetFirstRawPart()
|
local nRawId = EgtGetFirstRawPart()
|
||||||
while nRawId do
|
while nRawId do
|
||||||
local nNextRawId = EgtGetNextRawPart( nRawId)
|
local nNextRawId = EgtGetNextRawPart( nRawId)
|
||||||
if EgtVerifyRawPartPhase( nRawId, EMT.PHASE) then
|
if EgtVerifyRawPartPhase( nRawId, EMT.PHASE) then
|
||||||
EmtLinkRawPartToGroup( nRawId, 'Tab')
|
EmtLinkRawPartToGroup( nRawId, 'Tab')
|
||||||
|
local b3Tmp = EgtGetRawPartBBox( nRawId)
|
||||||
|
b3Bar:Add( b3Tmp)
|
||||||
local nRawOrd = EgtGetInfo( nRawId, 'ORD', 'i')
|
local nRawOrd = EgtGetInfo( nRawId, 'ORD', 'i')
|
||||||
if nRawOrd == nOrd then
|
if nRawOrd == nOrd then
|
||||||
b3Raw = EgtGetRawPartBBox( nRawId)
|
b3Raw:Add( b3Tmp)
|
||||||
|
b3Part:Add( b3Tmp)
|
||||||
nPartRawId = nRawId
|
nPartRawId = nRawId
|
||||||
elseif nRawOrd == nOrd + 1 and nRawOrd == nScrapOrd then
|
elseif nRawOrd == nOrd + 1 and nRawOrd == nScrapOrd then
|
||||||
local b3Tmp = EgtGetRawPartBBox( nRawId) or BBox3d()
|
|
||||||
b3Raw:Add( b3Tmp)
|
b3Raw:Add( b3Tmp)
|
||||||
nScrapRawId = nRawId
|
nScrapRawId = nRawId
|
||||||
end
|
end
|
||||||
@@ -259,6 +298,9 @@ function OnSimulDispositionStart()
|
|||||||
else
|
else
|
||||||
EMT.SCRAP = nil
|
EMT.SCRAP = nil
|
||||||
end
|
end
|
||||||
|
EMT.LENGTHBEAM = b3Bar:getDimX()
|
||||||
|
EMT.LENGTHRAW = b3Raw:getDimX()
|
||||||
|
EMT.LENGTHPART = b3Part:getDimX()
|
||||||
-- recupero CutId del pezzo in lavorazione
|
-- recupero CutId del pezzo in lavorazione
|
||||||
EMT.CUTID = EgtGetInfo( EgtGetFirstPartInRawPart( nPartRawId or GDB_ID.NULL) or GDB_ID.NULL, 'CUTID', 'i') or 0
|
EMT.CUTID = EgtGetInfo( EgtGetFirstPartInRawPart( nPartRawId or GDB_ID.NULL) or GDB_ID.NULL, 'CUTID', 'i') or 0
|
||||||
EMT.X1SPEC = nil
|
EMT.X1SPEC = nil
|
||||||
@@ -328,6 +370,7 @@ function OnSimulDispositionStart()
|
|||||||
if EgtVerifyRawPartPhase( nRawId, EMT.PHASE) then
|
if EgtVerifyRawPartPhase( nRawId, EMT.PHASE) then
|
||||||
if EgtGetInfo( nRawId, 'ORD', 'i') == nOrd then
|
if EgtGetInfo( nRawId, 'ORD', 'i') == nOrd then
|
||||||
EmtLinkRawPartToGroup( nRawId, 'Tab')
|
EmtLinkRawPartToGroup( nRawId, 'Tab')
|
||||||
|
b3Bar = EgtGetRawPartBBox( nRawId)
|
||||||
else
|
else
|
||||||
EgtMove( nRawId, vtMove, GDB_RT.GLOB)
|
EgtMove( nRawId, vtMove, GDB_RT.GLOB)
|
||||||
EgtSetStatus( nRawId, GDB_ST.OFF)
|
EgtSetStatus( nRawId, GDB_ST.OFF)
|
||||||
@@ -335,6 +378,7 @@ function OnSimulDispositionStart()
|
|||||||
end
|
end
|
||||||
nRawId = nNextRawId
|
nRawId = nNextRawId
|
||||||
end
|
end
|
||||||
|
EMT.LENGTHBEAM = b3Bar:getDimX()
|
||||||
-- altrimenti fase finale, aggancio primo grezzo alla tavola e gli altri in posizione carico al carro Y
|
-- altrimenti fase finale, aggancio primo grezzo alla tavola e gli altri in posizione carico al carro Y
|
||||||
else
|
else
|
||||||
-- indice primo grezzo della fase
|
-- indice primo grezzo della fase
|
||||||
@@ -350,12 +394,14 @@ function OnSimulDispositionStart()
|
|||||||
nRawId = EgtGetNextRawPart( nRawId)
|
nRawId = EgtGetNextRawPart( nRawId)
|
||||||
end
|
end
|
||||||
-- eseguo
|
-- eseguo
|
||||||
|
local b3Bar = BBox3d()
|
||||||
nRawId = EgtGetFirstRawPart()
|
nRawId = EgtGetFirstRawPart()
|
||||||
while nRawId do
|
while nRawId do
|
||||||
local nNextRawId = EgtGetNextRawPart( nRawId)
|
local nNextRawId = EgtGetNextRawPart( nRawId)
|
||||||
if EgtVerifyRawPartPhase( nRawId, EMT.PHASE) then
|
if EgtVerifyRawPartPhase( nRawId, EMT.PHASE) then
|
||||||
if EgtGetInfo( nRawId, 'ORD', 'i') == nOrd then
|
if EgtGetInfo( nRawId, 'ORD', 'i') == nOrd then
|
||||||
EmtLinkRawPartToGroup( nRawId, 'Tab')
|
EmtLinkRawPartToGroup( nRawId, 'Tab')
|
||||||
|
b3Bar = EgtGetRawPartBBox( nRawId)
|
||||||
else
|
else
|
||||||
EgtMove( nRawId, vtMove, GDB_RT.GLOB)
|
EgtMove( nRawId, vtMove, GDB_RT.GLOB)
|
||||||
EmtLinkRawPartToGroup( nRawId, 'X1')
|
EmtLinkRawPartToGroup( nRawId, 'X1')
|
||||||
@@ -363,6 +409,7 @@ function OnSimulDispositionStart()
|
|||||||
end
|
end
|
||||||
nRawId = nNextRawId
|
nRawId = nNextRawId
|
||||||
end
|
end
|
||||||
|
EMT.LENGTHBEAM = b3Bar:getDimX()
|
||||||
end
|
end
|
||||||
-- Indicazione angolo rotazione pezzo
|
-- Indicazione angolo rotazione pezzo
|
||||||
EMT.ROT = EgtGetInfo( EMT.DISPID, 'ROT', 'i') or 0
|
EMT.ROT = EgtGetInfo( EMT.DISPID, 'ROT', 'i') or 0
|
||||||
@@ -394,6 +441,7 @@ function OnSimulDispositionEnd()
|
|||||||
EMT.POSTROT = true
|
EMT.POSTROT = true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
EMT.SPLIT = false
|
||||||
EMT.OPEISDISP = false
|
EMT.OPEISDISP = false
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -543,6 +591,7 @@ function OnSimulMachiningEnd()
|
|||||||
EMT.UNLOADING = false
|
EMT.UNLOADING = false
|
||||||
EMT.FALL = false
|
EMT.FALL = false
|
||||||
end
|
end
|
||||||
|
EMT.SPLIT = nil
|
||||||
EMT.PREVHEAD = EMT.HEAD
|
EMT.PREVHEAD = EMT.HEAD
|
||||||
EMT.PREVEXIT = EMT.EXIT
|
EMT.PREVEXIT = EMT.EXIT
|
||||||
end
|
end
|
||||||
@@ -697,6 +746,8 @@ function ExecAuxCmd( sCmd)
|
|||||||
if Cmd[1] == '0' then
|
if Cmd[1] == '0' then
|
||||||
if Cmd[2] == 'Unloading' then
|
if Cmd[2] == 'Unloading' then
|
||||||
EMT.UNLOADING = true
|
EMT.UNLOADING = true
|
||||||
|
elseif Cmd[2] == 'Split' then
|
||||||
|
EMT.SPLIT = true
|
||||||
elseif Cmd[2] == 'Fall' then
|
elseif Cmd[2] == 'Fall' then
|
||||||
EMT.FALL = true
|
EMT.FALL = true
|
||||||
end
|
end
|
||||||
@@ -738,29 +789,9 @@ function ExecAuxCmd( sCmd)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
elseif Cmd[1] == '11' then
|
elseif Cmd[1] == '11' then
|
||||||
local dPX1 = MaxHOpen
|
ExecMovePX1( Cmd)
|
||||||
if Cmd[2] ~= '0' then
|
|
||||||
dPX1 = EgtIf( EMT.ROT == -1, EMT.HB, EMT.SB)
|
|
||||||
end
|
|
||||||
SimulMoveAxis( 'PX1', dPX1, MCH_SIM_STEP.RAPID)
|
|
||||||
local dQX1 = MaxVOpen
|
|
||||||
if Cmd[2] == '2' then
|
|
||||||
dQX1 = EgtIf( EMT.ROT == -1, EMT.SB, EMT.HB)
|
|
||||||
end
|
|
||||||
SimulMoveAxis( 'QX1', dQX1, MCH_SIM_STEP.RAPID)
|
|
||||||
SetPX1Light( Cmd[2] ~= '0')
|
|
||||||
elseif Cmd[1] == '12' then
|
elseif Cmd[1] == '12' then
|
||||||
local dPX2 = MaxHOpen
|
ExecMovePX2( Cmd)
|
||||||
if Cmd[2] ~= '0' then
|
|
||||||
dPX2 = EgtIf( EMT.ROT == -1, EMT.HB, EMT.SB)
|
|
||||||
end
|
|
||||||
SimulMoveAxis( 'PX2', dPX2, MCH_SIM_STEP.RAPID)
|
|
||||||
local dQX2 = MaxVOpen
|
|
||||||
if Cmd[2] == '2' then
|
|
||||||
dQX2 = EgtIf( EMT.ROT == -1, EMT.SB, EMT.HB)
|
|
||||||
end
|
|
||||||
SimulMoveAxis( 'QX2', dQX2, MCH_SIM_STEP.RAPID)
|
|
||||||
SetPX2Light( Cmd[2] ~= '0')
|
|
||||||
elseif Cmd[1] == '21' then
|
elseif Cmd[1] == '21' then
|
||||||
local nX1Delta = tonumber( Cmd[2])
|
local nX1Delta = tonumber( Cmd[2])
|
||||||
local nX2Delta = tonumber( Cmd[3])
|
local nX2Delta = tonumber( Cmd[3])
|
||||||
@@ -791,7 +822,7 @@ function ExecUnloading()
|
|||||||
-- li sposto per lasciare spazio al nuovo pezzo
|
-- li sposto per lasciare spazio al nuovo pezzo
|
||||||
local nId = EgtGetFirstInGroup( nVmGrpId)
|
local nId = EgtGetFirstInGroup( nVmGrpId)
|
||||||
while nId do
|
while nId do
|
||||||
EgtMove( nId, Vector3d( 0, -( EMT.SB + 50.0), 0), GDB_RT.GLOB)
|
EgtMove( nId, Vector3d( 0, -( EMT.WIDTHBEAM + 50.0), 0), GDB_RT.GLOB)
|
||||||
nId = EgtGetNext( nId)
|
nId = EgtGetNext( nId)
|
||||||
end
|
end
|
||||||
-- creo un nuovo layer e vi inserisco il nuovo pezzo
|
-- creo un nuovo layer e vi inserisco il nuovo pezzo
|
||||||
@@ -833,15 +864,199 @@ function ExecUnloading()
|
|||||||
end
|
end
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function VerifyYSlide( sName1, dVal1, sName2, dVal2)
|
function CheckClamping( sClampName)
|
||||||
-- Se movimento trave agganciata con carrello Y
|
|
||||||
|
local nClampId = EgtGetAxisId( sClampName) or GDB_ID.NULL
|
||||||
|
local nClampPathId = EgtGetFirstInGroup( EgtGetFirstNameInGroup( nClampId, 'CLAMP_CHECK') or GDB_ID.NULL)
|
||||||
|
local b3ClampingArea = EgtGetBBoxGlob( nClampPathId or GDB_ID.NULL, GDB_BB.STANDARD)
|
||||||
|
-- se non trovo percorso area di clamping, esco subito
|
||||||
|
if not nClampPathId or not EMT.VMILL or not ClampingCoeffMin then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local function GetCurveListFromIntersection( sPosIntersPlane, sIntersPlane, dDepth)
|
||||||
|
local vCurveListId = {}
|
||||||
|
local vtIntersPlane
|
||||||
|
-- piano di interpolazione
|
||||||
|
if sIntersPlane == 'X' then
|
||||||
|
vtIntersPlane = X_AX()
|
||||||
|
elseif sIntersPlane == 'Y' then
|
||||||
|
vtIntersPlane = Y_AX()
|
||||||
|
elseif sIntersPlane == 'Z' then
|
||||||
|
vtIntersPlane = Z_AX()
|
||||||
|
end
|
||||||
|
|
||||||
|
for i = 1, #EMT.VMILL do
|
||||||
|
local b3VMill = EgtGetBBoxGlob( EMT.VMILL[i], GDB_BB.EXACT)
|
||||||
|
local ptPosIntersPlane
|
||||||
|
if sPosIntersPlane == 'MIN' then
|
||||||
|
ptPosIntersPlane = b3VMill:getMin() + dDepth * vtIntersPlane
|
||||||
|
elseif sPosIntersPlane == 'MAX' then
|
||||||
|
ptPosIntersPlane = b3VMill:getMax() - dDepth * vtIntersPlane
|
||||||
|
end
|
||||||
|
local nLoopId, nLoopCnt = EgtPlaneVolZmapInters( ptPosIntersPlane, vtIntersPlane, EMT.VMILL[i], CLAMP_CHECK_INTERS, GDB_RT.GLOB)
|
||||||
|
vCurveListId = EgtTableAdd( vCurveListId, nLoopId, nLoopCnt)
|
||||||
|
end
|
||||||
|
|
||||||
|
return vCurveListId
|
||||||
|
end
|
||||||
|
|
||||||
|
local function CalculateIntersectionArea( sPosIntersPlane, sIntersPlane, dDepth)
|
||||||
|
-- test piano frontale
|
||||||
|
local vCurveListId = GetCurveListFromIntersection( sPosIntersPlane, sIntersPlane, dDepth)
|
||||||
|
-- si copia curva intersezione e curva pinza in gruppo di confronto
|
||||||
|
local nFlatSurfId, nFlatSurfCnt = EgtSurfFlatRegion( CLAMP_CHECK_GROUP, vCurveListId)
|
||||||
|
local vFlatSurfId = EgtTableFill( nFlatSurfId, nFlatSurfCnt) or {}
|
||||||
|
local nClampSurfId = EgtSurfFlatRegion( CLAMP_CHECK_GROUP, nClampPathId)
|
||||||
|
|
||||||
|
local dTotalArea = 0
|
||||||
|
local dTotalXLenght = 0
|
||||||
|
for i = 1, #vFlatSurfId do
|
||||||
|
local nTempSurfId = vFlatSurfId[i]
|
||||||
|
EgtSurfFrIntersect( nTempSurfId, nClampSurfId)
|
||||||
|
if nTempSurfId then
|
||||||
|
dTotalArea = dTotalArea + ceil( EgtSurfArea( nTempSurfId) or 0)
|
||||||
|
local b3BoxIntersectionBox = EgtGetBBoxGlob( nTempSurfId, GDB_BB.STANDARD)
|
||||||
|
if b3BoxIntersectionBox then
|
||||||
|
dTotalXLenght = dTotalXLenght + ceil( b3BoxIntersectionBox:getDimX()) -- somma lunghezze (x) delle aree pinzate
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return dTotalArea, dTotalXLenght
|
||||||
|
end
|
||||||
|
|
||||||
|
-- minima area considerata per un corretto pinzaggio
|
||||||
|
DistZClampToTable = DistZClampToTable or 0
|
||||||
|
--local MinJoin = BD.GetMinJoin( EMT.WIDTHPART, EMT.HEIGHTPART, EgtIf( EMT.SPLIT, EMT.LENGTHPART , EMT.LENGTHBEAM))
|
||||||
|
UpdateMinJoinDeltaTol( EMT.WIDTHPART, EMT.HEIGHTPART, EgtIf( EMT.SPLIT, EMT.LENGTHPART , EMT.LENGTHBEAM))
|
||||||
|
local MinZClamping = min( b3ClampingArea:getDimZ() + DistZClampToTable, EMT.HEIGHTPART) - DistZClampToTable
|
||||||
|
local dMinClamping = ( MinJoin * MinZClamping)
|
||||||
|
-- si moltiplica per un coefficiente minimo sotto al quale si da l'errore di pinzaggio
|
||||||
|
ClampingCoeffMin = EgtClamp( ClampingCoeffMin, 0.01, 1)
|
||||||
|
if MinZClamping > ClampSmallH then
|
||||||
|
-- somma area parallelepipedo sotto + area triangolo superiore
|
||||||
|
dMinClamping = MinJoin * ClampSmallH + ( ( MinJoin * ( MinJoin * tan( ClampFrontAngle))) / 2)
|
||||||
|
local dTriangleBase = ClampL - ClampSmallL
|
||||||
|
if MinJoin > dTriangleBase then
|
||||||
|
local dTriangleHeight = ClampH - ClampSmallH
|
||||||
|
-- somma area parallelepipedo sotto + area triangolo superiore + parallelepipedo grande
|
||||||
|
dMinClamping = ( MinJoin * ClampSmallH) + ( dTriangleBase * dTriangleHeight / 2) + ( ( MinJoin - dTriangleBase) * dTriangleHeight)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local dMinClampingAreaWarn = dMinClamping * ClampingCoeffMin
|
||||||
|
local dMinClampingAreaErr = dMinClamping * ( ClampingCoeffMin / 3)
|
||||||
|
|
||||||
|
local bError = true
|
||||||
|
local sWrn, sErr
|
||||||
|
local bWriteWarnMessage = false
|
||||||
|
local bWriteErrMessage = false
|
||||||
|
-- controllo faccia frontale
|
||||||
|
local dArea, dXClampedLenght = CalculateIntersectionArea( 'MIN', 'Y', 3)
|
||||||
|
-- ERRORE: pinza troppo poco (meno di 1/3 del minimo richiesto)
|
||||||
|
if dArea and dArea < dMinClampingAreaErr then
|
||||||
|
-- solo se pinza almeno 1cm2, e la somma della lunghezza pinzata è maggiore della lunghezza minima pinzabile da Warning e non errore
|
||||||
|
if dXClampedLenght >= MinJoin * ClampingCoeffMin and dArea > 1000 then
|
||||||
|
bError = false
|
||||||
|
end
|
||||||
|
-- pinzaggio non fattibile, errore
|
||||||
|
if bError then
|
||||||
|
sErr = 'ERROR CLAMPING ' .. sClampName .. ' : '..tostring( ceil( ( dArea / dMinClampingAreaWarn) * 100))..'% ( '.. tostring( dArea/1000)..'cm2)'
|
||||||
|
bWriteErrMessage = true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
-- WARNING: pinza meno del minimo richiesto
|
||||||
|
if dArea and dArea < dMinClampingAreaWarn and not bWriteErrMessage then
|
||||||
|
sWrn = 'WARNING CLAMPING ' .. sClampName .. ' : '..tostring( ceil( ( dArea / dMinClampingAreaWarn) * 100))..'% ( '.. tostring( dArea/1000)..'cm2)'
|
||||||
|
bWriteWarnMessage = true
|
||||||
|
end
|
||||||
|
EgtEmptyGroup( CLAMP_CHECK_GROUP)
|
||||||
|
EgtEmptyGroup( CLAMP_CHECK_INTERS)
|
||||||
|
|
||||||
|
-- controllo altro lato solo se non sono già in errore
|
||||||
|
if not bWriteErrMessage then
|
||||||
|
-- controllo faccia posteriore
|
||||||
|
dArea, dXClampedLenght = CalculateIntersectionArea( 'MAX', 'Y', 3)
|
||||||
|
-- ERRORE: pinza troppo poco (meno di 1/3 del minimo richiesto)
|
||||||
|
if dArea and dArea < dMinClampingAreaErr then
|
||||||
|
-- solo se pinza almeno 1cm2, e la somma della lunghezza pinzata è maggiore della lunghezza minima pinzabile da Warning e non errore
|
||||||
|
if dXClampedLenght >= MinJoin * ClampingCoeffMin and dArea > 1000 then
|
||||||
|
bError = false
|
||||||
|
end
|
||||||
|
-- pinzaggio non fattibile, errore
|
||||||
|
if bError then
|
||||||
|
sErr = 'ERROR CLAMPING ' .. sClampName .. ' : '..tostring( ceil( ( dArea / dMinClampingAreaWarn) * 100))..'% ( '.. tostring( dArea/1000)..'cm2)'
|
||||||
|
bWriteErrMessage = true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
-- WARNING: pinza meno del minimo richiesto
|
||||||
|
if dArea and dArea < dMinClampingAreaWarn and not bWriteWarnMessage and not bWriteErrMessage then
|
||||||
|
sWrn = 'WARNING CLAMPING ' .. sClampName .. ' : '..tostring( ceil( ( dArea / dMinClampingAreaWarn) * 100))..'% ( '.. tostring( dArea/1000)..'cm2)'
|
||||||
|
bWriteWarnMessage = true
|
||||||
|
end
|
||||||
|
EgtEmptyGroup( CLAMP_CHECK_GROUP)
|
||||||
|
EgtEmptyGroup( CLAMP_CHECK_INTERS)
|
||||||
|
end
|
||||||
|
|
||||||
|
if bWriteErrMessage then
|
||||||
|
EmtSetLastError( 1213, sErr, EgtGetEnableUI())
|
||||||
|
EgtOutBox( sErr, 'CLAMPING', 'ERROR', 'OK')
|
||||||
|
EmtSetSimulPause()
|
||||||
|
elseif bWriteWarnMessage then
|
||||||
|
EgtOutLog( sWrn)
|
||||||
|
EgtOutBox( sWrn, 'CLAMPING', 'WARNING', 'OK')
|
||||||
|
EmtSetSimulPause()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
function ExecMovePX1( Cmd)
|
||||||
|
--SimulMoveAxes( 'PX1', EgtIf( not bClose, MaxHoOpen, EMT.HEIGHTBEAM), MCH_SIM_STEP.RAPID)
|
||||||
|
local dPX1 = MaxHOpen
|
||||||
|
if Cmd[2] ~= '0' then
|
||||||
|
dPX1 = EgtIf( EMT.ROT == -1, EMT.HEIGHTBEAM, EMT.WIDTHBEAM)
|
||||||
|
end
|
||||||
|
SimulMoveAxis( 'PX1', dPX1, MCH_SIM_STEP.RAPID)
|
||||||
|
local dQX1 = MaxVOpen
|
||||||
|
if Cmd[2] == '2' then
|
||||||
|
dQX1 = EgtIf( EMT.ROT == -1, EMT.WIDTHBEAM, EMT.HEIGHTBEAM)
|
||||||
|
end
|
||||||
|
SimulMoveAxis( 'QX1', dQX1, MCH_SIM_STEP.RAPID)
|
||||||
|
SetPX1Light( Cmd[2] ~= '0')
|
||||||
|
if Cmd[2] ~= '0' then
|
||||||
|
CheckClamping( 'PX1')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
function ExecMovePX2( Cmd)
|
||||||
|
--EgtIf( not bClose, MaxHoOpen, EMT.HEIGHTBEAM), MCH_SIM_STEP.RAPID)
|
||||||
|
local dPX2 = MaxHOpen
|
||||||
|
if Cmd[2] ~= '0' then
|
||||||
|
dPX2 = EgtIf( EMT.ROT == -1, EMT.HEIGHTBEAM, EMT.WIDTHBEAM)
|
||||||
|
end
|
||||||
|
SimulMoveAxis( 'PX2', dPX2, MCH_SIM_STEP.RAPID)
|
||||||
|
local dQX2 = MaxVOpen
|
||||||
|
if Cmd[2] == '2' then
|
||||||
|
dQX2 = EgtIf( EMT.ROT == -1, EMT.WIDTHBEAM, EMT.HEIGHTBEAM)
|
||||||
|
end
|
||||||
|
SimulMoveAxis( 'QX2', dQX2, MCH_SIM_STEP.RAPID)
|
||||||
|
SetPX2Light( Cmd[2] ~= '0')
|
||||||
|
if Cmd[2] ~= '0' then
|
||||||
|
CheckClamping( 'PX2')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
function VerifyX1Slide( sName1, dVal1, sName2, dVal2)
|
||||||
|
-- Se movimento trave agganciata con carrello X1
|
||||||
if sName1 == 'T' and sName2 == 'X1' and GetPX1Light() then
|
if sName1 == 'T' and sName2 == 'X1' and GetPX1Light() then
|
||||||
local dYDeltaP = EgtGetAxisPos( 'T') - EgtGetAxisPos( 'X1')
|
local dYDeltaP = EgtGetAxisPos( 'T') - EgtGetAxisPos( 'X1')
|
||||||
local dYDeltaA = tonumber( dVal1) - tonumber( dVal2)
|
local dYDeltaA = tonumber( dVal1) - tonumber( dVal2)
|
||||||
EgtOutLog( string.format( 'YDeltaP=%.3f YDeltaA=%.3f', dYDeltaP, dYDeltaA), 5)
|
EgtOutLog( string.format( 'X1DeltaP=%.3f X1DeltaA=%.3f', dYDeltaP, dYDeltaA), 5)
|
||||||
if abs( dYDeltaA - dYDeltaP) > 0.5 then
|
if abs( dYDeltaA - dYDeltaP) > 0.5 then
|
||||||
EMT.ERR = 2
|
EMT.ERR = 2
|
||||||
local sErr = 'Y slide : ' .. EmtLenToString( dYDeltaP, 3) .. ' -> ' .. EmtLenToString( dYDeltaA, 3)
|
local sErr = 'X1 slide : ' .. EmtLenToString( dYDeltaP, 3) .. ' -> ' .. EmtLenToString( dYDeltaA, 3)
|
||||||
EmtSetLastError( 1202, sErr)
|
EmtSetLastError( 1202, sErr)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -850,15 +1065,15 @@ function VerifyYSlide( sName1, dVal1, sName2, dVal2)
|
|||||||
end
|
end
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function VerifyVSlide( sName1, dVal1, sName2, dVal2)
|
function VerifyX2Slide( sName1, dVal1, sName2, dVal2)
|
||||||
-- Se movimento trave agganciata con carrello V
|
-- Se movimento trave agganciata con carrello X1
|
||||||
if sName1 == 'T' and sName2 == 'X2' and GetPX2Light() then
|
if sName1 == 'T' and sName2 == 'X2' and GetPX2Light() then
|
||||||
local dVDeltaP = EgtGetAxisPos( 'T') - EgtGetAxisPos( 'X2')
|
local dVDeltaP = EgtGetAxisPos( 'T') - EgtGetAxisPos( 'X2')
|
||||||
local dVDeltaA = tonumber( dVal1) - tonumber( dVal2)
|
local dVDeltaA = tonumber( dVal1) - tonumber( dVal2)
|
||||||
EgtOutLog( string.format( 'VDeltaP=%.3f VDeltaA=%.3f', dVDeltaP, dVDeltaA), 5)
|
EgtOutLog( string.format( 'X2DeltaP=%.3f X2DeltaA=%.3f', dVDeltaP, dVDeltaA), 5)
|
||||||
if abs( dVDeltaA - dVDeltaP) > 0.5 then
|
if abs( dVDeltaA - dVDeltaP) > 0.5 then
|
||||||
EMT.ERR = 2
|
EMT.ERR = 2
|
||||||
local sErr = 'V slide : ' .. EmtLenToString( dVDeltaP, 3) .. ' -> ' .. EmtLenToString( dVDeltaA, 3)
|
local sErr = 'X2 slide : ' .. EmtLenToString( dVDeltaP, 3) .. ' -> ' .. EmtLenToString( dVDeltaA, 3)
|
||||||
EmtSetLastError( 1202, sErr)
|
EmtSetLastError( 1202, sErr)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -874,9 +1089,9 @@ function VerifyOneChariotSlide( sName1, dVal1, sName2, dVal2)
|
|||||||
end
|
end
|
||||||
-- Eseguo verifica
|
-- Eseguo verifica
|
||||||
if sName2 == 'X1' then
|
if sName2 == 'X1' then
|
||||||
return VerifyYSlide( sName1, dVal1, sName2, dVal2)
|
return VerifyX1Slide( sName1, dVal1, sName2, dVal2)
|
||||||
elseif sName2 == 'X2' then
|
elseif sName2 == 'X2' then
|
||||||
return VerifyVSlide( sName1, dVal1, sName2, dVal2)
|
return VerifyX2Slide( sName1, dVal1, sName2, dVal2)
|
||||||
end
|
end
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
@@ -893,9 +1108,9 @@ function VerifyTwoChariotsSlide( sName1, dVal1, sName2, dVal2, sName3, dVal3)
|
|||||||
end
|
end
|
||||||
-- Eseguo verifica
|
-- Eseguo verifica
|
||||||
if sName2 == 'X1' then
|
if sName2 == 'X1' then
|
||||||
return VerifyYSlide( sName1, dVal1, sName2, dVal2) and VerifyVSlide( sName1, dVal1, sName3, dVal3)
|
return VerifyX1Slide( sName1, dVal1, sName2, dVal2) and VerifyX2Slide( sName1, dVal1, sName3, dVal3)
|
||||||
elseif sName2 == 'X2' then
|
elseif sName2 == 'X2' then
|
||||||
return VerifyVSlide( sName1, dVal1, sName2, dVal2) and VerifyYSlide( sName1, dVal1, sName3, dVal3)
|
return VerifyX2Slide( sName1, dVal1, sName2, dVal2) and VerifyX1Slide( sName1, dVal1, sName3, dVal3)
|
||||||
end
|
end
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
@@ -999,14 +1214,14 @@ local RAPID_Y_FEED = FmaxY -- mm/min ex: 45000
|
|||||||
local RAPID_Z_FEED = FmaxZ -- mm/min ex: 45000
|
local RAPID_Z_FEED = FmaxZ -- mm/min ex: 45000
|
||||||
local RAPID_C_FEED = FmaxC -- deg/min ex: 18000
|
local RAPID_C_FEED = FmaxC -- deg/min ex: 18000
|
||||||
local RAPID_B_FEED = FmaxA -- deg/min ex: 10440
|
local RAPID_B_FEED = FmaxA -- deg/min ex: 10440
|
||||||
local RAPID_MIN_T = 0.2 -- s ex: 0.2
|
local RAPID_MIN_T = 1 -- s ex: 0.2
|
||||||
local TOOL_CHANGE = 20 -- s ex: 14
|
local TOOL_CHANGE = 20 -- s ex: 14
|
||||||
local LOAD_T = 20 -- s ex: 16
|
local LOAD_T = 10 -- s ex: 16
|
||||||
local CHAR_ONE_MOVE_T = 3.5 -- s ex: 2
|
local CHAR_ONE_MOVE_T = 1.7 -- s ex: 2
|
||||||
local ROTATION_T = 40 -- s ex: 40
|
local ROTATION_T = 40 -- s ex: 40
|
||||||
local SPLIT_T = 12 -- s ex: 9
|
local SPLIT_T = 3 -- s ex: 9
|
||||||
local UNLOAD_T = 15 -- s ex: 12
|
local UNLOAD_T = 10 -- s ex: 12
|
||||||
local FALL_T = 4 -- s ex: 4
|
local FALL_T = 2 -- s ex: 4
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function OnEstimStart()
|
function OnEstimStart()
|
||||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
-3867
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user