Hello Guest it is March 29, 2024, 08:18:35 AM

Author Topic: Emco Turn tool changer macro  (Read 19462 times)

0 Members and 1 Guest are viewing this topic.

Re: Emco Turn tool changer macro
« Reply #10 on: May 01, 2015, 05:16:32 AM »
I have a problem whit the marco that is writen so the turret is moving but you never know where it stops I have the idea that there sit a problem in counting
did somebody have this marko working on a Emco turn 50?
greetings Benny

Offline aju

*
  •  1 1
    • View Profile
Re: Emco Turn tool changer macro
« Reply #11 on: February 12, 2018, 06:17:50 PM »
For those interested, I have just completed the electronics to use the original emco tool changer board and a MACH3/MACH4 compatible BOB (ESS/MB2 - from www.cncroom.com).  Attached is a layman's schematic diagram showing you what you need to and how it all works.  This diagram also shows you an example relay which I sourced locally in Australia from www.oceancontrols.com.au.  Im sure you can find something suitable locally in your part of the world.   You can then use the macro given in these posts for MACH3 or modify it for MACH4.  You may want to add an additional OUTPUT to the macro to turn the ATC on/off.  The schematic has 2 outputs (OUTPUT1 - on/off and  OUTPUT2 - FWD/REV) with a diagram of the relay connections.
Re: Emco Turn tool changer macro
« Reply #12 on: September 20, 2018, 04:20:33 PM »
Aju, just a heads up! Your power input is backwards on that diagram. I found out when the capacitor on the board blew up haha.
Re: Emco Turn tool changer macro
« Reply #13 on: February 01, 2020, 12:33:30 PM »
Hello everybody...
is here anyone who can help translate this macro into a Mach4 LUA Macro? :( I need that one for my PCTurn 55 Convertion.. I don`t need the point for reference my Toolchanger. That works right know...  :) i only need the point to change the tools and set the right offset.

best regards
Andy

Hi

I eventually got mine to work.

Here is the final version of the macro with comments embedded to show what's going on. You can also get it to write to a logfile to give you some diagnostics if it's not doing what you want.

Hope it helps.

Paul

Code: [Select]
'M6Start.M1s
'Input1 is an optical sensor used to count tool positions
'Input2 is from a microswitch used to determine tool 0 position
'OUTPUT6 drives the tool changer forward, de activating it allows the tool changer to rotate back against the ratchet pawl at low power and is the default
'Un comment the Open statement, various write# statements and the close# function to write a logfile for diagnostic purposes

'Close #1
'Open "M6start_log.txt" For Output As #1 'open a file to write logs to
NewTool = GetSelectedTool()
'NewTool = 2
'Write #1, "NewTool ", NewTool
OldTool = GetCurrentTool()
'Write #1, "OldTool ", OldTool
MaxToolNum = 6 'Max number of tools for the changer
CurrPos = OldTool

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

    'there is nothing to do so we just exit
If (NewTool = OldTool) And (NewTool > 0) Then
'Write #1, "New tool number is the same as old tool number. Nothing to do "
    Exit Sub
End If

'If OldTool is 0 that means we dont know where the tool changer is currently positioned and need to reference to the microswitch for tool 1 position.
    'need to establish tool 0 position from microswitch
If (OldTool = 0) Then
'Write #1, "Old tool number is zero, looking for reference position"
ActivateSignal(OUTPUT5)' Set toolchanger for full speed move
        'Write #1, "Activated Output 5 to enable toolchanger motor"
        ActivateSignal(OUTPUT6)' rotate tool changer forward
        'Write #1, "Activated Output 6 to set forward direction"
    While Not IsActive(INPUT2)
    Wend
    ' Input 2 must Now be active so the microswitch has been triggered at position 1
    CurrPos = 1
    'Write #1, "Reference position found "
    ' Decide whether to just stop for the normal toolchange process
    If ( CurrPos <> NewTool) Then
     DeActivateSignal(OUTPUT6)
     DeActivateSignal(OUTPUT5)
    Else
    ' Or if we actuallly wanted tool 1 then stop and lock
           DeActivateSignal(OUTPUT5) 'stop rotating forward, rotate backward now
   'Write #1, "DeActivateSignal Output 5 toolchanger reverse "
           SetCurrentTool(NewTool) 'sets up the current tool variable as the start point for a future tool change
           'Write #1, "Setting CurrentTool to NewTool value ", NewTool
           Sleep(2500) 'Allow a time interval for the toolchanger to settle back against the ratchet pawl
           'Write #1, "Waited 2.5 seconds for toolchanger to lock "
           DeActivateSignal(OUTPUT6) 'Disable toolchanger motor
           'Write #1, "DeActivateSignal Output 6 toolchanger stop "
    End If
End If

If (CurrPos <> NewTool) Then 'write the start condition to a variable
If IsActive(INPUT1) Then
PreviousSensorState = "Active"
Else
PreviousSensorState = "Inactive"
End If
'Write #1, "PreviousSensorState =", PreviousSensorState
ActivateSignal(OUTPUT5)' Set toolchanger for full speed move
        'Write #1, "ActivateSignal Output 6 toolchanger go"
        ActivateSignal(OUTPUT6) 'start rotating forward
        'Write #1, "ActivateSignal Output 5 toolchanger forward "
    While CurrPos <>  NewTool
    'Some logic to ensure that we only count on the leading edge of a slot in the toolchanger optical disk
        If IsActive(INPUT1) Then
        SensorState = "Active"
        Else
        SensorState = "Inactive"
        End If
        'Write #1, "SensorState =", SensorState
        If SensorState <> PreviousSensorState Then
        If SensorState = "Inactive" Then
        CurrPos = CurrPos +1
        If CurrPos = 7 Then
        CurrPos = 1
        'Write #1, "CurrPos reached 7, reset to 1 "
        End If
        End If
        'Write #1, "CurrPos =", CurrPos
        PreviousSensorState = SensorState
        End If
        If CurrPos = NewTool Then
              DeActivateSignal(OUTPUT5) 'stop rotating forward, rotate backward now
              'Write #1, "DeActivateSignal Output 5 toolchanger reverse "
              SetCurrentTool(NewTool) 'sets up the current tool variable as the start point for a future tool change
              'Write #1, "Setting CurrentTool to NewTool value ", NewTool
              Sleep(1500) 'Allow a time interval for the toolchanger to settle back against the ratchet pawl
              'Write #1, "Waited 1.5 seconds for toolchanger to lock "
              DeActivateSignal(OUTPUT6) 'Disable toolchanger motor
              'Write #1, "DeActivateSignal Output 6 toolchanger stop "
        End If
        sleep(200) ' just slows the iterations down a bit
        'Write #1, "Waited 0.2 second "
    Wend
    'Write #1, "should be job done "
    'Close #1
End If