Compare commits

...

34 Commits

Author SHA1 Message Date
daniele.nicoli 831d368199 - Aggiunta UNLOAD_ON_LOAD_T_POS nel TS3Data, se non viene scritta, legge il valore di DIST_FTZERO (LoadT)
- Aggiunte nel TS3Data PARK_C3, PARK_Z3, PARK_B3. La quota di home a cui muove gli assi rotativi è sempre -655.
2026-05-07 08:47:15 +02:00
daniele.nicoli 8089a830e4 Aggiunto scarico al carico in due step se lo scarico calcolato è oltre la corsa di Y1 (come su scarico in linea) 2026-04-29 16:00:56 +02:00
daniele.nicoli 4016796045 Aggiunto Clamp di sicurezza per lettura dei parametri MinJoin da Ts3Data 2026-04-23 13:06:31 +02:00
andrea.villa cad19cffca Corretta gestione paraemtro LASTOISBRAKE 2026-04-23 08:30:19 +02:00
daniele.nicoli 77cf0826d5 Sistemata emissione freno (M125) scarico al carico anche in caso di PreparePreRotation() 2026-04-22 15:21:51 +02:00
andrea.villa 996185e332 Sistemata emissione comandi finali 2026-04-22 08:26:50 +02:00
daniele.nicoli ec0e8b479a Aggiunto start e wait del movimento pinze se EMT.LASTOISBRAKE = true 2026-04-22 08:19:00 +02:00
andrea.villa c06e5c334e Corretta scrittura attivazione freno 2026-04-01 17:19:27 +02:00
andrea.villa 185a3d8338 Ultimo movimento dello scarico al carico dichiara pezzo non più agganciato a nessuna morsa 2026-04-01 16:11:32 +02:00
andrea.villa 38ea77dfad Aggiunto freno del pezzo anche quando scarica al carico 2026-04-01 15:29:07 +02:00
andrea.villa 70e8556c69 Merge branch 'develop' of https://gitlab.steamware.net/egalware-machines/essetre/essetre-pf1250-3t_5ax into develop 2026-03-12 16:21:45 +01:00
andrea.villa 4ab2a89f2d Corretto gestione con controllo collisioni testa in doppio 2026-03-12 16:21:42 +01:00
daniele.nicoli 6ad7cf16c4 Aggiunto info "PreviewShow" per anteprima utensile/testa nel MACH 2026-03-09 08:54:55 +01:00
daniele.nicoli 57a557ec16 Aggiunti parametri letti da TS3Data.lua: MIN_JOIN_S, MIN_JOIN_L e MAX_ANGLE_DRILL_CUT 2026-03-05 15:09:28 +01:00
daniele.nicoli dfdce8b00d Correzione sequenza di fermata pezzo: dopo che si è abbassato il ferma pezzo chiude il pezzo in morsa per evitare che esso possa essere pinzato inclinato dal pistone 2026-03-02 16:52:58 +01:00
daniele.nicoli d486d48a49 UnloadOnLoad - Aggiunto M113 a fine pezzo 2026-02-25 15:35:51 +01:00
andrea.villa 5d2bac29ce Soluzione di default testa 3 verso X meno 2026-02-24 13:25:41 +01:00
andrea.villa 707eb81248 Corretto ToolHolder e modificato colore collisioni 2026-02-24 10:58:26 +01:00
andrea.villa c64d5666f0 Corretto modello 3D testa truciolatore. Il disegno fornito da Essetre non era corretto. Ticket#2833 2026-02-24 10:15:28 +01:00
andrea.villa 11c3e0c3e5 Allineamento a common ver.3.1b1 2026-02-20 16:29:23 +01:00
luca.mazzoleni a7824bf0c8 - in mlde ParkCSawX1 portata a 1700 2026-02-20 16:14:39 +01:00
daniele.nicoli 0f036d5be5 Se attivo scarico al carico, ma il pezzo non soddisfa le condizioni restituisce errore e non permette la generazione. 2026-02-16 15:21:16 +01:00
andrea.villa d14c84da8f Piccole correzioni in generazione 2026-02-13 16:49:48 +01:00
andrea.villa 95b10fdfe6 - Corretto extra-corsa allo scarico
- Corretti doppi movimenti a ZMAX
- Apertura paratie sull'ultimo comando di home pinza 1
2026-02-13 16:32:32 +01:00
andrea.villa 4f43b42149 - Corretta gestione Movimento in Z sicurezza per chiusura pinze
- Se scarico al carico, alla fine si manda in parcheggio rulliera lato scarico
- Cambio versione per rilascio a cliente
2026-02-13 10:27:28 +01:00
andrea.villa e6e0c3118e Cambio versione per rilascio a cliente 2026-02-13 08:21:16 +01:00
andrea.villa b1103550fa UnloadOnLoadPos trasformata da globale a locale 2026-02-13 08:20:54 +01:00
andrea.villa 9be7a2c081 Scarico al carico se viene settato valore 1 o -1 2026-02-12 15:45:58 +01:00
andrea.villa 084bf57416 Cambio nome nota per decidere se scarico pezzo lato scarico o lato carico 2026-02-12 11:59:09 +01:00
daniele.nicoli a1c8505868 Aggiornata versione 2026-02-11 17:19:07 +01:00
daniele.nicoli 6238241446 Merge branch 'Test/Scarico_al_carico' into develop 2026-02-11 17:18:10 +01:00
luca.mazzoleni 6e8b1ab97d - correzione BeamData USE_PART_OFFSET 2026-02-11 10:26:46 +01:00
luca.mazzoleni f69c4259c3 - in BeamData aggiunto USE_PART_OFFSET per abilitare lettura PARTOFFSET da btl 2026-02-11 10:03:57 +01:00
andrea.villa 85944dc2da Cambio versione 2026-02-10 10:11:02 +01:00
10 changed files with 245 additions and 79 deletions
+7 -3
View File
@@ -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
}
---------------------------------------------------------------------
@@ -109,13 +110,16 @@ if EgtExistsFile( sDataBeam) then
BeamData.LEN_VERY_SHORT_PART = Machine.Offsets.LEN_VERY_SHORT_PART or BeamData.LEN_VERY_SHORT_PART
BeamData.LEN_SHORT_PART = Machine.Offsets.LEN_SHORT_PART or BeamData.LEN_SHORT_PART
BeamData.OVM_MID = Machine.Offsets.OVM_MID or BeamData.OVM_MID
BeamData.MAX_ANGLE_DRILL_CUT = Machine.Offsets.MAX_ANGLE_DRILL_CUT or BeamData.MAX_ANGLE_DRILL_CUT
if Machine.Offsets.MAX_ANGLE_DRILL_CUT then BeamData.MAX_ANGLE_DRILL_CUT = EgtClamp( Machine.Offsets.MAX_ANGLE_DRILL_CUT, 1, 89) end
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
-- per tagli con lama longitudinale si può attivare oppure si prende in automatico in caso di presenza della seconda lama
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
if Machine.Offsets.MIN_JOIN_S then BeamData.MIN_JOIN_S = EgtClamp( Machine.Offsets.MIN_JOIN_S, 80, 150) end
if Machine.Offsets.MIN_JOIN_L then BeamData.MIN_JOIN_L = EgtClamp( Machine.Offsets.MIN_JOIN_L, 300, 450) end
end
if Machine.Trave then
BeamData.MIN_WIDTH = Machine.Trave.XMIN or BeamData.MIN_WIDTH
+123 -31
View File
@@ -32,6 +32,10 @@ function OnStart()
EMT.MAXACC = MaxAcc or 6000 -- accelerazione massima pinze. In realtà è il tempo in millisecondi, quindi MAXACC corrisponde al tempo massimo per raggiungere la velocità desiderata
EMT.MINACC = MinAcc or 600 -- accelerazione minima pinze. In realtà è il tempo in millisecondi, quindi MINACC corrisponde al tempo massimo per raggiungere la velocità desiderata
SetToParkLine() -- si inizia con linee da parcheggiare su stack
-- se il pezzo dev'essere scaricato al carico
local dUnloadType = EgtGetInfo( EgtGetFirstNameInGroup( GDB_ID.ROOT, 'BtlInfo') or GDB_ID.NULL, 'UNLOAD', 'd')
EMT.UNLOAD = dUnloadType == 1 or dUnloadType == -1
end
---------------------------------------------------------------------
@@ -289,7 +293,7 @@ function OnDispositionEnd()
-- altrimenti disposizione finale, eventuale scarico pezzo lavorato se non ci sono lavorazioni
else
if #EMT.MDCHAR > 0 then
if EMT.AUXTYPE == 'R' and UnloadOnLoadPos then
if EMT.AUXTYPE == 'R' and EMT.UNLOAD then
EmitRemark( 'PART UNLOAD ON LOAD POSITION')
else
EmitRemark( 'PART UNLOAD')
@@ -299,28 +303,35 @@ function OnDispositionEnd()
-- Se è un'istruzione del piano ferma pezzo
if EMT.MDCHAR[i].StopBeamStat then
EmitStopBeam( EMT.MDCHAR[i])
EMT.LASTOISBRAKE = true
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
EMT.LASTOISBRAKE = false
end
end
if #EMT.MDCHAR > 0 then
local nMoveType = EgtIf( EMT.CHY_ON, 3, 2)
EmitMoveStartChars( nMoveType)
-- se dopo c'è scarico spezzone devo mettere attesa termine esecuzione
if IsRestPhase( EMT.PHASE + 1) then
EmitMoveWaitChars( nMoveType)
if not EMT.LASTOISBRAKE then
local nMoveType = EgtIf( EMT.CHY_ON, 3, 2)
EmitMoveStartChars( nMoveType)
-- se dopo c'è scarico spezzone devo mettere attesa termine esecuzione
if IsRestPhase( EMT.PHASE + 1) then
EmitMoveWaitChars( nMoveType)
else
EmitMoveWaitChars( nMoveType, true)
end
else
EmitMoveWaitChars( nMoveType, true)
EMT.LASTOISBRAKE = nil
end
-- emissione conclusione pezzo precedente (se non in modalità test)
if not TEST_USE and EMT.PRODID then
local sEnd= 'M113 P1='..tostring( EMT.PRODID)..' P2='..tostring( EMT.PATTID)..' P3='..tostring( EMT.CUTID)..' P4=2'
MyOutput( sEnd)
end
if UnloadOnLoadPos then
if EMT.UNLOAD then
MyOutput('M77')
end
end
@@ -516,9 +527,11 @@ function OnMachiningEnd()
EMT.TO_ZMAX = nil
end
EmitRemark( 'PART FALL')
elseif UnloadOnLoadPos and not nNextPathId and not nNextMchId then
EmitZmax( false, true, EMT.R1, EMT.R2, false, false, false)
EMT.ZMAX = true
elseif EMT.UNLOAD and not nNextPathId and not nNextMchId then
if not EMT.ZMAX then
EmitZmax( false, true, EMT.R1, EMT.R2, false, false, false)
EMT.ZMAX = true
end
EmitRemark( 'PART UNLOAD ON LOAD POSITION')
else
EmitZmax( false, true, EMT.R1, EMT.R2, false, false, false)
@@ -531,22 +544,28 @@ function OnMachiningEnd()
-- Se è un'istruzione del piano ferma pezzo
if EMT.MDCHAR[i].StopBeamStat then
EmitStopBeam( EMT.MDCHAR[i])
EMT.LASTOISBRAKE = true
else
EmitMoveDataChars( EMT.MDCHAR[i])
EMT.LASTOISBRAKE = false
end
end
if #EMT.MDCHAR > 0 then
if EMT.AUXTYPE == 'S' then
EmitMoveStartChars( 1)
EmitMoveWaitChars( 1)
if not EMT.LASTOISBRAKE then
EmitMoveStartChars( 1)
EmitMoveWaitChars( 1)
end
elseif EMT.AUXTYPE == 'U' then
local nMoveType = EgtIf( EMT.CHY_ON, 3, 2)
EmitMoveStartChars( nMoveType)
-- se dopo cè scarico spezzone devo mettere attesa termine esecuzione
if IsRestPhase( EMT.PHASE + 1) then
EmitMoveWaitChars( nMoveType)
else
EmitMoveWaitChars( nMoveType, true)
if not EMT.LASTOISBRAKE then
local nMoveType = EgtIf( EMT.CHY_ON, 3, 2)
EmitMoveStartChars( nMoveType)
-- se dopo cè scarico spezzone devo mettere attesa termine esecuzione
if IsRestPhase( EMT.PHASE + 1) then
EmitMoveWaitChars( nMoveType)
else
EmitMoveWaitChars( nMoveType, true)
end
end
-- emissione conclusione pezzo precedente (se non è modalità test)
if not TEST_USE and EMT.PRODID then
@@ -554,8 +573,10 @@ function OnMachiningEnd()
MyOutput( sEnd)
end
elseif EMT.AUXTYPE == 'P' then
EmitMoveStartChars( 3)
EmitMoveWaitChars( 3)
if not EMT.LASTOISBRAKE then
EmitMoveStartChars( 3)
EmitMoveWaitChars( 3)
end
if EMT.FALL then
MyOutput( 'M155')
-- emissione conclusione pezzo (se non in modalità test)
@@ -565,6 +586,11 @@ function OnMachiningEnd()
end
EMT.FALL = nil
elseif not EMT.PREROT then
-- emissione conclusione pezzo (se non in modalità test)
if not TEST_USE and EMT.PRODID and ( EMT.UNLOAD and ( not nNextPathId) and ( not nNextMchId)) then
local sEnd= 'M113 P1='..tostring( EMT.PRODID)..' P2='..tostring( EMT.PATTID)..' P3='..tostring( EMT.CUTID)..' P4=2'
MyOutput( sEnd)
end
MyOutput( 'M77')
end
end
@@ -599,6 +625,9 @@ end
---------------------------------------------------------------------
function OnPathStart()
if EMT.OPEISDISP then
return
end
-- non ancora iniziata la lavorazione
EMT.MCHFIRST = true
EMT.MCHFIRSTFEED = true
@@ -628,6 +657,9 @@ end
---------------------------------------------------------------------
function OnPathEnd()
if EMT.OPEISDISP then
return
end
if not EMT.ZMAX then
EmitResetMachining()
end
@@ -1980,6 +2012,10 @@ function PrepareResidue( sCmd, nInd)
else
EMT.UNL = true
end
-- se è scarico al carico
if Cmd[2] == 'Unload-On-Load' then
EMT.UNL2 = true
end
elseif Cmd[1] == '1' then
if Cmd[2] ~= 'Z' then
local MDChar
@@ -1993,7 +2029,19 @@ function PrepareResidue( sCmd, nInd)
MDChar.V2 = MaxV2 ; EMT.V2POS = MDChar.V2
EMT.ROLL_IN = nil
end
-- se scarico al carico parcheggio per sicurezza morsa e paratia lato scarico
if EMT.UNL2 then
MDChar.V1 = ParkV1 ; EMT.V1POS = MDChar.V1
MDChar.V2 = ParkV2 ; EMT.V2POS = MDChar.V2
MDChar.BeamVise = 0
end
table.insert( EMT.MDCHAR, MDChar)
-- Se scarico in linea con abbassamento piano ferma pezzo allo scarico
if Cmd[4] == 'UnBrakeBeam' then
-- Abbassa ferma pezzo
local MDStopBeam = { StopBeamStat=2, Load=1}
table.insert( EMT.MDCHAR, MDStopBeam)
end
end
elseif Cmd[1] == '2' then
local MDChar = { IniStatY1=EMT.ISY1, FinStatY1=EMT.FSY1, IniStatY2=EMT.ISY2, FinStatY2=EMT.FSY2, IniStatV2=1, BeamVise=EMT.BV}
@@ -2005,6 +2053,11 @@ function PrepareResidue( sCmd, nInd)
EMT.ROLL_IN = nil
end
table.insert( EMT.MDCHAR, MDChar)
-- Alza ferma pezzo
if Cmd[6] == 'BrakeBeam' then
local MDStopBeam = { StopBeamStat=1, Load=1}
table.insert( EMT.MDCHAR, MDStopBeam)
end
elseif Cmd[1] == '3' then
local MDChar = { IniStatY1=EMT.ISY1, FinStatY1=EMT.FSY1, IniStatY2=EMT.ISY2, FinStatY2=EMT.FSY2, IniStatV1=1, IniStatV2=1, BeamVise=EMT.BV}
if Cmd[2] ~= 'T' then MDChar[Cmd[2]] = tonumber( Cmd[3]) end
@@ -2092,12 +2145,15 @@ function PrepareUnload( sCmd, nInd)
local bBarOnY = ( EMT.PHASE < EgtGetPhaseCount() and not IsEnd2Phase( EMT.PHASE))
-- 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)}
-- Muove carrello aperto e lo mantiene aperto
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}
local MDStopBeam = { StopBeamStat=2, Unload=1}
table.insert( EMT.MDCHAR, MDStopBeam)
-- Dopo che si è abbassato il ferma pezzo chiude il pezzo in morsa per evitare che esso possa essere pinzato inclinato dal pistone
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)
-- 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)
@@ -2114,7 +2170,7 @@ function PrepareUnload( sCmd, nInd)
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}
local MDStopBeam = { StopBeamStat=1, Unload=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)}
@@ -2157,27 +2213,55 @@ function PreparePreRotation( sCmd, nInd)
EMT.PREROT = true
elseif Cmd[2] == 'SplitRot' then
EMT.SPLITROT = true
-- se è scarico al carico
elseif Cmd[2] == 'Unload-On-Load' then
EMT.UNL2 = true
end
elseif Cmd[1] == '1' then
if Cmd[2] ~= 'Z' then
local MDChar
if not EMT.PREROT then
MDChar = { [Cmd[2]]=tonumber(Cmd[3]), IniStatY1=EMT.ISY1, FinStatY1=EMT.FSY1, IniStatY2=EMT.ISY2, FinStatY2=EMT.FSY2, BeamVise=EMT.BV}
if EMT.UNL2 then
MDChar.V1 = ParkV1 ; EMT.V1POS = MDChar.V1
MDChar.V2 = ParkV2 ; EMT.V2POS = MDChar.V2
end
else
MDChar = { [Cmd[2]]=tonumber(Cmd[3]), IniStatY1=86, FinStatY1=87, IniStatY2=1, BeamVise=0}
end
table.insert( EMT.MDCHAR, MDChar)
-- Se scarico in linea con abbassamento piano ferma pezzo allo scarico
if Cmd[4] == 'UnBrakeBeam' then
-- Abbassa ferma pezzo
local MDStopBeam = { StopBeamStat=2, Load=1}
table.insert( EMT.MDCHAR, MDStopBeam)
end
end
elseif Cmd[1] == '2' then
local MDChar = { IniStatY1=EMT.ISY1, FinStatY1=EMT.FSY1, IniStatY2=EMT.ISY2, FinStatY2=EMT.FSY2, BeamVise=EMT.BV}
local MDChar = { IniStatY1=EMT.ISY1, FinStatY1=EMT.FSY1, IniStatY2=EMT.ISY2, FinStatY2=EMT.FSY2, IniStatV2=1, BeamVise=EMT.BV}
if Cmd[2] ~= 'T' then MDChar[Cmd[2]] = tonumber( Cmd[3]) end
if Cmd[4] ~= 'T' then MDChar[Cmd[4]] = tonumber( Cmd[5]) end
if EMT.ROLL_IN then
MDChar.V1 = MinV1 ; EMT.V1POS = MDChar.V1
MDChar.V2 = MaxV2 ; EMT.V2POS = MDChar.V2
EMT.ROLL_IN = nil
end
table.insert( EMT.MDCHAR, MDChar)
-- Alza ferma pezzo
if Cmd[6] == 'BrakeBeam' then
local MDStopBeam = { StopBeamStat=1, Load=1}
table.insert( EMT.MDCHAR, MDStopBeam)
end
elseif Cmd[1] == '3' then
local MDChar = { IniStatY1=EMT.ISY1, FinStatY1=EMT.FSY1, IniStatY2=EMT.ISY2, FinStatY2=EMT.FSY2, BeamVise=EMT.BV}
local MDChar = { IniStatY1=EMT.ISY1, FinStatY1=EMT.FSY1, IniStatY2=EMT.ISY2, FinStatY2=EMT.FSY2, IniStatV1=1, IniStatV2=1, BeamVise=EMT.BV}
if Cmd[2] ~= 'T' then MDChar[Cmd[2]] = tonumber( Cmd[3]) end
if Cmd[4] ~= 'T' then MDChar[Cmd[4]] = tonumber( Cmd[5]) end
if Cmd[6] ~= 'T' then MDChar[Cmd[6]] = tonumber( Cmd[7]) end
if EMT.ROLL_IN then
MDChar.V1 = MinV1 ; EMT.V1POS = MDChar.V1
MDChar.V2 = MaxV2 ; EMT.V2POS = MDChar.V2
EMT.ROLL_IN = nil
end
table.insert( EMT.MDCHAR, MDChar)
elseif Cmd[1] == '4' then
EMT.TO_ZMAX = true
@@ -3078,9 +3162,17 @@ 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
if MoData.StopBeamStat then
if MoData.Load then
EmitMoveStartChars( 3)
EmitMoveWaitChars( 3)
sOut = 'M125 P1=' .. EgtNumToString( MoData.StopBeamStat, 0)
else
EmitMoveStartChars( 2)
EmitMoveWaitChars( 2)
sOut = 'M125 P2=' .. EgtNumToString( MoData.StopBeamStat, 0)
end
end
MyOutput( sOut)
end
+28 -21
View File
@@ -160,10 +160,10 @@ function OnSimulStart()
local nId = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( nGrpId, McdData[i].Sub), McdData[i].Name)
if nId then
table.insert( EMT.MCODET, nId)
EgtOutLog( 'Element ' .. McdData[i].Grp .. '/' .. McdData[i].Sub .. '/' .. McdData[i].Name .. ' (' .. tostring( nId) .. ') is ok', 4)
EgtOutLog( ' Element ' .. McdData[i].Grp .. '/' .. McdData[i].Sub .. '/' .. McdData[i].Name .. ' (' .. tostring( nId) .. ') is ok', 4)
else
nMcdNullCnt = nMcdNullCnt + 1
EgtOutLog( 'Element ' .. McdData[i].Grp .. '/' .. McdData[i].Sub .. '/' .. McdData[i].Name .. ' is null', 4)
EgtOutLog( ' Element ' .. McdData[i].Grp .. '/' .. McdData[i].Sub .. '/' .. McdData[i].Name .. ' is null', 4)
end
end
if nMcdNullCnt > 0 then
@@ -484,6 +484,7 @@ end
---------------------------------------------------------------------
function OnSimulToolSelect( dPosA)
EgtOutLog( '===> ToolSelect : Reset CollisionObj', 4)
-- se utensile non definito, è disposizione ed esco
if EMT.TOOL == '' then return end
-- recupero dati utensile
@@ -575,9 +576,9 @@ function OnSimulToolSelect( dPosA)
-- se attivo Collision Check
EMT.SAFEDIST = COLL_SAFE_DIST
if EMT.COLLOBJ then
local nInd = EgtIf( nSetHead ~= 2, 1001, 1011)
local nInd = 1000 + tonumber( string.sub( EMT.HEAD, 2))
AddToolToCollisionObj( EMT.TOOL, EMT.HEAD, EMT.EXIT, nInd, true)
AddToolHolderToCollisionObj( EMT.TOOL, EMT.HEAD, EMT.EXIT, nInd + 1)
AddToolHolderToCollisionObj( EMT.TOOL, EMT.HEAD, EMT.EXIT, nInd + 100)
for i, Coll in ipairs( EMT.COLLOBJ or {}) do
EmtAddCollisionObjEx( i, Coll.Fr, Coll.Ty, Coll.Mv, Coll.P1, Coll.P2, Coll.P3)
end
@@ -736,8 +737,9 @@ function OnSimulToolDeselect( dPrevA)
-- prendo utensile lama su aggregato
elseif EMT.NEXTHEAD == 'H22' then
-- aggiungo utensile per verifica collisione
AddToolToCollisionObj( EMT.NEXTTOOL, EMT.NEXTHEAD, EMT.NEXTEXIT, 1011, false)
AddToolHolderToCollisionObj( EMT.NEXTTOOL, EMT.NEXTHEAD, EMT.NEXTEXIT, 1011 + 1)
local nInd = 1000 + tonumber( string.sub( EMT.NEXTHEAD, 2))
AddToolToCollisionObj( EMT.NEXTTOOL, EMT.NEXTHEAD, EMT.NEXTEXIT, nInd, false)
AddToolHolderToCollisionObj( EMT.NEXTTOOL, EMT.NEXTHEAD, EMT.NEXTEXIT, nInd + 100)
-- simulo movimento
SimulMoveAxis( 'X2', ParkSawX2, MCH_SIM_STEP.RAPID)
SimulMoveAxes( 'B2', ParkSawB2, MCH_SIM_STEP.COLLROT, 'C2', ParkSawC2, MCH_SIM_STEP.COLLROT)
@@ -746,6 +748,7 @@ end
---------------------------------------------------------------------
function OnSimulMachiningStart()
EgtOutLog( '===> Start Machining : ' .. EgtGetName( EMT.MCHID), 4)
-- se lavorazione è con gruppo a forare, abilito le altre punte alla lavorazione del VMILL
if EMT.HEAD == 'H14' then
local OtherTools = EgtGetToolsInCurrSetupPos( 'T121')
@@ -754,7 +757,7 @@ function OnSimulMachiningStart()
if OtherTools[i] ~= '' and OtherTools[i] ~= EMT.TOOL then
EmtAddToolForVmill( OtherTools[i], 'H14', i, EMT.VMILL)
-- dichiaro utensile per verifica collisioni
local nInd = 1011
local nInd = 1000 + tonumber( string.sub( 'H14', 2))
AddToolToCollisionObj( OtherTools[i], 'H14', i, nInd, true)
end
end
@@ -821,9 +824,9 @@ function OnSimulMachiningStart()
-- dichiaro utensile per Vmill
EmtAddToolForVmill( sDouTool, sDouHead, nDouExit, EMT.VMILL)
-- dichiaro utensile per verifica collisioni
local nInd = 1011
local nInd = 1000 + tonumber( string.sub( sDouHead, 2))
AddToolToCollisionObj( sDouTool, sDouHead, nDouExit, nInd, true)
AddToolHolderToCollisionObj( sDouTool, sDouHead, nDouExit, nInd + 1)
AddToolHolderToCollisionObj( sDouTool, sDouHead, nDouExit, nInd + 100)
-- salvo dati
EMT.DOU_TLEN = EgtTdbGetCurrToolParam( MCH_TP.LEN)
EMT.DOU_TTOTLEN = EgtTdbGetCurrToolParam( MCH_TP.TOTLEN)
@@ -840,19 +843,17 @@ function OnSimulMachiningStart()
local nSetHead = GetHeadSet( EMT.HEAD)
if nSetHead ~= 1 and ( EMT.PREVTOOL_H1 and EMT.PREVHEAD_H1) then
local nPrevExit_H1 = 1
local nInd_H1 = 1001
local nInd_H1 = 1000 + tonumber( string.sub( EMT.PREVHEAD_H1, 2))
AddToolToCollisionObj( EMT.PREVTOOL_H1, EMT.PREVHEAD_H1, nPrevExit_H1, nInd_H1, true)
AddToolHolderToCollisionObj( EMT.PREVTOOL_H1, EMT.PREVHEAD_H1, nPrevExit_H1, nInd_H1 + 1)
AddToolHolderToCollisionObj( EMT.PREVTOOL_H1, EMT.PREVHEAD_H1, nPrevExit_H1, nInd_H1 + 100)
end
if nSetHead ~= 2 and ( EMT.PREVTOOL_H2 and EMT.PREVHEAD_H2) then
local nPrevExit_H2 = 1
local nInd_H2 = 1011
local nInd_H2 = 1000 + tonumber( string.sub( EMT.PREVHEAD_H2, 2))
AddToolToCollisionObj( EMT.PREVTOOL_H2, EMT.PREVHEAD_H2, nPrevExit_H2, nInd_H2, true)
AddToolHolderToCollisionObj( EMT.PREVTOOL_H2, EMT.PREVHEAD_H2, nPrevExit_H2, nInd_H2 + 1)
AddToolHolderToCollisionObj( EMT.PREVTOOL_H2, EMT.PREVHEAD_H2, nPrevExit_H2, nInd_H2 + 100)
end
if nSetHead ~= 3 and IsHeadExisting( 3) then
local nPrevExit_H3 = 1
local nInd_H3 = 1001
local sHeadName
if EgtGetHeadId( 'H39') then
sHeadName = 'H39'
@@ -861,8 +862,10 @@ function OnSimulMachiningStart()
else
EmtSetLastError( 1212, "HEAD not managed")
end
AddToolToCollisionObj( nil, sHeadName, nPrevExit_H3, 1001)
AddToolHolderToCollisionObj( nil, sHeadName, nPrevExit_H3, 1002)
local nPrevExit_H3 = 1
local nInd_H3 = 1000 + tonumber( string.sub( sHeadName, 2))
AddToolToCollisionObj( nil, sHeadName, nPrevExit_H3, nInd_H3)
AddToolHolderToCollisionObj( nil, sHeadName, nPrevExit_H3, nInd_H3 + 100)
end
end
-- se precedente in doppio ma ora solo testa 1 e non in sicurezza
@@ -933,6 +936,10 @@ function OnSimulPathStart()
EMT.TO_FALL = true
end
end
-- dump oggetti di collisione
if DumpCollisionObj then
DumpCollisionObj( ' ==> CollisionObj :', 4)
end
end
---------------------------------------------------------------------
@@ -1445,10 +1452,10 @@ function OnSimulCollision()
return
end
local Class = ''
if EMT.SIMCOBIND == 1001 or EMT.SIMCOBIND == 1011 then
Class = 'T_'..EMT.HEAD
elseif EMT.SIMCOBIND == 1002 or EMT.SIMCOBIND == 1012 then
Class = 'TH_'..EMT.HEAD
if EMT.SIMCOBIND > 1000 and EMT.SIMCOBIND < 1099 then
Class = 'T_H'.. tostring( EMT.SIMCOBIND - 1000)
elseif EMT.SIMCOBIND > 1100 and EMT.SIMCOBIND < 1199 then
Class = 'TH_H'..tostring( EMT.SIMCOBIND - 1100)
else
Class = EMT.COLLOBJ[EMT.SIMCOBIND].Cl
end
+71 -20
View File
@@ -276,7 +276,6 @@ local DIST_Y1MAX_LOAD = 100 -- distanza carrello Y1 da massimo asse al ca
----------------------- Variabili -----------------------------------
local Test = false
local SPLIT
UnloadOnLoadPos = EgtGetInfo( EgtGetFirstNameInGroup( GDB_ID.ROOT, 'BtlInfo'), 'Output', 'b') == 1 -- se il pezzo dev'essere scaricato al carico
---------------------------------------------------------------------
local function PrepareClGroup( nParentId)
@@ -382,7 +381,7 @@ local function GetNextRawInOrd( nCurrRawId)
end
-----------------------------------------------------------------------
local function EnsureZmax( bCloseV, vCmd)
local function EnsureZmax( bCloseV, vCmd, nInd)
-- verifico non sia già inserito nella lista dei comandi
for i = 1, #vCmd do
if vCmd[i][1] == 4 then
@@ -394,7 +393,11 @@ local function EnsureZmax( bCloseV, vCmd)
end
end
-- posizionamento sicuro teste e rulli
table.insert( vCmd, { 4, EgtIf( bCloseV, 1, 0)})
if not nInd then
table.insert( vCmd, { 4, EgtIf( bCloseV, 1, 0)})
else
table.insert( vCmd, nInd, { 4, EgtIf( bCloseV, 1, 0)})
end
return true
end
@@ -570,8 +573,12 @@ function OnSpecialApplyDisposition()
SpecSetCarrPosFromCmds( vCmd2)
-- determino posizione testa trave
local nLastEntId = EgtGetLastInGroup( EgtGetLastInGroup( EgtGetFirstNameInGroup( EgtGetPrev( EMC.DISPID), 'CL')))
local vAxes = EmtGetAxesPos( nLastEntId)
if #vAxes > 0 then EMC.TPOS = vAxes[1] end
if nLastEntId then
local vAxes = EmtGetAxesPos( nLastEntId)
if #vAxes > 0 then EMC.TPOS = vAxes[1] end
else
EMC.TPOS = EgtGetInfo( EMC.DISPID, 'TPOS', 'd')
end
local vCmd3 = SpecCalcUnload()
-- unisco ed emetto i comandi
vCmd = EgtJoinTables( vCmd, vCmd2)
@@ -680,7 +687,7 @@ function OnPostApplyMachining()
local OriY2Delta = EMC.Y2DELTA
local OriV1Pos = EMC.V1POS
local OriV2Pos = EMC.V2POS
local OriCnt = EMC.CNT
local OriCnt = EMC.CNT
-- eseguo le elaborazioni
SpecApplyPath( bPreSplit, bSplitting, bPreCut, bCutting, bLast and bUnload)
-- se separazione, verifico il risultato
@@ -737,6 +744,9 @@ function SpecApplyPath( bPreSplit, bSplitting, bPreCut, bCutting, bUnload)
-- Verifico se lavorazione pareti
local bWall = ( EgtGetInfo( EgtGetCurrMachGroup() or GDB_ID.NULL, 'Wall', 'd') == 1)
-- se il pezzo dev'essere scaricato al carico
local dUnloadType = EgtGetInfo( EgtGetFirstNameInGroup( GDB_ID.ROOT, 'BtlInfo') or GDB_ID.NULL, 'UNLOAD', 'd')
local bUnloadOnLoadPos = dUnloadType == 1 or dUnloadType == -1
-- mi salvo info lavorazione su una lista
local AuxInfoMach = {}
@@ -753,8 +763,13 @@ function SpecApplyPath( bPreSplit, bSplitting, bPreCut, bCutting, bUnload)
local b3Tot = BBox3d()
local b3Raw = BBox3d()
local nNextOddPhase = GetNextStartOrRestPhase( EMC.PHASE)
-- se esistono più grezzi toglie l'impostazione di scarico al carico
if UnloadOnLoadPos and ( nNextOddPhase and nNextOddPhase <= EgtGetPhaseCount()) then UnloadOnLoadPos = false end
-- se esistono più grezzi toglie l'impostazione di scarico al carico e ritorna errore
if bUnloadOnLoadPos and ( nNextOddPhase and nNextOddPhase <= EgtGetPhaseCount()) then
bUnloadOnLoadPos = false
EMC.ERR = 22
EMC.MSG = ' Error : Unload on Load Position not reachable if raw part on Load Position'
return
end
local nRawId = EgtGetFirstRawPart()
local nCurrRawId = GDB_ID.NULL
while nRawId do
@@ -806,7 +821,7 @@ function SpecApplyPath( bPreSplit, bSplitting, bPreCut, bCutting, bUnload)
local dDistF, dDistB, dRollF, dRollB = SpecialCalcPhaseEncumbrance( EMC.PHASE + 1)
dDistFront = min( dDistFront, dDistF)
-- Se è previsto lo scarico al carico aumenta l'ingombro dell'area di lavoro
if UnloadOnLoadPos then
if bUnloadOnLoadPos then
dDistFront = dDistFront -( MinDeltaYV*2 + AGG_V)
end
dDistBack = min( dDistBack, dDistB)
@@ -1211,7 +1226,9 @@ function SpecCalcCarriages( dDistFront, dDistBack, dRollFront, dRollBack, dY1Del
WorkTab.dY1DeltaMaxF = min( EMC.LB - MinJoin, MaxY1 + dDistFront + dRollFront + AGG_V)
WorkTab.dY2DeltaMinF = max( MinJoin + EMC.HCING + EMC.HOVM, EMC.LB + MinY2 - dMyDistBack - AGG_V - dRollBack)
WorkTab.dY2DeltaMaxF = min( dDistFront, EMC.LB - MyMinOther) -- - EMC.TCING
if dY1DeltaMaxSP then WorkTab.dY1DeltaMaxF = min( WorkTab.dY1DeltaMaxF, dY1DeltaMaxSP) end
if dY1DeltaMaxSP and dY1DeltaMaxSP > WorkTab.dY1DeltaMinF then
WorkTab.dY1DeltaMaxF = min( WorkTab.dY1DeltaMaxF, dY1DeltaMaxSP)
end
if dY2DeltaMinUL then WorkTab.dY2DeltaMinF = max( WorkTab.dY2DeltaMinF, dY2DeltaMinUL) end
WorkTab.dV1PosF = dRollBack
WorkTab.bV1CloseF = false
@@ -1341,12 +1358,20 @@ end
function SpecCalcUnloadOnLoadPos()
local vCmdPre = {}
EgtOutLog( ' *[UL]', 1)
if not EMC.Y1DELTA and not EMC.Y2DELTA then
EMC.ERR = 21
EMC.MSG = ' Error : Y1 and Y2 not clamped for unloading'
return {}
end
-- Se pinza Y2 chiusa, devo effettuare uno scambio
local dY1DeltaMaxSP = MaxY1 - LoadT - TurnerOffs - 10 * GEO.EPS_SMALL
local dY1DeltaMaxSP = MaxY1 - UnloadOnLoadTPos - TurnerOffs - 10 * GEO.EPS_SMALL
if EMC.Y2DELTA or EMC.Y1DELTA > dY1DeltaMaxSP then
-- imposto quote aggancio per avere solo pinza Y
local dDistFront = 0
local dDistBack = EMC.LB - MinOther - EMC.HOVM + 10 * GEO.EPS_SMALL
-- dico che le paratie sono chiuse perchè poi se ho dei movimenti, verranno chiuse, quindi parto considerandole già chiuse
EMC.V1POS = 0
EMC.V2POS = 0
-- effettuo scambio
vCmdPre = SpecCalcCarriages( dDistFront, dDistBack, 0, 0, dY1DeltaMaxSP)
-- recupero nuova posizione carrelli
@@ -1368,13 +1393,28 @@ function SpecCalcUnloadOnLoadPos()
table.insert( vCmd, { 12, 0})
end
-- riporto la trave al carico
local dRotT = LoadT + TurnerOffs
table.insert( vCmd, { 2, 'Y1', dRotT + EMC.Y1DELTA, 'T', dRotT})
local dRotT = UnloadOnLoadTPos + TurnerOffs
local dY1Move = dRotT + EMC.Y1DELTA
if dY1Move > MaxY1 then
local dRotTStep, dY1MoveStep = dRotT - dY1Move + MaxY1, MaxY1
if MinBeamLenUnloadInLine and EMC.LB >= MinBeamLenUnloadInLine then
table.insert( vCmd, { 2, 'Y1', dY1MoveStep, 'T', dRotTStep, 'BrakeBeam'})
-- apro la morsa
table.insert( vCmd, { 11, 0})
-- riporto il carrello in fondo alla trave
dY1MoveStep = dRotTStep + ( EMC.HCING or 0)
dY1Move = dY1MoveStep + dY1Move - MaxY1
table.insert( vCmd, { 1, 'Y1', dY1MoveStep, 'UnBrakeBeam'})
-- chiudo la morsa
table.insert( vCmd, { 11, 1})
end
end
table.insert( vCmd, { 2, 'Y1', dY1Move, 'T', dRotT, 'BrakeBeam'})
-- apro la morsa
table.insert( vCmd, { 11, 0})
EMC.CNT = nil
-- riporto il carrello in home
table.insert( vCmd, { 1, 'Y1', ParkY1})
table.insert( vCmd, { 1, 'Y1', ParkY1, 'UnBrakeBeam'})
-- eventuale unione tabelle
if #vCmdPre > 0 then
@@ -1389,12 +1429,23 @@ function SpecCalcUnload()
-- In caso di condizioni rispettate richiama lo scarico al carico e ritorna
local nNextPathId
local nNextMchId
local nNextDispId
if EMC.PATHID then nNextPathId = EgtGetNextActiveOperation( EMC.PATHID) end
if EMC.MCHID then nNextMchId = EgtGetNextActiveOperation( EMC.MCHID) end
-- Opzione attiva, è l'ultimo path, è l'ultima lavorazione e non c'è rimanenza
if UnloadOnLoadPos and not nNextPathId and not nNextMchId and not IsStartOrRestPhase(EMC.PHASE) then
local vCmd = SpecCalcUnloadOnLoadPos()
return vCmd
if EMC.DISPID then nNextDispId = EgtGetNextActiveOperation( EMC.DISPID) end
-- se il pezzo dev'essere scaricato al carico
local dUnloadType = EgtGetInfo( EgtGetFirstNameInGroup( GDB_ID.ROOT, 'BtlInfo') or GDB_ID.NULL, 'UNLOAD', 'd')
local bUnloadOnLoadPos = dUnloadType == 1 or dUnloadType == -1
if bUnloadOnLoadPos then
-- è l'ultimo path, è l'ultima lavorazione, non ci sono altre disposizioni e non c'è rimanenza
if not nNextPathId and not nNextMchId and not nNextDispId and not IsStartOrRestPhase(EMC.PHASE) then
local vCmd = SpecCalcUnloadOnLoadPos()
return vCmd
else
EMC.ERR = 21
EMC.MSG = ' Error : Unload on Load Position not reachable if raw part on Load Position'
return {}
end
end
local vCmdPre = {}
EgtOutLog( ' *[U]', 1)
@@ -1651,7 +1702,7 @@ local function PosForEnl1FY1( dY1a, dY2a, dTa, dExtra, dCorsaY1e, dCorsaY2Te)
if dDispl/2 <= dCorsaY1e then
dY1a = dY1a + dDispl / 2
dY2a = dY2a - dDispl / 2
dTa = dTa - dDispl / 2
dTa = dTa - dDispl / 2
else
dY1a = dY1a + dCorsaY1e
dY2a = dY2a - (dDispl - dCorsaY1e)
@@ -1673,7 +1724,7 @@ local function PosForEnl1FY2( dY1a, dY2a, dTa, dExtra, dCorsaY1Te, dCorsaY2e)
if dDispl/2 <= dCorsaY1Te then
if dDispl/2 <= dCorsaY2e then
dY1a = dY1a + dDispl / 2
dTa = dTa + dDispl / 2
dTa = dTa + dDispl / 2
dY2a = dY2a - dDispl / 2
else
dY2a = dY2a - dCorsaY2e
+11 -3
View File
@@ -5,7 +5,7 @@
require( 'EmtGenerator')
EgtEnableDebug( false)
PP_VER = '3.1a2_DEV3'
PP_VER = '3.1a2_DEV24'
PP_NVER = '3.1.1.2'
MIN_MACH_VER = '2.7d2'
MACH_NAME = EgtGetCurrMachineName()
@@ -86,7 +86,7 @@ ParkTc2X1 = 3100
ParkZ1 = -545
ParkC1 = -90
ParkB1 = -90
ParkCSawX1 = 1500
ParkCSawX1 = 1700
ParkCSawZ1 = -100
ParkCSaw0Z1 = -400
ParkCSawC1 = -90
@@ -173,7 +173,7 @@ 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
UnloadOnLoadPos = nil
UnloadOnLoadTPos = LoadT -- posizione di scarico al carico
-- Aggiornamento con dati da TechnoEssetre7
local sTs3Data = EgtGetStringFromIni( 'Beam', 'DATA_DIR', "C:\\TechnoEssetre7\\EgtData", EgtGetIniFile()).."\\Essetre-PF1250-3T_5Ax.data"
@@ -223,6 +223,8 @@ if EgtExistsFile( sDataBeam) then
if Machine.Offsets.Z3_NEG then MinZ3 = Machine.Offsets.Z3_NEG end
if Machine.Offsets.Z3_POS then MaxZ3 = Machine.Offsets.Z3_POS end
if Machine.Offsets.PARK_Z3 then ParkZ3 = Machine.Offsets.PARK_Z3 end
if Machine.Offsets.PARK_C3 then ParkC3 = Machine.Offsets.PARK_C3 end
if Machine.Offsets.PARK_B3 then ParkB3 = Machine.Offsets.PARK_B3 end
if Machine.Offsets.B3_NEG then MinB3 = Machine.Offsets.B3_NEG end
if Machine.Offsets.B3_POS then MaxB3 = Machine.Offsets.B3_POS end
if Machine.Offsets.MIN_Y1 then MinMchY1 = Machine.Offsets.MIN_Y1 end
@@ -273,6 +275,11 @@ if EgtExistsFile( sDataBeam) then
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
if Machine.Offsets.UNLOAD_ON_LOAD_T_POS then
UnloadOnLoadTPos = Machine.Offsets.UNLOAD_ON_LOAD_T_POS
elseif Machine.Offsets.DIST_FTZERO then
UnloadOnLoadTPos = Machine.Offsets.DIST_FTZERO
end
-- aggiustamenti
MinY1 = MinV1 + MinDeltaYV
@@ -509,6 +516,7 @@ local H31Id = EmtHead {
TDir = Vector3d( 0, 0, 1),
ADir = X_AX(),
Rot1W = 0.2,
SolCh = MCH_SCC.ADIR_XM,
Rot2Stroke = {MinB3, MaxB3},
OthColl = {'B3/SOLID', 'C3/SOLID'},
Geo = 'H38_HEAD/GEO'}
Binary file not shown.
+1
View File
@@ -20,6 +20,7 @@
2=d,OpenMinSafe,0
3=d,OpenOutRaw,0
4=l,MaxOptSize,0
5=b,AdjustFeed,1
[Mortising]
0=d,MaxElev,0
Binary file not shown.
+3
View File
@@ -1,5 +1,8 @@
==== Common_PF1250 Update Log ====
Versione 3.1b1 (17/02/2026)
- (GEN) Generazione non allineata a simulazione. Ticket#2819
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
+1 -1
View File
@@ -3,7 +3,7 @@
local InfoCommon_STD_PP = {
NAME = 'Common_PF1250', -- nome script PP standard
VERSION = '3.1a2', -- versione script
VERSION = '3.1b1', -- versione script
MIN_MACH_VER_PP_COMMON = '2.7k1' -- versione minima kernel
}