Compare commits
270 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 106d5242e4 | |||
| 440862314a | |||
| 54b0f5ed9a | |||
| 97a163579e | |||
| a90a4070b8 | |||
| 835b0a2637 | |||
| 96faf7cd54 | |||
| 797bf6f8eb | |||
| 88c7786e84 | |||
| 14fc485df7 | |||
| 3dc7d36c7a | |||
| 194a17102c | |||
| 7ab3e14a66 | |||
| 026718885e | |||
| 00aacc6594 | |||
| 55de04f2be | |||
| 77589f595c | |||
| be911ff558 | |||
| 997c5de5d9 | |||
| e6336d59a0 | |||
| 787b3348af | |||
| 2a595eb68a | |||
| 4fa1dbab6e | |||
| b8999246d5 | |||
| 8df9d0fca3 | |||
| a9ed23d74f | |||
| 3c991ae8a0 | |||
| 3732923ad7 | |||
| bf4bf9ba45 | |||
| bcfc3ca059 | |||
| 5761cb5d15 | |||
| dc2d384733 | |||
| bf72eb5191 | |||
| 69ca1baee3 | |||
| 0256bd8c09 | |||
| f62422e7d6 | |||
| 75c20c8c87 | |||
| f50e41e1e3 | |||
| 5d9161d084 | |||
| 97549443d8 | |||
| 5b710e4ac7 | |||
| 1e415d2861 | |||
| 23f6b5b6d0 | |||
| 32672e81d8 | |||
| 618a67508f | |||
| b9877d9df3 | |||
| dfffc4f207 | |||
| bc137e869e | |||
| 81d2f164d3 | |||
| ec2d3c17dc | |||
| ae1b8fc06a | |||
| 9c1269b11b | |||
| 23f22b559f | |||
| 586ce999af | |||
| 2998d6fa4e | |||
| 5b016fd559 | |||
| 3db068936c | |||
| 7394cd769b | |||
| 9301eaa3b6 | |||
| 8e138131c4 | |||
| 14c090b23f | |||
| 0ed07e3541 | |||
| 880873c1d3 | |||
| 830bd62c72 | |||
| c01cc3f2d1 | |||
| 0dba75296d | |||
| 8e707122b2 | |||
| 3aebd1d297 | |||
| b5ffbdea11 | |||
| b7fbaf80f9 | |||
| 6bc6420d01 | |||
| ee7c64627a | |||
| 345224da78 | |||
| 240c837cd4 | |||
| aa2004042e | |||
| e3e9494411 | |||
| d495c3a2af | |||
| 6d562d1ee6 | |||
| 26efc4308b | |||
| df13a4134e | |||
| 33fdb5a64f | |||
| 0b70495e30 | |||
| a27d448f81 | |||
| 984376affd | |||
| a21e44f2d8 | |||
| 7c832dd546 | |||
| 357a317610 | |||
| ac22b1bd85 | |||
| caa62668b3 | |||
| b93f414964 | |||
| f7016c254a | |||
| c7a9e9dd36 | |||
| 4d72475d2e | |||
| 945da649ff | |||
| 4b01c811c4 | |||
| adb7a7c1be | |||
| 5fe00d81ac | |||
| 66f06de42c | |||
| 55c15f027d | |||
| e964c8ce3e | |||
| 8f4c6a2ad2 | |||
| 8c43edfbff | |||
| 23bc412e02 | |||
| d9a688f082 | |||
| 3e1377c159 | |||
| 4586a2fcbe | |||
| 333cb79179 | |||
| 13ac6a5ee0 | |||
| 0f06de6ee5 | |||
| a6076a694d | |||
| 347e215b7e | |||
| 5c7f506108 | |||
| 07bc0c49f3 | |||
| b2c70129c3 | |||
| 9c80da84fe | |||
| 739dddd97a | |||
| e2091aa8e6 | |||
| 26ecb4d05f | |||
| 1120c84a03 | |||
| 7eff40db37 | |||
| 9c8106c92a | |||
| 3e1a1270bb | |||
| 10e67aef11 | |||
| c699e397f4 | |||
| 4ccfb88447 | |||
| 801cca3bb7 | |||
| 4b9b1a352e | |||
| b2c2f4819b | |||
| e06f67b22a | |||
| e765940154 | |||
| 429c049a44 | |||
| a9a7b2c14e | |||
| a61affc726 | |||
| b9bc1f0922 | |||
| 24cbfe0737 | |||
| 0272e7d606 | |||
| 6df44b4a74 | |||
| 2d43a594d1 | |||
| 5cb0055dc9 | |||
| e33a6c163e | |||
| 171ff119b0 | |||
| 8733ed4007 | |||
| c650b259ff | |||
| c74ff69f55 | |||
| 64bbe6947f | |||
| a3ad415f3e | |||
| 382736ae14 | |||
| b7be5c1b2a | |||
| 67c6573974 | |||
| 85fbb5830d | |||
| 5b3d0e897f | |||
| 8a4bbff20b | |||
| 6e799468ae | |||
| 524bbb1edc | |||
| 7fa71a1002 | |||
| 03218233f7 | |||
| 8a3d1e05f6 | |||
| 009216d59c | |||
| 20b54428f8 | |||
| 492af68caf | |||
| e6e37c6c51 | |||
| 9cffde0047 | |||
| 5af712e8a9 | |||
| 91d5656a3d | |||
| c05b8a4117 | |||
| 824cf6eda2 | |||
| f1262e191f | |||
| 343298e87f | |||
| 49951262c9 | |||
| be109120f1 | |||
| f677ef6213 | |||
| dfb5952a85 | |||
| cdbb04441b | |||
| 5620e2b9e5 | |||
| 9b99aa2a40 | |||
| 97ae764439 | |||
| 566bb9e592 | |||
| 9948a9cfeb | |||
| 8901acb95a | |||
| 74d58029a5 | |||
| f25aecf62a | |||
| 3d4246e540 | |||
| dad97ad557 | |||
| 6c84aacd5a | |||
| 3cd9d39aa0 | |||
| 77bb66d8d6 | |||
| a3b714f790 | |||
| 929e1308a9 | |||
| 37d98a4324 | |||
| f3890dc20f | |||
| 8bd92a578b | |||
| 37b9eb3a9b | |||
| ac09d872eb | |||
| 047669d63f | |||
| fcaeb8530b | |||
| d174f8b79f | |||
| 621a31e283 | |||
| acdc1cfce6 | |||
| 8d162200b1 | |||
| 59e132478d | |||
| 62aefca5c8 | |||
| 530f70de94 | |||
| 04a2d35872 | |||
| edf7a29dfb | |||
| 2edcbf52ad | |||
| 0fa2ea3c67 | |||
| 9789092791 | |||
| bdd4cc17a4 | |||
| b14b3bfc26 | |||
| c77d354a5c | |||
| a47cb7d9be | |||
| fca293d3db | |||
| 1d4f262aef | |||
| cc299918f6 | |||
| 4e390c3eea | |||
| 63452aa0d5 | |||
| 0f78c5186f | |||
| 55c72bf40c | |||
| c2d4c7166c | |||
| 5470f2dbbb | |||
| fe1e3b1550 | |||
| 3ab4e8326a | |||
| f743ebdcf5 | |||
| 0ec16e7f4c | |||
| 80a9bc337e | |||
| 399e239d93 | |||
| 4383459661 | |||
| ba8f960e4f | |||
| 1f5b334bfb | |||
| 600dc8ff8b | |||
| 332cff04dc | |||
| eb0a32eab4 | |||
| bda944cf0a | |||
| edeb12fd51 | |||
| 7064857ff2 | |||
| 1c25c71da0 | |||
| 2089e50c5e | |||
| 0dee81a170 | |||
| fd2ae40d50 | |||
| b9914e0d2f | |||
| a348800d87 | |||
| 2478117e49 | |||
| c8e2a76964 | |||
| 3e8874907f | |||
| 8a2954c6fe | |||
| 701a803eeb | |||
| c7ba99b94a | |||
| b44dfb952d | |||
| 5a65152212 | |||
| 768cc2f099 | |||
| 5c77772f3c | |||
| 8fb7138855 | |||
| f7fa43e849 | |||
| 728dfa48c6 | |||
| c60570be6e | |||
| ce73fe9d1b | |||
| 281f14667f | |||
| dc91813d5a | |||
| 193c0911b4 | |||
| 4bbc00b181 | |||
| 94095e79a6 | |||
| c3a61b1433 | |||
| 1555d809df | |||
| 08cde3ae2c | |||
| 86665b87d8 | |||
| 524bfc43e1 | |||
| 69bc812e35 | |||
| 41e6ab02e3 | |||
| 50aa503f3a | |||
| 78527ac703 |
+724
-273
File diff suppressed because it is too large
Load Diff
+746
-190
File diff suppressed because it is too large
Load Diff
+171
-49
@@ -4,9 +4,67 @@
|
||||
require( 'EmtGenerator')
|
||||
EgtEnableDebug( false)
|
||||
|
||||
-- Carico i dati globali
|
||||
local sBaseDir = EgtGetSourceDir()
|
||||
BD = dofile( sBaseDir .. 'Beam\\BeamData.lua')
|
||||
-- Carico libreria
|
||||
local BD = require( 'BeamData')
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- *** Generic Machinings ***
|
||||
---------------------------------------------------------------------
|
||||
require( 'EmtGenMachining')
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- *** Special GetPrevMachiningOffset ***
|
||||
---------------------------------------------------------------------
|
||||
-----------------------------------------------------------------------------------------
|
||||
function OnSpecialGetPrevMachiningOffset()
|
||||
-- Aggiorno posizione della testa della trave a seguito di movimenti delle pinze non previsti tra le fasi
|
||||
local function TPosUpdate()
|
||||
local nClId = EgtGetFirstNameInGroup( EMC.CURRMCHID, 'CL') -- recupero Id del gruppo CL della lavorazione corrente
|
||||
local nPathId = EgtGetFirstInGroup( nClId or GDB_ID.NULL) -- Id del primo gruppo nella lavorazione (P1)
|
||||
if not nPathId then
|
||||
EMC.ERR = 12
|
||||
EMC.MSG = ' Error : CL group path not found'
|
||||
return
|
||||
end
|
||||
local dAuxMoveCount = EgtGetInfo( nPathId, 'AS#', 'd') or 0 -- numero di movimenti ausiliari
|
||||
local dTRepos = nil
|
||||
-- controlla ogni gruppo di movimenti ausiliari
|
||||
for i = 1, dAuxMoveCount do
|
||||
local aAuxMove = EgtGetInfo( nPathId, 'AS' .. tostring( i), 'vs') or {} -- array contenete i parametri di ogni gruppo
|
||||
-- controlla solo i movimenti della testa trave e salva l'ultimo
|
||||
if aAuxMove[1] == '2' or aAuxMove[1] == '3' then
|
||||
for j = 2, #aAuxMove do
|
||||
if aAuxMove[j] == 'T' then
|
||||
dTRepos = aAuxMove[j+1]
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return dTRepos
|
||||
end
|
||||
|
||||
-- default
|
||||
EMC.ERR = 0
|
||||
EMC.PREVOFFSX = 0
|
||||
-- se c'è cambio di fase tra le lavorazioni (quindi la precedente è l'ultima della sua fase e la corrente la prima)
|
||||
if EMC.PREVPHASE ~= EMC.CURRPHASE then
|
||||
-- se la fase corrente è di inizio lavorazione di nuova trave
|
||||
if IsStartOrRestPhase( EMC.CURRPHASE) then
|
||||
-- recupero la posizione finale della lavorazione precedente
|
||||
local vPrevAx = EmtGetFinalAxesPos( EMC.PREVMCHID)
|
||||
-- ricava se e quanto la trave viene spostata tra le due fasi dai movimenti ausiliari e corregge l'offset di fine fase
|
||||
local dNewTPos = TPosUpdate()
|
||||
-- se ci sono dei movimenti della testa trave tra le due fasi ricava il delta tra la vecchia e la nuova posizione
|
||||
if dNewTPos then
|
||||
EMC.PREVOFFSX = dNewTPos - vPrevAx[1]
|
||||
-- oppure la X (L1) di questa corrisponde alla posizione iniziale della nuova trave, se ne deduce l'offset
|
||||
else
|
||||
EMC.PREVOFFSX = ParkV1 - vPrevAx[1]
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
---------------------- OnSpecialGetMaxZ -----------------------------
|
||||
---------------------------------------------------------------------
|
||||
@@ -73,8 +131,8 @@ function OnSpecialGetMaxZ()
|
||||
local vMZ = {{ Tz=0.85, Ez=390}, { Tz=0.5, Ez=280}, { Tz=-0.01, Ez=160}, { Tz=-0.5, Ez=1}, { Tz=-0.61, Ez=1}}
|
||||
EMC.MAXZ = ParkZ1 + CalcExtraZ( vtTpZm, vtT, vMZ)
|
||||
end
|
||||
elseif EMC.HEAD == 'H12' and sHead_TC == 'Head1_TC1' then
|
||||
if vtTp:getX() > 0.3 and vtT:getX() > 0.3 then
|
||||
elseif ( EMC.HEAD == 'H12' or EMC.HEAD == 'H17') and sHead_TC == 'Head1_TC1' then
|
||||
if vtTp:getX() > 0.4 and vtT:getX() > 0.4 then
|
||||
if bBSameSign and abs( EMC.R1 - EMC.R1p) < 165 then
|
||||
EMC.MAXZ = MaxZ1 - EgtIf( abs( EMC.R2) < 90.1 and abs( EMC.R2p) < 90.1, 0, 130)
|
||||
elseif vtTp:getZ() > 0.707 or vtT:getZ() > 0.707 then
|
||||
@@ -96,7 +154,7 @@ function OnSpecialGetMaxZ()
|
||||
EMC.MAXZ = ParkZ1 + CalcExtraZ( vtTpZm, vtT, vMZ)
|
||||
end
|
||||
elseif EMC.HEAD == 'H12' and sHead_TC == 'Head1_TC2' then
|
||||
if vtTp:getX() > 0.3 and vtT:getX() > 0.3 then
|
||||
if vtTp:getX() > 0.4 and vtT:getX() > 0.4 then
|
||||
if bBSameSign and abs( EMC.R1 - EMC.R1p) < 165 then
|
||||
EMC.MAXZ = MaxZ1 - EgtIf( abs( EMC.R2) < 90.1 and abs( EMC.R2p) < 90.1, 0, 130)
|
||||
elseif vtTp:getZ() > 0.707 or vtT:getZ() > 0.707 then
|
||||
@@ -125,7 +183,7 @@ function OnSpecialGetMaxZ()
|
||||
EMC.MAXZ = ParkZ2 + CalcExtraZ( vtTpZm, vtT, vMZ)
|
||||
end
|
||||
elseif EMC.HEAD == 'H22' then
|
||||
if vtTp:getX() > 0.3 and vtT:getX() > 0.3 then
|
||||
if vtTp:getX() > 0.4 and vtT:getX() > 0.4 then
|
||||
if bBSameSign and abs( EMC.R1 - EMC.R1p) < 165 then
|
||||
EMC.MAXZ = MaxZ2 - EgtIf( abs( EMC.R2) < 90.1 and abs( EMC.R2p) < 90.1, 0, 130)
|
||||
elseif vtTp:getZ() > 0.707 or vtT:getZ() > 0.707 then
|
||||
@@ -174,7 +232,7 @@ function OnSpecialMoveZup()
|
||||
if EMC.HEAD == 'H11' or EMC.HEAD == 'H21' then
|
||||
;
|
||||
-- se lama posizionata su CU prossimo a testa 1
|
||||
elseif EMC.HEAD == 'H12' and sHead_TC == 'Head1_TC1' then
|
||||
elseif ( EMC.HEAD == 'H12' or EMC.HEAD == 'H17') and sHead_TC == 'Head1_TC1' then
|
||||
-- se inclinata oltre 90 gradi e interferisce con la trave
|
||||
if ( EMC.R2 > 87.9 and ( EMC.R1 < 15.0 or EMC.R1 > 180.0)) or ( EMC.R2 < -87.9 and ( EMC.R1 > -15.0 and EMC.R1 < 180.0)) then
|
||||
local dZref = dZmax + min( 330 * vtT:getZ(), 0) + 260 * ( 1 - sqrt( 1- vtT:getZ() * vtT:getZ()))
|
||||
@@ -224,7 +282,7 @@ local MIN_BACK_ENG_V = 115 -- ingombro asse Z a sinistra
|
||||
local AGG_V = MinDeltaYV -- ingombro rulli pressori + sicurezza
|
||||
local MIN_CLAMP_5 = 150 -- minima presa con la pinza speciale (pinza 5)
|
||||
local SIC_CLAMP_5 = 50 -- sicurezza testa da pinza speciale
|
||||
local MAX_BACK_CLAMP_5 = 320 -- massima sporgenza posteriore del pezzo da pinza speciale
|
||||
local MAX_BACK_CLAMP_5 = EgtClamp( MaxBackClamp5 or 320, 200, 380) -- massima sporgenza posteriore del pezzo da pinza speciale
|
||||
|
||||
----------------------- Variabili -----------------------------------
|
||||
local Test = false
|
||||
@@ -291,6 +349,22 @@ local function GetNextStartOrRestPhase( nPhase)
|
||||
return nNextPhase
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function IsFirstMachiningOfStart( nMchId)
|
||||
-- se non è fase inizio di pezzo, ritorno risultato negativo
|
||||
if not IsStartOrRestPhase( EMC.PHASE) then
|
||||
return false
|
||||
end
|
||||
-- recupero la precedente operazione attiva
|
||||
local nPrevOperId = EgtGetPrevActiveOperation( nMchId)
|
||||
-- se non esiste o non è una disposizione, ritorno risultato negativo
|
||||
if not nPrevOperId or EgtGetOperationType( nPrevOperId) ~= MCH_OY.DISP then
|
||||
return false
|
||||
end
|
||||
-- è la prima
|
||||
return true
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function GetPhaseRot( nPhase)
|
||||
return ( EgtGetInfo( EgtGetPhaseDisposition( nPhase) or GDB_ID.NULL, 'ROT', 'i') or 0)
|
||||
@@ -639,6 +713,24 @@ end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function OnPostApplyMachining()
|
||||
-- Inizializzo codice di errore
|
||||
EMC.ERR = 0
|
||||
-- Verifico se ultima lavorazione della fase
|
||||
local nNextOpeId = EgtGetNextActiveOperation( EMC.MCHID)
|
||||
local bMchLast = ( not nNextOpeId or EgtGetOperationPhase( nNextOpeId) ~= EMC.PHASE) -- Agisco sui diversi percorsi della lavorazione
|
||||
local nPathId = EgtGetFirstInGroup( EgtGetFirstNameInGroup( EMC.MCHID, 'CL') or GDB_ID.NULL)
|
||||
while nPathId do
|
||||
-- recupero id del successivo
|
||||
nPathId = EgtGetNext( nPathId)
|
||||
-- verifico se ultimo percorso di ultima lavorazione della fase
|
||||
local bLast = ( bMchLast and ( not nPathId))
|
||||
-- se ultimo, elimino ritorno in home
|
||||
if bLast then EgtRemoveOperationHome( EMC.MCHID) end
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function OnSpecialApplyMachining()
|
||||
|
||||
EgtOutLog( ' Lavorazione : ' .. EgtGetName( EMC.MCHID), 1)
|
||||
|
||||
@@ -746,7 +838,7 @@ function OnPostApplyMachining()
|
||||
-- verifico se ultimo percorso di ultima lavorazione della fase
|
||||
local bLast = ( bMchLast and ( not nPathId))
|
||||
-- se ultimo, elimino ritorno in home
|
||||
if bLast then EgtRemoveOperationHome( EMC.MCHID) end
|
||||
-- if bLast then EgtRemoveOperationHome( EMC.MCHID) end
|
||||
-- salvo lo stato dei carrelli
|
||||
local OriTPos = EMC.TPOS
|
||||
local OriY1Delta = EMC.Y1DELTA
|
||||
@@ -809,6 +901,13 @@ end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function SpecApplyPath( bPreSplit, bSplitting, bPreCut, bCutting, bUnload, bPreRotMch)
|
||||
-- mi salvo info lavorazione su una lista
|
||||
local AuxInfoMach = {}
|
||||
AuxInfoMach.bPreSplit = bPreSplit
|
||||
AuxInfoMach.bSplitting = bSplitting
|
||||
AuxInfoMach.bPreCut = bPreCut
|
||||
AuxInfoMach.bCutting = bCutting
|
||||
AuxInfoMach.bUnload = bUnload
|
||||
|
||||
-- Assegno flag di pezzo separato dal resto del grezzo
|
||||
SPLIT = IsEndPhase( EMC.PHASE) or IsMid2Phase( EMC.PHASE) or IsEnd2Phase( EMC.PHASE)
|
||||
@@ -839,6 +938,7 @@ function SpecApplyPath( bPreSplit, bSplitting, bPreCut, bCutting, bUnload, bPreR
|
||||
EMC.SB = b3Tot:getDimY()
|
||||
EMC.HB = b3Tot:getDimZ()
|
||||
EMC.LT = b3Raw:getDimX()
|
||||
EgtOutLog( ' BarLen='..EgtNumToString( EMC.LB, 1), 3)
|
||||
|
||||
-- Aggiorno limiti di presa
|
||||
UpdateMinJoin()
|
||||
@@ -905,7 +1005,7 @@ function SpecApplyPath( bPreSplit, bSplitting, bPreCut, bCutting, bUnload, bPreR
|
||||
local dPosT = LoadT
|
||||
if IsFirstMachiningAfterRotation( EMC.MCHID) then dPosT = dPosT + TurnerOffs end
|
||||
local vCmd = SpecCalcLoad( dPosT, dDistFront, max( dDistBack, MinJoin + EgtIf( SPLIT, EMC.TCING, 0), EMC.LB - ( MaxY1 - MinY1) + 6))
|
||||
local vCmd2 = SpecCalcCarriages( dDistFront, dDistBack, dRollFront, dRollBack, dY1DeltaMaxSP, dY2DeltaMinUL, nChar)
|
||||
local vCmd2 = SpecCalcCarriages( dDistFront, dDistBack, dRollFront, dRollBack, dY1DeltaMaxSP, dY2DeltaMinUL, nChar, AuxInfoMach)
|
||||
if bSplitting and EMC.ERR == 18 then
|
||||
table.insert( vCmd, { 22, dRollBack, -dRollFront})
|
||||
end
|
||||
@@ -918,7 +1018,7 @@ function SpecApplyPath( bPreSplit, bSplitting, bPreCut, bCutting, bUnload, bPreR
|
||||
|
||||
-- Se altrimenti carri entrambi diponibili, eseguo calcoli per carrelli
|
||||
elseif not IsEndPhase( EMC.PHASE) then
|
||||
local vCmd = SpecCalcCarriages( dDistFront, dDistBack, dRollFront, dRollBack, dY1DeltaMaxSP, dY2DeltaMinUL, nChar)
|
||||
local vCmd = SpecCalcCarriages( dDistFront, dDistBack, dRollFront, dRollBack, dY1DeltaMaxSP, dY2DeltaMinUL, nChar, AuxInfoMach)
|
||||
-- Se non ci sono spostamenti, confermo i parametri di aggancio e di posizione roller
|
||||
if SpecTestOnlyRemarkInCmds( vCmd) then
|
||||
table.insert( vCmd, { 21, EgtIf( EMC.Y1DELTA, EMC.Y1DELTA, 0), EgtIf( EMC.Y2DELTA, EMC.Y2DELTA, 0)})
|
||||
@@ -1100,8 +1200,12 @@ function SpecialCalcMachiningEncumbrance( nMchId, bPreCut)
|
||||
end
|
||||
b3Enc = EgtGetBBoxGlob( EgtGetAxisId( 'C2'), GDB_BB.ONLY_VISIBLE)
|
||||
end
|
||||
local dRollFront = max( b3Enc:getMax():getX(), MIN_FRONT_ENG_V) + SIC_V
|
||||
local dRollBack = max( -b3Enc:getMin():getX(), MIN_BACK_ENG_V) + SIC_V
|
||||
|
||||
-- Forzo la distanza di sicurezza da utensile
|
||||
local nSecRollerDist = EgtGetValInNotes( EgtTdbGetCurrToolParam( MCH_TP.USERNOTES), 'SECDIST', 'i') or SIC_V
|
||||
|
||||
local dRollFront = max( b3Enc:getMax():getX(), MIN_FRONT_ENG_V) + nSecRollerDist
|
||||
local dRollBack = max( -b3Enc:getMin():getX(), MIN_BACK_ENG_V) + nSecRollerDist
|
||||
EgtOutLog( ' RollFront = ' .. EgtNumToString( dRollFront, 1) .. ' RollBack = ' .. EgtNumToString( dRollBack, 1), 3)
|
||||
-- Calcolo della posizione della Punta Utensile rispetto allo Zero Macchina
|
||||
local ptTip
|
||||
@@ -1242,7 +1346,7 @@ function SpecCalcLoad( dPosT, dDistFront, dDistBack)
|
||||
end -- SpecAdjustLoad [L]
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function SpecCalcCarriages( dDistFront, dDistBack, dRollFront, dRollBack, dY1DeltaMaxSP, dY2DeltaMinUL, nChar)
|
||||
function SpecCalcCarriages( dDistFront, dDistBack, dRollFront, dRollBack, dY1DeltaMaxSP, dY2DeltaMinUL, nChar, AuxInfoMach)
|
||||
|
||||
local MinFrontJoin = MinJoin + EMC.HCING + EMC.HOVM
|
||||
local MyMinOther = MinOther + EgtIf( EMC.CNT == 1, AggLoad, 0)
|
||||
@@ -1281,13 +1385,11 @@ function SpecCalcCarriages( dDistFront, dDistBack, dRollFront, dRollBack, dY1Del
|
||||
WorkTab.dV2PosF = -dRollFront
|
||||
WorkTab.bV2CloseF = false
|
||||
|
||||
-- aggiuntivo per non avere problemi con pezzi a caduta
|
||||
if WorkTab.dY1DeltaMaxF - WorkTab.dY1DeltaMinF > 5 * BD.CHAR_EXTRA_DIST then
|
||||
WorkTab.dY1DeltaMinF = WorkTab.dY1DeltaMinF + 4 * BD.CHAR_EXTRA_DIST
|
||||
elseif WorkTab.dY1DeltaMaxF - WorkTab.dY1DeltaMinF > 2.5 * BD.CHAR_EXTRA_DIST then
|
||||
WorkTab.dY1DeltaMinF = WorkTab.dY1DeltaMinF + 2 * BD.CHAR_EXTRA_DIST
|
||||
elseif WorkTab.dY1DeltaMaxF - WorkTab.dY1DeltaMinF > 1.5 * BD.CHAR_EXTRA_DIST then
|
||||
WorkTab.dY1DeltaMinF = WorkTab.dY1DeltaMinF + BD.CHAR_EXTRA_DIST
|
||||
-- dopo che si è calcolato il minimo e massimo dell'intervallo, verifico che in testa rimanga almeno il minimo per poter fare passaggio pinze e scaricare
|
||||
if AuxInfoMach and ( AuxInfoMach.bSplitting or AuxInfoMach.bCutting) then
|
||||
if WorkTab.dY1DeltaMaxF - WorkTab.dY1DeltaMinF > 1.5 * BD.CHAR_EXTRA_DIST and WorkTab.dY1DeltaMaxF > EMC.LT + BD.MINRAW_S + BD.CHAR_EXTRA_DIST then
|
||||
WorkTab.dY1DeltaMinF = max( min( EMC.LT + BD.MINRAW_S, WorkTab.dY1DeltaMaxF - 1), WorkTab.dY1DeltaMinF)
|
||||
end
|
||||
end
|
||||
|
||||
-- verifico validità intervallo ammesso per Y1
|
||||
@@ -1297,6 +1399,9 @@ function SpecCalcCarriages( dDistFront, dDistBack, dRollFront, dRollBack, dY1Del
|
||||
return {}
|
||||
end
|
||||
|
||||
-- al carico o con prima lavorazione di un pezzo si deve ignorare l'ingombro delle lavorazioni di testa per il pinzaggio
|
||||
if EMC.LOAD or IsFirstMachiningOfStart( EMC.MCHID) then EMC.HCING = 0 end
|
||||
|
||||
return SpecAdjustCarriages( WorkTab)
|
||||
|
||||
-- [B] se richiesti entrambi e posso metterli
|
||||
@@ -1323,13 +1428,11 @@ function SpecCalcCarriages( dDistFront, dDistBack, dRollFront, dRollBack, dY1Del
|
||||
WorkTab.dV2PosF = -dRollFront
|
||||
WorkTab.bV2CloseF = false
|
||||
|
||||
-- aggiuntivo per minimizzare scambi carrelli
|
||||
if WorkTab.dY1DeltaMaxF - WorkTab.dY1DeltaMinF > 5 * BD.CHAR_EXTRA_DIST then
|
||||
WorkTab.dY1DeltaMinF = WorkTab.dY1DeltaMinF + 4 * BD.CHAR_EXTRA_DIST
|
||||
elseif WorkTab.dY1DeltaMaxF - WorkTab.dY1DeltaMinF > 2.5 * BD.CHAR_EXTRA_DIST then
|
||||
WorkTab.dY1DeltaMinF = WorkTab.dY1DeltaMinF + 2 * BD.CHAR_EXTRA_DIST
|
||||
elseif WorkTab.dY1DeltaMaxF - WorkTab.dY1DeltaMinF > 1.5 * BD.CHAR_EXTRA_DIST then
|
||||
WorkTab.dY1DeltaMinF = WorkTab.dY1DeltaMinF + BD.CHAR_EXTRA_DIST
|
||||
-- dopo che si è calcolato il minimo e massimo dell'intervallo, verifico che in testa rimanga almeno il minimo per poter fare passaggio pinze e scaricare
|
||||
if AuxInfoMach and ( AuxInfoMach.bSplitting or AuxInfoMach.bCutting) then
|
||||
if WorkTab.dY1DeltaMaxF - WorkTab.dY1DeltaMinF > 1.5 * BD.CHAR_EXTRA_DIST and WorkTab.dY1DeltaMaxF > EMC.LT + BD.MINRAW_S + BD.CHAR_EXTRA_DIST then
|
||||
WorkTab.dY1DeltaMinF = max( min( EMC.LT + BD.MINRAW_S, WorkTab.dY1DeltaMaxF - 1), WorkTab.dY1DeltaMinF)
|
||||
end
|
||||
end
|
||||
|
||||
-- verifico validità intervallo ammesso per Y1
|
||||
@@ -1397,7 +1500,14 @@ function SpecCalcSplit( dLenRaw, dMaxLenLeft)
|
||||
local vCmd = {}
|
||||
EgtOutLog( ' *[S]', 1)
|
||||
local bSplit = ( EMC.Y2DELTA ~= nil or EMC.W2DELTA ~= nil)
|
||||
local ParkT = EgtIf( bSplit and dMaxLenLeft > ParkV1 - 50, LoadT, ParkV1)
|
||||
local ParkT = ParkV1
|
||||
if bSplit then
|
||||
if dMaxLenLeft + 100 > LoadT then
|
||||
ParkT = dMaxLenLeft + 300
|
||||
elseif dMaxLenLeft + 100 > ParkV1 then
|
||||
ParkT = LoadT
|
||||
end
|
||||
end
|
||||
local sType = EgtIf( EMC.Y2DELTA, 'Split', EgtIf( EMC.W2DELTA, 'SpecSplit', 'Fall'))
|
||||
table.insert( vCmd, { 0, sType})
|
||||
if not bSplit then EnsureZmax( false, vCmd) end
|
||||
@@ -1520,8 +1630,11 @@ function SpecCalcUnload()
|
||||
EgtOutLog( ' *[U1]', 1)
|
||||
end
|
||||
local vCmd = {}
|
||||
-- Tipo di scarico
|
||||
local bStdUl = ( not MaxUnloadLen or MaxUnloadLen < 1 or EMC.LB - EMC.HOVM < MaxUnloadLen + 1)
|
||||
|
||||
-- Commento
|
||||
table.insert( vCmd, { 0, 'Unloading'})
|
||||
table.insert( vCmd, { 0, 'Unloading', EgtIf( bStdUl, 'Unloading', 'Manual Unloading')})
|
||||
-- posizionamento sicuro teste e rulli (non serve ?)
|
||||
--table.insert( vCmd, { 4, 0})
|
||||
-- Se pinza Y chiusa, la apro
|
||||
@@ -1529,11 +1642,15 @@ function SpecCalcUnload()
|
||||
table.insert( vCmd, { 11, 0})
|
||||
EMC.CNT = nil
|
||||
end
|
||||
-- Sposto il pezzo in posizione di scarico
|
||||
local dFinT = UnloadT - EMC.LB
|
||||
local dFinY2 = dFinT + EMC.Y2DELTA
|
||||
table.insert( vCmd, { 2, 'T', dFinT, 'Y2', dFinY2})
|
||||
EgtOutLog( ' Y2PosF=' .. EgtNumToString( dFinY2), 1)
|
||||
-- Se non supero la lunghezza massima di scarico, sposto il pezzo in posizione di scarico
|
||||
if bStdUl then
|
||||
local dFinT = UnloadT - EMC.LB
|
||||
local dFinY2 = dFinT + EMC.Y2DELTA
|
||||
table.insert( vCmd, { 2, 'T', dFinT, 'Y2', dFinY2})
|
||||
EgtOutLog( ' Y2PosF=' .. EgtNumToString( dFinY2), 1)
|
||||
else
|
||||
table.insert( vCmd, { 1, 'Y2', MaxY2})
|
||||
end
|
||||
-- apro la morsa
|
||||
table.insert( vCmd, { 12, 0})
|
||||
-- riporto il carrello in home
|
||||
@@ -1633,19 +1750,24 @@ function SpecAdjustCarriages( WorkTab)
|
||||
local bCloseV = false
|
||||
if WorkTab.dY1DeltaI then
|
||||
if WorkTab.dY1DeltaI <= MinJoin + WorkTab.dV1PosI - WorkTab.dV2PosI + 2 * AGG_V + EMC.HCING + EMC.HOVM + EgtIf( EMC.CNT == 1, AggLoad, 0) then
|
||||
bCloseV = true
|
||||
bCloseV = true
|
||||
end
|
||||
end
|
||||
if WorkTab.dY2DeltaI then
|
||||
if EMC.LB - WorkTab.dY2DeltaI <= MinJoin + WorkTab.dV1PosI - WorkTab.dV2PosI + 2 * AGG_V + EgtIf( SPLIT, EMC.TCING, 0) + EgtIf( EMC.CNT == 1, AggLoad, 0) then
|
||||
bCloseV = true
|
||||
bCloseV = true
|
||||
end
|
||||
end
|
||||
if WorkTab.dY2DeltaMinF then
|
||||
if EMC.LB - WorkTab.dY2DeltaMinF <= MinJoin + WorkTab.dV1PosI - WorkTab.dV2PosI + 2 * AGG_V + EgtIf( SPLIT, EMC.TCING, 0) + EgtIf( EMC.CNT == 1, AggLoad, 0) then
|
||||
bCloseV = true
|
||||
bCloseV = true
|
||||
end
|
||||
end
|
||||
-- se i pezzi del cliente sono molto storti, si forza la chiusura per evitare che vada a sbattere. Se parametro non presente, si chiude solo se necessario
|
||||
if ForceToCloseRollersGate then
|
||||
bCloseV = true
|
||||
end
|
||||
|
||||
WorkTab.bCloseV = bCloseV
|
||||
EgtOutLog( ' Tool : '..( EgtIf( bChangedTool, 'CHANGED', 'same')).. ' CloseV : '..( EgtIf( bCloseV, 'TRUE', 'false')), 1)
|
||||
|
||||
@@ -1801,7 +1923,7 @@ local function MaxDispl( TabI, vCmd, sType)
|
||||
-- allontano (Y1+T) e (Y2)
|
||||
dY1a = MaxY1
|
||||
dY2a = MinY2
|
||||
dTa = ( MaxY1 - TabI.dY1PosI) + dTa
|
||||
dTa = ( dY1a - TabI.dY1PosI) + dTa
|
||||
-- **[M2]** = allontanamento dei trascinatori con Y2 in presa
|
||||
elseif sType == 'M2' then
|
||||
EmitComment( vCmd, '[M2]')
|
||||
@@ -1812,7 +1934,7 @@ local function MaxDispl( TabI, vCmd, sType)
|
||||
-- allontano (Y2+T) e (Y1)
|
||||
dY1a = MaxY1
|
||||
dY2a = MinY2
|
||||
dTa = ( MinY2 - TabI.dY2PosI) + dTa
|
||||
dTa = ( dY2a - TabI.dY2PosI) + dTa
|
||||
-- **[M3]** = accentramento dei trascinatori con Y1 in presa
|
||||
elseif sType == 'M3' then
|
||||
EmitComment( vCmd, '[M3]')
|
||||
@@ -1822,7 +1944,7 @@ local function MaxDispl( TabI, vCmd, sType)
|
||||
-- accentro (Y1+T) e (Y2)
|
||||
dY1a = TabI.MyMinY1V1
|
||||
dY2a = TabI.MaxY2V2
|
||||
dTa = ( TabI.MyMinY1V1 - TabI.dY1PosI) + dTa
|
||||
dTa = ( dY1a - TabI.dY1PosI) + dTa
|
||||
-- **[M4]** = accentramento dei trascinatori con Y2 in presa
|
||||
elseif sType == 'M4' then
|
||||
EmitComment( vCmd, '[M4]')
|
||||
@@ -1833,7 +1955,7 @@ local function MaxDispl( TabI, vCmd, sType)
|
||||
-- accentro (Y2+T) e (Y1)
|
||||
dY1a = TabI.MyMinY1V1
|
||||
dY2a = TabI.MaxY2V2
|
||||
dTa = ( TabI.MaxY2V2 - TabI.dY2PosI) + dTa
|
||||
dTa = ( dY2a - TabI.dY2PosI) + dTa
|
||||
end
|
||||
--
|
||||
table.insert( vCmd, { 3, 'Y1', dY1a, 'Y2', dY2a, 'T', dTa, EMC.CNT})
|
||||
@@ -2159,7 +2281,7 @@ local function PosY1Y2B( TabI, vCmd)
|
||||
end
|
||||
end
|
||||
nCnt = nCnt + 1
|
||||
if nCnt > 5 then return end
|
||||
if nCnt > 10 then return end
|
||||
until ( not bXW)
|
||||
-- chiusura/parcheggio dei trascinatori in funzioni chiamanti
|
||||
local dY1Delta = TabI.dY1PosI - TabI.dTPosI
|
||||
@@ -2298,7 +2420,7 @@ local function PosY2Y1B( TabI, vCmd)
|
||||
end
|
||||
end
|
||||
nCnt = nCnt + 1
|
||||
if nCnt > 5 then return end
|
||||
if nCnt > 10 then return end
|
||||
until ( not bXW)
|
||||
-- la chiusura delle morse è fatta sopra
|
||||
local dY1Delta = TabI.dY1PosI - TabI.dTPosI
|
||||
@@ -2370,7 +2492,7 @@ function SpecAdjustCarrA( WorkTab)
|
||||
dY1DeltaF = PosY1Y2B( TabValI, vCmd)
|
||||
else
|
||||
--[A(1)A] **ALLONTANAMENTO** (dall'origine) del trascinatore Y1
|
||||
EmitComment( vCmd, '[AY1A]')
|
||||
EmitComment( vCmd, '[A-Y1A]')
|
||||
dY1DeltaF = PosY1Y2A( TabValI, vCmd)
|
||||
end
|
||||
-- chiudo Y1
|
||||
@@ -2466,8 +2588,8 @@ function SpecAdjustCarrB1( WorkTab)
|
||||
if not SpecTestSomeMoveInCmds( vCmd) then
|
||||
table.insert( vCmd, { 3, 'Y1', dY1PosI, 'Y2', dY2PosI, 'T', WorkTab.dTPosI, EMC.CNT})
|
||||
end
|
||||
table.insert( vCmd, { 11, 1}) -- chiudo Y1
|
||||
table.insert( vCmd, { 12, 1}) -- Chiudo Y2
|
||||
table.insert( vCmd, { 11, 1}) -- chiudo Y1
|
||||
-- imposto i nuovi parametri di aggancio
|
||||
table.insert( vCmd, { 21, dY1DeltaF, dY2DeltaF})
|
||||
EgtOutLog( ' Y1DeltaF=' .. EgtNumToString( dY1DeltaF) .. ' Y2DeltaF=' .. EgtNumToString( dY2DeltaF), 1)
|
||||
@@ -2538,8 +2660,8 @@ function SpecAdjustCarrB2( WorkTab)
|
||||
if not SpecTestSomeMoveInCmds( vCmd) then
|
||||
table.insert( vCmd, { 3, 'Y1', dY1PosI, 'Y2', dY2PosI, 'T', WorkTab.dTPosI, EMC.CNT})
|
||||
end
|
||||
table.insert( vCmd, { 11, 1}) -- chiudo Y1
|
||||
table.insert( vCmd, { 12, 1}) -- Chiudo Y2
|
||||
table.insert( vCmd, { 11, 1}) -- chiudo Y1
|
||||
-- imposto i nuovi parametri di aggancio
|
||||
table.insert( vCmd, { 21, dY1DeltaF, dY2DeltaF})
|
||||
EgtOutLog( ' Y1DeltaF=' .. EgtNumToString( dY1DeltaF) .. ' Y2DeltaF=' .. EgtNumToString( dY2DeltaF), 1)
|
||||
@@ -2599,7 +2721,7 @@ function SpecAdjustCarrC( WorkTab)
|
||||
WorkTab.dY1DeltaMaxF = EMC.LB - ( MinJoin + MyTCING)
|
||||
-- se Y1 deve accentrarsi
|
||||
if WorkTab.dY1DeltaI > WorkTab.dY1DeltaMaxF then
|
||||
WorkTab.dY1DeltaMinF = EMC.LB - 2 *( MinJoin + MyTCING)
|
||||
WorkTab.dY1DeltaMinF = EMC.LB - 2 * MinJoin - MyTCING
|
||||
end
|
||||
end
|
||||
-- posizioni obiettivo dei carrelli al centro dei rispettivi intervalli di validità
|
||||
|
||||
+258
-4
@@ -1,4 +1,247 @@
|
||||
==== Essetre_StdPF Update Log ====
|
||||
==== Common_ONE-PF Update Log ====
|
||||
|
||||
Versione 3.1c2 (17/03/2026)
|
||||
- (SIM-GEN) Aggiunta OnSpecialApplyMachining per calcolare i carrelli da subito
|
||||
- Aggiungendo OnSpecialApplyMachining, ora la OnSpecialGetPrevMachiningOffset lavora correttamente. ATT: MIN_MACH -> 3.1b2
|
||||
|
||||
|
||||
Versione 3.1c1 (04/03/2026)
|
||||
- (GEN) Corretta chiamata di una variabile insesistente in caso di ONE
|
||||
- (SIM) Allineata simulazione a generazione
|
||||
|
||||
Versione 3.1b1 (20/02/2026)
|
||||
- (GEN) Aggiunta funzione ToolPreSelection() per la preselezione utensile. Ticket#2789
|
||||
- (GEN) Funzione rinominata in ToolPreSelectionSingleHead(), ora utilizza funzione in MLDE per capire se è motosega
|
||||
|
||||
Versione 3.1a1 (16/01/2026)
|
||||
- (SIM-GEN) Aggiunto controllo che evita collisioni durante lo svincolo in Z della sega a catena nelle funzioni ExecMoveZMax() e EmitZMax(). Ticket#2767
|
||||
- (SIM-GEN) Piccola correzione modifiche fatte in precedenza
|
||||
|
||||
Versione 2.7l1 (18/12/2025)
|
||||
- (SIM-GEN) Aggiunto controllo post movimenti ausiliari dell' EMC.PREVOFFSX nella funzione OnSpecialGetPrevMachiningOffset(). Ticket#2727
|
||||
- (SIM-GEN) Divisione movimento B in approccio se > 90°. Ticket#2754
|
||||
- (SIM) Aggiunta funzione CheckClamping
|
||||
|
||||
Versione 2.7k3 (28/11/2025)
|
||||
- (GEN) Prima di andare allo scarico, si aggiunge movimento intermedio dove si aspetta che rulli scarico siano arrivati in posizione. Ticket#2716
|
||||
|
||||
Versione 2.7k2 (20/11/2025)
|
||||
- (SIM) Aggiornata risoluzione VMillTol in funzione dello spessore lama
|
||||
|
||||
Versione 2.7k1 (05/11/2025)
|
||||
- (SIM-GEN) Corretto calcolo per decidere se serve aprire i rulli
|
||||
- (GEN) Aggiunta tolleranza in creazione piano di lavoro inclinato
|
||||
- (SIM) Allo scarico si resetta Y2DELTA. Ticket#2687
|
||||
|
||||
Versione 2.7j3 (23/10/2025)
|
||||
- (SIM) Corretta posizione parcheggio in caso di testa 1 su magazzino 2. Ticket#2660
|
||||
|
||||
Versione 2.7j2 (21/10/2025)
|
||||
- (GEN) Se SPLIT con pinza 5, corretto salvataggio posizione pinza 2. Ticket#2654
|
||||
|
||||
Versione 2.7j1 (08/10/2025)
|
||||
- (GEN) Salvataggio posizione Z su lavorazione precedente, sbagliava in caso di separazione. Ticket#2637
|
||||
|
||||
Versione 2.7i1 (10/09/2025)
|
||||
- (SIM-GEN) Piccole correzioni per gestire secondo TC su ONE. Ticket#2563
|
||||
- (SIM-GEN) Gestione aggregato BH completato. Ticket#2482
|
||||
- (EST) Stima tempi considerando accelerazioni
|
||||
- (SIM-GEN) Se fase start o restart, si aggiorna la posizione in X dell'asse per calcolare il link corretto
|
||||
- (GEN) Piccola correzione risalita ZMAX dopo RELOAD del pezzo. Generazione allineata a simulazione.
|
||||
|
||||
Versione 2.7h2 (28/08/2025)
|
||||
- (GEN) Migliorata gestione spegnimento utensile e disattivazione piano
|
||||
- (SIM-GEN) Corretto nome variabile e altre piccole modifiche per Progress
|
||||
|
||||
Versione 2.7h1 (20/08/2025)
|
||||
- (SIM-GEN) Non si chiudono i rulli se tagli o pretagli di testa e coda
|
||||
- (SIM) Corretto movimento pinza 5 in caso di riposizionamento pinza 1
|
||||
- (GEN) Corretta quota assoluta posizione testa trave in caso di pinza 5 e testa rimasta bassa
|
||||
- (GEN) Se ultima lavorazione pezzo precedente ha stesso utensile della prima lavorazione pezzo successivo, la speed resta accesa
|
||||
|
||||
Versione 2.7g4 (23/07/2025)
|
||||
- (SIM-GEN) Aggiunto parametro configurabile da TS3 per massima sporgenza trave in coda per pinza 5. Ticket#2538
|
||||
|
||||
Versione 2.7g3 (22/07/2025)
|
||||
- (SIM) Corretto lettura angolo di presa della motosega
|
||||
|
||||
Versione 2.7g2 (08/07/2025)
|
||||
- (SIM) Corretto movimento a parcheggio sega a catena. Ticket#2517
|
||||
|
||||
Versione 2.7g1 (01/07/2025)
|
||||
- (GEN) Rimossa gestione PROBE inserita per sbaglio
|
||||
- (GEN) Corretto gestione accelerazioni
|
||||
- (SIM-GEN) Aggiunta gestione massima lunghezza scarico
|
||||
|
||||
Versione 2.7f1 (04/06/2025)
|
||||
- (SIM) Aggiunta gestione qualità VMILL da impostazioni macchina. Tolto parametro 'CoeffVM'.
|
||||
- (GEN) Aggiunti parametri FMAXPINZE, MAXACC, MINACC configurabili da TS3. Ticket#2052
|
||||
|
||||
Versione 2.7e1 (28/05/2025)
|
||||
- (SIM-GEN) Alla separazione si spostano i carrelli di 30mm aprendo il taglio. Ticket#2259,Ticket#2328
|
||||
|
||||
Versione 2.7d1 (16/04/2025)
|
||||
- (SIM) Distanza di collisione portata a 3mm, qualità VMILL ridotta a 4mm. Ticket#2395
|
||||
|
||||
Versione 2.7c3 (25/03/2025)
|
||||
- (GEN) Corretto movimento approccio alla lavorazione se utensile lama montata su magazzino 2. Ticket#2361
|
||||
|
||||
Versione 2.7c2 (12/03/2025)
|
||||
- (SIM-GEN) Migliorato calcolo posizione barra dopo split. Tiene in considerazione ingombro lavorazioni pezzo. Ticket#2321
|
||||
- (GEN) Aggiunta commenti HEADER e FOOTER per comunicazione con linea o altre macchine, da parte di Essetre.
|
||||
- (SIm-GEN) Migliorato movimento approccio al pezzo con lama. Allineamento simulazione-generazione che facevano due movimenti leggermente diversi. Ticket#2335
|
||||
|
||||
Versione 2.7c1 (05/03/2025)
|
||||
- (GEN) Corretto movimento in home utensile precedente. Ticket#2324
|
||||
|
||||
Versione 2.7b1 (07/02/2025)
|
||||
- (SIM-GEN) In caso di Progress, alla deselezione utensile testa 1 su TC2 si fa movimento Z raddrizzando asse B. Ticket#2247
|
||||
- (SIM-GEN) Estensione soluzione Ticket#2206. Ora si aprono di 5mm extra anche se solo una morsa resta in posizione. Ticket#2259
|
||||
- (SIM) Migliorato controllo collisioni con traversa. Ora si considera asse X. Serve modifica NGE! Ticket#2257
|
||||
|
||||
Versione 2.7a2 (15/01/2024)
|
||||
- (SIM-GEN) In caso di testa 1 su TC2 (ONE), si ruota prima la C e poi la B. Ticket#2247
|
||||
|
||||
Versione 2.7a1 (07/01/2024)
|
||||
- (GEN) In separazione, quando si porta indietro il restante, si aprono le paratie rulli subito. Ticket#2214
|
||||
- (SIM-GEN) Se entrambe le morse sono restate in posizione, le sposto comunque di 5mm per distanziare i pezzi separati. Ticket#2206
|
||||
|
||||
Versione 2.6l2 (09/12/2024)
|
||||
- (SIM-GEN) Corretto problema introdotto in 2.6l1 per risolvere #2198. Ticket#2203
|
||||
- (SIM-GEN) In MLSE modificato controllo direzione utensile per determinare Z massima. Ticket#2204
|
||||
|
||||
Versione 2.6l1 (02/12/2024)
|
||||
- (SIM) Dopo scarico pezzo per ribaltamento, si aprono sempre i rulli. Ticket#2192
|
||||
- (SIM-GEN) Nei movimenti si ricalcola la Z solo se la quota di lavoro è più in alta della posizione a ZHOME della testa. Ticket#2198
|
||||
- (GEN) Se bisogna andare in home, ma la testa lo è già, non si scrive nulla
|
||||
|
||||
Versione 2.6j3 (21/10/2024)
|
||||
- (GEN) Se richiesto movimento in home, si scrive sempre parcheggio in home dell'utensile precedente. Prima si scriveva solo per lama.
|
||||
|
||||
Versione 2.6j2 (17/10/2024)
|
||||
- (SIM-GEN) Se motosega prelevata con A=0, alla fine la si porta sempre alla quota ZMAX, indipendentemente dall'altezza trave che era fissata a 650mm. Ora lo fa sempre.
|
||||
|
||||
Versione 2.6j1 (08/10/2024)
|
||||
- (SIM-GEN) Corretto primo movimento di approccio al pezzo. Ticket#2093
|
||||
- (SIM-GEN) Corretto movimento in Home in caso di lama e movimento rulliera di carico. Ticket#2054
|
||||
- (GEN) In caso di movimento in Home non si fa più preselezione ma si tiene utensile vecchio. Ticket#1926
|
||||
|
||||
Versione 2.6i2 (13/09/2024)
|
||||
- (GEN) Migliorato calcolo chiusura paratia rulli con aggiornamento lunghezza della barra in caso di ultimo taglio e grezzo residuo in coda. Ticket#2017
|
||||
- (NGE-MLDE-GEN-SIM) Aggiunto solidi collisione TC. Corretto movimento a Y di sicurezza con lama. Ticket#2042
|
||||
- (NGE-SIM) Aggiunta collisione magazzino motosega ONE
|
||||
|
||||
Versione 2.6i1 (02/09/2024)
|
||||
- (SIM-GEN) Quando si aprono i rulli, se la trave non può seguire i rulli perchè la pinza andrebbe in extra-corsa, si sposta comunque la pinza fino al massimo della sua corsa. Ticket#1949
|
||||
- (GEN) In preselezione. Se lavorazione motosega, non mando a parcheggio altra testa con utensile precedente, perchè subito dopo viene chiamata preselezione. Ticket#1961
|
||||
|
||||
Versione 2.6h2 (07/08/2024)
|
||||
- (SIM) Allineata simulazione a generazione in primo movimento rapido approccio al pezzo.
|
||||
|
||||
Versione 2.6h1 (01/08/2024)
|
||||
- (GEN) Corretto segno posizione X di sicurezza per rotazione assi rotanti.
|
||||
|
||||
Versione 2.6g5 (31/07/2024)
|
||||
- (SIM-GEN) Se motosega allineata ad asse B per tagli di fianco, corretto movimento che manda testa a parcheggio. Pezzi più alti di 650 va solo in Zmax. Ticket#1943
|
||||
- (SIM-GEN) Gestione movimenti speciali per pezzi molto alti. Se HomeZ < primo punto lavorazione, allora vado al punto Z lavorazione prima di approcciare il pezzo in X. Ticket#1943
|
||||
- (GEN) Gestione creazione piano generico in caso il primo movimento della lavorazione sia un arco. Ticket#1891
|
||||
- (SIM-GEN) Modifica limite inferirore intervallo di pinzaggio per garantire, se possibile, il passaggio pezzo a pinza 2. Da Common-PF1250.
|
||||
- (GEN) Corretta scrittura ISO per parcheggiare morsa 3 dopo ribaltamento. Ticket#1922,#1733
|
||||
|
||||
Versione 2.6g4 (19/07/2024)
|
||||
- (SIM-GEN) Aumentato numero iterazioni per scambio carrelli (da 5 a 10), per pezzi lunghi 30m.
|
||||
|
||||
Versione 2.6g3 (17/07/2024)
|
||||
- (GEN) Correzione modifica precedente (2.6g2). Con lama precedente e motosega successiva, andava a parcheggio con lama alla quota della motosega. Ticket#1880
|
||||
|
||||
Versione 2.6g2 (16/07/2024)
|
||||
- (GEN) Per preselezione o movimenti in home, non si scrive più 'ET0' perchè non è più supportato. Ticket#1926
|
||||
|
||||
Versione 2.6g1 (10/07/2024)
|
||||
- (GEN) Se prima lavorazione con motosega, dopo G151 di attesa carrelli si ribadiscono tutti gli assi. Ticket#1924
|
||||
|
||||
Versione 2.6f1 (03/06/2024)
|
||||
- (GEN) Aggiunta possibilità di scrivere nome utensile doppio anche in lavorazione con parametro "TOOLDOUBLE". Note sulla lavorazione hanno precedenza su note utensile.
|
||||
|
||||
Versione 2.6e1 (30/04/2024)
|
||||
- (GEN) Chiamando la macchina con un nome che termini con '.TEST' si abilita come macchina per test interni, equivalente a settare 'IS_TEST_MACHINE' (che comunque rimane)
|
||||
- (SIM) In log collisioni, si scrive anche ID del gruppo per facilitare riconoscimento in caso di collisione
|
||||
- (MLDE-GEN) Gestione facoltativa parametro WOOD_DENSITY settabile in Ts3. In MLDE, mettere il valore di WOOD_DENSITY nella nostra variabile 'WoodDensity'.
|
||||
|
||||
Versione 2.6d2 (12/04/2024)
|
||||
- (MLDE-SIM-GEN) Aggiunta variabile FACOLTATIVA 'ForceToCloseRollersGate' ( che legge la variabile da TS3 'CHIUDI_PINZE_2_3_SCAMBIO') in mlde per forzare chiusura paratie rulli
|
||||
durante scambio pinze per facilitare passaggio pezzi molto storti. Se non presente chiude solo se necessario.
|
||||
|
||||
Versione 2.6d1 (28/03/2024)
|
||||
- (GEN) Rimosso da generazione funzione GetNextTool duplicata
|
||||
- (SIM-GEN) Se fase successiva start di un altro pezzo, la GetNextTool restituisce nil, per forzare movimento home in caso di utensili speciali
|
||||
- (MLDE-GEN) Aggiunto parametro 'IS_TEST_MACHINE' FACOLTATIVO. Se non esiste o 'false' è macchina standard, se 'true' è una macchina utilizzata per i test Egalware interni
|
||||
- (SIM) Corretto movimento in simulazione se motosega su testa 2
|
||||
|
||||
Versione 2.6c9 (26/03/2024)
|
||||
- (SIM) Corretta gestione cambio utensile con motosega. In alcuni casi non era coerente con generazione
|
||||
- (GEN) In 'PreparePostRotation' si resetta sempre anche la paratia in uscita (Ticket#1733)
|
||||
|
||||
Versione 2.6c8 (22/03/2024)
|
||||
- (SIM) Miglioramento visualizzazione spigoli VMILL alla fine della simulazione. Funzione: EgtVolZmapSetShowEdges. CAM5 ver. 2.6c2 FACOLTATIVA.
|
||||
|
||||
Versione 2.6c7 (11/03/2024)
|
||||
- (SIM-GEN) Aggiunta gestione parametro "SECDIST". Distanza di sicurezza tra paratia con rulli e utensile/testa. Parametro da inserire nelle note utensile.
|
||||
- (MLPE-GEN) Aggiunto parametro "WriteM05Command" (NON OBBLIGATORIO) per decidere se scrivere il comando M05 per arresto mandrino. Default a true.
|
||||
|
||||
Versione 2.6c6 (08/03/2024)
|
||||
- (SIM-GEN) Gestione rotazioni 90° come su FAST, caso MID2 (split/cut prima delle rotazioni)
|
||||
|
||||
Versione 2.6c5 (07/03/2024)
|
||||
- (GEN) Per ribaltamento, i comandi si differenziano per macchina. Sembra che ONE e PF abbiano comandi diversi. In attesa di conferma da parte di Essetre
|
||||
- (SIM-GEN) Se cambiato utensile, si aprono sempre paratie
|
||||
- (SIM) Spostato salvataggio dati utensile precedente in MachiningEnd, prima era in MachininsStart
|
||||
|
||||
Versione 2.6c4 (06/03/2024)
|
||||
- (SIM-GEN) Alla fine del movimento a Z-MAX, in home con lama solo se si cambia utensile. Prima andava sempre in home se era lama, anche se non doveva cambiare utensile
|
||||
|
||||
Versione 2.6c3 (05/03/2024)
|
||||
- (MLDE-SIM) Aggiunta variabile FACOLTATIVA 'EstimationRapidMultiplier' in mlde per regolare il tempo stimato di rapido su macchine vecchie. Se non presente default 1.
|
||||
|
||||
Versione 2.6c2 (04/03/2024)
|
||||
- (MLDE-GEN) Aggiunta variabile 'MACH_NAME' in mlde con nome macchina
|
||||
|
||||
Versione 2.6c1 (29/02/2024)
|
||||
- (SIM) Gestione rimozione VMILL per tagli a cubetti Zig-Zag
|
||||
|
||||
Versione 2.6b2 (26/02/2024)
|
||||
- (MLDE-SIM-GEN) EgtAddToPackagePath spostato in mlde
|
||||
|
||||
Versione 2.6b1 (20/02/2024)
|
||||
- (SIM) Corretto controllo calcolo Z su primo movimento lama, allineato a generazione
|
||||
- (GEN) Corretto emissione movimenti per macchine con motosega su testa 2
|
||||
- (SIM) Aggiunta funzioni "OnSimulInit" e "OnSimulExit" per orientare vista corretta in caso di macchina con carico destro. N.B.= serve CAM5 2.6b4
|
||||
- (ALL) "BeamData" caricato come libreria con 'require' anziché come file con 'dofile'
|
||||
- (GEN) In "GetMovesInAuxCmd" si passa la posizione calcolata V1 indipendentemente dall'utilizzo di Y1
|
||||
|
||||
Versione 2.6a7 (12/02/2024)
|
||||
- (GEN) Per movimento con motosega, si ribadiscono tutti gli assi nella prima G141
|
||||
|
||||
Versione 2.6a6 (02/02/2024)
|
||||
- (SIM) Corretta simulazione movimento in X-Home, coerente con generazione
|
||||
- (GEN) Aggiunta lettura parametro 'Split'
|
||||
- (SIM) Se lavorazione è un taglio di separazione, se necessario, ripristino posizione di Y1DELTA prima di aprire i rulli
|
||||
- (SIM-GEN) Modificata gestione movimenti motosega, in aggiunta con caso particolare di pezzo alto più di 650mm
|
||||
- (ALL) Caricamento BeamData come local
|
||||
|
||||
Versione 2.6a5 (26/01/2024)
|
||||
- (SIM-GEN) Migliorato calcolo dimensioni grezzo per apertura rulli in caso di 'precut'
|
||||
|
||||
Versione 2.6a4 (24/01/2024)
|
||||
- (GEN) Se pezzo tenuto solo con pinza destra non si esclude la rulliera di sinistra, se pezzogrande, può venire in supporto
|
||||
- (SIM-GEN) Correzione gestione apertura/chiusura rulli sul fine barra e in generale (da PF1250)
|
||||
- (SIM) Aggiunto solido collisione lama sotto traversa (per PF-progress)
|
||||
|
||||
Versione 2.6a3 (23/01/2024)
|
||||
- (GEN) Corretto gestione del movimento precedente all'ultimo che manda il pezzo alla posizione di scarico
|
||||
|
||||
Versione 2.6a2 (09/01/2024)
|
||||
- Nuova versione. Prima versione stabile rilasciabile.
|
||||
|
||||
Versione 2.6a1 (28/11/2023)
|
||||
- Prima versione post-proc comune tra macchine ONE e PF
|
||||
@@ -9,6 +252,17 @@ Versione 2.6a1 (28/11/2023)
|
||||
- (GEN+MLDE) Inserita gestione macro con carico ottimizzato. Macro macchina presente come standard solo su macchine PF. Parametro "OptimizedLoadBeam"
|
||||
- (GEN+SIM) Migliorata gestione riposizionamento pinze, in caso testa debba andare in home
|
||||
- (GEN) Se a zeta massima con lama e utensile successivo diverso, mi sposto sempre verso X-HOME
|
||||
- (GEN) Corretto movimento in caso di testa 1 su TC-2. Utilizzava le quote della testa 2 anziché della 1.
|
||||
Versione 2.6a2 (09/01/2024)
|
||||
- Nuova versione. Prima versione stabile rilasciabile.
|
||||
- (GEN) Corretto movimento in caso di testa 1 su TC-2. Utilizzava le quote della testa 2 anziché della 1
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
+2
-2
@@ -3,8 +3,8 @@
|
||||
|
||||
local InfoCommon_STD_PP = {
|
||||
NAME = 'Common_ONE-PF', -- nome script PP standard
|
||||
VERSION = '2.6a2', -- versione script
|
||||
MIN_MACH_VER_PP_COMMON = '2.5k1' -- versione minima kernel
|
||||
VERSION = '3.1c2', -- versione script
|
||||
MIN_MACH_VER_PP_COMMON = '3.1b2' -- versione minima kernel
|
||||
}
|
||||
|
||||
return InfoCommon_STD_PP
|
||||
|
||||
Reference in New Issue
Block a user