Mach3 Otomatik Takım Değiştirme

peki spindle ı otomatik takım değiştirmeli yapmayı düşürsek, sensörsüz alsam takım değiştirmede bir sıkıntı yaşanır mı?
hayır sıkıntı olmaz ama fiyat farkı fazla değil bildiğim kadarı ile o yüzden sensörlü almak daha mantıklı... Fiyat farkı fazla i
ise gerek yok.
 
Otomatik takım değiştirme için yazdığınız kod hangi dil ile yazıldı? Visual basic script mi o? Birde mach3 de sadece bu dil ile mi yazmak zorundayız?
 
Buyur kardeş sana otomatik takım değiştirme (ATC) makrosu... saygılar....

Kod:
' OTOMATİK TAKIM DEĞİŞTİRME MAKROSU
' Mehmet İzzet KÖSE
Sub Main()
OldTool = GetOEMDRO (1200)
x = GetToolChangeStart( 0 )
y = GetToolChangeStart( 1 )
z = GetToolChangeStart( 2 )
a = GetToolChangeStart( 3 )
b = GetToolChangeStart( 4 )
c = GetToolChangeStart( 5 )
tool = GetSelectedTool()
NewTool = tool

MaxToolNum = 8 'Değiştirmek istenen max. takım sayısı
ToolDown = -3.125 'Takımı almak yada bırakmak için Z nin pozisyonu...!
ToolUp = 0.0 'Bıraktığı takımdan alacağı takıma giderken Z nin pozisyonu...!

If NewTool = OldTool Then
Exit Sub
End If

While NewTool > MaxToolNum
NewTool = Question ("Enter New Tool Number up to " & MaxToolNum)
Wend

Code "G00 G53 Z" & ToolUp
While IsMoving()
Wend

Call MovePos(OldTool)
While IsMoving()
Wend

Code "G53 Z" & ToolDown
Code "G4 P.75"
While IsMoving()
Wend

ActivateSignal(Output1) 'Takımı bırakmak için gerekli sinyal....!

Code "G4 P1.0" 'Takımı bırakmak için bekletmek... gerektiği kadar gecikme yaptırılır...!

'SystemWaitFor (7) 'Takımı aldığını bildiren Limit switch sinyalini beklemek...opsiyoneldir.. istenirse kullanılmaz... şuan pasif durumda gerekirse satır başındaki tırnağı kaldırmak yeterli...

Code "G53 Z-2.5" & ToolUp

Call MovePos(NewTool)
While IsMoving()
Wend

Code "G53 Z" & ToolDown
Code "G4 P.75"
While IsMoving()
Wend

DeActivateSignal(Output1) 'Takımı bırakmak için gönderilen sinyali kapatıyor... yani takımı tutuyor.. output1 kullanılıyor...
Code "G4 P1.0" 'Wait for the tool to Clamp
While IsMoving()
Wend

Code "G53 Z" & ToolUp
Call SetUserDRO (1200,NewTool)
SetCurrentTool( NewTool )
Code "G00 X" & x & " Y" & y 'Takım değiştirmeyi tamamlayıp kaldığı yere konumlanma....
End Sub

Sub MovePos(ByVal ToolNumber As Integer)

Select Case ToolNumber
Case Is = 1
Xpos = 12.00
YPos = 2.00

Case Is = 2
Xpos = 14.00
YPos = 2.00
Case Is = 3

Xpos = 16.00
YPos = 2.00
Case Is = 4

Xpos = 18.00
YPos = 2.00
Case Is = 5

Xpos = 12.00
YPos = 4.00
Case Is = 6

Xpos = 14.00
YPos = 4.00

Case Is = 7
Xpos = 16.00
YPos = 4.00

Case Is = 8
Xpos = 18.00
YPos = 4.00

End Select

Code "G53 X" & XPos & " Y" & YPos
End Sub
Main
Ustam bilgi için sağol, kendi routerımıza uyarlamak istediğimizde altdaki case ler takımların koordinatları oluyor sanırım, kendi tezgahımızdaki takımların konumlarını yani caselerin içindeki x pos ve y pos ları değiştirdiğimiZde yeterli oluyor sanırım değil mi? Birde spindleın belirli koordinata geldiğinde takımı bırakıp alması için plc kullanacak mıyız?
 
Ustam bilgi için sağol, kendi routerımıza uyarlamak istediğimizde altdaki case ler takımların koordinatları oluyor sanırım, kendi tezgahımızdaki takımların konumlarını yani caselerin içindeki x pos ve y pos ları değiştirdiğimiZde yeterli oluyor sanırım değil mi? Birde spindleın belirli koordinata geldiğinde takımı bırakıp alması için plc kullanacak mıyız?
case takımın x ve y deki koordinatı ayriyetten yukarıda tooldown ve toolup değerlerinide girmeniz gerekir.
toolup = takımı almak için gereken yükseklik
tooldown = takımı bırakmak için gereken yükseklik
örneğin spindle ucunda takım yok ise makina toolup a çıkar sonra takımın x ve y koordinatına gidip daha sonra tooldown mesafesine inerek takımı tutup tekrar toolup mesafesine çıkar işe kaldığı yerden devam eder.
Bu macroda magazin (takım tutucu) delik şeklinde olmalıdır. Yani takım üsten aşağı bırakılacaktır. Sürgü mantığı çalışmaz.
Videodaki magazin ile uyumlu değildir.
Bu videodaki tip magazinde çalışır.
 
Son düzenleme:
aynen hocam katılıyorum tesekkurler, peki spindle ın takımı tutup, bırakma işlemi için plc kullanılıyor mu yoksa eksen kartı veya spindle mı bunun ayarlıyor kodlara göre?
 
aynen hocam katılıyorum tesekkurler, peki spindle ın takımı tutup, bırakma işlemi için plc kullanılıyor mu yoksa eksen kartı veya spindle mı bunun ayarlıyor kodlara göre?
Macro nun içinde var kartın bir çıkışını bu işe bağlamanız gerekli
Acrivatesignal(output1) çıkışı aktif eder
deactivatesignal(output1) çıkışı pasif eder
output1 e karttaki bir çıkış pinini atamanız gerekli
 
Heh şimdi anladım, Bu kod ile otomatik sensörlü mü sensördüz mü Spindle kullandınız? Birde bu bir çıkışı takım bırakma alma işlemine bağlamak için bir kaynak şema vs var mı? Nasıl yapıldığına dair
 
Heh şimdi anladım, Bu kod ile otomatik sensörlü mü sensördüz mü Spindle kullandınız? Birde bu bir çıkışı takım bırakma alma işlemine bağlamak için bir kaynak şema vs var mı? Nasıl yapıldığına dair

Macroyu kullanmadım sadece size nasıl çalıştığını anlatıyorum.
Output1 e kontrol kartının çıkış pinlerinden birini atıyacaksınız. Bu çıkışlar genelde 5volttur. Takım bırakıp alması pnömatik (hava ile) bir işlem ile yapılır. Bunu da pnömatik valfler ile kontrol edebilirsiniz. Genelde 24v bobinlileri yaygındır. Bunun içinde kontrol kartı ile valf arasına bir röle koymanız gerekir. 5v bobinli bir rölenin kontaklarından 24v valfi kontrol edebilirsiniz.
20190422_221338.png
 
Bu makrolar döner tablalı takım değiştirme düzeneğinde çalışmaz, üzerinde değişiklik yapılarak uyarlanabilir.

Eğer sisteminizin katı modeli yada fotoğrafını yüklerseniz yardımcı olmaya çalışırız....


Bu kodlar ile bahsettiğiniz şekilde iki türlüde verimli olarak çalıştırabilirsiniz... (Sensör pozisyonunu okumak için kodda gerekli düzenlemeyi yapmak kaydı ile.)
Tamam enkısa zamanda yüklüyorum gecikme için özür dilerim. Çok sağolun.
 
Emeği geçenlerden Allah razı olsun, son paylaşılan çatala yanaşmalı olanın takım sıfırlama probu kısmını siliyordum script hatası veriyordu sondaki 2 satır silinmeyecekmiş çözdüm

Exit Sub
End If <<<< bu 2 satır silinmeyecek ihtiyacı olanlar için son çalışan probsuz hali aşağıda:

' OTOMATİK TAKIM DEĞİŞTİRME MAKROSU
'İzzet Mehmet KÖSE ve Ramertürk (Mustafa Abi)
'Farklı Z seviyelerindeki tool için ATC makrosu
Public xtool As Integer
Public Ytool As Integer
Public ToolDown As Integer

Sub Main()
OldTool = GetOEMDRO (1200)
x = GetToolChangeStart( 0 )
y = GetToolChangeStart( 1 )
z = GetToolChangeStart( 2 )
a = GetToolChangeStart( 3 )
b = GetToolChangeStart( 4 )
c = GetToolChangeStart( 5 )
tool = GetSelectedTool()
Park = 150
NewTool = tool

MaxToolNum = 16 '*** Değiştirmek istenen max. takım sayısı
ToolDown = -30 '*** Takımı almak yada bırakmak için Z nin pozisyonu...! Her tool icin ayrı olabilir.
ToolUp = 150 '*** Bıraktığı takımdan alacağı takıma giderken Z nin pozisyonu...!

If NewTool = OldTool Then
Exit Sub
End If

While NewTool > MaxToolNum
NewTool = Question ("Enter New Tool Number up to " & MaxToolNum)
Wend


'*************** Eski takım bırakılıyor *************************

ActivateSignal(Output3) '*** Hareketli Magazin tutucu için gerekli sinyal....!
Code "G00 G53 Z" & ToolUp
While IsMoving()
Wend

Call ToolPos(OldTool)
Code "G53 X" & XTool & " Y" & YTool+Park
While IsMoving()
Wend

Code "G53 Z" & ToolDown
Code "G4 P.5"
While IsMoving()
Wend

Code "G53 X" & XTool & " Y" & YTool
While IsMoving()
Wend

ActivateSignal(Output2) '*** Takımı bırakmak için gerekli sinyal....!
Code "G4 P1.0" '*** Takımı bırakmak için bekletmek... gerektiği kadar gecikme yaptırılır...!
'SystemWaitFor (7) '*** Takımı aldığını bildiren Limit switch sinyalini beklemek...opsiyoneldir..
Code "G53 Z" & ToolUp '*** Takım bırakıldı ve Toolup seviyesine çıkıldı...


'************** Yeni takım alınıyor ******************************

Call ToolPos(NewTool)
Code "G53 X" & XTool & " Y" & YTool
While IsMoving()
Wend

Code "G53 Z" & ToolDown
Code "G4 P.5"
While IsMoving()
Wend

DeActivateSignal(Output2) '*** Takımı bırakmak için gönderilen sinyali kapatıyor, yani takımı tutuyor.
Code "G4 P1.0" '*** Wait for the tool to Clamp
While IsMoving()
Wend

Code "G53 X" & XTool & " Y" & YTool+Park '*** Takım alındıktan sonra mandaldan kurtarmak için Y yönünde +Park kadar gidiliyor...
While IsMoving()
Wend

Code "G53 Z" & ToolUp


'************* Tool numarası set ediliyor ***********************

Call SetUserDRO (1200,NewTool)
SetCurrentTool( NewTool )
PlateThickness = GetUserDRO(1151)
If GetOemLed (825)=0 Then
DoOEMButton (1010)
Code "G4 P1" 'P1 değeriyle oynayabilirsiniz. Amacı auto tool zero tuşuna bastığınızda harekete geçmek için ne kadar süre beklemesi gerektiğidir. Mesela acelem var derseniz 0.25 yapabilirsiniz:) Yalnız nokta ile virgül değil



Exit Sub
End If

Code "G00 X" & x & " Y" & y '*** Takım değiştirmeyi tamamlayıp kaldığı yere konumlanma....
DeActivateSignal(Output3) '*** Hareketli Magazin tutucu için gerekli sinyal....!
End Sub


'*********** Takım konumlnma alt fonksiyonu Takım yerleri burda belirtilir. ************

'Xtool: Toolun X değeri Ytool: Toolun Y değeri.
'Tool hangi eksende ise ona göre değerleri değiştirmek gerekir.

Sub ToolPos(ByVal ToolNumber As Integer)

Select Case ToolNumber

Case Is = 1
XTool = 50
YTool = 20
ToolDown=25

Case Is = 2
XTool = 70
YTool = 20
ToolDown=25

Case Is = 3
XTool = 90
YTool = 20
Tooldown=25

Case Is = 4
XTool = 110
YTool = 20
ToolDown=25

Case Is = 5
XTool = 680.58
YTool = 20
ToolDown=43.18

Case Is = 6
XTool = 711.44
YTool = 20
ToolDown=43.18

Case Is = 7
XTool = 742.3
YTool = 20
ToolDown=43.18

Case Is = 8
XTool = 773.16
YTool = 20
ToolDown=43.18

Case Is = 9
XTool = 79.86
YTool = 169.25
ToolDown=-46.82

Case Is = 10
XTool = 177.48
YTool = 169.25
ToolDown=-46.82

Case Is = 11
XTool = 208.34
YTool = 169.25
Tooldown=-46.82

Case Is = 12
XTool = 239.2
YTool = 169.25
ToolDown=-46.82

Case Is = 13
XTool = 631.2
YTool = 169.25
ToolDown=-46.82

Case Is = 14
XTool = 662.06
YTool = 169.25
ToolDown=-46.82

Case Is = 15
XTool = 692.92
YTool = 169.25
ToolDown=-46.82

Case Is = 16
XTool = 723.78
YTool = 169.25
ToolDown=-46.82

End Select

End Sub
Main
 

Forum istatistikleri

Konular
129,867
Mesajlar
930,872
Kullanıcılar
452,732
Son üye
erencok

Yeni konular

Geri
Üst