Compare commits
7 Commits
3.1a1_DEV1
...
3.1a2_DEV3
| Author | SHA1 | Date | |
|---|---|---|---|
| 6e8b1ab97d | |||
| f69c4259c3 | |||
| 85944dc2da | |||
| 8ac8d2d2c2 | |||
| a1a4f230ae | |||
| db6c8c0689 | |||
| 60bc26fc3c |
+4
-2
@@ -73,10 +73,11 @@ local BeamData = {
|
||||
PRECUT_HEAD = true, -- flag abilitazione pretaglio grezzo a zero in testa
|
||||
PRECUT_TAIL = true, -- flag abilitazione pretaglio grezzo a zero in coda
|
||||
ADVANCE_TAIL_CUT = true, -- per spostare prima del taglio di separazione il taglio di coda su pezzi corti con robabile caduta
|
||||
ADVANCE_TAIL_OFFS = 5, -- accorciamento taglio di coda avanzato (minimo 1)
|
||||
ADVANCE_TAIL_OFFS = 5, -- accorciamento taglio di coda avanzato (minimo 1)
|
||||
DOUBLE_HEAD_DOVETAIL = true, -- flag abilitazione lavorazione mortase a coda di rondine in doppio
|
||||
DOUBLE_HEAD_MORTISE = true, -- flag abilitazione lavorazione mortase in doppio
|
||||
DOUBLE_HEAD_DRILLING = true -- flag abilitazione forature in doppio
|
||||
DOUBLE_HEAD_DRILLING = true, -- flag abilitazione forature in doppio
|
||||
USE_PART_OFFSET = false -- flag abilitazione lettura PART_OFFSET da btl
|
||||
}
|
||||
|
||||
---------------------------------------------------------------------
|
||||
@@ -116,6 +117,7 @@ if EgtExistsFile( sDataBeam) then
|
||||
if Machine.Offsets.SECONDSAW then SecondSaw = ( Machine.Offsets.SECONDSAW == 1) end
|
||||
BeamData.USE_LONGCUT = SecondSaw or BeamData.USE_LONGCUT
|
||||
if Machine.Offsets.CUT_SIC then BeamData.CUT_SIC = EgtClamp( Machine.Offsets.CUT_SIC, 15, 50) end
|
||||
if Machine.Offsets.USE_PART_OFFSET then BeamData.USE_PART_OFFSET = ( Machine.Offsets.USE_PART_OFFSET == 1) end
|
||||
end
|
||||
if Machine.Trave then
|
||||
BeamData.MIN_WIDTH = Machine.Trave.XMIN or BeamData.MIN_WIDTH
|
||||
|
||||
+55
-11
@@ -292,10 +292,15 @@ function OnDispositionEnd()
|
||||
EmitRemark( 'PART UNLOAD')
|
||||
end
|
||||
for i = 1, #EMT.MDCHAR do
|
||||
EmitMoveDataChars( EMT.MDCHAR[i])
|
||||
if EMT.MDCHAR[i].Y1 then EMT.CHY_ON = true end
|
||||
if EMT.MDCHAR[i].V1 then EMT.V1POS = EMT.MDCHAR[i].V1 end
|
||||
if EMT.MDCHAR[i].V2 then EMT.V2POS = EMT.MDCHAR[i].V2 end
|
||||
-- Se è un'istruzione del piano ferma pezzo
|
||||
if EMT.MDCHAR[i].StopBeamStat then
|
||||
EmitStopBeam( EMT.MDCHAR[i])
|
||||
else
|
||||
EmitMoveDataChars( EMT.MDCHAR[i])
|
||||
if EMT.MDCHAR[i].Y1 then EMT.CHY_ON = true end
|
||||
if EMT.MDCHAR[i].V1 then EMT.V1POS = EMT.MDCHAR[i].V1 end
|
||||
if EMT.MDCHAR[i].V2 then EMT.V2POS = EMT.MDCHAR[i].V2 end
|
||||
end
|
||||
end
|
||||
if #EMT.MDCHAR > 0 then
|
||||
local nMoveType = EgtIf( EMT.CHY_ON, 3, 2)
|
||||
@@ -508,7 +513,12 @@ function OnMachiningEnd()
|
||||
end
|
||||
end
|
||||
for i = 1, #EMT.MDCHAR do
|
||||
EmitMoveDataChars( EMT.MDCHAR[i])
|
||||
-- Se è un'istruzione del piano ferma pezzo
|
||||
if EMT.MDCHAR[i].StopBeamStat then
|
||||
EmitStopBeam( EMT.MDCHAR[i])
|
||||
else
|
||||
EmitMoveDataChars( EMT.MDCHAR[i])
|
||||
end
|
||||
end
|
||||
if #EMT.MDCHAR > 0 then
|
||||
if EMT.AUXTYPE == 'S' then
|
||||
@@ -538,6 +548,7 @@ function OnMachiningEnd()
|
||||
local sEnd= 'M113 P1='..tostring( EMT.PRODID)..' P2='..tostring( EMT.PATTID)..' P3='..tostring( EMT.CUTID)..' P4=2'
|
||||
MyOutput( sEnd)
|
||||
end
|
||||
EMT.FALL = nil
|
||||
elseif not EMT.PREROT then
|
||||
MyOutput( 'M77')
|
||||
end
|
||||
@@ -2063,17 +2074,41 @@ function PrepareUnload( sCmd, nInd)
|
||||
-- non interessa
|
||||
elseif Cmd[1] == '1' then
|
||||
if Cmd[2] == 'Y2' then
|
||||
-- se non è ultima fase e non è fase successiva a scarico su carico c'è una barra sulla pinza Y1
|
||||
local bBarOnY = ( EMT.PHASE < EgtGetPhaseCount() and not IsEnd2Phase( EMT.PHASE))
|
||||
local MDChar = { Y2=tonumber(Cmd[3]), V2=ParkV2, IniStatY2=1, FinStatY2=-84, BeamVise=EgtIf( bBarOnY, 1, 0), MovType=EgtIf( EMT.CHY_ON, 3, 2)}
|
||||
table.insert( EMT.MDCHAR, MDChar)
|
||||
-- Se scarico in linea con abbassamento piano ferma pezzo allo scarico
|
||||
if Cmd[4] == 'UnBrakeBeam' then
|
||||
-- Muove carrello aperto e lo chiude
|
||||
local MDChar = { Y2=tonumber(Cmd[3]), V2=ParkV2, IniStatY2=1, FinStatY2=-1, BeamVise=EgtIf( bBarOnY, 1, 0), MovType=EgtIf( EMT.CHY_ON, 3, 2)}
|
||||
table.insert( EMT.MDCHAR, MDChar)
|
||||
-- Abbassa ferma pezzo
|
||||
local MDStopBeam = { StopBeamStat=2}
|
||||
table.insert( EMT.MDCHAR, MDStopBeam)
|
||||
-- Se non è ultima fase e non è fase successiva a scarico su carico c'è una barra sulla pinza Y1
|
||||
else
|
||||
local nFinStatY2 = EgtIf( Cmd[4] == 'NoWaitUnload', -84, -1)
|
||||
local MDChar = { Y2=tonumber(Cmd[3]), V2=ParkV2, IniStatY2=1, FinStatY2=nFinStatY2, BeamVise=EgtIf( bBarOnY, 1, 0), MovType=EgtIf( EMT.CHY_ON, 3, 2)}
|
||||
table.insert( EMT.MDCHAR, MDChar)
|
||||
end
|
||||
end
|
||||
elseif Cmd[1] == '2' then
|
||||
if Cmd[4] == 'Y2' then
|
||||
-- se non è ultima fase c'è una barra sulla pinza Y1
|
||||
local bBarOnY = ( EMT.PHASE < EgtGetPhaseCount() and not IsEnd2Phase( EMT.PHASE))
|
||||
local MDChar = { Y2=tonumber(Cmd[5]), IniStatY1=EgtIf( bBarOnY, -1, 1), FinStatY1=EgtIf( bBarOnY, -1, 1), IniStatY2=-1, FinStatY2=1, IniStatV2=1, BeamVise=2, MovType=EgtIf( EMT.CHY_ON, 3, 2)}
|
||||
table.insert( EMT.MDCHAR, MDChar)
|
||||
-- Se scarico in linea con alzata piano ferma pezzo allo scarico
|
||||
if Cmd[6] == 'BrakeBeam' then
|
||||
-- Muove carrello e lo mantiene in presa
|
||||
local MDChar = { Y2=tonumber(Cmd[5]), IniStatY1=EgtIf( bBarOnY, -1, 1), FinStatY1=EgtIf( bBarOnY, -1, 1), IniStatY2=-1, FinStatY2=-1, IniStatV2=1, BeamVise=2, MovType=EgtIf( EMT.CHY_ON, 3, 2)}
|
||||
table.insert( EMT.MDCHAR, MDChar)
|
||||
-- Alza ferma pezzo
|
||||
local MDStopBeam = { StopBeamStat=1}
|
||||
table.insert( EMT.MDCHAR, MDStopBeam)
|
||||
-- Ribadisce le quote del carrello appena mosso e Apre la pinza
|
||||
MDChar = { Y2=tonumber(Cmd[5]), IniStatY1=EgtIf( bBarOnY, -1, 1), FinStatY1=EgtIf( bBarOnY, -1, 1), IniStatY2=-1, FinStatY2=1, IniStatV2=1, BeamVise=2, MovType=EgtIf( EMT.CHY_ON, 3, 2)}
|
||||
table.insert( EMT.MDCHAR, MDChar)
|
||||
-- se non è ultima fase c'è una barra sulla pinza Y1
|
||||
else
|
||||
local MDChar = { Y2=tonumber(Cmd[5]), IniStatY1=EgtIf( bBarOnY, -1, 1), FinStatY1=EgtIf( bBarOnY, -1, 1), IniStatY2=-1, FinStatY2=1, IniStatV2=1, BeamVise=2, MovType=EgtIf( EMT.CHY_ON, 3, 2)}
|
||||
table.insert( EMT.MDCHAR, MDChar)
|
||||
end
|
||||
end
|
||||
elseif Cmd[1] == '3' then
|
||||
-- non interessa
|
||||
@@ -3025,6 +3060,15 @@ function EmitMoveWaitHead( nHead)
|
||||
MyOutput( sOut)
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- Emette i movimenti di esecuzione movimenti trave e alzata o discesa del piano ferma pezzo
|
||||
function EmitStopBeam( MoData)
|
||||
EmitMoveStartChars(2)
|
||||
EmitMoveWaitChars(2)
|
||||
if MoData.StopBeamStat then sOut = 'M125 P2=' .. EgtNumToString( MoData.StopBeamStat, 0) end
|
||||
MyOutput( sOut)
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function EmitMoveDataChars( MoData)
|
||||
local sOut = 'M111'
|
||||
|
||||
+28
-3
@@ -1302,6 +1302,12 @@ function OnSimulMoveStart()
|
||||
local sErr = 'Z1 Z2 tools in collision (distance=' .. EgtNumToString( dDistToolZ1Z2, 1) .. ')'
|
||||
EmtSetLastError( 1208, sErr)
|
||||
end
|
||||
if EMT.ZMAX or ( EMT.FLAG == 2 and EMT.FLAG2 == 1) then
|
||||
local B2Home = EgtGetAxisHomePos( 'B2')
|
||||
local C2Home = EgtGetAxisHomePos( 'C2')
|
||||
SimulMoveAxes( 'X2', SafeX2, MCH_SIM_STEP.RAPID, 'C2', C2Home, MCH_SIM_STEP.RAPROT, 'B2', B2Home, MCH_SIM_STEP.RAPROT)
|
||||
SimulMoveAxis( 'X2', X2, MCH_SIM_STEP.RAPID)
|
||||
end
|
||||
end
|
||||
end
|
||||
-- se necessario ...
|
||||
@@ -1741,17 +1747,36 @@ function ExecUnloading()
|
||||
local vMillId = EMT.VMILL[1]
|
||||
-- gruppo dei Vmill
|
||||
local nVmGrpId = EgtGetFirstNameInGroup( GDB_ID.ROOT, 'VMill')
|
||||
local sUnloadType = ''
|
||||
local sUnloadTypeOld = ''
|
||||
local vtMove = Vector3d( 0, 0, 0)
|
||||
local vtMoveOldElements = Vector3d( 0, EgtIf( BD.RIGHT_LOAD, ( EMT.HB + 50.0), -( EMT.HB + 50.0)), 0)
|
||||
-- Se scarico in linea
|
||||
if MinBeamLenUnloadInLine and EMT.LT >= MinBeamLenUnloadInLine then
|
||||
sUnloadType = 'LINE'
|
||||
vtMove = Vector3d( EgtIf( BD.RIGHT_LOAD, -MinBeamLenUnloadInLine, MinBeamLenUnloadInLine), EgtIf( BD.RIGHT_LOAD, ( EMT.HB + 50.0), -( EMT.HB + 50.0)), 0)
|
||||
else
|
||||
if EMT.FALL then
|
||||
sUnloadType = 'FALL'
|
||||
vtMove = Vector3d( 0, EgtIf( BD.RIGHT_LOAD, 3200, -2600), -1150)
|
||||
else
|
||||
sUnloadType = 'STD'
|
||||
vtMove = Vector3d( 0, EgtIf( BD.RIGHT_LOAD, 1600, -1600), 0)
|
||||
end
|
||||
end
|
||||
-- li sposto per lasciare spazio al nuovo pezzo
|
||||
local nId = EgtGetFirstInGroup( nVmGrpId)
|
||||
while nId do
|
||||
EgtMove( nId, Vector3d( 0, EgtIf( BD.RIGHT_LOAD, ( EMT.HB + 50.0), -( EMT.HB + 50.0)), 0), GDB_RT.GLOB)
|
||||
sUnloadTypeOld = EgtGetInfo( nId, 'UNLOAD_TYPE')
|
||||
if sUnloadTypeOld == sUnloadType then
|
||||
EgtMove( nId, vtMoveOldElements, GDB_RT.GLOB)
|
||||
end
|
||||
nId = EgtGetNext( nId)
|
||||
end
|
||||
-- creo un nuovo layer e vi inserisco il nuovo pezzo
|
||||
local nLayId = EgtGroup( nVmGrpId, EgtGetGlobFrame( vMillId))
|
||||
EgtRelocate( vMillId, nLayId)
|
||||
local vtMove = Vector3d( 0, EgtIf( BD.RIGHT_LOAD, 1600, -1600), 0)
|
||||
if EMT.FALL then vtMove = Vector3d( 0, EgtIf( BD.RIGHT_LOAD, 3200, -2600), -1150) end
|
||||
EgtSetInfo( nLayId, 'UNLOAD_TYPE', sUnloadType)
|
||||
EgtMove( nLayId, vtMove, GDB_RT.GLOB)
|
||||
EgtSetLevel( vMillId, GDB_LV.USER)
|
||||
-- aggiungo gli spigoli
|
||||
|
||||
+26
-4
@@ -1376,15 +1376,37 @@ function SpecCalcUnload()
|
||||
if bStdUl then
|
||||
local dFinT = EgtIf( EMC.LB < MaxLenSmT, UnloadSmT, UnloadT) - EMC.LB
|
||||
local dFinY2 = dFinT + EMC.Y2DELTA
|
||||
table.insert( vCmd, { 2, 'T', dFinT, 'Y2', dFinY2})
|
||||
local dBeamTailY2 = dFinY2 + ( EMC.LB - EMC.Y2DELTA) - ( EMC.TCING or 0)
|
||||
-- Se scarico in linea scrivo una nota in più per l'attivazione del piano ferma pezzo (M125)
|
||||
if MinBeamLenUnloadInLine and EMC.LB >= MinBeamLenUnloadInLine then
|
||||
table.insert( vCmd, { 2, 'T', dFinT, 'Y2', dFinY2, 'BrakeBeam'})
|
||||
else
|
||||
table.insert( vCmd, { 2, 'T', dFinT, 'Y2', dFinY2})
|
||||
end
|
||||
EgtOutLog( ' Y2PosF=' .. EgtNumToString( dFinY2), 1)
|
||||
-- Se scarico in "linea"
|
||||
if MinBeamLenUnloadInLine and EMC.LB >= MinBeamLenUnloadInLine then
|
||||
-- apro la morsa
|
||||
table.insert( vCmd, { 12, 0})
|
||||
local dY2MoveMax = MinY2
|
||||
if dBeamTailY2 >= ( dY2MoveMax + ( EMC.TCING or 0)) then
|
||||
local dTMove = dY2MoveMax - EMC.LB + ( EMC.TCING or 0)
|
||||
-- riporto il carrello in fondo alla trave
|
||||
table.insert( vCmd, { 1, 'Y2', dBeamTailY2, 'UnBrakeBeam'})
|
||||
-- chiudo la morsa
|
||||
table.insert( vCmd, { 12, 1})
|
||||
-- finisco scarico trave
|
||||
table.insert( vCmd, { 2, 'T', dTMove, 'Y2', dY2MoveMax})
|
||||
EgtOutLog( ' Y2PosF=' .. EgtNumToString( dY2MoveMax), 1)
|
||||
end
|
||||
end
|
||||
else
|
||||
table.insert( vCmd, { 1, 'Y2', MaxY2})
|
||||
end
|
||||
-- apro la morsa
|
||||
table.insert( vCmd, { 12, 0})
|
||||
-- riporto il carrello in home
|
||||
table.insert( vCmd, { 1, 'Y2', ParkY2})
|
||||
table.insert( vCmd, { 1, 'Y2', ParkY2, 'NoWaitUnload'})
|
||||
|
||||
-- eventuale unione tabelle
|
||||
if #vCmdPre > 0 then
|
||||
@@ -2509,11 +2531,11 @@ function SpecOutputCmds( vCmd, bEnd)
|
||||
EgtSetInfo( EMC.PATHID, sKey, sInfo)
|
||||
-- movimento di 1 asse
|
||||
elseif Cmd[1] == 1 then
|
||||
local sInfo = '1,'..Cmd[2]..','..EgtNumToString( Cmd[3],3)..EgtIf( Cmd[4], ',*', '')
|
||||
local sInfo = '1,'..Cmd[2]..','..EgtNumToString( Cmd[3],3)..EgtIf( Cmd[4], ','..tostring(Cmd[4]), '')
|
||||
EgtSetInfo( EMC.PATHID, sKey, sInfo)
|
||||
-- movimento di 2 assi
|
||||
elseif Cmd[1] == 2 then
|
||||
local sInfo = '2,'..Cmd[2]..','..EgtNumToString( Cmd[3],3)..','..Cmd[4]..','..EgtNumToString( Cmd[5],3)..EgtIf( Cmd[6], ',*', '')
|
||||
local sInfo = '2,'..Cmd[2]..','..EgtNumToString( Cmd[3],3)..','..Cmd[4]..','..EgtNumToString( Cmd[5],3)..EgtIf( Cmd[6], ','..tostring(Cmd[6]), '')
|
||||
EgtSetInfo( EMC.PATHID, sKey, sInfo)
|
||||
-- movimento di 3 assi
|
||||
elseif Cmd[1] == 3 then
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
require( 'EmtGenerator')
|
||||
EgtEnableDebug( false)
|
||||
|
||||
PP_VER = '3.1a1_DEV1'
|
||||
PP_NVER = '3.1.1.1'
|
||||
PP_VER = '3.1a2_DEV3'
|
||||
PP_NVER = '3.1.1.2'
|
||||
MIN_MACH_VER = '2.7d2'
|
||||
MACH_NAME = EgtGetCurrMachineName()
|
||||
|
||||
@@ -172,6 +172,7 @@ Motors23KW = true
|
||||
EstimationRapidMultiplier = 1
|
||||
DistZClampToTable = 5 -- distanza tra la tavola e il punto più basso della morsa
|
||||
ClampingCoeffMin = nil -- coefficiente di fissaggio, se 0 o nil non fa controllo, per il momento da inizializzare da Ts3Data
|
||||
MinBeamLenUnloadInLine = 2400 -- se lo scarico è su una linea deve scaricare il pezzo al massimo e deve essere maggiore del valore della variabile
|
||||
|
||||
-- Aggiornamento con dati da TechnoEssetre7
|
||||
local sTs3Data = EgtGetStringFromIni( 'Beam', 'DATA_DIR', "C:\\TechnoEssetre7\\EgtData", EgtGetIniFile()).."\\Essetre-PF1250-3T_5Ax.data"
|
||||
@@ -270,6 +271,7 @@ if EgtExistsFile( sDataBeam) then
|
||||
if Machine.Offsets.MOTORS23KW then Motors23KW = Machine.Offsets.MOTORS23KW == 1 end
|
||||
if Machine.Offsets.LEN_STEM_H2 then LenStemH2 = Machine.Offsets.LEN_STEM_H2 end
|
||||
if Machine.Offsets.COEFF_CLAMP_CHECK then ClampingCoeffMin = Machine.Offsets.COEFF_CLAMP_CHECK end
|
||||
if Machine.Offsets.MIN_BEAM_LEN_UNLOAD_IN_LINE then MinBeamLenUnloadInLine = Machine.Offsets.MIN_BEAM_LEN_UNLOAD_IN_LINE end
|
||||
|
||||
-- aggiustamenti
|
||||
MinY1 = MinV1 + MinDeltaYV
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
==== Common_PF1250 Update Log ====
|
||||
|
||||
Versione 3.1a2 (30/01/2026)
|
||||
- (SIM) Allineato approccio simulazione a generazione in caso di lavorazione in doppio verticale. Ticket#2781
|
||||
- (GEN) Simulazione non allineata a generazione. Mancava reset flag di pezzo a caduta. Ticket#2798
|
||||
|
||||
Versione 3.1a1 (16/01/2026)
|
||||
- (SIM-GEN) Corretto movimento di approccio con sega a catena e allineati Simulazione e Generazione. Ticket#2771
|
||||
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
|
||||
local InfoCommon_STD_PP = {
|
||||
NAME = 'Common_PF1250', -- nome script PP standard
|
||||
VERSION = '3.1a1', -- versione script
|
||||
VERSION = '3.1a2', -- versione script
|
||||
MIN_MACH_VER_PP_COMMON = '2.7k1' -- versione minima kernel
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user