Macro per il taglio automatico dei bordi

Sezione dedicata a Mach3
Rispondi
Malmesso
Junior
Junior
Messaggi: 75
Iscritto il: sabato 7 maggio 2016, 11:55
Località: Tolmezzzo (UD)

Macro per il taglio automatico dei bordi

Messaggio da Malmesso » lunedì 29 agosto 2016, 14:08

Salve a tutti, questa macro fa il TEST dei limiti progetto tenendo conto di tutti gli offset e se escono dai limiti macchina li ritaglia.
Non che serva amolto, l'ho fatta più che altro per capire la logica di Mach3.
Con qualche semplice modifica però si può utilizzare per il taglio automatico dei bordi.
Secondo voi potrebbe servire il taglio automatico dei bordi?

'Condizioni iniziali

If ((MinY=0 And MinX=0 And MaxY=0 And MaxX=0) Or (MaxX>9990 And MaxY>9990)) Then
Message "Niente da testare"
End
End If
If (GetOEMLED(34)=-1) Then
Message "Interruttori di limite attivati !"
End
End If
If (GetOEMLED(23)=0) Then DoOEMButton (119)
If (GetOEMLED(23)=0) Then
Message "Machine out of limits for SoftLimit Activation."
End
End If

'Scambio degli assi e del Workoffset + Softlimits + G92 x i ritagli in base allo spost. angolare.

SoftXmin = GetOEMDRO(156)
SoftXmax = GetOEMDRO(150)
SoftYmin = GetOEMDRO(157)
SoftYmax = GetOEMDRO(151)
Xoffset = GetOEMDRO(47) + GetOEMDRO(16)
Yoffset = GetOEMDRO(48) + GetOEMDRO(17)
Ang = GetOEMDRO(118)

If (Ang=90 Or Ang=-270) Then
Xmin = MinY
Xmax = MaxY
Ymin = -MaxX
Ymax = -MinX
Xoffs = Yoffset
Yoffs = -Xoffset
CutXmin= SoftYmin
CutXmax= SoftYmax
CutYmin=-SoftXmax
CutYmax=-SoftXmin
Else
If (Ang=-90 Or Ang=270) Then
Xmin = -MaxY
Xmax = -MinY
Ymin = MinX
Ymax = MaxX
Xoffs = -Yoffset
Yoffs = Xoffset
CutXmin=-SoftYmax
CutXmax=-SoftYmin
CutYmin=SoftXmin
CutYmax=SoftXmax
Else
If (Ang=180 Or Ang=-180) Then
Xmin = -MaxX
Xmax = -MinX
Ymin = -MaxY
Ymax = -MinY
Xoffs = -Xoffset
Yoffs = -Yoffset
CutXmin=-SoftXmax
CutXmax=-SoftXmin
CutYmin=-SoftYmax
CutYmax=-SoftYmin
Else
If (Ang=0 Or Ang=360) Then
Xmin = MinX
Xmax = MaxX
Ymin = MinY
Ymax = MaxY
Xoffs = Xoffset
Yoffs = Yoffset
CutXmin = SoftXmin
CutXmax = SoftXmax
CutYmin = SoftYmin
CutYmax = SoftYmax
Else
Message "Test possibile solo per spostamenti angolari multipli di 90°"
End
End If
End If
End If
End If

' Ritaglia secondo l'area di lavoro

SoftZmin = GetOEMDRO(158)
SoftZmax = GetOEMDRO(152)
Zmin = GetOEMDRO(6)
Zmax = GetOEMDRO(12)
Zoffs = GetOEMDRO(49) + GetOEMDRO(18)

If (Xmin>CutXmax-Xoffs Or Xmax<CutXmin-Xoffs Or Ymin>CutYmax-Yoffs Or Ymax<CutYmin-Yoffs Or Zmin>SoftZmax-Zoffs Or Zmax<SoftZmin-Zoffs) Then
Message "Progetto fuori dall'area di lavoro"
End
End If

If (Ymax>CutYmax-Yoffs) Then Ymax=CutYmax-Yoffs
If (Ymin<CutYmin-Yoffs) Then Ymin=CutYmin-Yoffs
If (Xmax>CutXmax-Xoffs) Then Xmax=CutXmax-Xoffs
If (Xmin<CutXmin-Xoffs) Then Xmin=CutXmin-Xoffs
If (Zmin<SoftZmin-Zoffs) Then Zmin=SoftZmin-Zoffs
If (Zmax>SoftZmax-Zoffs) Then Zmax=SoftZmax-Zoffs

'Movimento assi X-Y TEST

x = GetABSPosition(0)
y = GetABSPosition(1)
z = GetABSPosition(2)
SafeZ = GetSafeZ( )

GotoSafeZ()
Code"G0 X" & Xmin & "Y" & Ymin
While IsMoving()
Sleep(100)
If (GetABSPosition(0)=SoftXmin) Then Message "Limite X Inferiore raggiunto!"
If (GetABSPosition(1)=SoftYmin) Then Message "Limite Y Inferiore raggiunto!"
Wend
Code"G0 Y" & Ymax
While IsMoving()
Sleep(100)
If (GetABSPosition(1)=SoftYmax) Then Message "Limite Y superiore raggiunto!"
Wend
Code"G0 X" & Xmax
While IsMoving()
Sleep(100)
If (GetABSPosition(0)=SoftXmax) Then Message "Limite X superiore raggiunto!"
Wend
Code"G0 Y" & Ymin
While IsMoving()
Sleep(100)
If (GetABSPosition(1)=SoftYmin) Then Message "Limite Y inferiore raggiunto!"
Wend
Code"G0 X" & Xmin
While IsMoving()
Sleep(100)
If (GetABSPosition(0)=SoftXmin) Then Message "Limite X inferiore raggiunto!"
Wend
Sleep(1000)

'Movimento asse Z TEST

If (Zmax<SafeZ) Then
msg =MsgBox ("Il limite superiore del programma è inferiore all'altezza di sicurezza. Continuare?",52,"")
If (msg = 7) Then
Code"G53 G0 X" & x & "Y" & y & "Z" & z
End
End If
End If
Code"G0 Z" & Zmax
While IsMoving()
Sleep(100)
If (GetABSPosition(2)=SoftZmax) Then Message "Limite Y superiore raggiunto!"
Wend
Sleep(2000)

If (Zmin<SafeZ) Then
msg =MsgBox ("Il limite inferiore del programma è inferiore all'altezza di sicurezza. Continuare?",52,"")
If (msg = 7) Then
Code"G53 G0 X" & x & "Y" & y & "Z" & z
End
End If
End If
Code"G0 Z" & Zmin
While IsMoving()
Sleep(100)
If (GetABSPosition(2)=SoftZmin) Then Message "Limite Y inferiore raggiunto!"
Wend
Sleep(2000)
Code"G53 G0 X" & x & "Y" & y & "Z" & z

torn24
God
God
Messaggi: 5328
Iscritto il: venerdì 1 febbraio 2008, 11:28
Località: Modena

Re: Macro per il taglio automatico dei bordi

Messaggio da torn24 » lunedì 29 agosto 2016, 14:47

Complimenti per il lavoro, sicuramente hai imparato tante cose nuove e la macro sembra fatta bene, visto che è lunga ci hai messo tempo e impegno. :D
Sicuramente le cose che hai appreso possono esserti utili in futuro.


Io mi sono cimentato ogni tanto con le macro mach3, ma non ho mai approfondito molto le funzioni specifiche, e quando mi serve devo aprire il manuale per leggere quali funzioni sono disponibili.
Il fatto che a parte macro cambio utensile "per chi ha il cambio utensile", o per controllare qualche relè, non ho trovato spesso motivo di usare le macro mach3, per lavorazione pezzo è più rapido scrivere un Gcode di volta in volta che crearsi una macro, quasi tutti gli hobbysti usano un cad-cam e quindi macro di lavorazione non è che servano molto, è un bel linguaggio ti permette di controllare tutto, ma poi forse si usa poco.
CIAO A TUTTI !

Malmesso
Junior
Junior
Messaggi: 75
Iscritto il: sabato 7 maggio 2016, 11:55
Località: Tolmezzzo (UD)

Re: Macro per il taglio automatico dei bordi

Messaggio da Malmesso » lunedì 29 agosto 2016, 16:52

Capisco, G-Code più rapido.
Ancora non l'ho studiato, non so quali sono le potenzialità e se mi permette di fare le cose che avevo in mente.
E' che avevo pensato a degli algoritmi che automatizzano ulteriormente quei Wizard che si usano per fare le lavorazioni base.
Comunque lascio perdere, adesso devo risolvere appunto la macro dell'auto-zero.
E avrei bisogno di aiuto per capire il procedimento migliore per il mio caso.
Io ho realizzato una macro che fa tante cose insieme, anche il cambio utensile, per poi rendermi conto che c'è una falla nella procedura, cioè non ho tenuto conto dell'usura della punta dopo la lavorazione.
La macro funziona bene comunque, mi piacerebbe discutere sui parametri e le procedure che ho adottato.
In caso...son qui

torn24
God
God
Messaggi: 5328
Iscritto il: venerdì 1 febbraio 2008, 11:28
Località: Modena

Re: Macro per il taglio automatico dei bordi

Messaggio da torn24 » lunedì 29 agosto 2016, 17:15

Credevo parlando con te in un altro thread, che tu avessi una macchina simile alle 3040t cinesi, ma parli di cambio utensile e non so a cosa ti riferisci con esattezza, un cambio utensile automatico ha un mandrino in cui si possa inserire automaticamente un portautensile , e delle posizioni, una giostra o una rastrelliera dove stoccare i vari utensili.

Per intenderci qualcosa come questo.

https://youtu.be/jCx1PYhpmIk?t=39

Poi se vuoi discutere di qualcosa va bene, è un buon passatempo :D
CIAO A TUTTI !

Malmesso
Junior
Junior
Messaggi: 75
Iscritto il: sabato 7 maggio 2016, 11:55
Località: Tolmezzzo (UD)

Re: Macro per il taglio automatico dei bordi

Messaggio da Malmesso » lunedì 29 agosto 2016, 17:26

Ho una 2030 cinese.
Non ho il cambio utensile automatico.
Ma comunque mi può capitare di cambiare utensile durante la lavorazione, per cui in questo caso la posizione cambio utensile sarà il posto che mi va comodo per svitare il mandrino con le chiavi inglesi.
Così schiaccio il bottone e la procedura prende la misura della punta appena usata, porta il mandrino dove mi va comodo, torna a fare la taratura e riprende a lavorare.
Io devo solo cambiare punta e selezionare il numero dell'utensile.

Rispondi

Torna a “Mach3”