Loading ...
Sorry, an error occurred while loading the content.

141753Re: [mach1mach2cnc] Update to - First Auto Tool Change in Mach4

Expand Messages
  • Brian Barker
    Oct 2, 2013
    • 0 Attachment
      If you look at the functions I added you get to do that and it sets the variable in the module that I made.. I did this so later I can add more and more error checking. I think in the end that is the best thing we can do


      On 10/2/2013 9:30 AM, vmax549@... wrote:

      HIYA Brian, I am not questioning you r code it looks FINE to me for a winerack tool changer. What I suggested is Create the SAME function with the positional values AS variables(parameters) so for the OP to set up the function the OP only has to plug in the positions to parameters to make it WORK for HIS table.


      Every where you have a positional value for XYZ  make it a variable then link it to a system parameter. The OP should NEVER have to be exposed to the macro code just to make the function work.


      If I had a new table with a WR tool changer I would only need to KNOW the travel height of the spindle and the locations of the actual tool holders. These things would then be set as parameter values . You would NOT have to mess with ANY macro code to make the Tool changer function work. AND remember after a tool change the TC function DOES NOT return the tool to the last position. THAT is the CAM/Programmers job.


       Same with tool comp. KEEP it out of the TC function as it belongs in the Gcode side. Remove the COMP before the M6 and apply it AFTER the M6 finishes and you are headed back to work.


      Apon set up of MAch4 you would select a tool changer function such as WR (wineRack) then define the parameters for its operation.  


      NOW IF you want to create a new macro to control that mongral tool changer NOT A PROBLEM have at it.


      (;-) TP



      ---In mach1mach2cnc@yahoogroups.com, <mach1mach2cnc@yahoogroups.com> wrote:

      Terry I don't know how to make it anymore simple and still allow you to change it. Please show me what you are thinking in pseudo code and we will see if it can be done.

      Thanks
      Brian
       

      On 9/30/2013 8:29 PM, vmax549@... wrote:

      NOW put the function code out of sight and just bring out the variables as parameters we can set . Do the same for each class of tool changer and you will have it done.  Then IF someone wants to build a tool changer they can simply build to teh class spec and it will work. Presto.


      Just a thought, (;-) TP



      ---In mach1mach2cnc@yahoogroups.com, <mach1mach2cnc@yahoogroups.com> wrote:

      Hi guys I started to make the module for Lua to make the wine rack tool
      changer seem a little more simple. Please tell me if you think this is
      any better to follow. This only took about 2 hours to make the module so
      something like this is very doable..

      Thanks
      Brian




      ----------------------------------------------------------------------------
      -- Name: RouterToolChanger
      -- Author: B Barker
      -- Modified by:
      -- Created: 09/26/2013
      -- Copyright: (c) 2013 Newfangled Solutions. All rights reserved.
      -- Licence: BSD license
      -----------------------------------------------------------------------------

      --Load the Module for the wine rack type tool changer

      local Tc = require 'WChanger'

      --Set the output to release the tool (mc.OSIG_OUTPUT1)
      Tc.SetToolRelease(mc.OSIG_OUTPUT1)

      --Set the Pull out distance (x_pullout , y_pullout)
      --This is the distance to get the tool out of the toolchanger fingers
      Tc.SetToolPullout(0.0, -1.1)

      --Position of the Z axis to engage the tool in the changer
      Tc.SetZOnToolHeight(-3.972)

      --Position of the Z axis to get from tool to tool
      Tc.SetZOffToolHeight(-1.472)

      --Set the tool change positions and the number of tools
      --Tool 1 location
      Tc.AddChangePos(26.019, -1.83)
      --Tool 2 location
      Tc.AddChangePos(29.6, -1.873)
      --Tool 3 location
      Tc.AddChangePos(33.218, -1.839)

      --Add more Tc.AddChangePos(x, y) to add more tools


      function m6()
      --Get the instance of the controller
      Tc.SetInst(mc.mcGetInstance())
      --Get current tool and next tool
      local NewTool = mc.mcToolGetSelected(inst)
      local CurrentTool = mc.mcToolGetCurrent(inst)


      if(m_changePos[NewTool] == nil)then
      return (false)
      end

      if(NewTool ~= CurrentTool)then --Skip if the tool is the same

      if (CurrentTool > 0) then
      --Drop off the current tool (nil is telling NOT to move that axis)
      Tc.MoveMachinePos(nil, nil, 0.0);
      --Move tool ahead of the toolchange finger
      Tc.MoveToPulloutTool(CurrentTool);
      --Move tool to Z change height
      Tc.MoveToolDown();
      --Move tool into changer
      Tc.MoveToTool(CurrentTool)
      --unclamp tool
      Tc.UnclampTool();
      Tc.Pause(.75);
      --Pull up off tool
      Tc.MoveToolUp();
      else
      --Unclamp if no tool in spindle
      Tc.UnclampTool();
      end

      --Get the new tool

      --Move to new tool
      Tc.MoveToTool(NewTool);
      --Move on to the tool
      Tc.MoveToolDown();
      --Clamp Tool
      Tc.ClampTool();
      Tc.Pause(.75);
      --Set current tool
      mc.mcToolSetCurrent(inst, NewTool);
      --Pull tool out of changer
      Tc.MoveToPulloutTool(NewTool);
      --Move to Z max
      Tc.MoveMachinePos(nil, nil, 0.0);
      end
      end
    • Show all 76 messages in this topic