Machsupport Forum
Mach Discussion => General Mach Discussion => Topic started by: cncfreakcncfrea on June 24, 2014, 03:23:16 PM
-
Hello all,
Previously I completed a cnc conversion on BVB25L lathe and now I'm adding a 8 station tool turret to this cnc lathe:
(http://i1204.photobucket.com/albums/bb407/cncfreakcncfreak/BVB25L%20cnc%20conversion/Tool%20turret%20ATC/DSC05347_zps8ff8ccbf.jpg) (http://s1204.photobucket.com/user/cncfreakcncfreak/media/BVB25L%20cnc%20conversion/Tool%20turret%20ATC/DSC05347_zps8ff8ccbf.jpg.html)
I know I need a macro code for this, I did a search on Machsupport forum, found some code but not sure if that's the suitable one, here's the link:
http://www.machsupport.com/forum/index.php/topic,15569.0.html
can I use the code below for my tool turret?
'Macro Tool Changer
Sub Main()
Dim Tool As Integer
Dim OldTool As Integer
Dim NewTool As Integer
Dim MaxToolNum As Integer
NewTool = 10
MaxToolNum = 8 'Maximum positions on Automatic Tool Changer
Tool = GetSelectedTool() 'Get the toolnumber from the command e.g T0101 M6 Tool number 1
OldTool = GetCurrentTool() 'Get current tool number
If Tool > MaxtoolNum Then GoTo 6
If TOOL = OldTool Then GoTo 7
ActivateSignal(Output3) 'Turn on output signal to turn off spindle and turn on the atc
sleep(10)
ActivateSignal(Output4) 'Turn atc forward
sleep (3000) 'Needed to start atc otherwise it plays up
While NewTool <> Tool
' CheckPins
If IsActive(Input3) And Not IsActive(Input2) And Not IsActive(Input1) Then
NewTool = 1
GoTo 5 'StopTool
End If
If Not IsActive(Input3) And Not IsActive(Input2) And Not IsActive(Input1) Then
NewTool = 8
GoTo 5 'StopTool
End If
If Not IsActive(Input3) And Not IsActive(Input2) And IsActive(Input1) Then
NewTool = 4
GoTo 5 'StopTool
End If
If IsActive(Input3) And Not IsActive(Input2) And IsActive(Input1)Then
NewTool = 5
GoTo 5 'StopTool
End If
If IsActive(Input3) And IsActive(Input2) And IsActive(Input1) Then
NewTool = 7
GoTo 5 'StopTool
End If
If Not IsActive(Input3) And IsActive(Input2) And IsActive(Input1)Then
NewTool = 6
GoTo 5 'StopTool
End If
If Not IsActive(Input3) And IsActive(Input2) And Not IsActive(Input1) Then
NewTool = 2
GoTo 5 'StopTool
End If
If IsActive(Input3) And IsActive(Input2) And Not IsActive(Input1) Then
NewTool = 3
GoTo 5 'StopTool
End If
Wend
5:
' Stoptool
DeActivateSignal(Output4) 'StopATC
sleep(10)
ActivateSignal(Output5) 'Run ATC in reverse
Sleep (3000) 'Wait 3 seconds to allow the toolpost to lock in
DeActivateSignal(Output5) 'Stop running ATC in reverse
Sleep (1000)
SetCurrentTool(NewTool)
DeActivateSignal(Output3) 'Turn off output to turn spindle back on
sleep(10)
GoTo 7
6:
MsgBox ("Tool out of RANGE")
Goto 7
7:
End Sub
Thanks,
-
How does your turret operate? what signals does it require?
Hood
-
Hello Hood,
The turret tool changer use a double acting cylinder ( http://en.wikipedia.org/wiki/Pneumatic_cylinder#mediaviewer/File:Doppelwirkender_Zylinder_Funktionsprinziep.gif (http://en.wikipedia.org/wiki/Pneumatic_cylinder#mediaviewer/File:Doppelwirkender_Zylinder_Funktionsprinziep.gif))
attached at the back of the tool changer box so to change tool air applies to one of the tube to dis-engage then turn the the plate via a stepper motor to the desire position then applies air to the other tube to engage.
http://s1204.photobucket.com/user/cncfreakcncfreak/media/BVB25L%20cnc%20conversion/Tool%20turret%20ATC/M4V05238_zps5e2bf69a.mp4.html
-
Ok then what you will want is something like this.
First you will ideally have a Home switch fitted so that you can home the turret.
You also need 2 outputs for your cylinder.
You want to set up the motor tuning so that the A axis is per degree (assuming you are using A) and set the Vel and Accel according to your needs.
On general config page you want A is Angular, you also want Ang Short Rot on G0 and 360 rollover chosen and Rotary soft limits off.
When you do as above what should happen is when you command a tool position Mach will look to see the shortest route and go whichever direction it is.
The macro will be fairly easy and although I am not the best at VB I will give it a shot later on when I get a chance.
Hood
-
Thanks for the info.
Home Switch for Turret, where should this be placed? any related links?
thanks,
-
You dont need the home switch but it would be easier to set up as you could home the turret at each staart of Mach. If you dont have a home switch then you will have to ensure that the turret is in the correct position each time you start Mach.
If you do fit a home switch then an optical or a prox would be best and exactly how you fit would depend on the setup inside, you can maybe fit a slotted disc in there for an opto or maybe have a magnet for a prox fitted.
Hood
-
I'll add a home switch inside the turret. If I use an incremental encoder would this work using the I (index pin)?
-
It will depend on what you are using, ie if it is the parallel port then the index from an encoder will be too short a duration. If it is an external controller then it may or may not be ok, all depends on the speed of the inputs on that controller.
Hood
-
This reminded me the slot disk behind the lathe chuck to read spindle speed, slot disk it is.
-
I thought about it and likely you will only be requiring 1 output for the air solenoid as the default position will be air clamping and you will only have one signal to change the solenoid valve.
Anyway here is a macro, it seems to work here, so hopefully it will do. Paste the following into notepad and save as M6Start.m1s in the macro folder of the profile you are using.
OldTool = GetCurrentTool()
NewTool = GetSelectedTool() Mod 8
If NewTool = 0 Then
NewTool = 8
End If
Tool = ((NewTool * 45) - 45)
If NewTool = OldTool Then
End
Else
ActivateSignal (OutPut1)
sleep 100
Code "G53 G0 A" & Tool
While IsMoving()
Wend
DeActivateSignal(OutPut1)
End If
Hood
-
Thank you Hood, will try it this afternoon.