Announcements

We are currently experiencing an issue impacting some Autodesk Products and Services - please refer to the Autodesk Health Dashboard for updates.

Heidenhain Custom drilling cycle call repeat (without Cyc Call or M99)

Heidenhain Custom drilling cycle call repeat (without Cyc Call or M99)

Anonymous
Not applicable
1,266 Views
6 Replies
Message 1 of 7

Heidenhain Custom drilling cycle call repeat (without Cyc Call or M99)

Anonymous
Not applicable

I made a custom 'gun-drilling' cycle in the heidenhain post processor (it is a little similar to the expanded cycle but with a couple of additional lines,M0s etc).

 

My issue is after the first hole it goes to the next position and calls M99. It is not a heidenhain cycle so this would not work. I figured how to remove the M99. Now it goes to the next hole positions and does not do the cycle.

 

How to I get the heidenhain post processor to repeat the cycle after it has moved to the next position(s)?

 

I did manage to get this done on our haas,okuma,fagor post processors using this :

https://forums.autodesk.com/t5/hsm-post-processor-forum/haas-custom-drill-cycle-post-edit/td-p/77351...

 

Thanks

0 Likes
1,267 Views
6 Replies
Replies (6)
Message 2 of 7

FTKnur
Collaborator
Collaborator

Hi @Anonymous,

 

do you want to write the complete code on every position? When You change so much then I would prefer a "LBL with Q-Parameters" and call LBL on each Position. I think this is a little bit clearer and easier to change ...

 

I think this it's a custom cycle for backboring?

 

Attach your post and make a CAM-File and the finish NC-Code (edited manually).

Thats the easiest way to change this 🙂

 

 

0 Likes
Message 3 of 7

denis_q
Advocate
Advocate

It's not possible to use CYCL DEF 12? E.g. something like this:

;CYCL DEF 241 EINLIPPEN-BOHREN
Q200=+5 ;SICHERHEITS-ABST.
Q201=-10 ;TIEFE
Q206=923 ;VORSCHUB TIEFENZ.
Q211=0 ;VERWEILZEIT UNTEN
Q203=+0 ;KOOR. OBERFLAECHE
Q204=+5 ;2. SICHERHEITS-ABST.
Q379=+2 ;STARTPUNKT
Q253=923 ;VORSCHUB VORPOS.
Q208=923 ;VORSCHUB RUECKZUG
Q426=3 ;SP.-DREHRICHTUNG
Q427=18000 ;DREHZAHL EIN-/AUSF.
Q428=18000 ;DREHZAHL BOHREN
Q429=8 ;KUEHLUNG EIN
Q430=9 ;KUEHLUNG AUS
Q435=+0 ;VERWEILTIEFE
Q401=+100 ;VORSCHUBFAKTOR
Q202=+99999 ;MAX. ZUSTELL-TIEFE
Q212=+0 ;ABNAHMEBETRAG
Q205=+0 ;MIN. ZUSTELL-TIEFE
CYCL DEF 12.0 PGM CALL
CYCL DEF 12.1 PGM TNC:\1_UNTERPROGRAMME\MYOWNCYCLE.H
L FMAX M99
L X+100 FMAX M99
L X+0 Y-75 FMAX M99
L Z+15 FMAX
0 Likes
Message 4 of 7

Anonymous
Not applicable

This is a possibility yes, but i would have to work on the post processor to create a different lbl each time i use the same cycle in the same program. I do not wish to do any manual editing after post processing.

0 Likes
Message 5 of 7

Anonymous
Not applicable

Yes this is an option. Based on how rarely i use gundrilling i was happy if it just repeated the code at each position (without using lbls or cycle 12)

0 Likes
Message 6 of 7

denis_q
Advocate
Advocate

That was only meant as an example. You can modally call any program you create in this way.

Message 7 of 7

denis_q
Advocate
Advocate

 

All you need is to call your function in a apropriate case in 'onCycle()' switch statement

 

        case "gun-drilling":
                onCustomGunDrilling(cycle);
            break;

this is my implementation:

 

function onCustomGunDrilling(cycle) {
writeBlock(";CYCL DEF 241 " + localize("SINGLE-FLUTED DEEP-HOLE DRILLING"));
writeBlock(" Q200=" + xyzFormat.format(cycle.retract - cycle.stock) + " ;" + localize("SET-UP CLEARANCE"));
writeBlock(" Q201=" + xyzFormat.format(-cycle.depth) + " ;" + localize("DEPTH"));
writeBlock(" Q206=" + feedFormat.format(cycle.feedrate) + " ;" + localize("FEED RATE FOR PLUNGING"));
writeBlock(" Q211=" + secFormat.format(cycle.dwell) + " ;" + localize("DWELL TIME AT DEPTH"));
writeBlock(" Q203=" + xyzFormat.format(cycle.stock) + " ;" + localize("SURFACE COORDINATE"));
writeBlock(" Q204=" + xyzFormat.format(cycle.clearance - cycle.stock) + " ;" + localize("2ND SET-UP CLEARANCE"));
writeBlock(" Q379=" + xyzFormat.format(cycle.startingDepth) + " ;" + localize("STARTING POINT"));
writeBlock(" Q253=" + feedFormat.format(cycle.positioningFeedrate) + " ;" + localize("F PRE-POSITIONING"));
writeBlock(" Q208=" + feedFormat.format(cycle.retractFeedrate) + " ;" + localize("RETRACT FEED RATE"));
writeBlock(" Q426=" + (cycle.stopSpindle ? 5 : (tool.clockwise ? 3 : 4)) + " ;" + localize("DIR. OF SPINDLE ROT."));
writeBlock(" Q427=" + rpmFormat.format(getAdjustedRPM(cycle.positioningSpindleSpeed ? cycle.positioningSpindleSpeed : tool.spindleRPM)) + " ;" + localize("ENTRY EXIT SPEED"));
writeBlock(" Q428=" + rpmFormat.format(getAdjustedRPM(tool.spindleRPM)) + " ;" + localize("DRILLING SPEED"));
writeBlock(" Q429=" + (coolantCode ? coolantCode[0] : 8) + " ;" + localize("COOLANT ON"));
writeBlock(" Q430=" + (coolantCode ? coolantCode[1] : 9) + " ;" + localize("COOLANT OFF"));
writeBlock(" Q435=" + xyzFormat.format(cycle.dwellDepth ? (cycle.depth - cycle.dwellDepth) : 0) + " ;" + localize("DWELL DEPTH"));
writeBlock(" Q401=" + xyzFormat.format(qParameter.Q401.value) + " ;VORSCHUBFAKTOR");
writeBlock(" Q202=" + xyzFormat.format(qParameter.Q202.value) + " ;MAX. ZUSTELL-TIEFE");
writeBlock(" Q212=" + xyzFormat.format(qParameter.Q212.value) + " ;ABNAHMEBETRAG");
writeBlock(" Q205=" + xyzFormat.format(qParameter.Q205.value) + " ;MIN. ZUSTELL-TIEFE");
writeBlock("CYCL DEF 12.0 PGM CALL");
writeBlock("CYCL DEF 12.1 PGM TNC:\\1_UNTERPROGRAMME\\MY241.H");
}

Note that CYCL DEF is commentet out and all following Q-Parameters are 'parameters' that are used in MY241.H

 

No big changes are needed in PP, the last two lines from function onCustomDrillingCycle() do the trick.

0 Likes