diff --git a/Common_FAST.NUM.mlpe b/Common_FAST.NUM.mlpe index b5621b3..2da9885 100644 --- a/Common_FAST.NUM.mlpe +++ b/Common_FAST.NUM.mlpe @@ -1647,7 +1647,7 @@ end --------------------------------------------------------------------- function GetET( sHead, sTcPos, dAxR3) - if sHead == 'H1' or sHead == 'H5' or sHead == 'H6' then + if sHead == 'H1' or sHead == 'H5' or sHead == 'H6' or sHead == 'H7' then return ' E'..sTcPos elseif sHead == 'H2' then return ' ET42' diff --git a/Common_FAST.NUM_PLUS.mlpe b/Common_FAST.NUM_PLUS.mlpe index 2dac2f3..e65bcc1 100644 --- a/Common_FAST.NUM_PLUS.mlpe +++ b/Common_FAST.NUM_PLUS.mlpe @@ -145,7 +145,11 @@ function OnToolData() local sPos = 'N2' .. tostring(nPos) local sOut = 'L11=' .. EmtLenToString( EMT.SMAX, 3) .. ' L12=' .. EmtLenToString( AngTr1Offs, 1)..' G76H9998.1'..sPos..sPos EmtOutput( sOut) - -- altro non previsto + -- emissione dati sega a catena + elseif EMT.HEAD == 'H7' then + local sOut = 'L11='..EgtNumToString( EMT.SMAX, 0)..' L12='..EmtLenToString( ( 154.5), 1)..' G76H9998.1N121N121' + EmtOutput( sOut) +-- altro non previsto end end @@ -693,7 +697,7 @@ function OnRapid() if EMT.HEAD == 'H3' then sEL = sEL..EmtLenToString( ( EMT.TDIST or ChSawLen), 3) -- se aggregato - elseif EMT.HEAD == 'H5' or EMT.HEAD == 'H6' then + elseif EMT.HEAD == 'H5' or EMT.HEAD == 'H6' or EMT.HEAD == 'H7' then sEL = sEL..EmtLenToString( AngTr1Offs, 3) -- se testa normale ( H1 or H2) else @@ -705,7 +709,7 @@ function OnRapid() if EMT.HEAD == 'H3' then sER = sER..EmtLenToString( EMT.TLEN, 3) -- se aggregato - elseif EMT.HEAD == 'H5' or EMT.HEAD == 'H6' then + elseif EMT.HEAD == 'H5' or EMT.HEAD == 'H6' or EMT.HEAD == 'H7' then sER = sER..EmtLenToString( EMT.TLEN + AngTr1Len, 3) -- se testa normale ( H1 or H2) else @@ -1017,7 +1021,7 @@ end --------------------------------------------------------------------- function OnArc() -- con aggregato non si possono fare archi. Deve essere tutto spezzato - if EMT.HEAD == 'H5' or EMT.HEAD == 'H6' then + if EMT.HEAD == 'H5' or EMT.HEAD == 'H6' or EMT.HEAD == 'H7' then EmtSetLastError( 1211, "With aggregate, the arcs must be splitted") end @@ -1642,11 +1646,16 @@ function MyAdjustLinearAxes() local LenRef = MillOffs local vtAux = EgtGetCalcAuxDirFromAngles( EMT.R1, EMT.R2, EMT.R3) vtE = vtAux * LenAux - Z_AX() * LenRef - elseif EMT.HEAD == 'H5' then + elseif EMT.HEAD == 'H5' or EMT.HEAD == 'H6' then local LenAux = AngTr1Offs + MillOffs local LenRef = MillOffs local vtAux = EgtGetCalcAuxDirFromAngles( EMT.R1, EMT.R2, EMT.R3) vtE = vtAux * LenAux - Z_AX() * LenRef + elseif EMT.HEAD == 'H7' then + local LenAux = AngTrBHOffs + MillOffs + local LenRef = MillOffs + local vtAux = EgtGetCalcAuxDirFromAngles( EMT.R1, EMT.R2, EMT.R3) + vtE = vtAux * LenAux - Z_AX() * LenRef else EmtSetLastError( 1211, 'Head not allowed ' .. EMT.HEAD) end @@ -1741,7 +1750,7 @@ end --------------------------------------------------------------------- function GetET( sHead, sTcPos, dAxR3) - if sHead == 'H1' or sHead == 'H5' or sHead == 'H6' then + if sHead == 'H1' or sHead == 'H5' or sHead == 'H6' or sHead == 'H7' then return ' E'..sTcPos elseif sHead == 'H2' then return ' ET42' diff --git a/Common_FAST.TPA.mlpe b/Common_FAST.TPA.mlpe index 21a1020..d782fd3 100644 --- a/Common_FAST.TPA.mlpe +++ b/Common_FAST.TPA.mlpe @@ -151,7 +151,12 @@ function OnToolData() local sOut = 'M992 P1=' .. EgtNumToString( nPos, 0) .. ' P2=' .. EmtLenToString( EMT.TLEN, 3) .. ' P3=' .. EmtLenToString( EMT.TDIAM, 3) .. ' P4=' .. EmtLenToString( EMT.SMAX, 3) .. ' P5=' .. EmtLenToString( EMT.TTOTLEN, 3) ParkLine( sOut) - -- altro non previsto + -- emissione dati sega a catena + elseif EMT.HEAD == 'H7' then + local sOut = 'M992 P1=' .. EMT.TCPOS:gsub( 'T', '') .. ' P2=' .. EmtLenToString( EMT.TLEN, 3) .. ' P3=' .. EmtLenToString( EMT.TDIAM, 3) .. + ' P4=' .. EmtLenToString( EMT.SMAX, 3) .. ' P5=' .. EmtLenToString( EMT.TTOTLEN, 3) + ParkLine( sOut) +-- altro non previsto else EmtSetLastError( 1211, 'Head not allowed ' .. EMT.HEAD) end @@ -1640,12 +1645,18 @@ function MyAdjustLinearAxes() local LenRef = MillOffs local vtAux = EgtGetCalcAuxDirFromAngles( EMT.R1, EMT.R2, EMT.R3) vtE = vtAux * LenAux - Z_AX() * LenRef - elseif EMT.HEAD == 'H5' then + elseif EMT.HEAD == 'H5' or EMT.HEAD == 'H6' then local Len = EMT.TLEN + AngTr1Len local LenAux = MillOffs + AngTr1Offs local LenRef = MillOffs local vtAux = EgtGetCalcAuxDirFromAngles( EMT.R1, EMT.R2) vtE = Vector3d( EMT.EXTR) * Len + vtAux * LenAux - Z_AX() * LenRef + elseif EMT.HEAD == 'H7' then + local Len = EMT.TLEN + AngTrBHLen + local LenAux = MillOffs + AngTrBHOffs + local LenRef = MillOffs + local vtAux = EgtGetCalcAuxDirFromAngles( EMT.R1, EMT.R2) + vtE = Vector3d( EMT.EXTR) * Len + vtAux * LenAux - Z_AX() * LenRef else EmtSetLastError( 1211, 'Head not allowed ' .. EMT.HEAD) end @@ -1682,6 +1693,8 @@ function AdjustToolKinematic() return EgtIf( EMT.EXIT == 1, '11', '12') elseif EMT.HEAD == 'H6' then return EgtIf( EMT.EXIT == 1, '21', '22') + elseif EMT.HEAD == 'H7' then + return '31' else EmtSetLastError( 1211, 'Head not allowed ' .. EMT.HEAD) end diff --git a/Common_FAST.mlpe b/Common_FAST.mlpe index 0bfafdc..888888c 100644 --- a/Common_FAST.mlpe +++ b/Common_FAST.mlpe @@ -105,6 +105,7 @@ function OnSimulStart() AddToCollisionCheck( 'B', 'COLLISION', EMT.COLLOBJ) AddToCollisionCheck( 'C', 'COLLISION', EMT.COLLOBJ) AddToCollisionCheck( 'H5', 'COLLISION', EMT.COLLOBJ) + AddToCollisionCheck( 'H6', 'COLLISION', EMT.COLLOBJ) AddToolToCollisionCheck( 'H2', 1, EMT.COLLOBJ) AddToolHolderToCollisionCheck( 'H2', 1, EMT.COLLOBJ) DumpCollisionCheck( EMT.COLLOBJ, 'Collision Objects :', 4) @@ -180,7 +181,7 @@ function OnSimulDispositionStart() if sTool and nTlen < LONG_TOOL_MINLEN then EMT.TOOL_1 = sTool else - EMT.TOOL_1 = GetDefaultToolName() + EMT.TOOL_1 = GetDefaultToolName() end EgtLoadTool( 'H1', 1, EMT.TOOL_1) EMT.TCPOS_1 = GetToolTcPos( EMT.TOOL_1) @@ -190,7 +191,7 @@ function OnSimulDispositionStart() EMT.VMILL = {} if not EMT.SIM1ST and EgtGetInfo( EgtGetCurrMachGroup(), 'Vm', 'b') then local nLastOrd = GetPhaseOrd( EgtGetPhaseCount()) - local nPartRawId = EgtGetFirstRawPart() + local nPartRawId = EgtGetFirstRawPart() while nPartRawId do -- se è lo scarto finale tagliato a pezzi, esco local nRawOrd = EgtGetInfo( nPartRawId, 'ORD', 'i') @@ -511,6 +512,9 @@ function OnSimulToolSelect( dPosA) EgtSetAxisPos( 'C', EgtIf( BD.RIGHT_LOAD, 180, 0)) end EgtSetAxisPos( 'B', 0) + -- se aggregato per fresa tipo blockhaus + elseif EMT.HEAD == 'H7' then + EgtSetAxisPos( 'C', EgtIf( BD.RIGHT_LOAD, 180, 0)) end -- se punta lunga if EMT.TOTLEN > LONG_TOOL_MINLEN then @@ -534,9 +538,9 @@ function OnSimulToolDeselect() -- se prossimo utensile non definito, è disposizione ed esco if EMT.NEXTTOOL == '' then return end -- se cambia uscita su rinvio non devo fare alcunché - if EMT.HEAD == 'H5' and EMT.NEXTHEAD == 'H5' then return end + if ( EMT.HEAD == 'H5' and EMT.NEXTHEAD == 'H5') or ( EMT.HEAD == 'H6' and EMT.NEXTHEAD == 'H6') then return end -- se sega a catena o rinvio o punta lunga o utensile di grosso diametro, devo cambiare - if EMT.HEAD == 'H3' or EMT.HEAD == 'H5' or ( EMT.HEAD == 'H1' and ( EMT.TOTLEN > LONG_TOOL_MINLEN or EMT.TOTDIAM > BIG_TOOL_DIAM)) then + if EMT.HEAD == 'H3' or EMT.HEAD == 'H5' or EMT.HEAD == 'H6' or EMT.HEAD == 'H7' or ( EMT.HEAD == 'H1' and ( EMT.TOTLEN > LONG_TOOL_MINLEN or EMT.TOTDIAM > BIG_TOOL_DIAM)) then EgtOutText( 'Tool change in progress...') -- movimento scarico sega a catena if EMT.HEAD == 'H3' then @@ -552,9 +556,13 @@ function OnSimulToolDeselect() end SimulMoveAxis( 'X', 0, MCH_SIM_STEP.RAPID) -- movimento scarico rinvio - elseif EMT.HEAD == 'H5' then + elseif EMT.HEAD == 'H5' or EMT.HEAD == 'H6' then SimulMoveAxes( 'B', 0, MCH_SIM_STEP.COLLROT, 'C', -90, MCH_SIM_STEP.COLLROT) SimulMoveAxis( 'X', 0, MCH_SIM_STEP.RAPID) + -- movimento scarico aggregato BlockHaus + elseif EMT.HEAD == 'H7' then + SimulMoveAxis( 'X', 0, MCH_SIM_STEP.RAPID) + SimulMoveAxes( 'B', 90, MCH_SIM_STEP.COLLROT, 'C', -90, MCH_SIM_STEP.COLLROT) -- movimento scarico punta lunga su T111 elseif EMT.TOTLEN > LONG_TOOL_MINLEN then -- se su cambio utensile T111 @@ -579,7 +587,7 @@ function OnSimulToolDeselect() EgtSetMode( EgtGetHeadId( EMT.HEAD), GDB_MD.HIDDEN) ShowToolInTcPos( EMT.TCPOS_1, true) -- movimento per carico utensile - if EMT.NEXTHEAD ~= 'H3' and EMT.NEXTHEAD ~= 'H5' then + if EMT.NEXTHEAD ~= 'H3' and EMT.NEXTHEAD ~= 'H5' and EMT.NEXTHEAD ~= 'H6' then SimulMoveAxes( 'B', 90, MCH_SIM_STEP.RAPROT, 'C', EgtIf( BD.RIGHT_LOAD, 90, -90), MCH_SIM_STEP.RAPROT) else SimulMoveAxes( 'B', 0, MCH_SIM_STEP.RAPROT, 'C', EgtIf( BD.RIGHT_LOAD, 90, -90), MCH_SIM_STEP.RAPROT) @@ -605,7 +613,7 @@ function OnSimulToolDeselect() EgtPause( 100) ShowToolInTcPos( EMT.TCPOS_1, true) -- se segue sega a catena - if EMT.NEXTHEAD == 'H3' or EMT.NEXTHEAD == 'H5' then + if EMT.NEXTHEAD == 'H3' or EMT.NEXTHEAD == 'H5' or EMT.NEXTHEAD == 'H6' then -- se non lama, nascondo l'utensile corrente if EMT.HEAD ~= 'H2' then EgtSetStatus( EgtGetHeadId( EMT.HEAD), GDB_ST.OFF) diff --git a/Essetre-FASTrl.ini b/Essetre-FASTrl.ini index 9e5e8d3..4eb6dce 100644 --- a/Essetre-FASTrl.ini +++ b/Essetre-FASTrl.ini @@ -25,6 +25,7 @@ H5.1=AngTransm.nge H5.2=AngTransm.nge H6.1=AngTransm.nge H6.2=AngTransm.nge +H7.1=AngTransmBH.nge [Machinings] Drilling=1 @@ -52,6 +53,10 @@ H2=6615 H3=6616 ; Angular transmission H5=6603 +; Angular transmission +H6=6603 +; Angular transmission +H7=6617 [SetUp] Default=Standard diff --git a/Essetre-FASTrl.mlde b/Essetre-FASTrl.mlde index d206419..039a989 100644 --- a/Essetre-FASTrl.mlde +++ b/Essetre-FASTrl.mlde @@ -10,7 +10,7 @@ require( 'EmtGenerator') EgtEnableDebug( false) -PP_VER = '2.6l2' +PP_VER = '2.6l2_DEV' PP_NVER = '2.6.12.2' MIN_MACH_VER = '2.5k1' MACH_NAME = 'Essetre-FASTrl' @@ -57,6 +57,8 @@ SawCOffs = 0 ChSawLen = 90.0 AngTr1Offs = 170 AngTr1Len = 150 +AngTrBHOffs = 154.5 +AngTrBHLen = 90 TurnerOffs = 200.0 DeltaTabY = -898.0 DeltaTabZ = -1017.8 + MillOffs -- per TPA : -1013.3 + MillOffs -- per NUM : -838.4 @@ -74,6 +76,7 @@ BeamHeightForFixRot = 9999 -- per abilitare assegnare 500 CoeffVM = 0.5 NewTopC = true SafeXRotAxes = -150 +AggreBlockHaus = false -- leggo e aggiorno con parametri da BeamData if BD then @@ -118,6 +121,8 @@ if EgtExistsFile( sData) then AngTr1Len = Machine.Offsets.OFFSETX_RINV_1 or AngTr1Len --if Machine.Offsets.OFFSETZ_RINV_2 then AngTr2Offs = Machine.Offsets.OFFSETZ_RINV_2 - EgtIf( NumericalControl == 'TPA', MillOffs, 0) end --AngTr2Len = Machine.Offsets.OFFSETX_RINV_2 or AngTr2Len + if Machine.Offsets.OFFSETZ_RINV_BH then AngTrBHOffs = Machine.Offsets.OFFSETZ_RINV_BH - EgtIf( NumericalControl == 'TPA', MillOffs, 0) end + AngTrBHLen = Machine.Offsets.OFFSETX_RINV_BH or AngTrBHLen TurnerOffs = Machine.Offsets.OFFSETRIB or TurnerOffs if Machine.Offsets.OFFSETX then DeltaTabY = - Machine.Offsets.OFFSETX end if Machine.Offsets.OFFSETZ then DeltaTabZ = Machine.Offsets.OFFSETZ + EgtIf( NumericalControl == 'TPA', MillOffs, 0) end @@ -133,6 +138,7 @@ if EgtExistsFile( sData) then if Machine.Offsets.MIN_JOIN_SL then MinJoinSL = Machine.Offsets.MIN_JOIN_SL end if Machine.Offsets.MIN_JOIN_LL then MinJoinLL = Machine.Offsets.MIN_JOIN_LL end if Machine.Offsets.NEWTOPC then NewTopC = ( Machine.Offsets.NEWTOPC == 1) end + if Machine.Offsets.AGGRE_BH then AggreBlockHaus = ( Machine.Offsets.AGGRE_BH == 1) end end end end @@ -295,6 +301,22 @@ if SecondSupport >= 3 then EgtSetInfo( H5Id, 'AGB_MDIR', -Y_AX()) EgtSetInfo( H5Id, 'ZMAXONROT', '1,15') end +-- Eventuale aggregato per lavorazioni BlockHaus +if AggreBlockHaus then + local H7Id = EmtHead { + Name = 'H7', + Parent = 'B', + HSet = 'H1', + Type = MCH_HT.STD, + Pos = Point3d( -AngTrBHLen, 0, -AngTrBHOffs), + TDir = X_AX(), + ADir = -X_AX(), + Rot1W = 0.2, + SolCh = MCH_SCC.ADIR_NEAR, + OthColl = {'H2', 'B/SOLID', 'C/SOLID'}, + Geo = 'H7_HEAD/GEO', + Aux = {'H7_HEAD/SOLID', 'H7_HEAD/COLLISION'}} +end -- Morse local YId = EmtAxis { Name = 'Y', @@ -491,6 +513,17 @@ if SpecialBH then Geo = 'BASE/T111S'} end +if AggreBlockHaus then + EmtTcPos { + Name = 'T121', + Parent = 'Base', + Pos = Point3d( -678.3, 1.963, -877.5), + TDir = -Y_AX(), + ADir = X_AX(), + Geo = 'BASE/T121', + Aux = 'BASE/T121_HS'} +end + -- Aggiusto posizioni geometriche local vtMove = Vector3d( 0, ( DeltaTabY + 913.16), ( DeltaTabZ + 830.037)) local vtMoveX = Vector3d( 0, 0, ( DeltaTabZ + 830.037)) diff --git a/Essetre-FASTrl.nge b/Essetre-FASTrl.nge index 17b748b..111e3a7 100644 Binary files a/Essetre-FASTrl.nge and b/Essetre-FASTrl.nge differ diff --git a/Scripts/SetUp.lua b/Scripts/SetUp.lua index 97f9aee..703ccc1 100644 --- a/Scripts/SetUp.lua +++ b/Scripts/SetUp.lua @@ -26,6 +26,8 @@ local POS = "Pos" -- Geom Set local GS = {} +local bAggreBlockHaus = ( EgtGetHeadId( 'H7') ~= nil) + -- Configurazione posizioni local PositionTable={{Pos = "Pos1", TcPos = "T1", Head = "H1", Group = "G1"}, {Pos = "Pos2", TcPos = "T2", Head = "H1", Group = "G1"}, @@ -37,7 +39,7 @@ local PositionTable={{Pos = "Pos1", TcPos = "T1", Head = "H1", Group = "G1"}, {Pos = "Pos8", TcPos = "T8", Head = "H1", Group = "G1"}, {Pos = "Pos9", TcPos = "T9", Head = "H1", Group = "G1"}, {Pos = "Pos10", TcPos = "T10", Head = "H1", Group = "G1"}, - {Pos = "Pos11", TcPos = "T11", Head = "H1", Group = "G1"}, + {Pos = "Pos11", TcPos = EgtIf( bAggreBlockHaus, "T121", "T11"), Head = EgtIf( bAggreBlockHaus, "H7", "H1"), Group = "G1"}, {Pos = "Pos12", TcPos = "T42", Head = "H2", Group = "G1"}, {Pos = "Pos13", TcPos = "T101", Head = "H3", Group = "G2"}} local SecSuppId = EgtGetTcPosId( 'T111') diff --git a/THolders/AngTransmBH.nge b/THolders/AngTransmBH.nge new file mode 100644 index 0000000..276505f Binary files /dev/null and b/THolders/AngTransmBH.nge differ diff --git a/UpdateLog.txt b/UpdateLog.txt index ff3f67b..3b97969 100644 --- a/UpdateLog.txt +++ b/UpdateLog.txt @@ -1,5 +1,8 @@ ==== Common_FAST Update Log ==== +Versione 2.6-- (--/--/2024) +- (MLDE-SIM-GEN) Nuovo aggregato 90° (H7) per fresa tipo BlockHaus. Ticket#2142 + Versione 2.6l1 (02/12/2024) - (SIM) Corretto movimento VMILL durante scarico pezzo piccolo a caduta - (SIM-GEN) Per decidere posizione parcheggio barra dopo separazione, si considera lunghezza coda del pezzo in lavoro per evitare collisioni. Ticket#2168 diff --git a/Version.lua b/Version.lua index a5b7ff5..8286281 100644 --- a/Version.lua +++ b/Version.lua @@ -3,7 +3,7 @@ local InfoCommon_STD_PP = { NAME = 'Common_FAST', -- nome script PP standard - VERSION = '2.6l1', -- versione script + VERSION = '2.6--', -- versione script MIN_MACH_VER_PP_COMMON = '2.5k1' -- versione minima kernel }