Compare commits
33 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 3bf7c1587f | |||
| a71ba0ee9a | |||
| 7b2f9815d4 | |||
| 2b167ea927 | |||
| deaac78103 | |||
| 5f95d9821e | |||
| 8d7a29dd38 | |||
| e3107c9c30 | |||
| 33e5254ba4 | |||
| 3aceb8783d | |||
| dabb95858e | |||
| 636ce9eb01 | |||
| 306bef076c | |||
| 9499cdb2c4 | |||
| a14a637ec1 | |||
| b1486a762e | |||
| 0ce94917c4 | |||
| 3149c70b9c | |||
| 6ad6bc5e7f | |||
| 3757642127 | |||
| a133ab3514 | |||
| 910ad63d34 | |||
| 3b7ac164a1 | |||
| daf84e06b3 | |||
| ff1c51f68b | |||
| f164c8a046 | |||
| d1f5219be9 | |||
| e08a18811f | |||
| 758082ad22 | |||
| 745e6092b7 | |||
| 10db138855 | |||
| c2177f36bf | |||
| 76f6ed3346 |
@@ -15,12 +15,3 @@
|
|||||||
/Wall/PocketingData.lua
|
/Wall/PocketingData.lua
|
||||||
/Wall/SawingData.lua
|
/Wall/SawingData.lua
|
||||||
/Wall/Ts3Data.lua
|
/Wall/Ts3Data.lua
|
||||||
/.vscode
|
|
||||||
/MachNotes.ini
|
|
||||||
/ToolNotes.ini
|
|
||||||
|
|
||||||
# ignoro file bak nella cartella principale e nelle sottocartelle al primo livello
|
|
||||||
*.bak
|
|
||||||
/*/*.bak
|
|
||||||
|
|
||||||
Wall/SurfacingData.lua
|
|
||||||
|
|||||||
+1
-1
@@ -48,7 +48,7 @@ variables:
|
|||||||
echo "-----------------------"
|
echo "-----------------------"
|
||||||
$customerPathR = $env:MACHINES_PATH_R + "\" + $env:MANUFACTURER
|
$customerPathR = $env:MACHINES_PATH_R + "\" + $env:MANUFACTURER
|
||||||
ROBOCOPY /MIR "$env:SRC_PATH" "$customerPathR\$env:MACH_NAME\" /XD "bin"
|
ROBOCOPY /MIR "$env:SRC_PATH" "$customerPathR\$env:MACH_NAME\" /XD "bin"
|
||||||
ROBOCOPY "$env:TEST_PATH" "$customerPathR\_TestMachines\$env:MACH_NAME\$env:MACH_NAME_TEST\" /E /XD "bin"
|
ROBOCOPY "$env:TEST_PATH" "$customerPathR\_TestMachines\$env:MACH_NAME_TEST\" /E /XD "bin"
|
||||||
ROBOCOPY /MIR "$env:BASE_PATH" "$customerPathR\_Deploy\$env:MACH_NAME\$env:MACH_VERS\" /XD "bin" /XD "$env:MACH_NAME_TEST"
|
ROBOCOPY /MIR "$env:BASE_PATH" "$customerPathR\_Deploy\$env:MACH_NAME\$env:MACH_VERS\" /XD "bin" /XD "$env:MACH_NAME_TEST"
|
||||||
SLEEP 2
|
SLEEP 2
|
||||||
net use R: /delete
|
net use R: /delete
|
||||||
|
|||||||
+54
-19
@@ -8,8 +8,9 @@ local BeamData = {
|
|||||||
GO_FAST = 0, -- flag abilitazione modalità veloce (0=no, 1=carrelli, 2=anche cambio utensili)
|
GO_FAST = 0, -- flag abilitazione modalità veloce (0=no, 1=carrelli, 2=anche cambio utensili)
|
||||||
RIGHT_LOAD = false, -- flag carico da destra
|
RIGHT_LOAD = false, -- flag carico da destra
|
||||||
ROT90 = false, -- flag abilitazione rotazione 90 gradi
|
ROT90 = false, -- flag abilitazione rotazione 90 gradi
|
||||||
|
ROT180 = true, -- flag abilitazione rotazione 180 gradi
|
||||||
NEWCLAMPING = false, -- flag abilitazione nuovo metodo riposizionamento carrelli
|
NEWCLAMPING = false, -- flag abilitazione nuovo metodo riposizionamento carrelli
|
||||||
FASTCLAMPING= true, -- flag abilitazione riduzione numero riposizionamenti al carico e durante grande trascinamento
|
FASTCLAMPING= true, -- flag abilitazione riduzione numero riposizionamenti al carico e durante grande trascinamento
|
||||||
MIN_WIDTH = 40, -- larghezza minima del grezzo
|
MIN_WIDTH = 40, -- larghezza minima del grezzo
|
||||||
MIN_HEIGHT = 40, -- altezza minima del grezzo
|
MIN_HEIGHT = 40, -- altezza minima del grezzo
|
||||||
MAX_WIDTH = 240, -- larghezza massima del grezzo
|
MAX_WIDTH = 240, -- larghezza massima del grezzo
|
||||||
@@ -90,20 +91,27 @@ if EgtExistsFile( sData) then
|
|||||||
local Machine = dofile( sData)
|
local Machine = dofile( sData)
|
||||||
if Machine then
|
if Machine then
|
||||||
if Machine.Offsets then
|
if Machine.Offsets then
|
||||||
BeamData.ANG_TRASM = ( Machine.Offsets.SECSUP and Machine.Offsets.SECSUP >= 3)
|
BeamData.ANG_TRASM = ( Machine.Offsets.SECSUP and Machine.Offsets.SECSUP >= 3)
|
||||||
BeamData.BH_MACHINE = ( Machine.Offsets.BLOCKHAUS == 1)
|
BeamData.BH_MACHINE = ( Machine.Offsets.BLOCKHAUS == 1)
|
||||||
BeamData.MINRAW_S = max( BeamData.MINRAW_S, Machine.Offsets.MINRAW_S or BeamData.MINRAW_S)
|
BeamData.MINRAW_S = max( BeamData.MINRAW_S, Machine.Offsets.MINRAW_S or BeamData.MINRAW_S)
|
||||||
BeamData.MINRAW_L = max( BeamData.MINRAW_L, Machine.Offsets.MINRAW_L or BeamData.MINRAW_L)
|
BeamData.MINRAW_L = max( BeamData.MINRAW_L, Machine.Offsets.MINRAW_L or BeamData.MINRAW_L)
|
||||||
BeamData.CUT_EXTRA = Machine.Offsets.CUT_EXTRA or BeamData.CUT_EXTRA
|
BeamData.CUT_EXTRA = Machine.Offsets.CUT_EXTRA or BeamData.CUT_EXTRA
|
||||||
BeamData.CUT_EXTRA_MIN = Machine.Offsets.CUT_EXTRA_MIN or BeamData.CUT_EXTRA_MIN
|
BeamData.CUT_EXTRA_MIN = Machine.Offsets.CUT_EXTRA_MIN or BeamData.CUT_EXTRA_MIN
|
||||||
BeamData.DIM_STRIP_SMALL = Machine.Offsets.DIM_STRIP_SMALL or BeamData.DIM_STRIP_SMALL
|
BeamData.DIM_STRIP_SMALL = Machine.Offsets.DIM_STRIP_SMALL or BeamData.DIM_STRIP_SMALL
|
||||||
BeamData.DIM_TO_CENTER_STRIP = Machine.Offsets.DIM_TO_CENTER_STRIP or BeamData.DIM_TO_CENTER_STRIP
|
BeamData.DIM_TO_CENTER_STRIP = Machine.Offsets.DIM_TO_CENTER_STRIP or BeamData.DIM_TO_CENTER_STRIP
|
||||||
BeamData.MAXDIAM_POCK_CORNER = Machine.Offsets.MAXDIAM_POCK_CORNER or BeamData.MAXDIAM_POCK_CORNER
|
BeamData.MAXDIAM_POCK_CORNER = Machine.Offsets.MAXDIAM_POCK_CORNER or BeamData.MAXDIAM_POCK_CORNER
|
||||||
if Machine.Offsets.PRECUT_HEAD_DISABLE then BeamData.PRECUT_HEAD = ( Machine.Offsets.PRECUT_HEAD_DISABLE == 0) end
|
BeamData.LONGCUT_ENDLEN = Machine.Offsets.LONGCUT_ENDLEN or BeamData.LONGCUT_ENDLEN
|
||||||
if Machine.Offsets.PRECUT_TAIL_DISABLE then BeamData.PRECUT_TAIL = ( Machine.Offsets.PRECUT_TAIL_DISABLE == 0) end
|
BeamData.LONGCUT_MAXLEN = Machine.Offsets.LONGCUT_MAXLEN or BeamData.LONGCUT_MAXLEN
|
||||||
if Machine.Offsets.MIN_HEIGHT_ADDED_CUTS then BeamData.MIN_HEIGHT_ADDED_CUTS = min( Machine.Offsets.MIN_HEIGHT_ADDED_CUTS, BeamData.MIN_HEIGHT_ADDED_CUTS) end
|
BeamData.ADVANCE_TAIL_OFFS = Machine.Offsets.ADVANCE_TAIL_OFFS or BeamData.ADVANCE_TAIL_OFFS
|
||||||
if Machine.Offsets.NEWCLAMPING ~= nil then BeamData.NEWCLAMPING = ( Machine.Offsets.NEWCLAMPING == 1) end
|
BeamData.LEN_VERY_SHORT_PART = Machine.Offsets.LEN_VERY_SHORT_PART or BeamData.LEN_VERY_SHORT_PART
|
||||||
if Machine.Offsets.FASTCLAMPING ~= nil then BeamData.FASTCLAMPING = ( Machine.Offsets.FASTCLAMPING == 1) end
|
BeamData.LEN_SHORT_PART = Machine.Offsets.LEN_SHORT_PART or BeamData.LEN_SHORT_PART
|
||||||
|
if Machine.Offsets.PRECUT_HEAD_DISABLE then BeamData.PRECUT_HEAD = ( Machine.Offsets.PRECUT_HEAD_DISABLE == 0) end
|
||||||
|
if Machine.Offsets.PRECUT_TAIL_DISABLE then BeamData.PRECUT_TAIL = ( Machine.Offsets.PRECUT_TAIL_DISABLE == 0) end
|
||||||
|
if Machine.Offsets.MIN_HEIGHT_ADDED_CUTS then BeamData.MIN_HEIGHT_ADDED_CUTS = min( Machine.Offsets.MIN_HEIGHT_ADDED_CUTS, BeamData.MIN_HEIGHT_ADDED_CUTS) end
|
||||||
|
if Machine.Offsets.NEWCLAMPING ~= nil then BeamData.NEWCLAMPING = ( Machine.Offsets.NEWCLAMPING == 1) end
|
||||||
|
if Machine.Offsets.FASTCLAMPING ~= nil then BeamData.FASTCLAMPING = ( Machine.Offsets.FASTCLAMPING == 1) end
|
||||||
|
if Machine.Offsets.ROT90 ~= nil then BeamData.ROT90 = ( Machine.Offsets.ROT90 == 1) end
|
||||||
|
if Machine.Offsets.ROT180 ~= nil then BeamData.ROT180 = ( Machine.Offsets.ROT180 == 1) end
|
||||||
end
|
end
|
||||||
if Machine.Trave then
|
if Machine.Trave then
|
||||||
BeamData.MIN_WIDTH = Machine.Trave.XMIN or BeamData.MIN_WIDTH
|
BeamData.MIN_WIDTH = Machine.Trave.XMIN or BeamData.MIN_WIDTH
|
||||||
@@ -167,11 +175,11 @@ end
|
|||||||
BeamData.GetBlockedAxis = GetBlockedAxis
|
BeamData.GetBlockedAxis = GetBlockedAxis
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
local function GetChainSawInitAngs( vtN, vtO)
|
local function GetChainSawInitAngs( vtN, vtO, nInd)
|
||||||
if vtN:getY() > 0 and vtO:getX() > 0 then
|
if nInd == 1 then
|
||||||
return 'C=0'
|
|
||||||
else
|
|
||||||
return ''
|
return ''
|
||||||
|
else
|
||||||
|
return EgtIf( vtN:getY() > 0, 'C=180', 'C=-180')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
BeamData.GetChainSawInitAngs = GetChainSawInitAngs
|
BeamData.GetChainSawInitAngs = GetChainSawInitAngs
|
||||||
@@ -212,5 +220,32 @@ local function GetSetupInfo( sHead)
|
|||||||
end
|
end
|
||||||
BeamData.GetSetupInfo = GetSetupInfo
|
BeamData.GetSetupInfo = GetSetupInfo
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
local function GetMaxMatReductionBladeCut( sHead, vtDir)
|
||||||
|
local MaxMatReductionBladeCut = 0
|
||||||
|
-- la lama è montata solo su H2, non si controllano altre teste
|
||||||
|
if sHead == 'H2' then
|
||||||
|
if BeamData.NEWTOPC == nil or BeamData.NEWTOPC then
|
||||||
|
MaxMatReductionBladeCut = -65
|
||||||
|
end
|
||||||
|
if AreSameVectorApprox( vtDir, X_AX()) then
|
||||||
|
MaxMatReductionBladeCut = MaxMatReductionBladeCut + 175
|
||||||
|
elseif AreSameVectorApprox( vtDir, -X_AX()) then
|
||||||
|
MaxMatReductionBladeCut = MaxMatReductionBladeCut + 175
|
||||||
|
elseif AreSameVectorApprox( vtDir, Y_AX()) then
|
||||||
|
MaxMatReductionBladeCut = MaxMatReductionBladeCut + 175
|
||||||
|
elseif AreSameVectorApprox( vtDir, -Y_AX()) then
|
||||||
|
MaxMatReductionBladeCut = MaxMatReductionBladeCut + 175
|
||||||
|
elseif AreSameVectorApprox( vtDir, Z_AX()) then
|
||||||
|
MaxMatReductionBladeCut = 80
|
||||||
|
elseif AreSameVectorApprox( vtDir, -Z_AX()) then
|
||||||
|
MaxMatReductionBladeCut = 80
|
||||||
|
end
|
||||||
|
MaxMatReductionBladeCut = MaxMatReductionBladeCut + BeamData.COLL_SIC
|
||||||
|
end
|
||||||
|
return MaxMatReductionBladeCut + BeamData.COLL_SIC
|
||||||
|
end
|
||||||
|
BeamData.GetMaxMatReductionBladeCut = GetMaxMatReductionBladeCut
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
return BeamData
|
return BeamData
|
||||||
|
|||||||
+10
-7
@@ -848,13 +848,13 @@ function OnRapid()
|
|||||||
local sOut = 'G101' .. EmtGetAxis( 'L2') .. EmtGetAxis( 'L3') ..' B=' .. EgtNumToString( dBAxis, 3) ..
|
local sOut = 'G101' .. EmtGetAxis( 'L2') .. EmtGetAxis( 'L3') ..' B=' .. EgtNumToString( dBAxis, 3) ..
|
||||||
' C=' .. EgtNumToString( dCAxis, 3) .. sEE .. sEL .. sER .. sET .. sES
|
' C=' .. EgtNumToString( dCAxis, 3) .. sEE .. sEL .. sER .. sET .. sES
|
||||||
EmtOutput( sOut)
|
EmtOutput( sOut)
|
||||||
EmtOutput( 'M101 P1=2')
|
EmtOutput( 'G101 ET1001')
|
||||||
EmtOutput( 'M101 P1=3')
|
EmtOutput( 'G101 ET2001')
|
||||||
sOut = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. EmtGetAxis( 'L3') ..' B=' .. EgtNumToString( dBAxis, 3) ..
|
sOut = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. EmtGetAxis( 'L3') ..' B=' .. EgtNumToString( dBAxis, 3) ..
|
||||||
' C=' .. EgtNumToString( dCAxis, 3) .. sEE .. sEL .. sER .. sET .. sES
|
' C=' .. EgtNumToString( dCAxis, 3) .. sEE .. sEL .. sER .. sET .. sES
|
||||||
EmtOutput( sOut)
|
EmtOutput( sOut)
|
||||||
EmtOutput( 'M101 P1=2')
|
EmtOutput( 'G101 ET1001')
|
||||||
EmtOutput( 'M101 P1=3')
|
EmtOutput( 'G101 ET2001')
|
||||||
end
|
end
|
||||||
-- se altrimenti movimento in Home
|
-- se altrimenti movimento in Home
|
||||||
elseif EMT.FLAG == 4 then
|
elseif EMT.FLAG == 4 then
|
||||||
@@ -876,7 +876,7 @@ function OnRapid()
|
|||||||
EmtGetAxis( 'R2') .. EmtGetAxis( 'R1') .. sEE .. sEL .. sER .. sET .. sES
|
EmtGetAxis( 'R2') .. EmtGetAxis( 'R1') .. sEE .. sEL .. sER .. sET .. sES
|
||||||
EmtOutput( sOut)
|
EmtOutput( sOut)
|
||||||
EmtOutput( 'G101 ET1001')
|
EmtOutput( 'G101 ET1001')
|
||||||
EmtOutput( 'G101 ET2001')
|
EmtOutput( 'G101 ET2001')
|
||||||
-- altrimenti errore
|
-- altrimenti errore
|
||||||
else
|
else
|
||||||
EmtSetLastError( 1212, "Unknown Rapid flag")
|
EmtSetLastError( 1212, "Unknown Rapid flag")
|
||||||
@@ -1532,7 +1532,10 @@ function MyAdjustLinearAxes()
|
|||||||
|
|
||||||
if EMT.REFLOC then
|
if EMT.REFLOC then
|
||||||
local vtE
|
local vtE
|
||||||
if EMT.HEAD ~= 'H3' then
|
-- su NUM aggregati non gestiti
|
||||||
|
if EMT.HEAD == 'H5' or EMT.HEAD == 'H6' or EMT.HEAD == 'H7' then
|
||||||
|
EmtSetLastError( 1211, "Aggregates not managed")
|
||||||
|
elseif EMT.HEAD ~= 'H3' then
|
||||||
local Len = EMT.TLEN + EgtIf( EMT.HEAD == 'H1', MillOffs, abs( SawOffs))
|
local Len = EMT.TLEN + EgtIf( EMT.HEAD == 'H1', MillOffs, abs( SawOffs))
|
||||||
local LenRef = MillOffs
|
local LenRef = MillOffs
|
||||||
vtE = Vector3d( EMT.EXTR) * Len - Z_AX() * LenRef
|
vtE = Vector3d( EMT.EXTR) * Len - Z_AX() * LenRef
|
||||||
@@ -1647,7 +1650,7 @@ end
|
|||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function GetET( sHead, sTcPos, dAxR3)
|
function GetET( sHead, sTcPos, dAxR3)
|
||||||
if sHead == 'H1' then
|
if sHead == 'H1' or sHead == 'H5' or sHead == 'H6' or sHead == 'H7' then
|
||||||
return ' E'..sTcPos
|
return ' E'..sTcPos
|
||||||
elseif sHead == 'H2' then
|
elseif sHead == 'H2' then
|
||||||
return ' ET42'
|
return ' ET42'
|
||||||
|
|||||||
+21
-12
@@ -145,7 +145,11 @@ function OnToolData()
|
|||||||
local sPos = 'N2' .. tostring(nPos)
|
local sPos = 'N2' .. tostring(nPos)
|
||||||
local sOut = 'L11=' .. EmtLenToString( EMT.SMAX, 3) .. ' L12=' .. EmtLenToString( AngTr1Offs, 1)..' G76H9998.1'..sPos..sPos
|
local sOut = 'L11=' .. EmtLenToString( EMT.SMAX, 3) .. ' L12=' .. EmtLenToString( AngTr1Offs, 1)..' G76H9998.1'..sPos..sPos
|
||||||
EmtOutput( sOut)
|
EmtOutput( sOut)
|
||||||
-- altro non previsto
|
-- emissione dati sega a catena
|
||||||
|
elseif EMT.HEAD == 'H7' then
|
||||||
|
local sOut = 'L11='..EgtNumToString( EMT.SMAX, 0)..' L12='..EmtLenToString( ( 154.5), 1)..' G76H9998.1N121N121'
|
||||||
|
EmtOutput( sOut)
|
||||||
|
-- altro non previsto
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -489,7 +493,7 @@ function OnMachiningEnd()
|
|||||||
end
|
end
|
||||||
for i = 1, #EMT.AUXSTR do
|
for i = 1, #EMT.AUXSTR do
|
||||||
local sOut = EMT.AUXSTR[i]
|
local sOut = EMT.AUXSTR[i]
|
||||||
if EMT.AUXTYPE == 'S' then
|
if EMT.AUXTYPE == 'S' and sOut:find( 'G101 ') then
|
||||||
sOut = sOut .. ' EH1'
|
sOut = sOut .. ' EH1'
|
||||||
elseif EMT.AUXTYPE == 'U' and not EMT.CHY_ON and not sOut:find( 'ET') then
|
elseif EMT.AUXTYPE == 'U' and not EMT.CHY_ON and not sOut:find( 'ET') then
|
||||||
sOut = sOut .. ' ET2'
|
sOut = sOut .. ' ET2'
|
||||||
@@ -693,7 +697,7 @@ function OnRapid()
|
|||||||
if EMT.HEAD == 'H3' then
|
if EMT.HEAD == 'H3' then
|
||||||
sEL = sEL..EmtLenToString( ( EMT.TDIST or ChSawLen), 3)
|
sEL = sEL..EmtLenToString( ( EMT.TDIST or ChSawLen), 3)
|
||||||
-- se aggregato
|
-- se aggregato
|
||||||
elseif EMT.HEAD == 'H5' or EMT.HEAD == 'H6' then
|
elseif EMT.HEAD == 'H5' or EMT.HEAD == 'H6' or EMT.HEAD == 'H7' then
|
||||||
sEL = sEL..EmtLenToString( AngTr1Offs, 3)
|
sEL = sEL..EmtLenToString( AngTr1Offs, 3)
|
||||||
-- se testa normale ( H1 or H2)
|
-- se testa normale ( H1 or H2)
|
||||||
else
|
else
|
||||||
@@ -705,7 +709,7 @@ function OnRapid()
|
|||||||
if EMT.HEAD == 'H3' then
|
if EMT.HEAD == 'H3' then
|
||||||
sER = sER..EmtLenToString( EMT.TLEN, 3)
|
sER = sER..EmtLenToString( EMT.TLEN, 3)
|
||||||
-- se aggregato
|
-- se aggregato
|
||||||
elseif EMT.HEAD == 'H5' or EMT.HEAD == 'H6' then
|
elseif EMT.HEAD == 'H5' or EMT.HEAD == 'H6' or EMT.HEAD == 'H7' then
|
||||||
sER = sER..EmtLenToString( EMT.TLEN + AngTr1Len, 3)
|
sER = sER..EmtLenToString( EMT.TLEN + AngTr1Len, 3)
|
||||||
-- se testa normale ( H1 or H2)
|
-- se testa normale ( H1 or H2)
|
||||||
else
|
else
|
||||||
@@ -922,14 +926,14 @@ function OnRapid()
|
|||||||
local sOut = 'G101' .. EmtGetAxis( 'L2') .. EmtGetAxis( 'L3') ..' B=' .. EgtNumToString( dBAxis, 3) ..
|
local sOut = 'G101' .. EmtGetAxis( 'L2') .. EmtGetAxis( 'L3') ..' B=' .. EgtNumToString( dBAxis, 3) ..
|
||||||
' C=' .. EgtNumToString( dCAxis, 3) .. sEE .. sEL .. sER .. sET .. sES
|
' C=' .. EgtNumToString( dCAxis, 3) .. sEE .. sEL .. sER .. sET .. sES
|
||||||
EmtOutput( sOut)
|
EmtOutput( sOut)
|
||||||
EmtOutput( 'M101 P1=2')
|
EmtOutput( 'G101 ET1001')
|
||||||
EmtOutput( 'M101 P1=3')
|
EmtOutput( 'G101 ET2001')
|
||||||
sOut = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. EmtGetAxis( 'L3') ..' B=' .. EgtNumToString( dBAxis, 3) ..
|
sOut = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. EmtGetAxis( 'L3') ..' B=' .. EgtNumToString( dBAxis, 3) ..
|
||||||
' C=' .. EgtNumToString( dCAxis, 3) .. sEE .. sEL .. sER .. sET .. sES
|
' C=' .. EgtNumToString( dCAxis, 3) .. sEE .. sEL .. sER .. sET .. sES
|
||||||
EmtOutput( sOut)
|
EmtOutput( sOut)
|
||||||
EmtOutput( 'M101 P1=2')
|
EmtOutput( 'G101 ET1001')
|
||||||
EmtOutput( 'M101 P1=3')
|
EmtOutput( 'G101 ET2001')
|
||||||
end
|
end
|
||||||
-- se altrimenti movimento in Home
|
-- se altrimenti movimento in Home
|
||||||
elseif EMT.FLAG == 4 then
|
elseif EMT.FLAG == 4 then
|
||||||
-- non previsto
|
-- non previsto
|
||||||
@@ -1017,7 +1021,7 @@ end
|
|||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function OnArc()
|
function OnArc()
|
||||||
-- con aggregato non si possono fare archi. Deve essere tutto spezzato
|
-- con aggregato non si possono fare archi. Deve essere tutto spezzato
|
||||||
if EMT.HEAD == 'H5' or EMT.HEAD == 'H6' then
|
if EMT.HEAD == 'H5' or EMT.HEAD == 'H6' or EMT.HEAD == 'H7' then
|
||||||
EmtSetLastError( 1211, "With aggregate, the arcs must be splitted")
|
EmtSetLastError( 1211, "With aggregate, the arcs must be splitted")
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -1642,11 +1646,16 @@ function MyAdjustLinearAxes()
|
|||||||
local LenRef = MillOffs
|
local LenRef = MillOffs
|
||||||
local vtAux = EgtGetCalcAuxDirFromAngles( EMT.R1, EMT.R2, EMT.R3)
|
local vtAux = EgtGetCalcAuxDirFromAngles( EMT.R1, EMT.R2, EMT.R3)
|
||||||
vtE = vtAux * LenAux - Z_AX() * LenRef
|
vtE = vtAux * LenAux - Z_AX() * LenRef
|
||||||
elseif EMT.HEAD == 'H5' then
|
elseif EMT.HEAD == 'H5' or EMT.HEAD == 'H6' then
|
||||||
local LenAux = AngTr1Offs + MillOffs
|
local LenAux = AngTr1Offs + MillOffs
|
||||||
local LenRef = MillOffs
|
local LenRef = MillOffs
|
||||||
local vtAux = EgtGetCalcAuxDirFromAngles( EMT.R1, EMT.R2, EMT.R3)
|
local vtAux = EgtGetCalcAuxDirFromAngles( EMT.R1, EMT.R2, EMT.R3)
|
||||||
vtE = vtAux * LenAux - Z_AX() * LenRef
|
vtE = vtAux * LenAux - Z_AX() * LenRef
|
||||||
|
elseif EMT.HEAD == 'H7' then
|
||||||
|
local LenAux = AngTrBHOffs + MillOffs
|
||||||
|
local LenRef = MillOffs
|
||||||
|
local vtAux = EgtGetCalcAuxDirFromAngles( EMT.R1, EMT.R2, EMT.R3)
|
||||||
|
vtE = vtAux * LenAux - Z_AX() * LenRef
|
||||||
else
|
else
|
||||||
EmtSetLastError( 1211, 'Head not allowed ' .. EMT.HEAD)
|
EmtSetLastError( 1211, 'Head not allowed ' .. EMT.HEAD)
|
||||||
end
|
end
|
||||||
@@ -1741,7 +1750,7 @@ end
|
|||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function GetET( sHead, sTcPos, dAxR3)
|
function GetET( sHead, sTcPos, dAxR3)
|
||||||
if sHead == 'H1' or sHead == 'H5' or sHead == 'H6' then
|
if sHead == 'H1' or sHead == 'H5' or sHead == 'H6' or sHead == 'H7' then
|
||||||
return ' E'..sTcPos
|
return ' E'..sTcPos
|
||||||
elseif sHead == 'H2' then
|
elseif sHead == 'H2' then
|
||||||
return ' ET42'
|
return ' ET42'
|
||||||
|
|||||||
+15
-2
@@ -151,7 +151,12 @@ function OnToolData()
|
|||||||
local sOut = 'M992 P1=' .. EgtNumToString( nPos, 0) .. ' P2=' .. EmtLenToString( EMT.TLEN, 3) .. ' P3=' .. EmtLenToString( EMT.TDIAM, 3) ..
|
local sOut = 'M992 P1=' .. EgtNumToString( nPos, 0) .. ' P2=' .. EmtLenToString( EMT.TLEN, 3) .. ' P3=' .. EmtLenToString( EMT.TDIAM, 3) ..
|
||||||
' P4=' .. EmtLenToString( EMT.SMAX, 3) .. ' P5=' .. EmtLenToString( EMT.TTOTLEN, 3)
|
' P4=' .. EmtLenToString( EMT.SMAX, 3) .. ' P5=' .. EmtLenToString( EMT.TTOTLEN, 3)
|
||||||
ParkLine( sOut)
|
ParkLine( sOut)
|
||||||
-- altro non previsto
|
-- emissione dati sega a catena
|
||||||
|
elseif EMT.HEAD == 'H7' then
|
||||||
|
local sOut = 'M992 P1=' .. EMT.TCPOS:gsub( 'T', '') .. ' P2=' .. EmtLenToString( EMT.TLEN, 3) .. ' P3=' .. EmtLenToString( EMT.TDIAM, 3) ..
|
||||||
|
' P4=' .. EmtLenToString( EMT.SMAX, 3) .. ' P5=' .. EmtLenToString( EMT.TTOTLEN, 3)
|
||||||
|
ParkLine( sOut)
|
||||||
|
-- altro non previsto
|
||||||
else
|
else
|
||||||
EmtSetLastError( 1211, 'Head not allowed ' .. EMT.HEAD)
|
EmtSetLastError( 1211, 'Head not allowed ' .. EMT.HEAD)
|
||||||
end
|
end
|
||||||
@@ -1640,12 +1645,18 @@ function MyAdjustLinearAxes()
|
|||||||
local LenRef = MillOffs
|
local LenRef = MillOffs
|
||||||
local vtAux = EgtGetCalcAuxDirFromAngles( EMT.R1, EMT.R2, EMT.R3)
|
local vtAux = EgtGetCalcAuxDirFromAngles( EMT.R1, EMT.R2, EMT.R3)
|
||||||
vtE = vtAux * LenAux - Z_AX() * LenRef
|
vtE = vtAux * LenAux - Z_AX() * LenRef
|
||||||
elseif EMT.HEAD == 'H5' then
|
elseif EMT.HEAD == 'H5' or EMT.HEAD == 'H6' then
|
||||||
local Len = EMT.TLEN + AngTr1Len
|
local Len = EMT.TLEN + AngTr1Len
|
||||||
local LenAux = MillOffs + AngTr1Offs
|
local LenAux = MillOffs + AngTr1Offs
|
||||||
local LenRef = MillOffs
|
local LenRef = MillOffs
|
||||||
local vtAux = EgtGetCalcAuxDirFromAngles( EMT.R1, EMT.R2)
|
local vtAux = EgtGetCalcAuxDirFromAngles( EMT.R1, EMT.R2)
|
||||||
vtE = Vector3d( EMT.EXTR) * Len + vtAux * LenAux - Z_AX() * LenRef
|
vtE = Vector3d( EMT.EXTR) * Len + vtAux * LenAux - Z_AX() * LenRef
|
||||||
|
elseif EMT.HEAD == 'H7' then
|
||||||
|
local Len = EMT.TLEN + AngTrBHLen
|
||||||
|
local LenAux = MillOffs + AngTrBHOffs
|
||||||
|
local LenRef = MillOffs
|
||||||
|
local vtAux = EgtGetCalcAuxDirFromAngles( EMT.R1, EMT.R2)
|
||||||
|
vtE = Vector3d( EMT.EXTR) * Len + vtAux * LenAux - Z_AX() * LenRef
|
||||||
else
|
else
|
||||||
EmtSetLastError( 1211, 'Head not allowed ' .. EMT.HEAD)
|
EmtSetLastError( 1211, 'Head not allowed ' .. EMT.HEAD)
|
||||||
end
|
end
|
||||||
@@ -1682,6 +1693,8 @@ function AdjustToolKinematic()
|
|||||||
return EgtIf( EMT.EXIT == 1, '11', '12')
|
return EgtIf( EMT.EXIT == 1, '11', '12')
|
||||||
elseif EMT.HEAD == 'H6' then
|
elseif EMT.HEAD == 'H6' then
|
||||||
return EgtIf( EMT.EXIT == 1, '21', '22')
|
return EgtIf( EMT.EXIT == 1, '21', '22')
|
||||||
|
elseif EMT.HEAD == 'H7' then
|
||||||
|
return '31'
|
||||||
else
|
else
|
||||||
EmtSetLastError( 1211, 'Head not allowed ' .. EMT.HEAD)
|
EmtSetLastError( 1211, 'Head not allowed ' .. EMT.HEAD)
|
||||||
end
|
end
|
||||||
|
|||||||
+68
-40
@@ -105,6 +105,7 @@ function OnSimulStart()
|
|||||||
AddToCollisionCheck( 'B', 'COLLISION', EMT.COLLOBJ)
|
AddToCollisionCheck( 'B', 'COLLISION', EMT.COLLOBJ)
|
||||||
AddToCollisionCheck( 'C', 'COLLISION', EMT.COLLOBJ)
|
AddToCollisionCheck( 'C', 'COLLISION', EMT.COLLOBJ)
|
||||||
AddToCollisionCheck( 'H5', 'COLLISION', EMT.COLLOBJ)
|
AddToCollisionCheck( 'H5', 'COLLISION', EMT.COLLOBJ)
|
||||||
|
AddToCollisionCheck( 'H6', 'COLLISION', EMT.COLLOBJ)
|
||||||
AddToolToCollisionCheck( 'H2', 1, EMT.COLLOBJ)
|
AddToolToCollisionCheck( 'H2', 1, EMT.COLLOBJ)
|
||||||
AddToolHolderToCollisionCheck( 'H2', 1, EMT.COLLOBJ)
|
AddToolHolderToCollisionCheck( 'H2', 1, EMT.COLLOBJ)
|
||||||
DumpCollisionCheck( EMT.COLLOBJ, 'Collision Objects :', 4)
|
DumpCollisionCheck( EMT.COLLOBJ, 'Collision Objects :', 4)
|
||||||
@@ -152,7 +153,8 @@ function OnSimulDispositionStarting()
|
|||||||
EmtUnlinkAllRawPartsFromGroups()
|
EmtUnlinkAllRawPartsFromGroups()
|
||||||
if EMT.PHASE > 1 then
|
if EMT.PHASE > 1 then
|
||||||
if IsStartOrRestPhase( EMT.PHASE) then
|
if IsStartOrRestPhase( EMT.PHASE) then
|
||||||
EgtSetAxisPos( 'T', LoadT)
|
local ParkT = GetParkT()
|
||||||
|
EgtSetAxisPos( 'T', ParkT)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -179,7 +181,7 @@ function OnSimulDispositionStart()
|
|||||||
if sTool and nTlen < LONG_TOOL_MINLEN then
|
if sTool and nTlen < LONG_TOOL_MINLEN then
|
||||||
EMT.TOOL_1 = sTool
|
EMT.TOOL_1 = sTool
|
||||||
else
|
else
|
||||||
EMT.TOOL_1 = GetDefaultToolName()
|
EMT.TOOL_1 = GetDefaultToolName()
|
||||||
end
|
end
|
||||||
EgtLoadTool( 'H1', 1, EMT.TOOL_1)
|
EgtLoadTool( 'H1', 1, EMT.TOOL_1)
|
||||||
EMT.TCPOS_1 = GetToolTcPos( EMT.TOOL_1)
|
EMT.TCPOS_1 = GetToolTcPos( EMT.TOOL_1)
|
||||||
@@ -189,7 +191,7 @@ function OnSimulDispositionStart()
|
|||||||
EMT.VMILL = {}
|
EMT.VMILL = {}
|
||||||
if not EMT.SIM1ST and EgtGetInfo( EgtGetCurrMachGroup(), 'Vm', 'b') then
|
if not EMT.SIM1ST and EgtGetInfo( EgtGetCurrMachGroup(), 'Vm', 'b') then
|
||||||
local nLastOrd = GetPhaseOrd( EgtGetPhaseCount())
|
local nLastOrd = GetPhaseOrd( EgtGetPhaseCount())
|
||||||
local nPartRawId = EgtGetFirstRawPart()
|
local nPartRawId = EgtGetFirstRawPart()
|
||||||
while nPartRawId do
|
while nPartRawId do
|
||||||
-- se è lo scarto finale tagliato a pezzi, esco
|
-- se è lo scarto finale tagliato a pezzi, esco
|
||||||
local nRawOrd = EgtGetInfo( nPartRawId, 'ORD', 'i')
|
local nRawOrd = EgtGetInfo( nPartRawId, 'ORD', 'i')
|
||||||
@@ -211,20 +213,24 @@ function OnSimulDispositionStart()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
-- determino la risoluzione dello Zmap
|
-- determino la risoluzione dello Zmap
|
||||||
local dArea = b3Raw:getDimX() * b3Raw:getDimY() + b3Raw:getDimX() * b3Raw:getDimZ() + b3Raw:getDimY() * b3Raw:getDimZ()
|
|
||||||
local dTol = 4.71
|
local dTol = 4.71
|
||||||
if dArea < CoeffVM * 0.15e6 then
|
if EmtGetVMillStep then
|
||||||
dTol = 0.71
|
dTol = EmtGetVMillStep( b3Raw:getDimX(), b3Raw:getDimY(), b3Raw:getDimZ(), 4.71)
|
||||||
elseif dArea < CoeffVM * 0.3e6 then
|
else
|
||||||
dTol = 1.01
|
local dArea = b3Raw:getDimX() * b3Raw:getDimY() + b3Raw:getDimX() * b3Raw:getDimZ() + b3Raw:getDimY() * b3Raw:getDimZ()
|
||||||
elseif dArea < CoeffVM * 0.6e6 then
|
if dArea < 0.075e6 then
|
||||||
dTol = 1.51
|
dTol = 0.71
|
||||||
elseif dArea < CoeffVM * 1.2e6 then
|
elseif dArea < 0.15e6 then
|
||||||
dTol = 1.97
|
dTol = 1.01
|
||||||
elseif dArea < CoeffVM * 2.4e6 then
|
elseif dArea < 0.3e6 then
|
||||||
dTol = 2.81
|
dTol = 1.51
|
||||||
elseif dArea < CoeffVM * 4.8e6 then
|
elseif dArea < 0.6e6 then
|
||||||
dTol = 3.77
|
dTol = 1.97
|
||||||
|
elseif dArea < 1.2e6 then
|
||||||
|
dTol = 2.81
|
||||||
|
elseif dArea < 2.4e6 then
|
||||||
|
dTol = 3.77
|
||||||
|
end
|
||||||
end
|
end
|
||||||
-- creo lo Zmap
|
-- creo lo Zmap
|
||||||
local VMillId = EgtVolZmapBox( nPartRawId, b3Raw:getMin(), b3Raw:getDimX(), b3Raw:getDimY(), b3Raw:getDimZ(), dTol, true, GDB_RT.GLOB)
|
local VMillId = EgtVolZmapBox( nPartRawId, b3Raw:getMin(), b3Raw:getDimX(), b3Raw:getDimY(), b3Raw:getDimZ(), dTol, true, GDB_RT.GLOB)
|
||||||
@@ -358,6 +364,8 @@ function OnSimulDispositionStart()
|
|||||||
EgtOutText( 'Barra non ruotata')
|
EgtOutText( 'Barra non ruotata')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
-- verifico posizione di carico
|
||||||
|
local ParkT = GetParkT()
|
||||||
-- indice primo grezzo della fase
|
-- indice primo grezzo della fase
|
||||||
local nOrd = GetPhaseOrd( EMT.PHASE)
|
local nOrd = GetPhaseOrd( EMT.PHASE)
|
||||||
-- ricerco vettore movimento per i successivi
|
-- ricerco vettore movimento per i successivi
|
||||||
@@ -365,7 +373,7 @@ function OnSimulDispositionStart()
|
|||||||
local nRawId = EgtGetFirstRawPart()
|
local nRawId = EgtGetFirstRawPart()
|
||||||
while nRawId do
|
while nRawId do
|
||||||
if EgtGetInfo( nRawId, 'ORD', 'i') == nOrd + 1 then
|
if EgtGetInfo( nRawId, 'ORD', 'i') == nOrd + 1 then
|
||||||
vtMove = Vector3d( - LoadT - EgtGetRawPartBBox( nRawId):getMax():getX(), 0, 0)
|
vtMove = Vector3d( - ParkT - EgtGetRawPartBBox( nRawId):getMax():getX(), 0, 0)
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
nRawId = EgtGetNextRawPart( nRawId)
|
nRawId = EgtGetNextRawPart( nRawId)
|
||||||
@@ -386,6 +394,8 @@ function OnSimulDispositionStart()
|
|||||||
end
|
end
|
||||||
-- 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
|
||||||
|
-- verifico posizione di carico
|
||||||
|
local ParkT = GetParkT()
|
||||||
-- indice primo grezzo della fase
|
-- indice primo grezzo della fase
|
||||||
local nOrd = GetPhaseOrd( EMT.PHASE)
|
local nOrd = GetPhaseOrd( EMT.PHASE)
|
||||||
-- ricerco vettore movimento per i successivi
|
-- ricerco vettore movimento per i successivi
|
||||||
@@ -393,7 +403,7 @@ function OnSimulDispositionStart()
|
|||||||
local nRawId = EgtGetFirstRawPart()
|
local nRawId = EgtGetFirstRawPart()
|
||||||
while nRawId do
|
while nRawId do
|
||||||
if EgtGetInfo( nRawId, 'ORD', 'i') == nOrd + 1 then
|
if EgtGetInfo( nRawId, 'ORD', 'i') == nOrd + 1 then
|
||||||
vtMove = Vector3d( - LoadT - EgtGetRawPartBBox( nRawId):getMax():getX(), 0, 0)
|
vtMove = Vector3d( - ParkT - EgtGetRawPartBBox( nRawId):getMax():getX(), 0, 0)
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
nRawId = EgtGetNextRawPart( nRawId)
|
nRawId = EgtGetNextRawPart( nRawId)
|
||||||
@@ -477,8 +487,8 @@ function OnSimulToolSelect( dPosA)
|
|||||||
EMT.A1n = 'Y'
|
EMT.A1n = 'Y'
|
||||||
EMT.A2n = 'V'
|
EMT.A2n = 'V'
|
||||||
end
|
end
|
||||||
-- carico utensile se non lama su sua testa o dummy
|
-- carico utensile se non lama
|
||||||
if EMT.HEAD ~= 'H2' and EMT.HEAD ~= 'H4' then
|
if EMT.HEAD ~= 'H2' then
|
||||||
-- se sega a catena, imposto subito angolo scelto per asse virtuale A
|
-- se sega a catena, imposto subito angolo scelto per asse virtuale A
|
||||||
if EMT.HEAD == 'H3' then
|
if EMT.HEAD == 'H3' then
|
||||||
if not dPosA then
|
if not dPosA then
|
||||||
@@ -506,6 +516,9 @@ function OnSimulToolSelect( dPosA)
|
|||||||
EgtSetAxisPos( 'C', EgtIf( BD.RIGHT_LOAD, 180, 0))
|
EgtSetAxisPos( 'C', EgtIf( BD.RIGHT_LOAD, 180, 0))
|
||||||
end
|
end
|
||||||
EgtSetAxisPos( 'B', 0)
|
EgtSetAxisPos( 'B', 0)
|
||||||
|
-- se aggregato per fresa tipo blockhaus
|
||||||
|
elseif EMT.HEAD == 'H7' then
|
||||||
|
EgtSetAxisPos( 'C', EgtIf( BD.RIGHT_LOAD, 180, 0))
|
||||||
end
|
end
|
||||||
-- se punta lunga
|
-- se punta lunga
|
||||||
if EMT.TOTLEN > LONG_TOOL_MINLEN then
|
if EMT.TOTLEN > LONG_TOOL_MINLEN then
|
||||||
@@ -529,9 +542,9 @@ function OnSimulToolDeselect()
|
|||||||
-- se prossimo utensile non definito, è disposizione ed esco
|
-- se prossimo utensile non definito, è disposizione ed esco
|
||||||
if EMT.NEXTTOOL == '' then return end
|
if EMT.NEXTTOOL == '' then return end
|
||||||
-- se cambia uscita su rinvio non devo fare alcunché
|
-- se cambia uscita su rinvio non devo fare alcunché
|
||||||
if EMT.HEAD == 'H5' and EMT.NEXTHEAD == 'H5' then return end
|
if ( EMT.HEAD == 'H5' and EMT.NEXTHEAD == 'H5') or ( EMT.HEAD == 'H6' and EMT.NEXTHEAD == 'H6') then return end
|
||||||
-- se sega a catena o rinvio o punta lunga o utensile di grosso diametro, devo cambiare
|
-- se sega a catena o rinvio o punta lunga o utensile di grosso diametro, devo cambiare
|
||||||
if EMT.HEAD == 'H3' or EMT.HEAD == 'H5' or ( EMT.HEAD == 'H1' and ( EMT.TOTLEN > LONG_TOOL_MINLEN or EMT.TOTDIAM > BIG_TOOL_DIAM)) then
|
if EMT.HEAD == 'H3' or EMT.HEAD == 'H5' or EMT.HEAD == 'H6' or EMT.HEAD == 'H7' or ( EMT.HEAD == 'H1' and ( EMT.TOTLEN > LONG_TOOL_MINLEN or EMT.TOTDIAM > BIG_TOOL_DIAM)) then
|
||||||
EgtOutText( 'Tool change in progress...')
|
EgtOutText( 'Tool change in progress...')
|
||||||
-- movimento scarico sega a catena
|
-- movimento scarico sega a catena
|
||||||
if EMT.HEAD == 'H3' then
|
if EMT.HEAD == 'H3' then
|
||||||
@@ -547,9 +560,13 @@ function OnSimulToolDeselect()
|
|||||||
end
|
end
|
||||||
SimulMoveAxis( 'X', 0, MCH_SIM_STEP.RAPID)
|
SimulMoveAxis( 'X', 0, MCH_SIM_STEP.RAPID)
|
||||||
-- movimento scarico rinvio
|
-- movimento scarico rinvio
|
||||||
elseif EMT.HEAD == 'H5' then
|
elseif EMT.HEAD == 'H5' or EMT.HEAD == 'H6' then
|
||||||
SimulMoveAxes( 'B', 0, MCH_SIM_STEP.COLLROT, 'C', -90, MCH_SIM_STEP.COLLROT)
|
SimulMoveAxes( 'B', 0, MCH_SIM_STEP.COLLROT, 'C', -90, MCH_SIM_STEP.COLLROT)
|
||||||
SimulMoveAxis( 'X', 0, MCH_SIM_STEP.RAPID)
|
SimulMoveAxis( 'X', 0, MCH_SIM_STEP.RAPID)
|
||||||
|
-- movimento scarico aggregato BlockHaus
|
||||||
|
elseif EMT.HEAD == 'H7' then
|
||||||
|
SimulMoveAxis( 'X', 0, MCH_SIM_STEP.RAPID)
|
||||||
|
SimulMoveAxes( 'B', 90, MCH_SIM_STEP.COLLROT, 'C', -90, MCH_SIM_STEP.COLLROT)
|
||||||
-- movimento scarico punta lunga su T111
|
-- movimento scarico punta lunga su T111
|
||||||
elseif EMT.TOTLEN > LONG_TOOL_MINLEN then
|
elseif EMT.TOTLEN > LONG_TOOL_MINLEN then
|
||||||
-- se su cambio utensile T111
|
-- se su cambio utensile T111
|
||||||
@@ -574,7 +591,7 @@ function OnSimulToolDeselect()
|
|||||||
EgtSetMode( EgtGetHeadId( EMT.HEAD), GDB_MD.HIDDEN)
|
EgtSetMode( EgtGetHeadId( EMT.HEAD), GDB_MD.HIDDEN)
|
||||||
ShowToolInTcPos( EMT.TCPOS_1, true)
|
ShowToolInTcPos( EMT.TCPOS_1, true)
|
||||||
-- movimento per carico utensile
|
-- movimento per carico utensile
|
||||||
if EMT.NEXTHEAD ~= 'H3' and EMT.NEXTHEAD ~= 'H5' then
|
if EMT.NEXTHEAD ~= 'H3' and EMT.NEXTHEAD ~= 'H5' and EMT.NEXTHEAD ~= 'H6' then
|
||||||
SimulMoveAxes( 'B', 90, MCH_SIM_STEP.RAPROT, 'C', EgtIf( BD.RIGHT_LOAD, 90, -90), MCH_SIM_STEP.RAPROT)
|
SimulMoveAxes( 'B', 90, MCH_SIM_STEP.RAPROT, 'C', EgtIf( BD.RIGHT_LOAD, 90, -90), MCH_SIM_STEP.RAPROT)
|
||||||
else
|
else
|
||||||
SimulMoveAxes( 'B', 0, MCH_SIM_STEP.RAPROT, 'C', EgtIf( BD.RIGHT_LOAD, 90, -90), MCH_SIM_STEP.RAPROT)
|
SimulMoveAxes( 'B', 0, MCH_SIM_STEP.RAPROT, 'C', EgtIf( BD.RIGHT_LOAD, 90, -90), MCH_SIM_STEP.RAPROT)
|
||||||
@@ -589,8 +606,8 @@ function OnSimulToolDeselect()
|
|||||||
ShowToolInTcPos( EMT.TCPOS_1, false)
|
ShowToolInTcPos( EMT.TCPOS_1, false)
|
||||||
end
|
end
|
||||||
EgtOutText( '')
|
EgtOutText( '')
|
||||||
-- deposito utensile se prossimo non lama su sua testa o dummy
|
-- deposito utensile se prossimo non lama su sua testa
|
||||||
elseif EMT.NEXTHEAD ~= 'H2' and EMT.NEXTHEAD ~= 'H4' then
|
elseif EMT.NEXTHEAD ~= 'H2' then
|
||||||
if EMT.NEXTTOOL ~= EMT.TOOL_1 then
|
if EMT.NEXTTOOL ~= EMT.TOOL_1 then
|
||||||
EgtOutText( 'Tool change in progress...')
|
EgtOutText( 'Tool change in progress...')
|
||||||
-- simulo movimento
|
-- simulo movimento
|
||||||
@@ -600,7 +617,7 @@ function OnSimulToolDeselect()
|
|||||||
EgtPause( 100)
|
EgtPause( 100)
|
||||||
ShowToolInTcPos( EMT.TCPOS_1, true)
|
ShowToolInTcPos( EMT.TCPOS_1, true)
|
||||||
-- se segue sega a catena
|
-- se segue sega a catena
|
||||||
if EMT.NEXTHEAD == 'H3' or EMT.NEXTHEAD == 'H5' then
|
if EMT.NEXTHEAD == 'H3' or EMT.NEXTHEAD == 'H5' or EMT.NEXTHEAD == 'H6' then
|
||||||
-- se non lama, nascondo l'utensile corrente
|
-- se non lama, nascondo l'utensile corrente
|
||||||
if EMT.HEAD ~= 'H2' then
|
if EMT.HEAD ~= 'H2' then
|
||||||
EgtSetStatus( EgtGetHeadId( EMT.HEAD), GDB_ST.OFF)
|
EgtSetStatus( EgtGetHeadId( EMT.HEAD), GDB_ST.OFF)
|
||||||
@@ -922,7 +939,7 @@ function ExecUnloading()
|
|||||||
local nLayId = EgtGroup( nVmGrpId, EgtGetGlobFrame( vMillId))
|
local nLayId = EgtGroup( nVmGrpId, EgtGetGlobFrame( vMillId))
|
||||||
EgtRelocate( vMillId, nLayId)
|
EgtRelocate( vMillId, nLayId)
|
||||||
local vtMove = Vector3d( 0, EgtIf( BD.RIGHT_LOAD, 450, -450), 0)
|
local vtMove = Vector3d( 0, EgtIf( BD.RIGHT_LOAD, 450, -450), 0)
|
||||||
if EMT.FALL then vtMove = Vector3d( -500, 0, EgtIf( BD.RIGHT_LOAD, 750, -750)) end
|
if EMT.FALL then vtMove = Vector3d( 0, EgtIf( BD.RIGHT_LOAD, 500, -500), -750) end
|
||||||
EgtMove( nLayId, vtMove, GDB_RT.GLOB)
|
EgtMove( nLayId, vtMove, GDB_RT.GLOB)
|
||||||
EgtSetLevel( vMillId, GDB_LV.USER)
|
EgtSetLevel( vMillId, GDB_LV.USER)
|
||||||
-- aggiungo gli spigoli
|
-- aggiungo gli spigoli
|
||||||
@@ -1116,18 +1133,19 @@ end
|
|||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
-- *** ESTIMATION T&L ***
|
-- *** ESTIMATION T&L ***
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
local RAPID_X_FEED = 75000 -- mm/min
|
local ESTIMATION_RAPID_COEFF = EstimationRapidMultiplier or 1
|
||||||
local RAPID_Y_FEED = 100000 -- mm/min
|
local RAPID_X_FEED = 75000 / ESTIMATION_RAPID_COEFF -- mm/min
|
||||||
local RAPID_Z_FEED = 50000 -- mm/min
|
local RAPID_Y_FEED = 100000 / ESTIMATION_RAPID_COEFF -- mm/min
|
||||||
local RAPID_C_FEED = 15000 -- deg/min
|
local RAPID_Z_FEED = 50000 / ESTIMATION_RAPID_COEFF -- mm/min
|
||||||
local RAPID_B_FEED = 15000 -- deg/min
|
local RAPID_C_FEED = 15000 / ESTIMATION_RAPID_COEFF -- deg/min
|
||||||
local RAPID_MIN_T = 0.1 -- s
|
local RAPID_B_FEED = 15000 / ESTIMATION_RAPID_COEFF -- deg/min
|
||||||
local LOAD_T = 2 -- s
|
local RAPID_MIN_T = 0.1 * ESTIMATION_RAPID_COEFF -- s
|
||||||
local CHAR_ONE_MOVE_T = 1 -- s
|
local LOAD_T = 2 * ESTIMATION_RAPID_COEFF -- s
|
||||||
local ROTATION_T = 40 -- s
|
local CHAR_ONE_MOVE_T = 1 * ESTIMATION_RAPID_COEFF -- s
|
||||||
local SPLIT_T = 6 -- s
|
local ROTATION_T = 40 * ESTIMATION_RAPID_COEFF -- s
|
||||||
local UNLOAD_T = 4 -- s
|
local SPLIT_T = 6 * ESTIMATION_RAPID_COEFF -- s
|
||||||
local FALL_T = 2 -- s
|
local UNLOAD_T = 4 * ESTIMATION_RAPID_COEFF -- s
|
||||||
|
local FALL_T = 2 * ESTIMATION_RAPID_COEFF -- s
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function OnEstimStart()
|
function OnEstimStart()
|
||||||
@@ -1566,6 +1584,16 @@ function GetPhaseRot( nPhase)
|
|||||||
return ( EgtGetInfo( EgtGetPhaseDisposition( nPhase) or GDB_ID.NULL, 'ROT', 'i') or 0)
|
return ( EgtGetInfo( EgtGetPhaseDisposition( nPhase) or GDB_ID.NULL, 'ROT', 'i') or 0)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
function GetParkT()
|
||||||
|
local dTmp = EgtGetInfo( EMT.DISPID, 'TPOS', 'd') or EgtGetInfo( EMT.DISPID, 'TPARK', 'd')
|
||||||
|
if dTmp then
|
||||||
|
return dTmp
|
||||||
|
else
|
||||||
|
return LoadT
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
-- *** END GENERAL ***
|
-- *** END GENERAL ***
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
|
|||||||
+120
-62
@@ -33,9 +33,9 @@ local DeltaTol = DELTA_TOL_S
|
|||||||
local DELTA_SIC = 1
|
local DELTA_SIC = 1
|
||||||
local AGG_LOAD = 50
|
local AGG_LOAD = 50
|
||||||
local MIN_JOIN_VV = EgtClamp( MinJoinVV or 75, 60, 150)
|
local MIN_JOIN_VV = EgtClamp( MinJoinVV or 75, 60, 150)
|
||||||
local MIN_JOIN_SS = EgtClamp( MinJoinSS or 100, 80, 200)
|
local MIN_JOIN_SS = EgtClamp( MinJoinSS or 100, 80, 275)
|
||||||
local MIN_JOIN_LS = EgtClamp( MinJoinLS or 290, 250, 400)
|
local MIN_JOIN_LS = EgtClamp( MinJoinLS or 290, 250, 400)
|
||||||
local MIN_JOIN_SL = EgtClamp( MinJoinSL or 100, 80, 200)
|
local MIN_JOIN_SL = EgtClamp( MinJoinSL or 100, 80, 400)
|
||||||
local MIN_JOIN_LL = EgtClamp( MinJoinLL or 400, 300, 600)
|
local MIN_JOIN_LL = EgtClamp( MinJoinLL or 400, 300, 600)
|
||||||
local MinJoin = MIN_JOIN_SS
|
local MinJoin = MIN_JOIN_SS
|
||||||
local MinOther = abs( MinY) + abs( MaxV) + MinJoin
|
local MinOther = abs( MinY) + abs( MaxV) + MinJoin
|
||||||
@@ -367,7 +367,18 @@ function OnSpecialApplyDisposition()
|
|||||||
EMC.HOVM = EgtGetInfo( nCurrRawId, 'HOVM', 'd') or 0
|
EMC.HOVM = EgtGetInfo( nCurrRawId, 'HOVM', 'd') or 0
|
||||||
EMC.HCING = EgtGetInfo( nCurrRawId, 'HCING', 'd') or 0
|
EMC.HCING = EgtGetInfo( nCurrRawId, 'HCING', 'd') or 0
|
||||||
EMC.TCING = EgtGetInfo( nCurrRawId, 'TCING', 'd') or 0
|
EMC.TCING = EgtGetInfo( nCurrRawId, 'TCING', 'd') or 0
|
||||||
|
|
||||||
|
-- correggo area non pinzabile in testa o coda in base alle info sulla lavorazione
|
||||||
|
local sNotes = EgtGetMachiningParam( MCH_MP.USERNOTES) or ''
|
||||||
|
local dHCING = tonumber( EgtGetValInNotes( sNotes, 'HCING'))
|
||||||
|
if dHCING then
|
||||||
|
EMC.HCING = max( dHCING, -50)
|
||||||
|
end
|
||||||
|
local dTCING = tonumber( EgtGetValInNotes( sNotes, 'TCING'))
|
||||||
|
if dTCING then
|
||||||
|
EMC.TCING = max( dTCING, -50)
|
||||||
|
end
|
||||||
|
|
||||||
-- Devo scaricare il pezzo o il grezzo rimasto
|
-- Devo scaricare il pezzo o il grezzo rimasto
|
||||||
-- Posizione trave
|
-- Posizione trave
|
||||||
local dPosT
|
local dPosT
|
||||||
@@ -511,6 +522,17 @@ function OnPostApplyMachining()
|
|||||||
local bSplitting = ( sNotes:find( 'Split') ~= nil)
|
local bSplitting = ( sNotes:find( 'Split') ~= nil)
|
||||||
local bPreCut = ( sNotes:find( 'Precut') ~= nil)
|
local bPreCut = ( sNotes:find( 'Precut') ~= nil)
|
||||||
local bCutting = ( sNotes:find( 'Cut') ~= nil)
|
local bCutting = ( sNotes:find( 'Cut') ~= nil)
|
||||||
|
|
||||||
|
-- correggo area non pinzabile in testa o coda in base alle info sulla lavorazione
|
||||||
|
local dHCING = tonumber( EgtGetValInNotes( sNotes, 'HCING'))
|
||||||
|
if dHCING then
|
||||||
|
EMC.HCING = max( dHCING, -50)
|
||||||
|
end
|
||||||
|
local dTCING = tonumber( EgtGetValInNotes( sNotes, 'TCING'))
|
||||||
|
if dTCING then
|
||||||
|
EMC.TCING = max( dTCING, -50)
|
||||||
|
end
|
||||||
|
|
||||||
local bUnload = IsEndPhase( EMC.PHASE) or IsEnd2Phase( EMC.PHASE)
|
local bUnload = IsEndPhase( EMC.PHASE) or IsEnd2Phase( EMC.PHASE)
|
||||||
if bPreSplit or bPreCut then
|
if bPreSplit or bPreCut then
|
||||||
EgtSetInfo( EMC.MCHID, 'IS_PRE', '1')
|
EgtSetInfo( EMC.MCHID, 'IS_PRE', '1')
|
||||||
@@ -634,17 +656,30 @@ function SpecApplyPath( bPreSplit, bSplitting, bPreCut, bCutting, bUnload, bPreR
|
|||||||
EMC.HOVM = EgtGetInfo( nCurrRawId, 'HOVM', 'd') or 0
|
EMC.HOVM = EgtGetInfo( nCurrRawId, 'HOVM', 'd') or 0
|
||||||
EMC.HCING = EgtGetInfo( nCurrRawId, 'HCING', 'd') or 0
|
EMC.HCING = EgtGetInfo( nCurrRawId, 'HCING', 'd') or 0
|
||||||
EMC.TCING = EgtGetInfo( nCurrRawId, 'TCING', 'd') or 0
|
EMC.TCING = EgtGetInfo( nCurrRawId, 'TCING', 'd') or 0
|
||||||
|
|
||||||
|
-- correggo area non pinzabile in testa o coda in base alle info sulla lavorazione
|
||||||
|
local sNotes = EgtGetMachiningParam( MCH_MP.USERNOTES)
|
||||||
|
local dHCING = tonumber( EgtGetValInNotes( sNotes, 'HCING'))
|
||||||
|
if dHCING then
|
||||||
|
EMC.HCING = max( dHCING, -50)
|
||||||
|
end
|
||||||
|
local dTCING = tonumber( EgtGetValInNotes( sNotes, 'TCING'))
|
||||||
|
if dTCING then
|
||||||
|
EMC.TCING = max( dTCING, -50)
|
||||||
|
end
|
||||||
|
|
||||||
-- Calcolo dell'ingombro della lavorazione
|
-- Calcolo dell'ingombro della lavorazione
|
||||||
local dDistFront, dDistBack = SpecialCalcMachiningEncumbrance( EMC.MCHID, bPreCut)
|
local dDistFront, dDistBack = SpecialCalcMachiningEncumbrance( EMC.MCHID, bPreCut)
|
||||||
if not dDistFront or not dDistBack then return end
|
if not dDistFront or not dDistBack then return end
|
||||||
|
local dMaxLenLeft = 0
|
||||||
if bPreSplit or bSplitting then
|
if bPreSplit or bSplitting then
|
||||||
local dDistF = SpecialCalcPhaseEncumbrance( EMC.PHASE + 1)
|
local dDistF, dDistB, dMaxLF = SpecialCalcPhaseEncumbrance( EMC.PHASE + 1)
|
||||||
dDistFront = min( dDistFront, dDistF)
|
dDistFront = min( dDistFront, dDistF)
|
||||||
local dNextHOVM = EgtGetInfo( EgtGetNextRawPart( nCurrRawId) or GDB_ID.NULL, 'HOVM', 'd') or 0
|
local dNextHOVM = EgtGetInfo( EgtGetNextRawPart( nCurrRawId) or GDB_ID.NULL, 'HOVM', 'd') or 0
|
||||||
local dBackOther = b3Tot:getDimX() - b3Raw:getDimX() - MinOther - dNextHOVM
|
local dBackOther = b3Tot:getDimX() - b3Raw:getDimX() - MinOther - dNextHOVM
|
||||||
EgtOutLog( 'DistBack='..EgtNumToString( dDistBack)..' OtherBack='..EgtNumToString( dBackOther), 3)
|
EgtOutLog( 'DistBack='..EgtNumToString( dDistBack)..' OtherBack='..EgtNumToString( dBackOther), 3)
|
||||||
dDistBack = min( dDistBack, dBackOther)
|
dDistBack = min( dDistBack, dBackOther)
|
||||||
|
if bSplitting then dMaxLenLeft = dMaxLF end
|
||||||
elseif bPreCut or bCutting then
|
elseif bPreCut or bCutting then
|
||||||
local dDistF = SpecialCalcPhaseEncumbrance( EMC.PHASE + 1)
|
local dDistF = SpecialCalcPhaseEncumbrance( EMC.PHASE + 1)
|
||||||
dDistFront = min( dDistFront, dDistF)
|
dDistFront = min( dDistFront, dDistF)
|
||||||
@@ -709,8 +744,9 @@ function SpecApplyPath( bPreSplit, bSplitting, bPreCut, bCutting, bUnload, bPreR
|
|||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
-- eseguo la separazione ( standard o di pezzo ruotato)
|
-- eseguo la separazione ( standard o di pezzo ruotato)
|
||||||
|
EgtOutLog( 'MaxLenLeft=' .. EgtNumToString( dMaxLenLeft, 1), 1)
|
||||||
if not IsMid2Phase( EMC.PHASE + 1) then
|
if not IsMid2Phase( EMC.PHASE + 1) then
|
||||||
vCmd = SpecCalcSplit( b3Raw:getDimX())
|
vCmd = SpecCalcSplit( b3Raw:getDimX(), dMaxLenLeft)
|
||||||
else
|
else
|
||||||
vCmd = SpecCalcSplitRot( b3Raw:getDimX())
|
vCmd = SpecCalcSplitRot( b3Raw:getDimX())
|
||||||
end
|
end
|
||||||
@@ -823,6 +859,7 @@ function SpecialCalcPhaseEncumbrance( nPhase)
|
|||||||
-- Deve essere la fase finale di lavorazione di un pezzo (già staccato dal resto della trave)
|
-- Deve essere la fase finale di lavorazione di un pezzo (già staccato dal resto della trave)
|
||||||
local dDistFront = EMC.LB
|
local dDistFront = EMC.LB
|
||||||
local dDistBack = EMC.LB
|
local dDistBack = EMC.LB
|
||||||
|
local dMaxLenLeft = 0
|
||||||
-- Salvo lavorazione e utensile correnti, per ripristinarli alla fine
|
-- Salvo lavorazione e utensile correnti, per ripristinarli alla fine
|
||||||
local nOrigMchId = EgtGetCurrMachining()
|
local nOrigMchId = EgtGetCurrMachining()
|
||||||
local sOrigTool = EgtTdbGetCurrToolParam( MCH_TP.NAME)
|
local sOrigTool = EgtTdbGetCurrToolParam( MCH_TP.NAME)
|
||||||
@@ -847,6 +884,9 @@ function SpecialCalcPhaseEncumbrance( nPhase)
|
|||||||
if dDistF and dDistB then
|
if dDistF and dDistB then
|
||||||
dDistFront = min( dDistFront, dDistF)
|
dDistFront = min( dDistFront, dDistF)
|
||||||
dDistBack = min( dDistBack, dDistB)
|
dDistBack = min( dDistBack, dDistB)
|
||||||
|
local dMaxLenL = EMC.LR - dDistF
|
||||||
|
EgtOutLog( ' MaxLenLeft = ' .. EgtNumToString( dMaxLenL, 1), 3)
|
||||||
|
dMaxLenLeft = max( dMaxLenLeft, dMaxLenL)
|
||||||
end
|
end
|
||||||
nMchId = EgtGetNextActiveOperation( nMchId)
|
nMchId = EgtGetNextActiveOperation( nMchId)
|
||||||
end
|
end
|
||||||
@@ -855,7 +895,7 @@ function SpecialCalcPhaseEncumbrance( nPhase)
|
|||||||
if sOrigTool then EgtTdbSetCurrTool( sOrigTool) end
|
if sOrigTool then EgtTdbSetCurrTool( sOrigTool) end
|
||||||
if sOrigTool and sOrigHead and nOrigExit then EgtSetCalcTool( sOrigTool, sOrigHead, nOrigExit) end
|
if sOrigTool and sOrigHead and nOrigExit then EgtSetCalcTool( sOrigTool, sOrigHead, nOrigExit) end
|
||||||
-- Restituisco gli ingombri trovati
|
-- Restituisco gli ingombri trovati
|
||||||
return dDistFront, dDistBack
|
return dDistFront, dDistBack, dMaxLenLeft
|
||||||
end
|
end
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
@@ -1028,9 +1068,9 @@ function SpecCalcEncumbrance( vtTool, vtArm, ptMin, ptMax, bSaw, bChain, dTLen,
|
|||||||
elseif ( vtTool:getX() > 0.5) then
|
elseif ( vtTool:getX() > 0.5) then
|
||||||
dHeadFront = 450
|
dHeadFront = 450
|
||||||
end
|
end
|
||||||
if vtTool:getX() > 0.25 then
|
if vtTool:getX() > 0.25 then
|
||||||
dHeadFront = dHeadFront + max( dTLen - 130, 0) * vtTool:getX()
|
dHeadFront = dHeadFront + max( dTLen - 130, 0) * vtTool:getX()
|
||||||
elseif vtTool:getX() > 0 then
|
elseif vtTool:getX() > 0 then
|
||||||
dHeadFront = dHeadFront + ( dTLen + 180) * vtTool:getX()
|
dHeadFront = dHeadFront + ( dTLen + 180) * vtTool:getX()
|
||||||
end
|
end
|
||||||
if vtTool:getX() < -0.866 then
|
if vtTool:getX() < -0.866 then
|
||||||
@@ -1042,7 +1082,7 @@ function SpecCalcEncumbrance( vtTool, vtArm, ptMin, ptMax, bSaw, bChain, dTLen,
|
|||||||
if vtArm:getX() > 0.259 then
|
if vtArm:getX() > 0.259 then
|
||||||
dHeadFront = 510
|
dHeadFront = 510
|
||||||
else
|
else
|
||||||
dHeadFront = EgtIf( vtTool:getZ() > 0.966, 160, 280)
|
dHeadFront = EgtIf( vtTool:getZ() > 0.966, 170, 280)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
-- per fresature longitudinali con utensile di fianco
|
-- per fresature longitudinali con utensile di fianco
|
||||||
@@ -1214,6 +1254,9 @@ function SpecCalcCarriages( dDistFront, dDistBack, bFixedDelta, bFixedPos)
|
|||||||
end
|
end
|
||||||
local dDistBackEff = min( dDistBack, EMC.LB - MyMinOther - EMC.HCING - EMC.HOVM)
|
local dDistBackEff = min( dDistBack, EMC.LB - MyMinOther - EMC.HCING - EMC.HOVM)
|
||||||
|
|
||||||
|
-- se primo scambio
|
||||||
|
local MyMinY = EgtIf( EMC.CNT == 1, MinY + AGG_LOAD, MinY)
|
||||||
|
|
||||||
EgtOutLog( ' Dist/Min : Back=' .. EgtNumToString( dDistBackEff, 1) .. '/' .. EgtNumToString( MinBackJoin, 1) ..
|
EgtOutLog( ' Dist/Min : Back=' .. EgtNumToString( dDistBackEff, 1) .. '/' .. EgtNumToString( MinBackJoin, 1) ..
|
||||||
' Front=' .. EgtNumToString( dDistFrontEff, 1) .. '/' .. EgtNumToString( MinFrontJoin, 1) ..
|
' Front=' .. EgtNumToString( dDistFrontEff, 1) .. '/' .. EgtNumToString( MinFrontJoin, 1) ..
|
||||||
' Fixed : Delta=' .. EgtIf( bFixedDelta, 'T', 'F') .. ' Pos=' .. EgtIf( bFixedPos, 'T', 'F'), 3)
|
' Fixed : Delta=' .. EgtIf( bFixedDelta, 'T', 'F') .. ' Pos=' .. EgtIf( bFixedPos, 'T', 'F'), 3)
|
||||||
@@ -1233,7 +1276,7 @@ function SpecCalcCarriages( dDistFront, dDistBack, bFixedDelta, bFixedPos)
|
|||||||
if dDistFrontEff < MinFrontJoin and dDistBackEff > MinBackJoin - GEO.EPS_SMALL then
|
if dDistFrontEff < MinFrontJoin and dDistBackEff > MinBackJoin - GEO.EPS_SMALL then
|
||||||
-- se Y non era in presa, mi ricalcolo la posizione
|
-- se Y non era in presa, mi ricalcolo la posizione
|
||||||
if not dYDelta then
|
if not dYDelta then
|
||||||
dYDelta = dVDelta + ( MinY - MaxV)
|
dYDelta = dVDelta + ( MyMinY - MaxV)
|
||||||
end
|
end
|
||||||
dNewYDelta = EMC.LB - dDistBackEff
|
dNewYDelta = EMC.LB - dDistBackEff
|
||||||
-- verifico se posso lasciare la morsa in posizione
|
-- verifico se posso lasciare la morsa in posizione
|
||||||
@@ -1250,11 +1293,11 @@ function SpecCalcCarriages( dDistFront, dDistBack, bFixedDelta, bFixedPos)
|
|||||||
elseif dDistBackEff > MinBackJoin - GEO.EPS_SMALL and dDistFrontEff > MinFrontJoin - GEO.EPS_SMALL then
|
elseif dDistBackEff > MinBackJoin - GEO.EPS_SMALL and dDistFrontEff > MinFrontJoin - GEO.EPS_SMALL then
|
||||||
-- se Y non era in presa, mi ricalcolo la posizione
|
-- se Y non era in presa, mi ricalcolo la posizione
|
||||||
if not dYDelta then
|
if not dYDelta then
|
||||||
dYDelta = dVDelta + ( MinY - MaxV)
|
dYDelta = dVDelta + ( MyMinY - MaxV)
|
||||||
end
|
end
|
||||||
-- se V non era in presa, mi ricalcolo la posizione
|
-- se V non era in presa, mi ricalcolo la posizione
|
||||||
if not dVDelta then
|
if not dVDelta then
|
||||||
dVDelta = dYDelta - ( MinY - MaxV)
|
dVDelta = dYDelta - ( MyMinY - MaxV)
|
||||||
end
|
end
|
||||||
|
|
||||||
dNewYDelta = EMC.LB - dDistBackEff
|
dNewYDelta = EMC.LB - dDistBackEff
|
||||||
@@ -1284,12 +1327,17 @@ function SpecCalcCarriages( dDistFront, dDistBack, bFixedDelta, bFixedPos)
|
|||||||
elseif dDistBackEff < MinBackJoin and dDistFrontEff > MinFrontJoin - GEO.EPS_SMALL then
|
elseif dDistBackEff < MinBackJoin and dDistFrontEff > MinFrontJoin - GEO.EPS_SMALL then
|
||||||
-- se V non era in presa, mi ricalcolo la posizione
|
-- se V non era in presa, mi ricalcolo la posizione
|
||||||
if not dVDelta then
|
if not dVDelta then
|
||||||
dVDelta = dYDelta - ( MinY - MaxV)
|
dVDelta = dYDelta - ( MyMinY - MaxV)
|
||||||
end
|
end
|
||||||
dNewVDelta = dDistFrontEff
|
dNewVDelta = dDistFrontEff
|
||||||
-- verifico se posso lasciare la morsa in posizione
|
-- verifico se posso lasciare la morsa in posizione
|
||||||
local dVDeltaTol = GetDeltaTol( dNewVDelta, EMC.TCING, EMC.HCING, EMC.HOVM, 'V', bFixedDelta)
|
local dVDeltaTol = GetDeltaTol( dNewVDelta, EMC.TCING, EMC.HCING, EMC.HOVM, 'V', bFixedDelta)
|
||||||
local bVDeltaS = ( dNewVDelta > dVDelta + dVDeltaTol or dNewVDelta < dVDelta - DELTA_SIC)
|
local bVDeltaS
|
||||||
|
if EMC.YDELTA == nil and EMC.YDELTANEXT == nil then
|
||||||
|
bVDeltaS = (( dNewVDelta > dVDelta + dVDeltaTol and not bFixedPos) or dNewVDelta < dVDelta - DELTA_SIC)
|
||||||
|
else
|
||||||
|
bVDeltaS = ( dNewVDelta > dVDelta + dVDeltaTol or dNewVDelta < dVDelta - DELTA_SIC)
|
||||||
|
end
|
||||||
-- reimposto i delta finali in caso di spostamenti richiesti significativi, tenuto conto delle tolleranze
|
-- reimposto i delta finali in caso di spostamenti richiesti significativi, tenuto conto delle tolleranze
|
||||||
if bVDeltaS then
|
if bVDeltaS then
|
||||||
dNewVDelta = dNewVDelta - dVDeltaTol/2
|
dNewVDelta = dNewVDelta - dVDeltaTol/2
|
||||||
@@ -1321,10 +1369,17 @@ function SpecCalcCarriages( dDistFront, dDistBack, bFixedDelta, bFixedPos)
|
|||||||
end
|
end
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function SpecCalcSplit( dLenRaw)
|
function SpecCalcSplit( dLenRaw, dMaxLenLeft)
|
||||||
local vCmd = {}
|
local vCmd = {}
|
||||||
EgtOutLog( ' *[S]', 1)
|
EgtOutLog( ' *[S]', 1)
|
||||||
table.insert( vCmd, { 0, EgtIf( EMC.VDELTA, 'Split', 'Fall')})
|
local bSplit = ( EMC.VDELTA ~= nil)
|
||||||
|
local ParkT = LoadT
|
||||||
|
if bSplit then
|
||||||
|
if dMaxLenLeft + 100 > LoadT then
|
||||||
|
ParkT = dMaxLenLeft + 300
|
||||||
|
end
|
||||||
|
end
|
||||||
|
table.insert( vCmd, { 0, EgtIf( bSplit, 'Split', 'Fall')})
|
||||||
-- determino i grezzi da agganciare al carrello Y (sono quelli presenti nella fase successiva dispari)
|
-- determino i grezzi da agganciare al carrello Y (sono quelli presenti nella fase successiva dispari)
|
||||||
local nNextOddPhase = GetNextStartOrRestPhase( EMC.PHASE)
|
local nNextOddPhase = GetNextStartOrRestPhase( EMC.PHASE)
|
||||||
local nRawId = EgtGetFirstRawPart()
|
local nRawId = EgtGetFirstRawPart()
|
||||||
@@ -1336,20 +1391,26 @@ function SpecCalcSplit( dLenRaw)
|
|||||||
end
|
end
|
||||||
-- riporto il carrello Y al carico con il resto della trave
|
-- riporto il carrello Y al carico con il resto della trave
|
||||||
local dLDelta = EMC.YDELTA - dLenRaw
|
local dLDelta = EMC.YDELTA - dLenRaw
|
||||||
table.insert( vCmd, { 1, 'Y', LoadT + dLDelta})
|
table.insert( vCmd, { 1, 'Y', ParkT + dLDelta})
|
||||||
table.insert( vCmd, { 21, 0, EMC.VDELTA or 0})
|
table.insert( vCmd, { 21, 0, EMC.VDELTA or 0})
|
||||||
-- imposto subito Y non più attaccato al trave in lavoro
|
-- imposto subito Y non più attaccato al trave in lavoro
|
||||||
EMC.YDELTA = nil
|
EMC.YDELTA = nil
|
||||||
-- salvo posizione carrello Y in disposizione del pezzo dopo split
|
-- salvo posizione carrello Y in disposizione del pezzo dopo split
|
||||||
local PostDispId = EgtGetPhaseDisposition( EMC.PHASE + 1)
|
local PostDispId = EgtGetPhaseDisposition( EMC.PHASE + 1)
|
||||||
if PostDispId then
|
if PostDispId then
|
||||||
EgtSetInfo( PostDispId, 'YPOS', LoadT + dLDelta)
|
if not bSplit then
|
||||||
|
EgtSetInfo( PostDispId, 'TPOS', ParkT)
|
||||||
|
else
|
||||||
|
EgtRemoveInfo( PostDispId, 'TPOS')
|
||||||
|
EgtSetInfo( PostDispId, 'TPARK', ParkT)
|
||||||
|
end
|
||||||
|
EgtSetInfo( PostDispId, 'YPOS', ParkT + dLDelta)
|
||||||
end
|
end
|
||||||
-- salvo posizione grezzo rimasto e posizione carrello Y nella disposizione iniziale del pezzo succ (prossima fase dispari)
|
-- salvo posizione grezzo rimasto e posizione carrello Y nella disposizione iniziale del pezzo succ (prossima fase dispari)
|
||||||
local NextDispId = EgtGetPhaseDisposition( nNextOddPhase)
|
local NextDispId = EgtGetPhaseDisposition( nNextOddPhase)
|
||||||
if NextDispId then
|
if NextDispId then
|
||||||
EgtSetInfo( NextDispId, 'TPOS', LoadT)
|
EgtSetInfo( NextDispId, 'TPOS', ParkT)
|
||||||
EgtSetInfo( NextDispId, 'YPOS', LoadT + dLDelta)
|
EgtSetInfo( NextDispId, 'YPOS', ParkT + dLDelta)
|
||||||
end
|
end
|
||||||
return vCmd
|
return vCmd
|
||||||
end
|
end
|
||||||
@@ -1489,6 +1550,17 @@ function SpecCalcPreRot()
|
|||||||
return vCmd
|
return vCmd
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
local function CalcCharStatus( sType, dDelta)
|
||||||
|
-- se per carrello Y
|
||||||
|
if sType == 'Y' then
|
||||||
|
return EgtIf( EMC.LB - dDelta < LenToPress, 1, 2)
|
||||||
|
-- altrimenti per carrello V
|
||||||
|
else
|
||||||
|
return EgtIf( dDelta < LenToPress, 1, 2)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF, dVDeltaF, bFixedDelta, bFixedPos)
|
function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF, dVDeltaF, bFixedDelta, bFixedPos)
|
||||||
local dYPosA, dVPosA, dTPosA
|
local dYPosA, dVPosA, dTPosA
|
||||||
@@ -1525,6 +1597,14 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
|||||||
local bZmaxOk = EnsureZmax( bZmaxOk, vCmd)
|
local bZmaxOk = EnsureZmax( bZmaxOk, vCmd)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- ribadisco pinzaggio
|
||||||
|
if EMC.YDELTA then
|
||||||
|
table.insert( vCmd, { 11, 1})
|
||||||
|
end
|
||||||
|
if EMC.VDELTA then
|
||||||
|
table.insert( vCmd, { 12, 1})
|
||||||
|
end
|
||||||
|
|
||||||
-- reset contatore primo riposizionamento con compensazione lettura laser
|
-- reset contatore primo riposizionamento con compensazione lettura laser
|
||||||
EMC.CNT = nil
|
EMC.CNT = nil
|
||||||
|
|
||||||
@@ -1556,7 +1636,7 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
|||||||
-- * deve effettivamente spostarsi
|
-- * deve effettivamente spostarsi
|
||||||
-- * non si arriva da gestione passo del pellegrino
|
-- * non si arriva da gestione passo del pellegrino
|
||||||
-- * se riesce a raggiungere la posizione con le corse a disposizione per come sono posizionate le morse attualmente
|
-- * se riesce a raggiungere la posizione con le corse a disposizione per come sono posizionate le morse attualmente
|
||||||
if ( dYDeltaI - dVDeltaF) >= MyMinY - MaxV and abs( dVDeltaF - dVDeltaI) > 10 * GEO.EPS_SMALL and not EMC.PILGRIMSTEP and
|
if ( dYDeltaI - dVDeltaF) + 10 * GEO.EPS_SMALL >= MyMinY - MaxV and abs( dVDeltaF - dVDeltaI) > 10 * GEO.EPS_SMALL and not EMC.PILGRIMSTEP and
|
||||||
( dVDeltaF - dVDeltaI > MinV - dVPosI + MyMinY - dYPosI) then
|
( dVDeltaF - dVDeltaI > MinV - dVPosI + MyMinY - dYPosI) then
|
||||||
table.insert( vCmd, { 0, 'Direct-V-Y'})
|
table.insert( vCmd, { 0, 'Direct-V-Y'})
|
||||||
-- se l'altra morsa non era in presa, vado a pinzare il pezzo
|
-- se l'altra morsa non era in presa, vado a pinzare il pezzo
|
||||||
@@ -1615,7 +1695,7 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
|||||||
dTPosI = dTPosA
|
dTPosI = dTPosA
|
||||||
|
|
||||||
-- blocco la morsa
|
-- blocco la morsa
|
||||||
table.insert( vCmd, { 12, 1})
|
table.insert( vCmd, { 12, CalcCharStatus( 'V', dVDeltaF)})
|
||||||
|
|
||||||
-- imposto i nuovi parametri di aggancio
|
-- imposto i nuovi parametri di aggancio
|
||||||
if EMC.YDELTANEXT and EMC.VDELTANEXT then
|
if EMC.YDELTANEXT and EMC.VDELTANEXT then
|
||||||
@@ -1626,7 +1706,7 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
|||||||
dYPosA = dTPosF + dYDeltaF
|
dYPosA = dTPosF + dYDeltaF
|
||||||
dVPosA = dTPosF + dVDeltaF
|
dVPosA = dTPosF + dVDeltaF
|
||||||
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
|
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
|
||||||
table.insert( vCmd, { 11, 1})
|
table.insert( vCmd, { 11, CalcCharStatus( 'Y', dYDeltaF)})
|
||||||
-- la morsa al carico è adesso in posizione
|
-- la morsa al carico è adesso in posizione
|
||||||
dYDeltaI = dYDeltaF
|
dYDeltaI = dYDeltaF
|
||||||
end
|
end
|
||||||
@@ -1635,10 +1715,10 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
|||||||
if abs( dYDeltaF - dYDeltaI) > 10 * GEO.EPS_SMALL then
|
if abs( dYDeltaF - dYDeltaI) > 10 * GEO.EPS_SMALL then
|
||||||
table.insert( vCmd, { 11, 0})
|
table.insert( vCmd, { 11, 0})
|
||||||
dYPosA = max( MyMinY, dTPosI + dYDeltaF)
|
dYPosA = max( MyMinY, dTPosI + dYDeltaF)
|
||||||
dTPosA = -( dYPosA + dVDeltaF)
|
dTPosA = dYPosA - dYDeltaF
|
||||||
dVPosA = dTPosA + dVDeltaF
|
dVPosA = dTPosA + dVDeltaF
|
||||||
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
|
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
|
||||||
table.insert( vCmd, { 11, 1})
|
table.insert( vCmd, { 11, CalcCharStatus( 'Y', dYDeltaF)})
|
||||||
-- la morsa al carico è adesso in posizione
|
-- la morsa al carico è adesso in posizione
|
||||||
dYDeltaI = dYDeltaF
|
dYDeltaI = dYDeltaF
|
||||||
end
|
end
|
||||||
@@ -1661,7 +1741,7 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
|||||||
-- * deve effettivamente spostarsi
|
-- * deve effettivamente spostarsi
|
||||||
-- * non si arriva da gestione passo del pellegrino
|
-- * non si arriva da gestione passo del pellegrino
|
||||||
-- * se riesce a raggiungere la posizione con le corse a disposizione per come sono posizionate le morse attualmente
|
-- * se riesce a raggiungere la posizione con le corse a disposizione per come sono posizionate le morse attualmente
|
||||||
elseif ( dYDeltaF - dVDeltaI) >= MyMinY - MaxV and abs( dYDeltaF - dYDeltaI) > 10 * GEO.EPS_SMALL and not EMC.PILGRIMSTEP and
|
elseif ( dYDeltaF - dVDeltaI) + 10 * GEO.EPS_SMALL >= MyMinY - MaxV and abs( dYDeltaF - dYDeltaI) > 10 * GEO.EPS_SMALL and not EMC.PILGRIMSTEP and
|
||||||
( dYDeltaF - dYDeltaI < MaxY - dYPosI + MaxV - dVPosI) then
|
( dYDeltaF - dYDeltaI < MaxY - dYPosI + MaxV - dVPosI) then
|
||||||
table.insert( vCmd, { 0, 'Direct-Y-V'})
|
table.insert( vCmd, { 0, 'Direct-Y-V'})
|
||||||
-- se l'altra morsa non era in presa, vado a pinzare il pezzo
|
-- se l'altra morsa non era in presa, vado a pinzare il pezzo
|
||||||
@@ -1687,7 +1767,7 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
|||||||
dBeamMove = -( dYPosI + ( dYDeltaF - dYDeltaI) - MyMinY)
|
dBeamMove = -( dYPosI + ( dYDeltaF - dYDeltaI) - MyMinY)
|
||||||
-- se spostamento verso il carico
|
-- se spostamento verso il carico
|
||||||
elseif ( dYPosI + ( dYDeltaF - dYDeltaI)) > MaxY then
|
elseif ( dYPosI + ( dYDeltaF - dYDeltaI)) > MaxY then
|
||||||
dBeamMove = dYPosI + ( dYDeltaF - dYDeltaI) - MaxY
|
dBeamMove = -( dYPosI + ( dYDeltaF - dYDeltaI) - MaxY)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- se serve un grande spostamento e si sta pinzando poco. V trascinatore pinza poco e Y si sposta per prima per recuperare
|
-- se serve un grande spostamento e si sta pinzando poco. V trascinatore pinza poco e Y si sposta per prima per recuperare
|
||||||
@@ -1723,7 +1803,7 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
|||||||
dTPosI = dTPosA
|
dTPosI = dTPosA
|
||||||
|
|
||||||
-- blocco la morsa
|
-- blocco la morsa
|
||||||
table.insert( vCmd, { 11, 1})
|
table.insert( vCmd, { 11, CalcCharStatus( 'Y', dYDeltaF)})
|
||||||
|
|
||||||
-- imposto i nuovi parametri di aggancio
|
-- imposto i nuovi parametri di aggancio
|
||||||
if EMC.YDELTANEXT and EMC.VDELTANEXT then
|
if EMC.YDELTANEXT and EMC.VDELTANEXT then
|
||||||
@@ -1733,7 +1813,7 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
|||||||
dYPosA = dTPosF + dYDeltaF
|
dYPosA = dTPosF + dYDeltaF
|
||||||
dVPosA = dTPosF + dVDeltaF
|
dVPosA = dTPosF + dVDeltaF
|
||||||
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
|
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
|
||||||
table.insert( vCmd, { 12, 1})
|
table.insert( vCmd, { 12, CalcCharStatus( 'V', dVDeltaF)})
|
||||||
-- la morsa al carico è adesso in posizione
|
-- la morsa al carico è adesso in posizione
|
||||||
dVDeltaI = dVDeltaF
|
dVDeltaI = dVDeltaF
|
||||||
end
|
end
|
||||||
@@ -1745,7 +1825,7 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
|||||||
dTPosA = dVPosA - dVDeltaF
|
dTPosA = dVPosA - dVDeltaF
|
||||||
dYPosA = dTPosA + dYDeltaF
|
dYPosA = dTPosA + dYDeltaF
|
||||||
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
|
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
|
||||||
table.insert( vCmd, { 12, 1})
|
table.insert( vCmd, { 12, CalcCharStatus( 'V', dVDeltaF)})
|
||||||
-- la morsa al carico è adesso in posizione
|
-- la morsa al carico è adesso in posizione
|
||||||
dVDeltaI = dVDeltaF
|
dVDeltaI = dVDeltaF
|
||||||
end
|
end
|
||||||
@@ -1855,10 +1935,10 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
|||||||
-- morsa Y arriva in posizione finale
|
-- morsa Y arriva in posizione finale
|
||||||
dYDeltaI = dYDeltaF
|
dYDeltaI = dYDeltaF
|
||||||
dVPosA = MinV
|
dVPosA = MinV
|
||||||
dTPosA = dTPosI - MaxV + MinV
|
dTPosA = dTPosI - dVPosI + MinV
|
||||||
dYPosA = dYDeltaF + dTPosA
|
dYPosA = dYDeltaF + dTPosA
|
||||||
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
|
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
|
||||||
table.insert( vCmd, { 11, 1})
|
table.insert( vCmd, { 11, CalcCharStatus( 'Y', dYDeltaF)})
|
||||||
table.insert( vCmd, { 12, 0})
|
table.insert( vCmd, { 12, 0})
|
||||||
dTPosI = dTPosA
|
dTPosI = dTPosA
|
||||||
EMC.YDELTA = dYDeltaF
|
EMC.YDELTA = dYDeltaF
|
||||||
@@ -1875,7 +1955,7 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
|||||||
dVPosA = dTPosI + dVDeltaI - dTotMove
|
dVPosA = dTPosI + dVDeltaI - dTotMove
|
||||||
dTPosA = dTPosI - dTotMove
|
dTPosA = dTPosI - dTotMove
|
||||||
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
|
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
|
||||||
table.insert( vCmd, { 11, 1})
|
table.insert( vCmd, { 11, CalcCharStatus( 'Y', dYDeltaF)})
|
||||||
table.insert( vCmd, { 12, 0})
|
table.insert( vCmd, { 12, 0})
|
||||||
|
|
||||||
-- aggiorno nuova posizione della morsa al carico dopo riposizionamento
|
-- aggiorno nuova posizione della morsa al carico dopo riposizionamento
|
||||||
@@ -1903,12 +1983,12 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
|||||||
|
|
||||||
-- imposto i nuovi parametri di aggancio
|
-- imposto i nuovi parametri di aggancio
|
||||||
if EMC.YDELTANEXT and EMC.VDELTANEXT then
|
if EMC.YDELTANEXT and EMC.VDELTANEXT then
|
||||||
table.insert( vCmd, { 12, 1})
|
table.insert( vCmd, { 12, CalcCharStatus( 'V', dVDeltaF)})
|
||||||
table.insert( vCmd, { 21, dYDeltaF, dVDeltaF})
|
table.insert( vCmd, { 21, dYDeltaF, dVDeltaF})
|
||||||
elseif EMC.YDELTANEXT then
|
elseif EMC.YDELTANEXT then
|
||||||
table.insert( vCmd, { 21, dYDeltaF, 0})
|
table.insert( vCmd, { 21, dYDeltaF, 0})
|
||||||
else
|
else
|
||||||
table.insert( vCmd, { 12, 1})
|
table.insert( vCmd, { 12, CalcCharStatus( 'V', dVDeltaF)})
|
||||||
table.insert( vCmd, { 11, 0})
|
table.insert( vCmd, { 11, 0})
|
||||||
-- sposto il carrello Y in parcheggio
|
-- sposto il carrello Y in parcheggio
|
||||||
table.insert( vCmd, { 1, 'Y', ParkY})
|
table.insert( vCmd, { 1, 'Y', ParkY})
|
||||||
@@ -1959,13 +2039,12 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
|||||||
-- recupero una corsa massima e l'altra solo di quello che serve
|
-- recupero una corsa massima e l'altra solo di quello che serve
|
||||||
elseif abs( dVDeltaI - dVDeltaF) > dMaxMovePilgrimStepSingleClampV then
|
elseif abs( dVDeltaI - dVDeltaF) > dMaxMovePilgrimStepSingleClampV then
|
||||||
-- aggiorno nuova posizione della morsa al carico dopo riposizionamento
|
-- aggiorno nuova posizione della morsa al carico dopo riposizionamento
|
||||||
local dTotMove = MaxY - dTPosI - dYDeltaI
|
|
||||||
dVDeltaI = dVDeltaF
|
dVDeltaI = dVDeltaF
|
||||||
dYPosA = MaxY
|
dYPosA = MaxY
|
||||||
dTPosA = dTPosI + dTotMove
|
dTPosA = dTPosI + ( MaxY - dYPosI)
|
||||||
dVPosA = dVDeltaF + dTPosA
|
dVPosA = dVDeltaF + dTPosA
|
||||||
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
|
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
|
||||||
table.insert( vCmd, { 12, 1})
|
table.insert( vCmd, { 12, CalcCharStatus( 'V', dVDeltaF)})
|
||||||
table.insert( vCmd, { 11, 0})
|
table.insert( vCmd, { 11, 0})
|
||||||
dTPosI = dTPosA
|
dTPosI = dTPosA
|
||||||
EMC.YDELTA = dYDeltaI
|
EMC.YDELTA = dYDeltaI
|
||||||
@@ -1982,7 +2061,7 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
|||||||
dVPosA = dTPosI + dVDeltaI - dTotMove
|
dVPosA = dTPosI + dVDeltaI - dTotMove
|
||||||
dTPosA = dTPosI + dTotMove
|
dTPosA = dTPosI + dTotMove
|
||||||
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
|
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
|
||||||
table.insert( vCmd, { 12, 1})
|
table.insert( vCmd, { 12, CalcCharStatus( 'V', dVDeltaF)})
|
||||||
table.insert( vCmd, { 11, 0})
|
table.insert( vCmd, { 11, 0})
|
||||||
|
|
||||||
-- aggiorno nuova posizione della morsa allo scarico dopo riposizionamento
|
-- aggiorno nuova posizione della morsa allo scarico dopo riposizionamento
|
||||||
@@ -2008,22 +2087,12 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
|||||||
dYDeltaI = dYDeltaF
|
dYDeltaI = dYDeltaF
|
||||||
end
|
end
|
||||||
|
|
||||||
-- sistemo apertura morse
|
|
||||||
if EMC.YDELTANEXT then
|
|
||||||
table.insert( vCmd, { 11, 1})
|
|
||||||
end
|
|
||||||
if not EMC.VDELTANEXT then
|
|
||||||
table.insert( vCmd, { 12, 0})
|
|
||||||
-- sposto il carrello Y in parcheggio
|
|
||||||
table.insert( vCmd, { 1, 'V', ParkV})
|
|
||||||
end
|
|
||||||
|
|
||||||
-- imposto i nuovi parametri di aggancio
|
-- imposto i nuovi parametri di aggancio
|
||||||
if EMC.YDELTANEXT and EMC.VDELTANEXT then
|
if EMC.YDELTANEXT and EMC.VDELTANEXT then
|
||||||
table.insert( vCmd, { 11, 1})
|
table.insert( vCmd, { 11, CalcCharStatus( 'Y', dYDeltaF)})
|
||||||
table.insert( vCmd, { 21, dYDeltaF, dVDeltaF})
|
table.insert( vCmd, { 21, dYDeltaF, dVDeltaF})
|
||||||
elseif EMC.YDELTANEXT then
|
elseif EMC.YDELTANEXT then
|
||||||
table.insert( vCmd, { 11, 1})
|
table.insert( vCmd, { 11, CalcCharStatus( 'Y', dYDeltaF)})
|
||||||
-- sposto il carrello Y in parcheggio
|
-- sposto il carrello Y in parcheggio
|
||||||
table.insert( vCmd, { 12, 0})
|
table.insert( vCmd, { 12, 0})
|
||||||
table.insert( vCmd, { 1, 'V', ParkV})
|
table.insert( vCmd, { 1, 'V', ParkV})
|
||||||
@@ -2278,17 +2347,6 @@ function SpecAdjustCarriagesOLD( dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF, d
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
|
||||||
local function CalcCharStatus( sType, dDelta)
|
|
||||||
-- se per carrello Y
|
|
||||||
if sType == 'Y' then
|
|
||||||
return EgtIf( EMC.LB - dDelta < LenToPress, 1, 2)
|
|
||||||
-- altrimenti per carrello V
|
|
||||||
else
|
|
||||||
return EgtIf( dDelta < LenToPress, 1, 2)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
local function GetCorseDisp( dCorsaYfc, dCorsaVfc, dDistN, sSide)
|
local function GetCorseDisp( dCorsaYfc, dCorsaVfc, dDistN, sSide)
|
||||||
local dRecTotn = min( dDistN, dCorsaYfc+ dCorsaVfc) -- recupero possibile al netto di dCorsa..TrA)
|
local dRecTotn = min( dDistN, dCorsaYfc+ dCorsaVfc) -- recupero possibile al netto di dCorsa..TrA)
|
||||||
|
|||||||
+12
-3
@@ -59,6 +59,7 @@ H5.1=AngTransm.nge
|
|||||||
H5.2=AngTransm.nge
|
H5.2=AngTransm.nge
|
||||||
H6.1=AngTransm.nge
|
H6.1=AngTransm.nge
|
||||||
H6.2=AngTransm.nge
|
H6.2=AngTransm.nge
|
||||||
|
H7.1=AngTransmBH.nge
|
||||||
|
|
||||||
[Machinings]
|
[Machinings]
|
||||||
Drilling=1
|
Drilling=1
|
||||||
@@ -67,10 +68,14 @@ Milling=1
|
|||||||
Pocketing=1
|
Pocketing=1
|
||||||
Mortising=1
|
Mortising=1
|
||||||
Chiseling=0
|
Chiseling=0
|
||||||
SawRoughing=0
|
|
||||||
SawFinishing=0
|
|
||||||
GenMachining=0
|
GenMachining=0
|
||||||
SurfFinishing=0
|
SurfRoughing=1
|
||||||
|
SurfFinishing=1
|
||||||
|
5AxMilling=1
|
||||||
|
|
||||||
|
[5AxMilling]
|
||||||
|
5AxScript1=5AxProject
|
||||||
|
5AxScript2=5AxPocketProject
|
||||||
|
|
||||||
[Machining]
|
[Machining]
|
||||||
InitScript=InitMach.lua
|
InitScript=InitMach.lua
|
||||||
@@ -88,6 +93,10 @@ H2=6615
|
|||||||
H3=6616
|
H3=6616
|
||||||
; Angular transmission
|
; Angular transmission
|
||||||
H5=6603
|
H5=6603
|
||||||
|
; Angular transmission
|
||||||
|
H6=6603
|
||||||
|
; Angular transmission
|
||||||
|
H7=6617
|
||||||
|
|
||||||
[SetUp]
|
[SetUp]
|
||||||
Default=Standard
|
Default=Standard
|
||||||
|
|||||||
+56
-70
@@ -1,4 +1,4 @@
|
|||||||
-- Descrizione macchina Essetre-FAST by EgalTech s.r.l. 2024/03/28
|
-- Descrizione macchina Essetre-FAST by EgalTech s.r.l. 2024/12/23
|
||||||
-- 2021/12/29 DS ver 2.3l4 Per NUM non va considerato MillOffs negli offset in Z.
|
-- 2021/12/29 DS ver 2.3l4 Per NUM non va considerato MillOffs negli offset in Z.
|
||||||
-- 2022/01/27 DS ver 2.4a2 Modifiche per tagli testa/coda su pezzi alti.
|
-- 2022/01/27 DS ver 2.4a2 Modifiche per tagli testa/coda su pezzi alti.
|
||||||
-- 2022/02/10 DS ver 2.4a3 Ridotto di 10mm pinzaggio con pezzi alti ma sottili.
|
-- 2022/02/10 DS ver 2.4a3 Ridotto di 10mm pinzaggio con pezzi alti ma sottili.
|
||||||
@@ -17,63 +17,15 @@
|
|||||||
-- 2022/12/05 DS ver 2.4l1 In OnLinear di genera CN per Num e NumPlus eliminato recupero sovramateriale di testa EMT.X_OFF dopo riutilizzo EMT.L1o.
|
-- 2022/12/05 DS ver 2.4l1 In OnLinear di genera CN per Num e NumPlus eliminato recupero sovramateriale di testa EMT.X_OFF dopo riutilizzo EMT.L1o.
|
||||||
-- 2023/01/23 DS Ver.2.5a2 In simulazione corretta visualizzazione Sega a catena.
|
-- 2023/01/23 DS Ver.2.5a2 In simulazione corretta visualizzazione Sega a catena.
|
||||||
-- 2023/02/09 DS Ver.2.5b1 Correzioni NumPlus per parametri G115 e EG2/EG3 al cambio orientazione sega a catena.
|
-- 2023/02/09 DS Ver.2.5b1 Correzioni NumPlus per parametri G115 e EG2/EG3 al cambio orientazione sega a catena.
|
||||||
-- 2023/03/20 DS Ver.2.5c1 Inserita gestione fresa BH al posto della lama.
|
-------------------------------------
|
||||||
-- 2023/07/26 DS ver.2.5g1 Per NUM e NUM_PLUS aggiunta gestione rotazione in alto su pezzi alti (G101 EH1) come per TPA in versione 2.3f2.
|
-- NOTE VERSIONI SUCCESSIVE IN GIT --
|
||||||
-- 2023/07/26 DS ver.2.5g2 Per NUM e NUM_PLUS tolta segnalazione errore rotazione a Zmax per pezzi alti non gestita (era su EMT.FLAG == 5).
|
-------------------------------------
|
||||||
-- 2023/07/27 DS ver.2.5g3 Il parametro di cui alle modifiche precedenti ora viene emesso solo se anche EMT.FLAG2==1.
|
|
||||||
-- 2023/08/17 DS ver 2.5h2 Possibilità di nuova gestione SawCOffs e SawBOffs con flag NewBCOffs.
|
|
||||||
-- 2023/08/22 DS ver 2.5h3 Eliminata nuova gestione di 2.5h2 perchè inclinando la direzione utensile rispetto al primo rotante limitava le direzioni raggiungibili.
|
|
||||||
-- 2023/09/29 ver 2.5i1 In BeamData e mlde aggiunta la lettura di alcuni parametri da Ts3Data.
|
|
||||||
-- 2023/10/18 DS ver 2.5j1 Con SpliRot ora si assegna da primo movimento di M111/G111 a EE/P8 il corretto valore 2.
|
|
||||||
-- 2023/10/19 DS ver 2.5j2 Per NUM_PLUS correzione per scarico con pezzo dopo oppure passando da Y a V per eliminare ET2 e scommentare ET2004.
|
|
||||||
-- 2023/10/21 DS ver 2.5j3 Gestione caso speciale di rotazione dopo separazione senza lavorazioni sul posizionamento finale.
|
|
||||||
-- 2023/11/04 DS ver 2.5k1 Eliminata testa H4. Aggiunta visualizzazione rinvio su TC.Aggiunta gestione MIN_MACH_VER per simulazione e generazione.
|
|
||||||
-- 2023/12/13 AV ver.2.5l1 Piccola correzione per errore digitazione variabile in calcolo riposizionamento carrelli (SpecAdjustCarrB3)
|
|
||||||
-- Corretto segno di una variabile in calcolo posizionamento carrelli
|
|
||||||
-- 2023/12/15 AV ver.2.5l2 Migliorato calcolo stima tempi di lavorazione
|
|
||||||
-- 2024/01/19 DS ver 2.6a1 Piccola modifica per direzione preferenziale rinvio da sotto (per evitare di accedere dal lato della barra).
|
|
||||||
-- 2024/01/29 DS ver 2.6a2 In portautensili per mortasa e sega a catena aggiunti ingombri dello stesso.
|
|
||||||
-- 2024/02/09 LM ver 2.6b1 In BeamData aggiunta funzione GetBlockedAxis che sostituisce la GetChainSawBlockedAxis.
|
|
||||||
-- 2024/02/23 AV ver 2.6c1 Prima versione con post-processore common
|
|
||||||
-- Allineamento con common ver. 2.6c1
|
|
||||||
-- 2024/02/23 AV ver 2.6c2 Rimossa chiamata funzione EgtGetSourceDir
|
|
||||||
-- Allineamento con common ver. 2.6c2
|
|
||||||
-- 2024/02/23 AV ver 2.6c3 Allineamento con common ver. 2.6c3
|
|
||||||
-- 2024/02/27 AV ver 2.6c4 Allineamento con common ver. 2.6c4. Aggiunto parametro 'SafeXRotAxes' per rotazione motosega con pezzi alti
|
|
||||||
-- 2024/02/29 AV ver 2.6c5 Allineamento con common ver. 2.6c5
|
|
||||||
-- 2024/03/04 AV ver 2.6c6 Modificato log con nome macchina
|
|
||||||
-- Allineamento con common ver. 2.6c6
|
|
||||||
-- 2024/03/09 DS ver 2.6c7 Migliorie alla geometria macchina e suo caricamento.
|
|
||||||
-- 2024/03/12 AV ver 2.6c8 Allineamento con common ver. 2.6c7.
|
|
||||||
-- 2024/03/28 DS ver 2.6c9 Modificata posizione supporto rinvio.
|
|
||||||
-- 2024/03/28 AV ver 2.6d1 Allineamento con common ver. 2.6c8
|
|
||||||
-- 2024/04/15 AV ver 2.6d2 Allineamento con common ver. 2.6d1
|
|
||||||
-- 2024/04/18 AV ver 2.6d3 Allineamento con common ver. 2.6d2
|
|
||||||
-- 2024/04/30 AV ver 2.6e1 Allineamento con common ver. 2.6e1
|
|
||||||
-- Aggiunta variabile WoodDensity per gestione WOOD_DENSITY
|
|
||||||
-- 2024/05/06 AV ver 2.6e2 Allineamento con common ver. 2.6e2
|
|
||||||
-- 2024/05/06 AV ver 2.6e3 Allineamento con common ver. 2.6e3
|
|
||||||
-- Aggiunte variabili MinJoin(xx) per gestione MIN_JOIN_(xx)
|
|
||||||
-- 2024/06/03 AV ver 2.6f1 Aggiunta funzione GetSetupInfo a BeamData per nuovo automatismo
|
|
||||||
-- 2024/06/13 LM ver 2.6f2 Aggiunta lettura NewTopC da offset Ts3
|
|
||||||
-- 2024/06/13 AV ver 2.6f3_Dev Per controllo NUM, se arco maggiore di 99999mm, si approssima con una retta.
|
|
||||||
-- 2024/07/03 AV ver 2.6g1 Allineamento con common ver. 2.6g1
|
|
||||||
-- 2024/07/04 LM ver 2.6g2 In MachData.ini aggiunto MIN_JOIN_SS
|
|
||||||
-- 2024/09/02 AV ver 2.6i1 Allineamento con common ver. 2.6i1, Rimossi file "Common-"
|
|
||||||
-- 2024/09/02 AV ver 2.6i2 Corretto file YML per compilare file "Common_"
|
|
||||||
-- 2024/09/05 LM ver 2.6i3 In BeamData aggiunte costanti MIN_HEIGHT_ADDED_CUTS, PRECUT_HEAD, PRECUT_TAIL
|
|
||||||
-- 2024/09/06 LM ver 2.6i4 In BeamData le costanti sopra sono configurabili anche da offsets Ts3v7
|
|
||||||
-- 2024/09/16 AV ver 2.6i5 Allineamento con common ver. 2.6i2
|
|
||||||
-- 2024/09/18 LM ver 2.6i6 Modificato YAML per comunicazione versioni a LiMan. Aggiunta PP_NVER, versione in formato numerico.
|
|
||||||
-- 2024/09/23 AV ver 2.6i7 Allineamento con common ver. 2.6i3
|
|
||||||
-- 2024/09/24 AV ver 2.6i8 Allineamento con common ver. 2.6i4
|
|
||||||
-- 2024/09/24 AV ver 2.6i9 Allineamento con common ver. 2.6i5
|
|
||||||
|
|
||||||
require( 'EmtGenerator')
|
require( 'EmtGenerator')
|
||||||
EgtEnableDebug( false)
|
EgtEnableDebug( false)
|
||||||
|
|
||||||
PP_VER = '2.6i9_DEV'
|
PP_VER = '2.7a3_DEV1'
|
||||||
PP_NVER = '2.6.9.9'
|
PP_NVER = '2.7.1.3'
|
||||||
MIN_MACH_VER = '2.5k1'
|
MIN_MACH_VER = '2.5k1'
|
||||||
MACH_NAME = 'Essetre-FAST'
|
MACH_NAME = 'Essetre-FAST'
|
||||||
|
|
||||||
@@ -119,6 +71,8 @@ SawCOffs = 0
|
|||||||
ChSawLen = 90.0
|
ChSawLen = 90.0
|
||||||
AngTr1Offs = 170
|
AngTr1Offs = 170
|
||||||
AngTr1Len = 150
|
AngTr1Len = 150
|
||||||
|
AngTrBHOffs = 154.5
|
||||||
|
AngTrBHLen = 90
|
||||||
TurnerOffs = 200.0
|
TurnerOffs = 200.0
|
||||||
DeltaTabY = 898.0
|
DeltaTabY = 898.0
|
||||||
DeltaTabZ = -1017.8 + MillOffs -- per TPA : -1013.3 + MillOffs -- per NUM : -838.4
|
DeltaTabZ = -1017.8 + MillOffs -- per TPA : -1013.3 + MillOffs -- per NUM : -838.4
|
||||||
@@ -133,9 +87,10 @@ SecondSupport = 0
|
|||||||
SpecialBH = false
|
SpecialBH = false
|
||||||
MaxUnloadLen = 0
|
MaxUnloadLen = 0
|
||||||
BeamHeightForFixRot = 9999 -- per abilitare assegnare 500
|
BeamHeightForFixRot = 9999 -- per abilitare assegnare 500
|
||||||
CoeffVM = 0.5
|
|
||||||
NewTopC = true
|
NewTopC = true
|
||||||
SafeXRotAxes = 150
|
SafeXRotAxes = 150
|
||||||
|
AggreBlockHaus = false
|
||||||
|
EstimationRapidMultiplier = 1
|
||||||
|
|
||||||
-- leggo e aggiorno con parametri da BeamData
|
-- leggo e aggiorno con parametri da BeamData
|
||||||
if BD then
|
if BD then
|
||||||
@@ -186,6 +141,8 @@ if EgtExistsFile( sData) then
|
|||||||
AngTr1Len = Machine.Offsets.OFFSETX_RINV_1 or AngTr1Len
|
AngTr1Len = Machine.Offsets.OFFSETX_RINV_1 or AngTr1Len
|
||||||
--if Machine.Offsets.OFFSETZ_RINV_2 then AngTr2Offs = Machine.Offsets.OFFSETZ_RINV_2 - EgtIf( NumericalControl == 'TPA', MillOffs, 0) end
|
--if Machine.Offsets.OFFSETZ_RINV_2 then AngTr2Offs = Machine.Offsets.OFFSETZ_RINV_2 - EgtIf( NumericalControl == 'TPA', MillOffs, 0) end
|
||||||
--AngTr2Len = Machine.Offsets.OFFSETX_RINV_2 or AngTr2Len
|
--AngTr2Len = Machine.Offsets.OFFSETX_RINV_2 or AngTr2Len
|
||||||
|
if Machine.Offsets.OFFSETZ_RINV_BH then AngTrBHOffs = Machine.Offsets.OFFSETZ_RINV_BH - EgtIf( NumericalControl == 'TPA', MillOffs, 0) end
|
||||||
|
AngTrBHLen = Machine.Offsets.OFFSETX_RINV_BH or AngTrBHLen
|
||||||
TurnerOffs = Machine.Offsets.OFFSETRIB or TurnerOffs
|
TurnerOffs = Machine.Offsets.OFFSETRIB or TurnerOffs
|
||||||
if Machine.Offsets.OFFSETX then DeltaTabY = - Machine.Offsets.OFFSETX end
|
if Machine.Offsets.OFFSETX then DeltaTabY = - Machine.Offsets.OFFSETX end
|
||||||
if Machine.Offsets.OFFSETZ then DeltaTabZ = Machine.Offsets.OFFSETZ + EgtIf( NumericalControl == 'TPA', MillOffs, 0) end
|
if Machine.Offsets.OFFSETZ then DeltaTabZ = Machine.Offsets.OFFSETZ + EgtIf( NumericalControl == 'TPA', MillOffs, 0) end
|
||||||
@@ -201,6 +158,8 @@ if EgtExistsFile( sData) then
|
|||||||
if Machine.Offsets.MIN_JOIN_SL then MinJoinSL = Machine.Offsets.MIN_JOIN_SL end
|
if Machine.Offsets.MIN_JOIN_SL then MinJoinSL = Machine.Offsets.MIN_JOIN_SL end
|
||||||
if Machine.Offsets.MIN_JOIN_LL then MinJoinLL = Machine.Offsets.MIN_JOIN_LL end
|
if Machine.Offsets.MIN_JOIN_LL then MinJoinLL = Machine.Offsets.MIN_JOIN_LL end
|
||||||
if Machine.Offsets.NEWTOPC then NewTopC = ( Machine.Offsets.NEWTOPC == 1) end
|
if Machine.Offsets.NEWTOPC then NewTopC = ( Machine.Offsets.NEWTOPC == 1) end
|
||||||
|
if Machine.Offsets.AGGRE_BH then AggreBlockHaus = ( Machine.Offsets.AGGRE_BH == 1) end
|
||||||
|
if Machine.Offsets.COEFF_STIMATEMPI and Machine.Offsets.COEFF_STIMATEMPI > 0 then EstimationRapidMultiplier = Machine.Offsets.COEFF_STIMATEMPI end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -341,21 +300,21 @@ end
|
|||||||
-- Eventuale rinvio angolare
|
-- Eventuale rinvio angolare
|
||||||
if SecondSupport >= 3 then
|
if SecondSupport >= 3 then
|
||||||
local H5Id = EmtHead {
|
local H5Id = EmtHead {
|
||||||
Name = 'H5',
|
Name = 'H5',
|
||||||
Parent = 'B',
|
Parent = 'B',
|
||||||
HSet = 'H1',
|
HSet = 'H1',
|
||||||
Type = MCH_HT.MULTI,
|
Type = MCH_HT.MULTI,
|
||||||
ExitNbr = 2,
|
ExitNbr = 2,
|
||||||
Pos1 = Point3d( 0, -AngTr1Len, -AngTr1Offs),
|
Pos1 = Point3d( 0, -AngTr1Len, -AngTr1Offs),
|
||||||
TDir1 = Y_AX(),
|
TDir1 = Y_AX(),
|
||||||
Pos2 = Point3d( 0, AngTr1Len, -AngTr1Offs),
|
Pos2 = Point3d( 0, AngTr1Len, -AngTr1Offs),
|
||||||
TDir2 = -Y_AX(),
|
TDir2 = -Y_AX(),
|
||||||
ADir = Z_AX(),
|
ADir = Z_AX(),
|
||||||
Rot1W = 0.2,
|
Rot1W = 0.2,
|
||||||
Rot2Stroke = { -120, 120},
|
Rot2Stroke = { -120, 120},
|
||||||
OthColl = { 'H2', 'B/SOLID', 'C/SOLID'},
|
OthColl = { 'H2', 'B/SOLID', 'C/SOLID'},
|
||||||
Geo = 'H5_HEAD/GEO',
|
Geo = 'H5_HEAD/GEO',
|
||||||
Aux = {'H5_HEAD/SOLID', 'H5_HEAD/COLLISION'}}
|
Aux = {'H5_HEAD/SOLID', 'H5_HEAD/COLLISION'}}
|
||||||
EgtSetInfo( H5Id, 'AGB_TYPE', 2)
|
EgtSetInfo( H5Id, 'AGB_TYPE', 2)
|
||||||
EgtSetInfo( H5Id, 'AGB_DMAX', 240)
|
EgtSetInfo( H5Id, 'AGB_DMAX', 240)
|
||||||
EgtSetInfo( H5Id, 'AGB_ENCH', 44)
|
EgtSetInfo( H5Id, 'AGB_ENCH', 44)
|
||||||
@@ -363,6 +322,22 @@ if SecondSupport >= 3 then
|
|||||||
EgtSetInfo( H5Id, 'AGB_MDIR', X_AX())
|
EgtSetInfo( H5Id, 'AGB_MDIR', X_AX())
|
||||||
EgtSetInfo( H5Id, 'ZMAXONROT', '1,15')
|
EgtSetInfo( H5Id, 'ZMAXONROT', '1,15')
|
||||||
end
|
end
|
||||||
|
-- Eventuale aggregato per lavorazioni BlockHaus
|
||||||
|
if AggreBlockHaus then
|
||||||
|
local H7Id = EmtHead {
|
||||||
|
Name = 'H7',
|
||||||
|
Parent = 'B',
|
||||||
|
HSet = 'H1',
|
||||||
|
Type = MCH_HT.STD,
|
||||||
|
Pos = Point3d( AngTrBHLen, 0, -AngTrBHOffs),
|
||||||
|
TDir = -X_AX(),
|
||||||
|
ADir = X_AX(),
|
||||||
|
Rot1W = 0.2,
|
||||||
|
SolCh = MCH_SCC.ADIR_NEAR,
|
||||||
|
OthColl = {'H2', 'B/SOLID', 'C/SOLID'},
|
||||||
|
Geo = 'H7_HEAD/GEO',
|
||||||
|
Aux = {'H7_HEAD/SOLID', 'H7_HEAD/COLLISION'}}
|
||||||
|
end
|
||||||
-- Morse
|
-- Morse
|
||||||
local YId = EmtAxis {
|
local YId = EmtAxis {
|
||||||
Name = 'Y',
|
Name = 'Y',
|
||||||
@@ -560,6 +535,17 @@ if SpecialBH then
|
|||||||
Geo = 'BASE/T111S'}
|
Geo = 'BASE/T111S'}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if AggreBlockHaus then
|
||||||
|
local TcpSsId = EmtTcPos {
|
||||||
|
Name = 'T121',
|
||||||
|
Parent = 'Base',
|
||||||
|
Pos = Point3d( 678.3, -1.963, -877.5),
|
||||||
|
TDir = Y_AX(),
|
||||||
|
ADir = -X_AX(),
|
||||||
|
Geo = 'BASE/T121',
|
||||||
|
Aux = 'BASE/T121_HS'}
|
||||||
|
end
|
||||||
|
|
||||||
-- Aggiusto posizioni geometriche
|
-- Aggiusto posizioni geometriche
|
||||||
local vtMove = Vector3d( 0, ( DeltaTabY - 913.16), ( DeltaTabZ + 830.037))
|
local vtMove = Vector3d( 0, ( DeltaTabY - 913.16), ( DeltaTabZ + 830.037))
|
||||||
local vtMoveX = Vector3d( 0, 0, ( DeltaTabZ + 830.037))
|
local vtMoveX = Vector3d( 0, 0, ( DeltaTabZ + 830.037))
|
||||||
|
|||||||
Binary file not shown.
+9
-11
@@ -25,13 +25,16 @@
|
|||||||
|
|
||||||
[Chiseling]
|
[Chiseling]
|
||||||
|
|
||||||
[SawRoughing]
|
|
||||||
|
|
||||||
[SawFinishing]
|
|
||||||
|
|
||||||
[GenMachining]
|
[GenMachining]
|
||||||
0=l,LinTol,0.1
|
|
||||||
1=l,MaxLen,2
|
[SurfRoughing]
|
||||||
|
|
||||||
|
[SurfFinishing]
|
||||||
|
0=b,SkipMaxDown,1
|
||||||
|
|
||||||
|
[5AxMilling]
|
||||||
|
0=l,LinTol,0.01
|
||||||
|
1=l,MaxLen,10
|
||||||
2=s,Type,ZigZag
|
2=s,Type,ZigZag
|
||||||
3=d,SideAng,90
|
3=d,SideAng,90
|
||||||
4=l,Step,10
|
4=l,Step,10
|
||||||
@@ -43,8 +46,3 @@
|
|||||||
10=l,LoOrth,0
|
10=l,LoOrth,0
|
||||||
11=l,LoElev,0
|
11=l,LoElev,0
|
||||||
12=b,DirFromGuide,1
|
12=b,DirFromGuide,1
|
||||||
|
|
||||||
[SurfRoughing]
|
|
||||||
|
|
||||||
[SurfFinishing]
|
|
||||||
0=b,SkipMaxDown,1
|
|
||||||
|
|||||||
+3
-1
@@ -26,6 +26,8 @@ local POS = "Pos"
|
|||||||
-- Geom Set
|
-- Geom Set
|
||||||
local GS = {}
|
local GS = {}
|
||||||
|
|
||||||
|
local bAggreBlockHaus = ( EgtGetHeadId( 'H7') ~= nil)
|
||||||
|
|
||||||
-- Configurazione posizioni
|
-- Configurazione posizioni
|
||||||
local PositionTable={{Pos = "Pos1", TcPos = "T1", Head = "H1", Group = "G1"},
|
local PositionTable={{Pos = "Pos1", TcPos = "T1", Head = "H1", Group = "G1"},
|
||||||
{Pos = "Pos2", TcPos = "T2", Head = "H1", Group = "G1"},
|
{Pos = "Pos2", TcPos = "T2", Head = "H1", Group = "G1"},
|
||||||
@@ -37,7 +39,7 @@ local PositionTable={{Pos = "Pos1", TcPos = "T1", Head = "H1", Group = "G1"},
|
|||||||
{Pos = "Pos8", TcPos = "T8", Head = "H1", Group = "G1"},
|
{Pos = "Pos8", TcPos = "T8", Head = "H1", Group = "G1"},
|
||||||
{Pos = "Pos9", TcPos = "T9", Head = "H1", Group = "G1"},
|
{Pos = "Pos9", TcPos = "T9", Head = "H1", Group = "G1"},
|
||||||
{Pos = "Pos10", TcPos = "T10", Head = "H1", Group = "G1"},
|
{Pos = "Pos10", TcPos = "T10", Head = "H1", Group = "G1"},
|
||||||
{Pos = "Pos11", TcPos = "T11", Head = "H1", Group = "G1"},
|
{Pos = "Pos11", TcPos = EgtIf( bAggreBlockHaus, "T121", "T11"), Head = EgtIf( bAggreBlockHaus, "H7", "H1"), Group = "G1"},
|
||||||
{Pos = "Pos12", TcPos = "T42", Head = "H2", Group = "G1"},
|
{Pos = "Pos12", TcPos = "T42", Head = "H2", Group = "G1"},
|
||||||
{Pos = "Pos13", TcPos = "T101", Head = "H3", Group = "G2"}}
|
{Pos = "Pos13", TcPos = "T101", Head = "H3", Group = "G2"}}
|
||||||
local SecSuppId = EgtGetTcPosId( 'T111')
|
local SecSuppId = EgtGetTcPosId( 'T111')
|
||||||
|
|||||||
Binary file not shown.
@@ -1,5 +1,59 @@
|
|||||||
==== Common_FAST Update Log ====
|
==== Common_FAST Update Log ====
|
||||||
|
|
||||||
|
Versione 2.7a3 (08/01/2024)
|
||||||
|
- (GEN) Dopo separazione, in NUM_PLUS, si srive EH1 solo se macro G101, perchè altrimenti non è prevista. Ticket#2239
|
||||||
|
|
||||||
|
Versione 2.7a2 (08/01/2024)
|
||||||
|
- (MLDE-SIM) Aggiunta gestione FACOLTATIVA 'EstimationRapidMultiplier' in MLDE per regolare il tempo stimato. Se non presente in MLDE, default 1.
|
||||||
|
- (SIM) Aggiunta gestione qualità VMILL da impostazioni macchina
|
||||||
|
|
||||||
|
Versione 2.7a1 (07/01/2024)
|
||||||
|
- (MLDE-SIM-GEN) Nuovo aggregato 90° (H7) per fresa tipo BlockHaus. Ticket#2142
|
||||||
|
- (SIM-GEN) Aumentati limiti massimi di pinzaggio minimo
|
||||||
|
|
||||||
|
Versione 2.6l1 (02/12/2024)
|
||||||
|
- (SIM) Corretto movimento VMILL durante scarico pezzo piccolo a caduta
|
||||||
|
- (SIM-GEN) Per decidere posizione parcheggio barra dopo separazione, si considera lunghezza coda del pezzo in lavoro per evitare collisioni. Ticket#2168
|
||||||
|
|
||||||
|
Versione 2.6k1 (11/11/2024)
|
||||||
|
- (GEN) Aggiunta gestione aggregato a T per NUM
|
||||||
|
- (SIM) Tolta gestione testa dummy H4
|
||||||
|
- (SIM-GEN) Aggiustato parametro in calcolo ingombro lavorazione. Ticket#2163
|
||||||
|
|
||||||
|
Versione 2.6j10 (25/10/2024)
|
||||||
|
- (SIM-GEN) Miglioria 2.6j9. Si ribadisce pinza in presa sempre, all'inizio, in base a quella attiva
|
||||||
|
|
||||||
|
Versione 2.6j9 (22/10/2024)
|
||||||
|
- (SIM-GEN) Miglioria 2.6j6. Oltre al passo pellegrino si ribadisce anche quando è scambio diretto
|
||||||
|
|
||||||
|
Versione 2.6j8 (21/10/2024)
|
||||||
|
- (SIM-GEN) Corretto problema tolleranza aggiunto con versione 2.6j7
|
||||||
|
|
||||||
|
Versione 2.6j7 (18/10/2024)
|
||||||
|
- (SIM-GEN) In nuova disposizione carrelli, aggiunta tolleranza di 100 EPS quando si calcola minimo posizionamento
|
||||||
|
|
||||||
|
Versione 2.6j6 (17/10/2024)
|
||||||
|
- (GEN) Si ribadisce che la pinza era in presa, prima di cominciare con lo scambio del passo del pellegrino. Ticket#2121
|
||||||
|
|
||||||
|
Versione 2.6j5 (17/10/2024)
|
||||||
|
- (SIM-GEN) Piccola correzione nuovo riposizionamento. Nel taglio dello scarto finale riposizionava nel vuoto. Ticket#2115
|
||||||
|
|
||||||
|
Versione 2.6j4 (15/10/2024)
|
||||||
|
- (SIM-GEN) Piccola correzione nuovo riposizionamento. Non considerava i 50mm di tolleranza su primo pinzaggio dopo ribaltamento
|
||||||
|
- (SIM-GEN) Gestione attivazione pressore verticale in nuovo riposizionamento
|
||||||
|
|
||||||
|
Versione 2.6j3 (11/10/2024)
|
||||||
|
- (GEN) Corretta scrittura macro start/attesa movimenti per NUM. Veniva scritto codice per TPA.
|
||||||
|
|
||||||
|
Versione 2.6j2 (03/10/2024)
|
||||||
|
- (SIM-GEN) Piccola correzione calcolo posizione carrello durante riposizionamento, nuova gestione
|
||||||
|
|
||||||
|
Versione 2.6j1 (01/10/2024)
|
||||||
|
- (SIM-GEN) Sistemato calcolo in nuova disposzione carrelli
|
||||||
|
|
||||||
|
Versione 2.6i6 (25/09/2024)
|
||||||
|
- (GEN) Migliorata gestione movimenti per portare testa vicino a cambio utensile se trave alta. Ticket#2066
|
||||||
|
|
||||||
Versione 2.6i5 (24/09/2024)
|
Versione 2.6i5 (24/09/2024)
|
||||||
- (SIM-GEN) Tolto controllo su lunghezza maggiore di 200mm introdotto con 2.6i2 perchè non completamente funzionante
|
- (SIM-GEN) Tolto controllo su lunghezza maggiore di 200mm introdotto con 2.6i2 perchè non completamente funzionante
|
||||||
- (GEN) Gestione in OnRapid() di EMT.FLAG=5 (rotazione a Z max per lavorazione successiva). Ora allineata alla simulazione
|
- (GEN) Gestione in OnRapid() di EMT.FLAG=5 (rotazione a Z max per lavorazione successiva). Ora allineata alla simulazione
|
||||||
|
|||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
local InfoCommon_STD_PP = {
|
local InfoCommon_STD_PP = {
|
||||||
NAME = 'Common_FAST', -- nome script PP standard
|
NAME = 'Common_FAST', -- nome script PP standard
|
||||||
VERSION = '2.6i5', -- versione script
|
VERSION = '2.7a3', -- versione script
|
||||||
MIN_MACH_VER_PP_COMMON = '2.5k1' -- versione minima kernel
|
MIN_MACH_VER_PP_COMMON = '2.5k1' -- versione minima kernel
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user