View Full Version : Need Help! toolchanger macro doesn't work!


shaftalignment
07-08-2008, 01:26 AM
Hi Everyone,
I have an 8 position Denford toolchanger that I am trying to make
work with Mach3.
The toolchanger has a dc motor that runs on 24vdc forward for a
toolchange then reverses on 12vdc to lockup in position. It stays
running in reverse at 12vdc to maintain a positive lock. It has 3
opto sensors that read a slotted disc to determine the tool position
and when to reverse. I have provided 5vdc to the sensors and pinned
them to input 1, 2, & 3. The dc motor has a DPDT Relay with 24vdc
applied to the normally open contacts (polarity for forward motion),
12vdc applied to the normally closed contacts (polarity for reverse)
and the motor leads connected to the common poles on the relay. the
relay is configured to Output 3 in Mach.
I can run the toolchanger manually thru mach by toggling output 3 on
and off. All the input LEDs turn on and off properly in mach. But my
M6 macro doesn't work. I know very little (nothing) about vbscript
and the macro is something I pieced together from others on this site
and another forum. I would greatly appreciate any help from the
experts on this site.
Here is the macro I have tried:

Tool = GetSelectedTool()
OldTool = GetCurrentTool()
NewTool = Tool
MaxToolNum = 8 'Max number of tools for the changer

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

Call StartTool

While SelectedTool <> NewTool
Call CheckPins
Wend

SelectedTool = NewTool

Call StopTool

SetCurrentTool(NewTool )

'//// Subroutines /////////

Sub StartTool
ActivateSignal(Output3)
'Code "G4 P4.0" 'Wait for the tool to rotate past the sensor
While Ismoving()
Wend
End Sub


Sub CheckPins
If IsActive(Input3) And Not IsActive(Input2) And Not IsActive
(Input1) Then
NewTool = 1
End If
If Not IsActive(Input3) And Not IsActive(Input2) And Not IsActive
(Input1) Then
NewTool = 2
End If
If Not IsActive(Input3) And Not IsActive(Input2) And IsActive
(Input1) Then
NewTool = 3
End If
If IsActive(Input3) And Not IsActive(Input2) And IsActive(Input1)
Then
NewTool = 4
End If
If IsActive(Input3) And IsActive(Input2) And IsActive(Input1) Then
NewTool = 5
End If
If Not IsActive(Input3) And IsActive(Input2) And IsActive(Input1)
Then
NewTool = 6
End If
If Not IsActive(Input3) And IsActive(Input2) And Not IsActive
(Input1) Then
NewTool = 7
End If
If IsActive(Input3) And IsActive(Input2) And Not IsActive(Input1)
Then
NewTool = 8
End If
End Sub

Sub Stoptool
DeActivateSignal(Output3)
End Sub

PoppaBear10
07-11-2008, 11:39 AM
Here you go, this will do it for you.........
Remember Lathe tools are called from the code/mdi T0606 M6 (for tool 6, offset 6) then M6.

'M6Start.M1s

Sub Main()

NewTool = GetSelectedTool()
OldTool = GetCurrentTool()
MaxToolNum = 8 'Max number of tools for the changer

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

If NewTool = OldTool Or NewTool = 0 Then
Exit Sub
End If

If OldTool <> NewTool Then
While Slot <> NewTool
ActivateSignal(OUTPUT3) 'start rotating forward
If IsActive(INPUT3) And Not IsActive(INPUT2) And Not IsActive (INPUT1) Then
Slot = 1
End If
If Not IsActive(INPUT3) And Not IsActive(INPUT2) And Not IsActive (INPUT1) Then
Slot = 2
End If
If Not IsActive(INPUT3) And Not IsActive(INPUT2) And IsActive (INPUT1) Then
Slot = 3
End If
If IsActive(INPUT3) And Not IsActive(INPUT2) And IsActive(INPUT1) Then
Slot = 4
End If
If IsActive(INPUT3) And IsActive(INPUT2) And IsActive(INPUT1) Then
Slot = 5
End If
If Not IsActive(INPUT3) And IsActive(INPUT2) And IsActive(INPUT1) Then
Slot = 6
End If
If Not IsActive(INPUT3) And IsActive(INPUT2) And Not IsActive (INPUT1) Then
Slot = 7
End If
If IsActive(INPUT3) And IsActive(INPUT2) And Not IsActive(INPUT1) Then
Slot = 8
End If
Wend
Sleep(100)
DeActivateSignal(OUTPUT3) 'stop rotating forward, rotate backward now
End If

SetOEMDRO(824,NewTool)
Code "G4 P2" 'A pause time of 2 seconds to give your reverse turret time to seat
While IsMoving
Wend

End Sub
Main

'have fun,
'Scott