Proma SD THC to LinuxCNC implementation (NOT PROMA 150!!)

10 Oct 2017 15:26 - 10 Oct 2017 16:07 #100150 by Plasmaguy
Plasmaguy created the topic: Proma SD THC to LinuxCNC implementation (NOT PROMA 150!!)
Hi guys, I've just built an 8x20' plasma table..which in hindsight was a breeze compared to getting up to speed with implementation of the computer side of things.

Linux and LinuxCNC are totally new to me, I'm learning the very basics so it has not been easy the past few days...however I am progressing along the learning curve; all the axes are running perfectly and am ready for implementation of the Proma SD (NOT PROMA 150!) into my system.

Unfortunately I wasted a day or so attempting to get Tommylight's THC file working as it was rather unclear to me that it works only for the Proma 150 but won't work with the Proma SD (their latest model) because these two THC units function differently. (Proma SD Manual) (PROMA SD Implementation without Floating Torch)

Above link is an example of how I'd like to run my you can see, the torch never touches the work piece but instead fires above the work as the Z travels toward the metal. The ArcOK signal is tied together somehow with the Probe to set the pierce height (not 100% sure how to wire it into my BOB, though). Here's my BOB: Sainsmart 5 axis BOB

Here's the sample Gcode taken from the manual:

G00 Z20 (setting the burner about 20mm over the material)
M3 (Plasma connection)
G31 Z-10 F300 (looking for material at 300 to Z = -10)
G92 Z3 (Z axis reset + sample correction)
G00 Z6 (raising the burner 6mm over the material)
G04 P1000 (material piercing time 1000ms / 1s)
G00 Z1 (lowering the burner 1mm over the material)

I am running a licensed version of Sheetcam which I have quite limited experience with. I am trying to get up to speed on how to edit the post processor to accommodate this bit of code so I can get running asap. I've done a few hours of research on how to put it all together but my brain is mush and here at the finish line I need a little help getting across.

Thank you!


Edit: I'm using a Powermax45XP which I already have running manually from my keyboard and can cut perfect straight lines with very little slag. My Proma SD is also working great when I run the machine manually.

Here's my Sheetcam post:

function OnAbout(event)
ctrl = event:GetTextCtrl()
ctrl:AppendText("EMC plasma post processor\n")
ctrl:AppendText("Modal G-codes and coordinates\n")
ctrl:AppendText("Comments enclosed with ( and )\n")
ctrl:AppendText("Incremental IJ\n")
ctrl:AppendText("uses G43 tool length offsets\n")

-- revision 3/2/07
-- Removed final safety move. This is now done in SheetCam

-- revision 7/10/04
-- Added new arc handling

-- Created 30/3/2005
-- based on

function OnInit()
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
post.Text (" G20 (Units: Inches)\n") --inch mode
post.Text (" G40 G90\n F1 S1\n")
bigArcs = 1 --stitch arc segments together
minArcSize = 0.05 --arcs smaller than this are converted to moves

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

function OnFinish()
post.Text (" M05 M30\n")

function OnRapid()
post.ModalText (" G00")
post.ModalNumber (" X", endX * scale, "0.0000")
post.ModalNumber (" Y", endY * scale, "0.0000")
post.ModalNumber (" Z", (endZ + toolOffset) * scale, "0.0000")

function OnMove()
post.ModalText (" G01")
post.ModalNumber (" X", endX * scale, "0.0000")
post.ModalNumber (" Y", endY * scale, "0.0000")
post.ModalNumber (" Z", (endZ + toolOffset) * scale, "0.0000")
post.ModalNumber (" F", feedRate * scale, "0.###")

function OnArc()
if(arcAngle <0) then
post.ModalText (" G03")
post.ModalText (" G02")
post.NonModalNumber (" X", endX * scale, "0.0000")
post.NonModalNumber (" Y", endY * scale, "0.0000")
post.ModalNumber (" Z", (endZ + toolOffset) * scale, "0.0000")
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###")

function OnPenDown()
if (preheat > 0.001) then
post.ModalText (" G00")
post.ModalNumber (" Z", cutHeight * scale, "0.0000")
post.Text ("\n G04 P")
post.Number (preheat,"0.###")
post.ModalText (" G00")
post.ModalNumber (" Z", pierceHeight * scale, "0.0000")
post.Text ("\n M03\n")
if (pierceDelay > 0.001) then
post.Text (" G04 P")
post.Number (pierceDelay,"0.###")

function OnPenUp()
post.Text (" M05\n")
if (endDelay > 0) then
post.Text (" G04 P")
post.Number (endDelay,"0.###")

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

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

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

function OnDrill()
endZ = drillZ
endZ = safeZ
Last Edit: 10 Oct 2017 16:07 by Plasmaguy.
10 Oct 2017 21:43 #100166 by rodw
rodw replied the topic: Proma SD THC to LinuxCNC implementation (NOT PROMA 150!!)
First off, probing on Mach3 where your example came from and LinuxCNC are quite Different. You need to be using G38
G38.3 sounds like what you need.

As can be seen in this link, your ArcOK signal needs to be sent to motion.probe-input so the probing works as expected.

In sheetcam, you would need to modify the onPenDown() and onPenUp() procedures. It will probably make life easier if the example code is contained in a separate gcode file "touchoff.ngc" thaty is called from your sheetcam post. Something like this (but you will need to modify this).
function OnPenDown()
   post.NonModalNumber("o<touchoff> call [" ,pierceHeight * scale ,"0.000" )
      post.Text ("] ")
   post.NonModalNumber("[", pierceDelay * scale, "0.##")
   post.Text ("] ")
   post.NonModalNumber("[", cutHeight * scale, "0.##")
   post.Text ("] (Touchoff and start cutting)\n")
   post.NonModalNumber ("F", feedRate * scale, "0.###")

function OnPenUp()
   post.Text ("M5 (Torch Off)\n")

Touchoff.ngc (modify to suit)
o<touchoff> sub
(#1 pierce height, #2 pierce delay, #3 cut height)
G38.2 Z-1.75 (Probe to find the surface)
G0 Z[#5063 + 0.07] (Move to Probe Trip point + switch hysteresis)
G92 Z0 (Set Z zero)
G1 Z#1
M3 S1
M66 P0 L1 Q5 (Wait for Arc OK from Torch)
G4 P#2 (Pause for pierce delay)
Z#3 (goto cut height)
o<touchoff> endsub
Time to create page: 0.154 seconds
Powered by Kunena Forum