. .
Page 6 of 7 FirstFirst ... 4567 LastLast
  1. #51
    Quote Originally Posted by m_c View Post
    I'm only going by the code snippet Chaz posted, but it looks to me like if you enable incremental mode, it expects you to link an input, along with a directional command, and the rest is then handled behind the scenes.
    However, I would still expect you to be able to directly change the tool position, to allow for tool changer homing routines, and recovery of changers that have no home sensor.
    If notice there's nothing in there which actually moves the turret etc. Still needs code adding. Better example is to look at this link and download the file.
    http://centroidcncforum.com/viewtopi...lit=turret+atc

  2. #52
    Chaz's Avatar
    Lives in Ickenham, West London, United Kingdom. Last Activity: 17 Hours Ago Has been a member for 9-10 years. Has a total post count of 1,601. Received thanks 110 times, giving thanks to others 69 times.
    Copied:-

    TurretMotor is an output. It turns on if currentPosition_W != RequestedLocation_W.

    ;If current position != requested position, rotate turret
    IF DoingTurretIndex_M && RequestedLocation_W != CurrentTurretPosition_W THEN SET TurretMotor

    Not sure where or how this TurretMotor is defined. On my Triac, that was just an output for a relay, so that's easy. This is different as its actually the A Axis and not an 'outside' device.

  3. #53
    Chaz's Avatar
    Lives in Ickenham, West London, United Kingdom. Last Activity: 17 Hours Ago Has been a member for 9-10 years. Has a total post count of 1,601. Received thanks 110 times, giving thanks to others 69 times.
    Quote Originally Posted by JAZZCNC View Post
    If notice there's nothing in there which actually moves the turret etc. Still needs code adding. Better example is to look at this link and download the file.
    http://centroidcncforum.com/viewtopi...lit=turret+atc
    Ye, that works due to this.

    TurretMotor IS OUT2 ;&*;

    I suspect that's a relay.

    I wonder if I can set Step as an output?

  4. #54
    m_c's Avatar
    Lives in East Lothian, United Kingdom. Last Activity: 8 Hours Ago Forum Superstar, has done so much to help others, they deserve a medal. Has been a member for 9-10 years. Has a total post count of 2,908. Received thanks 360 times, giving thanks to others 8 times.
    I'll just put this here for now, but it's a work in progress. I need to go and do something, but will try and get it finished later.
    Original code-
    Code:
    ;=============================================================================
                               MainStage
    ;=============================================================================
    ;Do gather if commanded (uncomment and recompile for debugging purposes)
    ;IF Aux11Key || ((SV_MPU11_ABS_POS_2 < SV_MACHINE_PARAMETER_45) && (SV_MACHINE_PARAMETER_45 < -1000)) THEN (Aux11KeyPD)
    ;IF Aux11KeyPD  THEN (SV_TRIGGER_PLOT_DUMP), SET SV_STOP
    ;IF Aux11Key || OUT25 THEN (SV_TRIGGER_PLOT_DUMP)
    
    IF TRUE THEN CurrentTurretPosition_W = 0
    IF ToolBit1 && ToolBit2 && !ToolBit3 THEN CurrentTurretPosition_W = 1
    IF !ToolBit1 && ToolBit2 && !ToolBit3 THEN CurrentTurretPosition_W = 2
    IF !ToolBit1 && !ToolBit2 && !ToolBit3 THEN CurrentTurretPosition_W = 3
    IF ToolBit1 && !ToolBit2 && !ToolBit3 THEN CurrentTurretPosition_W = 4
    IF ToolBit1 && !ToolBit2 && ToolBit3 THEN CurrentTurretPosition_W = 5
    IF !ToolBit1 && !ToolBit2 && ToolBit3 THEN CurrentTurretPosition_W = 6
    IF !ToolBit1 && ToolBit2 && ToolBit3 THEN CurrentTurretPosition_W = 7
    IF ToolBit1 && ToolBit2 && ToolBit3 THEN CurrentTurretPosition_W = 8
    IF TRUE THEN SV_PLC_CAROUSEL_POSITION = CurrentTurretPosition_W
    
    IF SV_PROGRAM_RUNNING THEN (ProgramRunning)
    
    ;cnctch.mac
    IF OnAtPowerUp_M THEN RequestedLocation_W = CurrentTurretPosition_W
    IF TRUE THEN TurretTimer = 700, ReversingTimer = 1500
    IF M6 THEN (M6PD), SET DoingTurretIndex_M
    IF M6PD THEN RequestedLocation_W = SV_TOOL_NUMBER
    
    IF DoingTurretIndex_M && ((SV_TOOL_NUMBER < 1) || (SV_TOOL_NUMBER > 8))
      THEN SET OtherFault_M, FaultMsg_W = INVALID_TOOL_NUMBER, RST DoingTurretIndex_M, 
      RequestedLocation_W = CurrentTurretPosition_W, SET ToolChangeComplete
    
    IF DoingTurretIndex_M && RequestedLocation_W != CurrentTurretPosition_W THEN SET TurretMotor
    IF RequestedLocation_W == CurrentTurretPosition_W THEN SET TurretTimer
    IF TurretTimer THEN RST TurretMotor, SET ReversingTimer, RST TurretTimer
    IF ReversingTimer THEN RST ReversingTimer, SET ToolChangeComplete
    
    IF !SV_PROGRAM_RUNNING THEN RST M6, RST DoingTurretIndex_M, RequestedLocation_W = CurrentTurretPosition_W
    
    IF !M6 THEN RST ToolChangeComplete, RST TurretTimer
    
    
    IF SV_STOP THEN RST TurretMotor, RST TurretTimer, RST ReversingTimer, RST M6

    Code in the process of being modified
    Code:
    ;=============================================================================
                               MainStage
    ;=============================================================================
    ;Do gather if commanded (uncomment and recompile for debugging purposes)
    ;IF Aux11Key || ((SV_MPU11_ABS_POS_2 < SV_MACHINE_PARAMETER_45) && (SV_MACHINE_PARAMETER_45 < -1000)) THEN (Aux11KeyPD)
    ;IF Aux11KeyPD  THEN (SV_TRIGGER_PLOT_DUMP), SET SV_STOP
    ;IF Aux11Key || OUT25 THEN (SV_TRIGGER_PLOT_DUMP)
    
    IF SV_PROGRAM_RUNNING THEN (ProgramRunning)
    
    ;cnctch.mac
    IF OnAtPowerUp_M THEN RequestedLocation_W = CurrentTurretPosition_W
    IF TRUE THEN TurretTimer = 700, ReversingTimer = 1500
    IF M6 THEN (M6PD), SET DoingTurretIndex_M
    IF M6PD THEN RequestedLocation_W = SV_TOOL_NUMBER
    
    IF DoingTurretIndex_M && ((SV_TOOL_NUMBER < 1) || (SV_TOOL_NUMBER > 8))
      THEN SET OtherFault_M, FaultMsg_W = INVALID_TOOL_NUMBER, RST DoingTurretIndex_M, 
      RequestedLocation_W = CurrentTurretPosition_W, SET ToolChangeComplete
    
    ;code to calculate distance to move
    If CurrentTurretPosition_W > RequestedLocations_W THEN DistanceToMove = ... (need to handle roll over)
    ;code to rotate A-axis require distance
    ;code to reverse A-axis
    IF TRUE THEN SET ToolChangeComplete
    
    
    IF !SV_PROGRAM_RUNNING THEN RST M6, RST DoingTurretIndex_M, RequestedLocation_W = CurrentTurretPosition_W
    
    IF !M6 THEN RST ToolChangeComplete, RST TurretTimer
    
    
    IF SV_STOP THEN RST TurretMotor, RST TurretTimer, RST ReversingTimer, RST M6
    RequestedLocation_W
    CurrentTurretPosition_W

    Chaz, to save me looking it up, just to confirm, it's an 8-position turret (45 deg between tools)?
    And does normal rotation increase or decrease tool position?
    Avoiding the rubbish customer service from AluminiumWarehouse since July '13.

  5. #55
    Chaz's Avatar
    Lives in Ickenham, West London, United Kingdom. Last Activity: 17 Hours Ago Has been a member for 9-10 years. Has a total post count of 1,601. Received thanks 110 times, giving thanks to others 69 times.
    Quote Originally Posted by m_c View Post
    I'll just put this here for now, but it's a work in progress. I need to go and do something, but will try and get it finished later.
    Original code-
    Code:
    ;=============================================================================
                               MainStage
    ;=============================================================================
    ;Do gather if commanded (uncomment and recompile for debugging purposes)
    ;IF Aux11Key || ((SV_MPU11_ABS_POS_2 < SV_MACHINE_PARAMETER_45) && (SV_MACHINE_PARAMETER_45 < -1000)) THEN (Aux11KeyPD)
    ;IF Aux11KeyPD  THEN (SV_TRIGGER_PLOT_DUMP), SET SV_STOP
    ;IF Aux11Key || OUT25 THEN (SV_TRIGGER_PLOT_DUMP)
    
    IF TRUE THEN CurrentTurretPosition_W = 0
    IF ToolBit1 && ToolBit2 && !ToolBit3 THEN CurrentTurretPosition_W = 1
    IF !ToolBit1 && ToolBit2 && !ToolBit3 THEN CurrentTurretPosition_W = 2
    IF !ToolBit1 && !ToolBit2 && !ToolBit3 THEN CurrentTurretPosition_W = 3
    IF ToolBit1 && !ToolBit2 && !ToolBit3 THEN CurrentTurretPosition_W = 4
    IF ToolBit1 && !ToolBit2 && ToolBit3 THEN CurrentTurretPosition_W = 5
    IF !ToolBit1 && !ToolBit2 && ToolBit3 THEN CurrentTurretPosition_W = 6
    IF !ToolBit1 && ToolBit2 && ToolBit3 THEN CurrentTurretPosition_W = 7
    IF ToolBit1 && ToolBit2 && ToolBit3 THEN CurrentTurretPosition_W = 8
    IF TRUE THEN SV_PLC_CAROUSEL_POSITION = CurrentTurretPosition_W
    
    IF SV_PROGRAM_RUNNING THEN (ProgramRunning)
    
    ;cnctch.mac
    IF OnAtPowerUp_M THEN RequestedLocation_W = CurrentTurretPosition_W
    IF TRUE THEN TurretTimer = 700, ReversingTimer = 1500
    IF M6 THEN (M6PD), SET DoingTurretIndex_M
    IF M6PD THEN RequestedLocation_W = SV_TOOL_NUMBER
    
    IF DoingTurretIndex_M && ((SV_TOOL_NUMBER < 1) || (SV_TOOL_NUMBER > 8))
      THEN SET OtherFault_M, FaultMsg_W = INVALID_TOOL_NUMBER, RST DoingTurretIndex_M, 
      RequestedLocation_W = CurrentTurretPosition_W, SET ToolChangeComplete
    
    IF DoingTurretIndex_M && RequestedLocation_W != CurrentTurretPosition_W THEN SET TurretMotor
    IF RequestedLocation_W == CurrentTurretPosition_W THEN SET TurretTimer
    IF TurretTimer THEN RST TurretMotor, SET ReversingTimer, RST TurretTimer
    IF ReversingTimer THEN RST ReversingTimer, SET ToolChangeComplete
    
    IF !SV_PROGRAM_RUNNING THEN RST M6, RST DoingTurretIndex_M, RequestedLocation_W = CurrentTurretPosition_W
    
    IF !M6 THEN RST ToolChangeComplete, RST TurretTimer
    
    
    IF SV_STOP THEN RST TurretMotor, RST TurretTimer, RST ReversingTimer, RST M6

    Code in the process of being modified
    Code:
    ;=============================================================================
                               MainStage
    ;=============================================================================
    ;Do gather if commanded (uncomment and recompile for debugging purposes)
    ;IF Aux11Key || ((SV_MPU11_ABS_POS_2 < SV_MACHINE_PARAMETER_45) && (SV_MACHINE_PARAMETER_45 < -1000)) THEN (Aux11KeyPD)
    ;IF Aux11KeyPD  THEN (SV_TRIGGER_PLOT_DUMP), SET SV_STOP
    ;IF Aux11Key || OUT25 THEN (SV_TRIGGER_PLOT_DUMP)
    
    IF SV_PROGRAM_RUNNING THEN (ProgramRunning)
    
    ;cnctch.mac
    IF OnAtPowerUp_M THEN RequestedLocation_W = CurrentTurretPosition_W
    IF TRUE THEN TurretTimer = 700, ReversingTimer = 1500
    IF M6 THEN (M6PD), SET DoingTurretIndex_M
    IF M6PD THEN RequestedLocation_W = SV_TOOL_NUMBER
    
    IF DoingTurretIndex_M && ((SV_TOOL_NUMBER < 1) || (SV_TOOL_NUMBER > 8))
      THEN SET OtherFault_M, FaultMsg_W = INVALID_TOOL_NUMBER, RST DoingTurretIndex_M, 
      RequestedLocation_W = CurrentTurretPosition_W, SET ToolChangeComplete
    
    ;code to calculate distance to move
    If CurrentTurretPosition_W > RequestedLocations_W THEN DistanceToMove = ... (need to handle roll over)
    ;code to rotate A-axis require distance
    ;code to reverse A-axis
    IF TRUE THEN SET ToolChangeComplete
    
    
    IF !SV_PROGRAM_RUNNING THEN RST M6, RST DoingTurretIndex_M, RequestedLocation_W = CurrentTurretPosition_W
    
    IF !M6 THEN RST ToolChangeComplete, RST TurretTimer
    
    
    IF SV_STOP THEN RST TurretMotor, RST TurretTimer, RST ReversingTimer, RST M6
    RequestedLocation_W
    CurrentTurretPosition_W

    Chaz, to save me looking it up, just to confirm, it's an 8-position turret (45 deg between tools)?
    And does normal rotation increase or decrease tool position?
    Yes 45. Can't remember in terms of numbers. I'll need to look tomorrow. Unless you can see from the vid I linked? It's the same turret.

  6. #56
    Chaz's Avatar
    Lives in Ickenham, West London, United Kingdom. Last Activity: 17 Hours Ago Has been a member for 9-10 years. Has a total post count of 1,601. Received thanks 110 times, giving thanks to others 69 times.
    Just looked at a pic. It looks like the numbers decend.
    Last edited by Chaz; 18-02-2018 at 11:05 PM.

  7. #57
    m_c's Avatar
    Lives in East Lothian, United Kingdom. Last Activity: 8 Hours Ago Forum Superstar, has done so much to help others, they deserve a medal. Has been a member for 9-10 years. Has a total post count of 2,908. Received thanks 360 times, giving thanks to others 8 times.
    Code:
    ;=============================================================================
                               MainStage
    ;=============================================================================
    ;Do gather if commanded (uncomment and recompile for debugging purposes)
    ;IF Aux11Key || ((SV_MPU11_ABS_POS_2 < SV_MACHINE_PARAMETER_45) && (SV_MACHINE_PARAMETER_45 < -1000)) THEN (Aux11KeyPD)
    ;IF Aux11KeyPD  THEN (SV_TRIGGER_PLOT_DUMP), SET SV_STOP
    ;IF Aux11Key || OUT25 THEN (SV_TRIGGER_PLOT_DUMP)
    
    IF SV_PROGRAM_RUNNING THEN (ProgramRunning)
    
    ;cnctch.mac
    IF OnAtPowerUp_M THEN RequestedLocation_W = CurrentTurretPosition_W
    IF TRUE THEN TurretTimer = 700, ReversingTimer = 1500
    IF M6 THEN (M6PD), SET DoingTurretIndex_M
    IF M6PD THEN RequestedLocation_W = SV_TOOL_NUMBER
    
    IF DoingTurretIndex_M && ((SV_TOOL_NUMBER < 1) || (SV_TOOL_NUMBER > 8))
      THEN SET OtherFault_M, FaultMsg_W = INVALID_TOOL_NUMBER, RST DoingTurretIndex_M, 
      RequestedLocation_W = CurrentTurretPosition_W, SET ToolChangeComplete
    
    ;code to calculate distance to move
    IF CurrentTurretPosition_W > RequestedLocation_W THEN PositionsToMove_W = CurrentToolPosition_W - RequestedLocation_W
    IF CurrentTurretPosition_W < RequestedLocation_W THEN PositionsToMove_W = (CurrentTurretPosition_W + 8) - RequestedLocation_W ;this assumes the PLC can handle ELSE..
    IF TRUE THEN DistanceToMove_W = PositionsToMove_W * 45 ; This may need a further multiplication if we're not going to be moving in degrees (does this need extra movement to overshoot new position before reversing?)
    ;code to rotate A-axis require distance
    
    ;code to reverse A-axis
    
    IF TRUE THEN SET ToolChangeComplete
    
    
    IF !SV_PROGRAM_RUNNING THEN RST M6, RST DoingTurretIndex_M, RequestedLocation_W = CurrentTurretPosition_W
    
    IF !M6 THEN RST ToolChangeComplete, RST TurretTimer
    This is the barebones of what should be needed I think.
    It still needs the required code to actually move the A-axis.
    Also see the notes I've added.
    Having scanned through the manual, I can't see how, or even if, you can move an axis via the PLC.
    Avoiding the rubbish customer service from AluminiumWarehouse since July '13.

  8. #58
    m_c's Avatar
    Lives in East Lothian, United Kingdom. Last Activity: 8 Hours Ago Forum Superstar, has done so much to help others, they deserve a medal. Has been a member for 9-10 years. Has a total post count of 2,908. Received thanks 360 times, giving thanks to others 8 times.
    I've just realised, what you need to achieve may have to be via a combination of Macro and PLC.
    The macro allows you to run normal G-codes, but I'm not sure if you can run calculations in a Macro.

    What you may need to do, is run the Macro, which then moves to the PLC to calculate the rotation required, which is then stored in a variable the macro can access. The macro then carries out the required A axis movement.
    Avoiding the rubbish customer service from AluminiumWarehouse since July '13.

  9. #59
    Chaz's Avatar
    Lives in Ickenham, West London, United Kingdom. Last Activity: 17 Hours Ago Has been a member for 9-10 years. Has a total post count of 1,601. Received thanks 110 times, giving thanks to others 69 times.
    Quote Originally Posted by m_c View Post
    I've just realised, what you need to achieve may have to be via a combination of Macro and PLC.
    The macro allows you to run normal G-codes, but I'm not sure if you can run calculations in a Macro.

    What you may need to do, is run the Macro, which then moves to the PLC to calculate the rotation required, which is then stored in a variable the macro can access. The macro then carries out the required A axis movement.
    Yep. I thought the same after your previous message.

    I'm hoping to get some answers on the Centroid forum too.

  10. #60
    Chaz's Avatar
    Lives in Ickenham, West London, United Kingdom. Last Activity: 17 Hours Ago Has been a member for 9-10 years. Has a total post count of 1,601. Received thanks 110 times, giving thanks to others 69 times.
    So some response from the Centroid forum. Explained the logic to him. It looks like I need to buy the software to get access to the M107 command needed for the BCD Tool Changer Output. Happy to buy it but need to know I can get it to work.

Page 6 of 7 FirstFirst ... 4567 LastLast

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. Centroid Acorn DIY CNC controller
    By NB70 in forum Control Hardware & Systems
    Replies: 3
    Last Post: 15-11-2017, 02:14 PM
  2. Centroid Acorn CNC Controller
    By wallyblackburn in forum Gantry/Router Machines & Building
    Replies: 22
    Last Post: 29-10-2017, 12:28 PM
  3. Controller Cabinet
    By cropwell in forum Workshop & Equipment
    Replies: 2
    Last Post: 19-12-2015, 02:23 PM
  4. FOR SALE: Controller Box for sale
    By lateAtNight in forum Items For Sale
    Replies: 12
    Last Post: 04-03-2012, 10:17 AM
  5. Controller Box
    By M250cnc in forum Motor Drivers & Controllers
    Replies: 1
    Last Post: 21-11-2010, 01:34 AM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •