kingkarator
Üye
- Katılım
- 16 May 2010
- Mesajlar
- 17
- Puanları
- 1
bu videodaki gibi takım boyu telafisi işlemini nasıl yaparız. yardımcı olursanız sevinirim ben baya bi macro indirdim işin içinden çıkamadım
Ok I found a clean enough work around for this macro.... I tested it a few times today, ran well from VB editor but from MDI it would do even strange things, I have marked in blue where this would happen.
The odd thing was it would head DOWN and seemed to lump all of the blue lines together (down, x and y movement) at a very slow feed and travel until I got a servo tripping out or my hand hitting the estop.
Thinking that it should not run them all together I added sleeps(25) between and also a big sleep(500) and a small move off z abs zero and now it seems to run fine... I don't know what it was being so strange but so far after many tests it seems to work well!
Hope it us helpful to others!
' Author: Christopher Esser (Smokingman). Based on the work done by Greolt
' modded by jestah 4th dec 2012
' Define fixed parameters (Currently in Metric )
Tnumber = GetDRO(24) ' gets current tool
ProbeDist = "-200" 'Set the maximum distance to move the Z-axis before probe touches contact plate.
ProbeFeed = "500" 'Set the first plunge speed for the probe
ProbeFeed2 = "30" 'Set the second plunge speed for the probe
Retract = "0.5" 'Set distance to retract after probe (incremental move away from touch plate)
Retract2 = "0" 'Set distance to retract after probe ( in mech. coor.)
Xprobpos = "2635.74" 'Centre of tool sensor X in mech coor
Yprobpos = "31.64" 'Centre of tool sensor Y in mech coor' Declare Global Variables
Probeoffset = "0"' offset from probe top to table surface
' Declare Global Variables
Dim CurrentFeed
Dim CurrentAbsInc
Dim CurrentGmode
Dim StartingPoint
' Begin the Program
Call GetState
Call doProbe
Call RestoreState
' Get the Starting states
Sub GetState()
CurrentFeed = GetOemDRO(818) ' Get the current feedrate to return to later
CurrentAbsInc = GetOemLED(48) ' Get the current G90/G91 state (Abs Coordinate Mode)
CurrentGmode = GetOemDRO(819) ' Get the current G0/G1 state
StartingPoint = GetOemDRO(85) - GetOemDRO(832) ' Get starting Z position in work coordinates (Z Machine Coord DRO - Z Fixture Orig Off DRO)
End Sub
' Restore the states
Sub RestoreState()
Code "F" &CurrentFeed ' Returns to prior feed rate
If CurrentAbsInc = 0 Then Code "G91" ' If G91 was in effect before then return to it
If CurrentGMode = 0 Then Code "G0" ' If G0 was in effect before then return to it
End Sub
' Probe routine
Sub doProbe()
'Start the actual probe
code "G49" 'remove any tool offset (tried both of these options to stop hitting soft limits on z)
sleep(500)
ActivateSignal(OUTPUT5) ' Dust hood up
'Code "G91 G0 Z-0.01"
Code "G90 G0 G53 Z" & Retract2 ' ( this is where the movement hits the solf limits even with the above removing tool lenght offsets...?!??!?)
While IsMoving()
Sleep(50)
Wend
Tme = 0
While(GetOEMLED(822) = fulse)
Sleep(100)
Tme = Tme +.1
If(Tme > 2)Then
MsgBox("Hood up signal Timed out - please check!")
Exit Sub
End If
Wend
Code "G0 G53 X" & Xprobpos
While IsMoving()
Sleep(50)
Wend
Code "G0 G53 Y" & Yprobpos
While IsMoving()
Sleep(50)
Wend
Code "F" &ProbeFeed ' Set the probe plunge speed
Code "G91 G31 Z" &ProbeDist ' Probing move using incremental move mode.
While IsMoving() ' Wait while it happens
Sleep(50)
Wend
ZProbePos = GetVar(2002) ' Get the axact point the probe was hit
If (ProbeDist+StartingPoint = ZProbePos) Then ' No contact was made during plunge
Code "(Probe failed!)"
Exit Sub
End If
Code "G90 G0 Z" &ZProbePos ' Go back to that point. Always a very small amount of overrun.
While IsMoving ()
Sleep(50)
Wend
Code "G91 G0 Z" & Retract ' Retract
While IsMoving() ' Wait while it happens
Sleep(50)
Wend
Code "F" &ProbeFeed2 ' Set the probe plunge speed
Code "G91 G31 Z-" &Retract+0.5 ' Probing move using incremental move mode.
While IsMoving() ' Wait while it happens
Sleep(50)
Wend
ZProbePos = GetVar(2002) ' Get the axact point the probe was hit
Code "G90 G0 Z" &ZProbePos ' Go back to that point. Always a very small amount of overrun.
While IsMoving ()
Sleep(50)
Wend
SetToolParam(Tnumber,2,ZProbePos)
Code "G0 G53 Z" & Retract2 ' Retract to mech zero
While IsMoving ()
Sleep(50)
Wend
Code "G43 H" &Tnumber' apply offset to tool
Code "(Tool offset set)" 'is it possible to but the actual offset set in this box?
DeActivateSignal(OUTPUT5)
End Sub
Selamlar bu macroyu biraz düzenleyip kullandım sorunsuz çalışıyor ama bahsedildiği gibi takımları sadece tepeden inip alıyor ve bırakıyor. bu macroya tooldown konumuna indikten sonra y ekseninde 20mm geriye giderek takımı bırakacak ve aynı şekilde yeni takımı tepeden inip alacak ve y ekseninde 20mm ileri çıkıp toolup yapacak şekilde nasıl düzenlerim. Çok uğraştım ama bir türlü yapamadım.Bu kod yeterli olmayacaktır. Çünkü yukardaki kodda önce Z ToolUp (Takımdan takıma gecerken kullanılacak Z seviyesi) değerine iniyor, sonra eski bıçağı bırakmak için Z ToolDown değerine düşüyor tool bırakmada almada yapılmadan "G00 Y10" koordinatına hareket ediyor ve "G4 ..." kodu işletiliyor.
Öncelikle MovePos alt fonksiyonu Tool Bırakma ve Alma için farklı hareket edecek şekilde yeniden düzenlenmeli. Çünkü bıçak alma davranışı ile bıçak bırakma davranışı artık farklılaşmak zorunda.
Kolay gelsin...
' 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
selam üstad. bir şey sormak istiyorum takım değiştirmede tooldowna sabit bir ölçü giriyoruz takımı almak yada bırakmak için sıfıra in gibi. bunu bütün takımlar için kullanıyor. tooldown kısmını her takım için farklı bir değer atayamazmıyız.Sanırım var. General Config içindeki Tool Selections Persistent ayarını yaparsanız en son takılı olan tool hafızada kalıyor.
selam üstad. bir şey sormak istiyorum takım değiştirmede tooldowna sabit bir ölçü giriyoruz takımı almak yada bırakmak için sıfıra in gibi. bunu bütün takımlar için kullanıyor. tooldown kısmını her takım için farklı bir değer atayamazmıyız.