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,214 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,215 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