BETA tormach turning postprocessor

BETA tormach turning postprocessor

AchimN
Community Manager Community Manager
5,702 Views
22 Replies
Message 1 of 23

BETA tormach turning postprocessor

AchimN
Community Manager
Community Manager
Hi all,

I am are working on a generic tormach turning post and we would be happy to get some feedback from you before we put it into the installation.

Feel free to download and test it.
Please use this topic only for any feedback regarding this postprocessor.

Thanks.


Achim.N
Principal Technology Consultant
0 Likes
5,703 Views
22 Replies
Replies (22)
Message 2 of 23

Anonymous
Not applicable
I get the following error

G-code error in 1234.nc near line 6
/home/operator/gcode/1234.nc
bad character 'u' used

and then again at the end of the program
0 Likes
Message 3 of 23

AchimN
Community Manager
Community Manager
Thanks for your feedback,
that should basically do a full retract for the x-axis.
The manual says that G28 without X or Z should move the machine to the pre-definded home position.
Can you please try this?

Return to Pre-defined Position – G28 and G28.1
G28 uses the values stored in parameters 5161 and 5163 as the X and Z final point to move to. The parameter
values are absolute machine coordinates in the native machine units of inches.
• G28 makes a rapid traverse move from the current position to the absolute position of the values in
parameters.


Achim.N
Principal Technology Consultant
0 Likes
Message 4 of 23

Anonymous
Not applicable
tried it, it does work thanks!

but I use the QCTP so all the x values need to be negative
0 Likes
Message 5 of 23

AchimN
Community Manager
Community Manager
Updated:

  • using G28 only for retracting

  • added property called useQCTP (Quick Change Tool Post Set), set it to "YES", it will scale all X-values to negatives



Download the latest version in my initial message please.


Achim.N
Principal Technology Consultant
0 Likes
Message 6 of 23

ubunibme
Enthusiast
Enthusiast
Achim,  I read through your Tormach post processor. It looks like a great start; it would be nice if you cleaned it up a bit by removing all the 'Y' axis clutter in the code - just a thought. Also, however, your threading won't work. It's not just a matter of changing it to G76. It would be fantastic if you had a function that would calculate the 'depth regression' on threading and come up the number for the 'J' parameter in the Tormach G76 block.
0 Likes
Message 7 of 23

Laurens-3DTechDraw
Mentor
Mentor
adamvs99 wrote:

Achim,  I read through your Tormach post processor. It looks like a great start; it would be nice if you cleaned it up a bit by removing all the 'Y' axis clutter in the code - just a thought. Also, however, your threading won't work. It's not just a matter of changing it to G76. It would be fantastic if you had a function that would calculate the 'depth regression' on threading and come up the number for the 'J' parameter in the Tormach G76 block.


Does it output G33 now?
Because the tormach does support that and AutoDesk CAM fully supports that with the settings in the program. For G76 you need to set more variable than there are available in the program.

Laurens Wijnschenk
3DTechDraw

AutoDesk CAM user & Post editor.
René for Legend.


0 Likes
Message 8 of 23

ubunibme
Enthusiast
Enthusiast
Nope there was just a G76 stuck in there. Tormach generates a G76 block in the 'conversational mode' on their GUI for the controller software. It looks like G33 is simply spindle sync and would be the hard way to do threading, whereas G76 handles depth regression, spring passes, compound slide angle, etc. Tormach uses a G33.1 for tapping.

Here's the one I'm working on (forgive the clunky code, I'm not javascript savy ); I haven't got internal threading or taper threading yet. I can't give you 'calcThreadPasses', cause it's not mine, but a SlantPROer 'could' just get the 'J' value off the conversational threading window.

function writeX(_x) {
    if ( properties.using_QCTP || properties.using_GangTooling )
        _x = -_x;
    return xOutput.format(_x);
}

function onCyclePoint(x, y, z) {

    switch (cycleType) {
        case "thread-turning":
            if ( alreadyInThreadingCycle ) {
                return;
            }
            alreadyInThreadingCycle = true;
            var pos = currentSection.getFirstPosition( );
            if ( pos ) {
                writeln( writeX( pos.x ) );
                writeln( zOutput.format( pos.z ) );
            }

            var external = getParameter("operation-comment") == "External Thread" ? true : false;
            var r = -cycle.incrementalX; // positive if taper goes down - delta radius
            var threadsPerInch = 1.0/cycle.pitch; // per mm for metric
            var p = 1/threadsPerInch;
            var driveLine = external ? getParameter("operation:outerClearance_value") :
                                      getParameter("operation:innerClearance_value");
            var threadCrest = external ? getParameter("operation:outerRadius_value") :
                                        getParameter("operation:innerRadius_value");
            var threadDepth = getParameter("operation:threadDepth");
            var numPasses = getParameter("operation:numberOfStepdowns");
            var iVal = ( driveLine - threadCrest ) * 2;
            var rootLine = ( threadCrest - threadDepth ) * 2;
            var jVal = calcThreadPasses( iVal,
                                        threadCrest * 2,
                                        rootLine,
                                        numPasses);
            var rVal = getParameter("operation:infeedMode") == "constant" ? 1 : 2;
            var qVal = getParameter("operation:infeedAngle");
            var hVal = getParameter("operation:nullPass");
           

            writeBlock( gMotionModal.format(76),
                        pOutput.format(p),
                        zOutput.format(z),
                        iThreadOutput.format( iVal ),
                        jThreadOutput.format( jVal ),
                        kThreadOutput.format( threadDepth * 2 ),
                        rThreadOutput.format( rVal ),
                        qThreadOutput.format( qVal ),
                        hVal > 0 ? hThreadOutput.format( hVal ) : "" );
            return;
        case "drilling":
        case "counter-boring":
        case "chip-breaking":
        case "deep-drilling":
        case "reaming":
            expandCyclePoint(x, y, z);
            return;
        case "tapping":
            var threadsPerInch = getParameter("operation:tool_threadPitch"); // per mm for metric
            writeBlock( gMotionModal.format(33.1),
                        zOutput.format(z),
                        kThreadOutput.format( threadsPerInch ) );
            return;
    }
}
0 Likes
Message 9 of 23

Anonymous
Not applicable
let me start by saying i know nothing about programming and running a CNC lathe, so please bare with me...

I am having an issue which i believe is a post issue, but honestly have no idea what to look for. The tool paths look fine in simulation but when i load it into pathpilot the radii are shown as inverted and they cut as inverted. also the diameters come out much too small. And this only happens on the finish pass, roughing passes are fine. I have tried all four options of cutter comp but none of them work.

Using "computer"  give the inverted radii and small diameters

"in control" shows extremely large inverted radii in pathpilot

using "wear" or "inverse wear" throws code errors and doesn't even give a preview in pathpilot

I wish I could add more to this, but I am trying to teach myself and I am at a road block with this. I am willing to try any suggestions
0 Likes
Message 10 of 23

Anonymous
Not applicable
I downloaded and tried the latest PP in the first post.

After I home the machine and move closer to the spindle and set G30, I hit cycle start and it immediately heads for and trips both home switches. It has absolutely no business in that neighborhood. 🙂
This first job is three steps. Face rough and finish and small campher on the front of the part. Simple job. One tool.
Thanks.
0 Likes
Message 11 of 23

Anonymous
Not applicable
I think that is the G28 move maybe.
Here is the initial safety block that I use when using a combo of hand coding and conversational.

G7 G18 G20 G30 Z #5422 G40 G54 G90

That assumes you have already homed the machine, which should be the very first thing you do anyway. Maybe the G28 could be used in case the machine isn't already homed?

Also the Gcode produced has no spindle stop code.
0 Likes
Message 12 of 23

Anonymous
Not applicable
Disregard that last post. I added that start block to the code your PP output and still got an error message.

"Program exceeds machine maximum on X axis by 0.2495 in"

Here is the code I used.

%
(5555)
(BOTTOM LEFT ZERO)
N10 G7 G18 G20 G28 G40 G54 G90 G98
G30 Z #5422
(FACE3)
N13 T0606
N14 G54
N15 G94
N16 G96 D3000 S656 M03
N17 G90 G0 X1.55 Z0.1969
N18 G0 Z0.0406
N19 G1 X0.8631 F39.3701
N20 X0.75 Z-0.016
N21 X-0.062
N22 X0.0511 Z0.0406
N23 G0 X1.55
N24 Z0.1969

(FACE4)
N25 G94
N26 G96 D3000 S656 M03
N27 G0 X1.55 Z0.1969
N28 Z0.0866
N29 G1 X0.8631 F39.3701
N30 X0.75 Z0.03
N31 X-0.062
N32 X0.0511 Z0.0866
N33 G0 X1.55
N34 Z0.1969

(CHAMFER1)
N35 G94
N36 G96 D3000 S656 M03
N37 G0 X1.55 Z0.1969
N38 Z-0.0117
N39 G1 X0.5762 F39.3701
N40 Z-0.0208
N41 X0.7693 Z-0.1174
N42 G0 X1.55
N43 Z0.1969

N44 G28
N45 M05 M30
%
0 Likes
Message 13 of 23

scottmoyse
Mentor
Mentor
There is another Tormach turning post someone has written here: https://camforum.autodesk.com/index.php?topic=7481.0

Initial reports are that it works better than this one.

Scott Moyse
Did you find this post helpful? Feel free to Like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.


EESignature


RevOps Strategy Manager at Toolpath. New Zealand based.

Co-founder of the Grumpy Sloth full aluminium billet mechanical keyboard project

0 Likes
Message 14 of 23

tacticalkeychains
Advocate
Advocate
Yes I have actually already done this for John Grimsmo and I believe John Saunders tweaked it for Turret. (we need those guys)

However attached is for "gang tool" setup pre-John Grimsmo Gang Tool Edits, not a Turret.  So there will need to be two different posts, or options for each in one post if Autodesk wants to actually support the Tormach lathe.

The attached post is a heavily modified post for my Gang Tool Lathe, All tools are to be ran "upside down" (that is the ONLY way to run a gang tool lathe) However the "parting tool" is "ran right side up" to conserve table space and will part off in a "negative fashion"  Bar Pulling is supported with Transfer Stock Option.

Hopefully that makes sense.  If you have further questions I have many videos on my Lathes on YouTube.

*Note - Tormach lathe spindle is NOT a servo, and you shouldn't be "rigid tapping" with it, sure you can risk it at low RPM, but I would suggest a spring action tool holder if you aren't already using it.

0 Likes
Message 15 of 23

ubunibme
Enthusiast
Enthusiast
TacticalKeychains wrote:

*Note - Tormach lathe spindle is NOT a servo, and you shouldn't be "rigid tapping" with it, sure you can risk it at low RPM, but I would suggest a spring action tool holder if you aren't already using it.


The spindle is not a servo , but it IS synchronized with an encoder. So, what happens when the spindle reverses? The Z axis picks up the sync signal from the encoder and responds instantly. It's very smooth, not one bit of jitter.
I recently tapped a bunch of parts made from hardened (C35) 4130, not one problem.
0 Likes
Message 16 of 23

tacticalkeychains
Advocate
Advocate
Ok, good luck.
0 Likes
Message 17 of 23

al.whatmough
Alumni
Alumni
I see a challenge.


Waiting for the video :-).



---------
AL Whatmough
Director Product Management - Manufacturing

Note, I love to engage on the forums. However, I spend a lot of time in meetings trying to help clear the path for our amazing team of Developers working on Manufacturing at Autodesk. So, if I don't respond immediately, it's not that I don't care.
0 Likes
Message 18 of 23

tacticalkeychains
Advocate
Advocate
I would like to see max RPM rigid tapping on a Tormach lathe, would make a great video!
0 Likes
Message 19 of 23

Anonymous
Not applicable
I am not really setup for it, but I do rigid tap on the Novakon mill I have. It uses TTS tools and they will fit the gang tool holders. I have some 3/4" aluminum bar that should do well for testing. I'll give it a shot this weekend and report back. 🙂
0 Likes
Message 20 of 23

hai.cao
Alumni
Alumni
Attached is the updated beta TormachSlatPRO post processor based on Achim's original post.  Please test/ use the post carefully and provide feedback.
0 Likes