Floating Z Head


Results 1 to 10 of 10

Thread: Floating Z Head

  1. #1
    Member tulsaturbo's Avatar
    Join Date
    Feb 2008
    Location
    USA
    Posts
    195
    Downloads
    0
    Uploads
    0

    Exclamation Floating Z Head

    I read this on another website:
    The floating head works like this.. The Z lowers untill it hits the plate and keeps going untill it hits your floating head limit switch then comes up to 0 plus your pierce height. In your g-code you tell it the switch travle so it adds that to your Z. The purpose of the floating head is to tell Mach3 where the top of the metal is before the pierce
    Can anyone explain with more detail on how to set this up with mach3 settings / configuration? I have tried looking all over the net for an explanation on how to set this up and can't find one! It would be greatly appreciated!

    TIA

    Similar Threads:


  2. #2
    Member
    Join Date
    May 2007
    Location
    USA
    Posts
    111
    Downloads
    0
    Uploads
    0

    Default

    Its not setup in mach , it is setup in your post processor. In sheetcam my post processor has a place for me to put my offset which is .26

    This is the code it then produces for every pierce.
    N0110 G28.1 Z0.12
    N0120 G92 Z0.0
    N0130 G00 Z0.2600
    N0140 G92 Z0.0
    N0150 G00 Z0.1300
    N0160 M03
    It makes the z go down until the switch is tripped. It sets the z axis dro to 0. It raises the z the offset number (.26 in my case). It again sets the z axis to 0. Now the top of the metal is at 0 and the the tip of the torch is at 0. It raises the z axis to the pierce height. ( I use .13 in this case) and starts cutting.
    Hope this helps.



  3. #3
    Member tulsaturbo's Avatar
    Join Date
    Feb 2008
    Location
    USA
    Posts
    195
    Downloads
    0
    Uploads
    0

    Default

    Quote Originally Posted by lowpull View Post
    Its not setup in mach , it is setup in your post processor. In sheetcam my post processor has a place for me to put my offset which is .26

    This is the code it then produces for every pierce.
    N0110 G28.1 Z0.12
    N0120 G92 Z0.0
    N0130 G00 Z0.2600
    N0140 G92 Z0.0
    N0150 G00 Z0.1300
    N0160 M03
    It makes the z go down until the switch is tripped. It sets the z axis dro to 0. It raises the z the offset number (.26 in my case). It again sets the z axis to 0. Now the top of the metal is at 0 and the the tip of the torch is at 0. It raises the z axis to the pierce height. ( I use .13 in this case) and starts cutting.
    Hope this helps.
    That helped out bunches. Thanks for the explanation!

    So I would set up the floating Z head switch in mach3 under - config / ports and pins / input signals / Z Home, correct?

    Would I need to configure the (Safe Z) as well (config / safe_Z setup) and if so whats the common setup to go with as I see that it gives 3 options to choose from?

    TIA

    Last edited by tulsaturbo; 08-29-2009 at 07:35 AM.


  4. #4
    Registered MonoNeuron's Avatar
    Join Date
    Aug 2003
    Location
    Australia
    Posts
    494
    Downloads
    0
    Uploads
    0

    Default

    I think setting the safe Z height for rapids is a good idea to clear any tip ups that may occur and if your Z head is pretty quick then setting it to about 2" or higher wouldn't hurt and it would also clear any hold down you may be using for thin plate (like heavy pieces of steel bar to keep things flat.).

    I am not completely useless.......I can always serve as a BAD example.


  5. #5
    Member tulsaturbo's Avatar
    Join Date
    Feb 2008
    Location
    USA
    Posts
    195
    Downloads
    0
    Uploads
    0

    Default

    So I would set up the floating Z head switch in mach3 under - config / ports and pins / input signals / Z Home, correct?
    Anyone???



  6. #6
    Registered MonoNeuron's Avatar
    Join Date
    Aug 2003
    Location
    Australia
    Posts
    494
    Downloads
    0
    Uploads
    0

    Default

    Yes. It is the home switch
    If it doesn't behave as it should then click the check box for high or low depending on which way it goes

    I am not completely useless.......I can always serve as a BAD example.


  7. #7
    Member
    Join Date
    Feb 2007
    Location
    canada
    Posts
    962
    Downloads
    0
    Uploads
    0

    Default

    This is the code it then produces for every pierce.
    N0110 G28.1 Z0.12
    N0120 G92 Z0.0
    What is the 0.12 in the 1st line for ??

    Manufacturer of CNC routers and Viper Servo Drives
    www.LarkenCNC.com and www.Viperservo.com


  8. #8
    Registered
    Join Date
    Nov 2008
    Location
    canada
    Posts
    22
    Downloads
    0
    Uploads
    0

    Default

    setting the offset in Mach3 config/Zhome will not help the THC post, only manual Z homes.

    you have to add "switchoffset post variable" when doing your toolpaths. its the big "V" on the side menu of sheetcam. it will display just like a toolpath in the side menu, with the check mark, etc.

    you have to have it there or the post processor will make your switch offset zero in the g-code. the way it should work is that the switchoffset gets put in the g-code automatically, from the switchoffset variable. you should not have to go into the g-code and edit in the value. Or, alternately, edit the post you are using to generate code to include the switchoffset variable.

    I had exact same issues, was continually editting the switch offset into the new programs.

    Last edited by creepy; 01-26-2010 at 12:49 PM. Reason: clairity


  9. #9
    Member Islam's Avatar
    Join Date
    Jun 2009
    Location
    Egypt
    Posts
    138
    Downloads
    0
    Uploads
    0

    Default

    Quote Originally Posted by Larken View Post
    What is the 0.12 in the 1st line for ??
    For the line : G28.1 Z0.12
    The 0.12 value is the absolute Z value that torch moves till reaching it first, and then start Z homing.
    I could be any value, but 0.12" or 3.0mm is suitable because it is the min. value that more than any switchoffset value.



  10. #10
    Member
    Join Date
    Dec 2016
    Location
    Estonia
    Posts
    2
    Downloads
    0
    Uploads
    0

    Default Re: Floating Z Head

    I use uccnc and axbb-e controller and try to use sheetcam with floating head.Sorry my english. I was in school last time 1985. I read all this and think: maybe this working but question : where to write these reads and this scriber speak could be delete ? This was good if someone modified this conf for z axis floating head. Only need measure z axis switch offset.



    --************************************************
    --*** Set these values up to suit your machine ***
    --************************************************




    --Use a reference switch
    --Set this to false if you do not have a reference switch
    useRef = true


    --Use the home switch (G28.1)
    --Set to false if you use the probe input (G31)
    refHome=true


    --this is the distance between each torch reference in MILLIMETRES
    refDistance = 250


    --this is the reference feed rate in mm/min
    refFeed = 500


    --Put your switch offset value here in MILLIMETRES
    --Put a sheet of metal on your machine and place a sheet of paper on top.
    --Slowly jog the torch down onto the paper until the touch-off switch just operates.
    --Zero the Z axis then pull gently on the paper and slowly jog up until the paper slides out.
    --The Z axis position is your switch offset.
    switchOffset = 1.5


    --Scriber X,Y,Z offsets in MILLIMETRES. Do not use inches here even if you want inch code
    --Use the special code 'nil' on the Z axis to disable it.
    --In that case no Z values will be output at all while scribing.
    --e.g scriberZ = nil
    scriberX = 110
    scriberY = 220
    scriberZ = 0


    --scriber axis. Leave this as nil if the scriber is fixed to the same axis as the torch
    --e.g scriberAxis = nil
    scriberAxis = "A"


    --This an extra delay for the first pierce. The time is in seconds.
    firstDelay=0


    --************************************************
    --*** End of settings ***
    --************************************************






    function OnAbout(event)
    ctrl = event:GetTextCtrl()
    ctrl:AppendText("plasma MP1000-THC post processor with engraver\n")
    ctrl:AppendText("\n")
    ctrl:AppendText("Modal G-codes and coordinates\n")
    ctrl:AppendText("Comments enclosed with ( and )\n")
    ctrl:AppendText("M03/M05 turn the torch on/off\n")
    ctrl:AppendText("M08/M09 turn the engraver on/off\n")
    ctrl:AppendText("Incremental IJ - set in mach2\n")
    ctrl:AppendText("The torch is referenced at cut start and every 500mm of movement thereafter\n")
    ctrl:AppendText("Post variables:\n")
    ctrl:AppendText("refDistance - set the distance between each reference\n")
    ctrl:AppendText("refFeed - set the feed rate when referencing\n")
    ctrl:AppendText("switchOffset - set your net switch offset amount \n")
    ctrl:AppendText("Scriber uses any tool number\n")
    end






    -- created 1/1/06
    -- Based on plasma1.post




    -- Modified 21/6/2010
    -- added option for 'nil' plate marker z
    -- Added support for plate marker tool type as well as tool number based plate marker


    -- Modified 4/11/2010
    -- Added: Reference the torch on the first pen down if the plate marker is the first tool used.


    -- Modidfied 8/2/2020
    -- Removed corner slowdown THC on/off as this can be done using rules instead.




    post.DefineVariable("refDistance",sc.unitLINEAR,0, 1e17)
    post.DefineVariable("refFeed",sc.unitFEED,0,1e17)
    post.DefineVariable("switchOffset",sc.unitLINEAR,-1e17,1e17)


    function OnInit()


    offX = 0
    offY = 0
    offZ = 0


    post.SetCommentChars ("()", "[]") --make sure ( and ) characters do not appear in system text
    post.Text (" (Filename: ", fileName, ")\n")
    post.Text (" (Post processor: ", postName, ")\n")
    post.Text (" (Date: ", date, ")\n")
    if(scale == metric) then
    post.Text (" G21 (Units: Metric)\n") --metric mode
    else
    post.Text (" G20 (Units: Inches)\n") --inch mode
    end
    post.Text (" F1\n G53 G90 G40\n")
    minArcSize = 0.2 --arcs smaller than this are converted to moves
    firstRef = true
    currentZAxis = "Z"


    dist = 9999999
    lastz = 0
    extraDelay = firstDelay
    end


    function OnNewLine()
    post.Text ("N")
    post.Number (lineNumber, "0000")
    lineNumber = lineNumber + 10
    end




    function OnFinish()
    endZ = safeZ
    OnRapid()
    endX = 0
    endY = 0
    offX = 0
    offY = 0
    offZ = 0
    OnRapid()
    post.Text (" M05 M30\n")
    end


    function OnRapid()
    if(endX > 1e17 and endY > 1e17) then return end
    local len = math.hypot((endX + offX)-currentX , (endY + offY)-currentY)
    dist = dist + len
    if len < 0.001 and endZ < currentZ and endZ == pierceHeight then
    return --Block the move to pierce height
    end

    post.ModalText (" G00")
    post.ModalNumber (" X", (endX + offX) * scale, "0.0000")
    post.ModalNumber (" Y", (endY + offY) * scale, "0.0000")
    if(offZ and firstRef == false and currentZ ~= safeZ) then
    post.ModalNumber (" " .. currentZAxis, (endZ + offZ) * scale, "0.0000")
    end
    post.Eol()
    end


    function OnMove()
    local len = math.hypot(endX - currentX , endY - currentY)
    dist = dist + len
    post.ModalText (" G01")
    post.ModalNumber (" X", (endX + offX) * scale, "0.0000")
    post.ModalNumber (" Y", (endY + offY) * scale, "0.0000")
    if(offZ) then
    post.ModalNumber (" " .. currentZAxis, (endZ + offZ) * scale, "0.0000")
    end
    post.ModalNumber (" F", feedRate * scale, "0.0###")
    post.Eol()
    end


    function OnArc()
    local radius = math.hypot(currentX - arcCentreX, currentY - arcCentreY)
    dist = dist + radius * math.abs(arcAngle)
    if(arcAngle <0) then
    post.ModalText (" G03")
    else
    post.ModalText (" G02")
    end
    post.ModalNumber (" X", (endX + offX) * scale, "0.0000")
    post.ModalNumber (" Y", (endY + offY) * scale, "0.0000")
    if(offZ) then
    post.ModalNumber (" " .. currentZAxis, (endZ + offZ) * scale, "0.0000")
    end
    post.Text (" I")
    post.Number ((arcCentreX - currentX) * scale, "0.0000")
    post.Text (" J")
    post.Number ((arcCentreY - currentY) * scale, "0.0000")
    post.ModalNumber (" F", feedRate * scale, "0.0###")
    post.Eol()
    end


    function OnPenDown()
    if toolClass == "MarkerTool" then
    if (firstRef) then
    Reference()
    post.ModalText (" G00")
    post.Text(" Z")
    post.Number (safeZ * scale, "0.0000")
    post.Eol()
    offX = scriberX
    offY = scriberY
    offZ = scriberZ
    post.ModalNumber (" X", (currentX + offX) * scale, "0.0000")
    post.ModalNumber (" Y", (currentY + offY) * scale, "0.0000")
    post.Eol()
    end
    if (offZ) then
    post.ModalText (" G00")
    post.ModalNumber (" " .. currentZAxis, (cutHeight + offZ) * scale, "0.0000")
    post.Eol()
    end
    post.Text(" M08\n")
    else
    if(dist >= refDistance) then
    dist = 0
    Reference()
    end
    post.ModalText (" G00")
    post.Text(" Z")
    post.Number (pierceHeight * scale, "0.0000")
    post.Eol()
    if (preheat > 0) then
    post.Text ("\n G04 P")
    post.Number (preheat,"0.0##")
    post.Eol()
    end
    post.Text ("\n M03\n")
    end
    if (pierceDelay > 0) then
    post.Text (" G04 P")
    post.Number (pierceDelay + extraDelay,"0.0##")
    post.Eol()
    extraDelay = 0;
    end
    end




    function Reference()
    firstRef = false
    if not useRef then return end
    if (refHome) then
    post.ModalText(" G28.1 Z")
    post.Number(3 * scale, "0.00")
    else
    post.ModalText(" G31 Z -100")
    end
    post.ModalNumber (" F", refFeed * scale, "0.0###")
    post.Eol()
    post.ModalText(" G92 Z0.0\n")
    post.ModalText (" G00")
    post.Text(" Z")
    post.Number (switchOffset * scale, "0.0000")
    post.Eol()
    post.ModalText(" G92 Z0.0\n")
    end


    function OnPenUp()
    if toolClass == "MarkerTool" then
    post.Text(" M09\n")
    else
    post.Text (" M05\n")
    end
    if (endDelay > 0) then
    post.Text (" G04 P")
    post.Number (endDelay,"0.0##")
    post.Eol()
    end
    end




    function OnNewOperation()
    post.Text (" (Operation: ", operationName, ")\n")
    end


    function OnToolChange()
    if toolClass == "MarkerTool" then
    if(scriberAxis and scriberAxis ~= currentZAxis) then
    endZ = safeZ
    OnRapid()
    currentZAxis = scriberAxis
    end
    if(firstRef ~= true) then
    offX = scriberX
    offY = scriberY
    offZ = scriberZ
    end
    else
    if(scriberAxis and scriberAxis == currentZAxis) then
    endZ = safeZ
    OnRapid()
    currentZAxis = "Z"
    end
    offX = 0
    offY = 0
    offZ = 0
    end
    end


    function OnNewPart()
    post.Text(" (Part: ",partName,")\n");
    end


    function OnDrill()
    OnRapid()
    currentX = endX
    currentY = endY
    OnPenDown()
    endZ = drillZ
    OnMove()
    OnPenUp()
    endZ = safeZ
    OnRapid()
    end




    function OnComment()
    post.Text(" (",commentText,")\n")
    end



Tags for this Thread

Posting Permissions

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


About CNCzone.com

    We are the largest and most active discussion forum for manufacturing industry. The site is 100% free to join and use, so join today!

Follow us on


Our Brands

Floating Z Head

Floating Z Head