Visual Basic fazla bilmiyorum. Delphi olsa şipşak hallederdim.
Bende de ATC yok bu nedenle tam deneyemedim de. Her ihtimale karşı tedbirli kullanın. Sanal olarak denedim sorun gözükmüyor ama orjinali gibi bazı eksikleri var. Bazı kontroller yok bu nedenle hatalar olabilir. Spindle ağzında bıçak varmı yokmu? Bıçak konulacak yerde başka bıçak varmı yokmu? Makine ilk açıldığında spindle ağzında kaç numaralı bıçak var yada yok? Vs. vs..
Ayrıca hata durumlarında ne yapılacağıda belirsiz. Orjinalinde de bu kontroller olmadığı için şimdilik eklemeye gerek görmedim. Tüm bunları gözönünde bulundurup kullanırken emniyeti elden bırakmamak gerekir.
Tüm sorumluluk kullanacak olanlara aittir şimdiden belirteyim...
Macroda kullanılan bazı değişkenlerle ilgili bilgilerde şöyle:
Xtool, Ytool: Bıçakların bulunduğu pozisyonlar. Kullanılan magazine göre değişiklikler olabilir.
Park : Mandaldan kurtulmak için gereken mesafe. + yada - yönde olabilir.
Magazinin X yada Y ekseninde olmasına veya makinanın ön tarafında veya arka tarafında olmasına göre kullanım şekli değişebilir.
Pozisyona göre
Y+Park / Y-Park / X+Park / X-Park
olarak değişebilir.
ToolUp: Z nin bıçak bıraktıktan sonra diğer bıçağı almak için bulunacağı pozisyon (Güvenlik seviyesi)
ToolDown: Bıçakların bulunduğu Z pozisyonu.
Bıçak bırakma İşlemi:
1-Önce Z ToolUp pozisyonuna gelir.
2-XTool , Ytool+Park pozisyonuna gidilir.
3-Z Tooldown seviyesine iner.
4-XTool , Ytool pozisyonuna itilir.
5-Bıçak bırakılır.
6-Z ToolUp seviyesine çıkar.
Bıçak Alma İşlemi:
1-Önce Z ToolUp pozisyonuna gelir.
2-XTool , Ytool pozisyonuna gidilir.
3-Z Tooldown seviyesine iner.
4-Bıçak Tutulur.
5-XTool , Ytool+Park pozisyonuna çekilir.
6-Z ToolUp seviyesine çıkar.
7-Kalınan X,Y pozisyonuna gidilir.
Umarım işinize yarar. Kolay gelsin.
Kod:
' OTOMATİK TAKIM DEĞİŞTİRME MAKROSU' Mehmet İzzet KÖSE
Public xtool As Integer
Public Ytool 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 = 50
NewTool = tool
MaxToolNum = 8 '*** Değiştirmek istenen max. takım sayısı
ToolDown = -30 '*** Takımı almak yada bırakmak için Z nin pozisyonu...!
ToolUp = 30 '*** 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 *************************
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.75"
While IsMoving()
Wend
Code "G53 X" & XTool & " Y" & YTool
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..
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.75"
While IsMoving()
Wend
DeActivateSignal(Output1) '*** 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 +20 gidiliyor...
While IsMoving()
Wend
Code "G53 Z" & ToolUp
'************* Tool numarası set ediliyor ***********************
Call SetUserDRO (1200,NewTool)
SetCurrentTool( NewTool )
Code "G00 X" & x & " Y" & y '*** Takım değiştirmeyi tamamlayıp kaldığı yere konumlanma....
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 = 0
Case Is = 2
XTool = 100
YTool = 0
Case Is = 3
XTool = 150
YTool = 0
Case Is = 4
XTool = 200
YTool = 0
Case Is = 5
XTool = 250
YTool = 0
Case Is = 6
XTool = 300
YTool = 0
Case Is = 7
XTool = 350
YTool = 0
Case Is = 8
XTool = 400
YTool = 0
End Select
End Sub
Main