Compare commits

...

8 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
4 changed files with 84 additions and 28 deletions
+2 -2
View File
@@ -118,8 +118,8 @@ if EgtExistsFile( sDataBeam) then
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 = Machine.Offsets.MIN_JOIN_S end
if Machine.Offsets.MIN_JOIN_L then BeamData.MIN_JOIN_L = Machine.Offsets.MIN_JOIN_L 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
+52 -21
View File
@@ -303,22 +303,29 @@ 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'
@@ -537,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
@@ -560,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)
@@ -2215,6 +2230,12 @@ function PreparePreRotation( sCmd, nInd)
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, IniStatV2=1, BeamVise=EMT.BV}
@@ -2226,6 +2247,11 @@ function PreparePreRotation( 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
@@ -3136,11 +3162,16 @@ 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
local sUnloadSide = EgtIf( MoData.Load, 'P1=', 'P2=')
sOut = 'M125 ' .. sUnloadSide .. EgtNumToString( MoData.StopBeamStat, 0)
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
+21 -4
View File
@@ -1226,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
@@ -1362,7 +1364,7 @@ function SpecCalcUnloadOnLoadPos()
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
@@ -1391,8 +1393,23 @@ 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, 'BrakeBeam'})
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
+9 -1
View File
@@ -5,7 +5,7 @@
require( 'EmtGenerator')
EgtEnableDebug( false)
PP_VER = '3.1a2_DEV18'
PP_VER = '3.1a2_DEV24'
PP_NVER = '3.1.1.2'
MIN_MACH_VER = '2.7d2'
MACH_NAME = EgtGetCurrMachineName()
@@ -173,6 +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
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"
@@ -222,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
@@ -272,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