Jump to content

Welcome to eMastercam

Register now to participate in the forums, access the download area, buy Mastercam training materials, post processors and more. This message will be removed once you have signed in.

Use your display name or email address to sign in:

(D1) Cutter Comp notice


Recommended Posts

Hi,

  I'm trying to output "D" at the line of G43 for pocket function and it does not work whereas CONTOUR, or any other 3D function it worked.  Would you guys please tell me what I did wrong?  Here is my NC out put first then at the bottom of it I have how it defined.

 

-------------------------------

%
O0258 (Test File-OP1.NC)
(GROUP COMMENT)
(SOURCE= TEST FILE.MCX-8)
(POSTED ON AUG.29.2014 AT 11*48PM)
(GENERIC FANUC 4X MILL)
(MATERIAL TYPE= ALUMINUM INCH - 2024)
(MATERIAL STK= X4.96 Y3.85 Z2.00)
(*)
(TOOLS LIST)
(T2  - 13/32 FLAT ENDMILL   -  H2)
N2(13/32 FLAT ENDMILL )
G0 G17 G40 G49 G80 G90 Z0
T2 M6(POCKET, CUT#2)
G90 G55
X1.6349 Y-.0819 S1426 M3
G43 H2 Z1. M8(DOC= Z-.25) ==========> suppose to be G43 (D2) H2 Z1. M8(DOC= Z-.25)
Z.1
G2 X1.6349 Y-.0819 Z-.0338 I-.3543 J-.1987 F6.33
X1.6349 Y-.0819 Z-.1675 I-.3543 J-.1987
X.8842 Y-.192 Z-.25 I-.3543 J-.1987
G1 X.0254 Y0.
X-1.5712 Y-.7869 I1.8028 J0.
G1 X-1.7849
G3 X-1.7869 Y.7825 I1.7341 J-.7869
G1 Y-.7869
X1.7869
Y.7869
X-1.7869
Y.7825
G0 Z-.125
Z.0625
X-.9844 Y.4063
G1 Z-.25
G41 D2 X-1.3906
G3 X-1.7969 Y0. I0. J-.4063
G1 Y-.7969
X1.7969
Y.7969
X-1.7969
Y0.
G3 X-1.3906 Y-.4063 I.4063 J0.
G1 G40 X-.9844
G0 Z1. M9
G28 G91 Z0 M5
/ G28 Y0
M1
M30
%

------------------------------------

 

In....

ptlchg_com      #Tool change common blocks

 

      phsm1_on        #must remain before G43
      pbld, n$, "G43",  [if comp_type = 2 & opcode$ = 4 & not(opcode$ = 3), spaces$ = 0, "(",*tloffno$,")", spaces$=sav_spc], *tlngno$,
      pfzout, next_tool$, *scoolant,

 

 

In......

ptlchg0$         #Call from NCI null tool change (tool number repeats)

          phsm1_on        #must remain before G43  
      pbld, n$, "G43",  [if comp_type = 2 & opcode$ = 4 & not(opcode$ = 3), spaces$ = 0, "(",*tloffno$,")", spaces$=sav_spc], *tlngno$,
      pfzout, next_tool$, *scoolant,

          spaces$ = 0

        if last_op_id <> op_id$, "",
          else, scomm_str, "DOC= ", *min_depth, scomm_end, e$
      spaces$=sav_spc

          pcan
          phsm2_on        #must remain after G43
          ]
        else,
          [
          if fmtrnd(prv_cabs) <> fmtrnd(cabs),
            [
            if safe_index,
              [
              if lock_codes = one & not(index) & rot_on_x, pbld, n$, *sunlock,
              pbld, n$, [if not(index), sgabsinc, pwcs], pfcout, e$
              if lock_codes = one & not(index) & rot_on_x & cuttype = 0, pbld, n$, *slock,
              pbld, n$, pfxout, pfyout, e$
              ]
            else,
              [
              if lock_codes = one & not(index) & rot_on_x, pbld, n$, *sunlock,
              pbld, n$, [if not(index), sgabsinc, pwcs], pfcout, e$
              pfxout, pfyout, e$
      phsm1_on        #must remain before G43
      pbld, n$, "G43",  [if comp_type = 2 & opcode$ = 4 & not(opcode$ = 3), spaces$ = 0, "(",*tloffno$,")", spaces$=sav_spc], *tlngno$,
      pfzout, next_tool$, *scoolant,

      phsm2_on        #must remain after G43

 

 

 

 

-------------------------------

I know I did something wrong, with my little knowledge I've been figuring this for days and I don't know why. I hope that I get an answer from your expert.  Thank you.

 

 

Link to comment
Share on other sites

Hi Bryan Johnson,

I tried to look into comp_type and it is still not letting me post "(D)" value out.

 

I also tried to force if there is using wear" in finish cut the output "(D)" for me vut still not working.

 

Is there a solusion for this Bryan?

Thanks for your respond.

Link to comment
Share on other sites

Here you go again chasing down these things. Sorry but what are you trying to accomplish with this exercise? You never want to apply your D comp on the same line as your H Comp. Really weird things can start happening. Call in when you are doing it like every builder on the planet wants it done and again work on the bigger items that need to be addressed.

Link to comment
Share on other sites

ron,

I think he want's it parentheses.i'm curious as to why.

I am not trying to be an arse here, but if I had time to chase down something like that because the place I was working at was so dialed in then great. I am not seeing that in majority of places I go into. Not saying where he works is not a finally turned sewing machine hitting on all 12 cylinders, but those places seems to be very far and few between. Hearing all the old machines they have there makes me think it is not.

 

Easy fix if your D is always the same as you h is just to do a whatever the variable it for H make it equal to a place holder variable and have it output what you want and be done with it. They change then you are chasing your tail like he is doing.

Link to comment
Share on other sites
Guest MTB Technical Services

Ron is correct. This exercise is a complete waste of time.

 

You should NEVER even use CRC on a Pocket except for finishing.

Activating the register prior to actually calling CRC via G41/G42, solely for modality, serves no purpose.

This is exactly why the OP is having problems trying to do it.

 

The best practice is to call CRC and output the comp register each time CRC is called.

Doing it any other way is asking for trouble.

 

People shouldn't modify posts if they don't understand G-Code in the first place.

Link to comment
Share on other sites

Hi Crazy^Millman,

   The reason I'm using "()" because sometimes we have LONG, LONG pocket program and it may take many pages of roughing then the FINISH with CUTTER COMP.  Therefore, it is best if I can make it appear on the very first line of individual toolpath so the SETUP MEN will not search for COMP at the bottom or QUESTION where it is. 

 

Thank you for your help.

 

 

I am not trying to be an arse here, but if I had time to chase down something like that because the place I was working at was so dialed in then great. I am not seeing that in majority of places I go into. Not saying where he works is not a finally turned sewing machine hitting on all 12 cylinders, but those places seems to be very far and few between. Hearing all the old machines they have there makes me think it is not.

 

Easy fix if your D is always the same as you h is just to do a whatever the variable it for H make it equal to a place holder variable and have it output what you want and be done with it. They change then you are chasing your tail like he is doing.

Link to comment
Share on other sites

Hi MTB,

    If there is no way of output CUTTER COMP at the beggining of the individual toolpath then I try to look into other ways if there are.  Usually most of programmers from my company using ROUGH and FINISH when using POCKET.  Therefore, I would like to output "D" and as you know pocket toolpath is LONG and that's why it is best to output "D" on the very first line right after the safety line.  In that way it is much better to have clear communication that what CUTTER COMP# in that pocket would be instead of using the DOWN ARROW KEY to search for "D" #.

 

 

Ron is correct. This exercise is a complete waste of time.

 

You should NEVER even use CRC on a Pocket except for finishing.

Activating the register prior to actually calling CRC via G41/G42, solely for modality, serves no purpose.

This is exactly why the OP is having problems trying to do it.

 

The best practice is to call CRC and output the comp register each time CRC is called.

Doing it any other way is asking for trouble.

 

People shouldn't modify posts if they don't understand G-Code in the first place.

Link to comment
Share on other sites
Guest MTB Technical Services

Hi MTB,

    If there is no way of output CUTTER COMP at the beggining of the individual toolpath then I try to look into other ways if there are.  Usually most of programmers from my company using ROUGH and FINISH when using POCKET.  Therefore, I would like to output "D" and as you know pocket toolpath is LONG and that's why it is best to output "D" on the very first line right after the safety line.  In that way it is much better to have clear communication that what CUTTER COMP# in that pocket would be instead of using the DOWN ARROW KEY to search for "D" #.

 

 

Sorry, You are incorrect that it is best to output the D on the very first move after the safety line.

What you are trying to do is dangerous and should be avoided at all costs.

You are actually creating a problem when one doesn't exist.

 

In my 30 years of CNC work I have yet to see a company doing this.

 

Your setup documentation should be telling setup/operators what the CRC register is.

 

As I previously stated,

The best practice is to call CRC and output the comp register each time CRC is called.

Doing it any other way is asking for trouble.

 

For searching, simply searching for G41/G42 is much easier and makes more sense.

Although, there is simply no need to do this for the purposes of setup.

 

 

FYI, CRC is the proper acronym for Cutter Radius Compensation on a Fanuc CNC Control.

  • Like 2
Link to comment
Share on other sites

Isn't the CRC number output in the tool table? Turn your tool_info option to 3, and you'll get a tool table up top, and the same information at the tool change. Seems like the easy--and logical--thing to do.

 

O3000(BATTERY COMPARTMENT STS1696)
(DATE - SEP. 03 2014)
(REVISION - )
(CYCLE TIME - )

( T13 | 0.25 FLAT ENDMILL | H13 | XY STOCK TO LEAVE - .005 | Z STOCK TO LEAVE - 0. )

G0 G17 G40 G80 G90
G91 G28 Z0
G30 X0 Y0
T13 M6
M192 A-112.5 B90.
( 0.25 FLAT ENDMILL | TOOL - 13 | DIA. OFF. - 13 | LEN. - 13 | TOOL DIA. - .25 )
N13 ( 0.25 FLAT ENDMILL )
G0 G40 G80 G90 G54 P2 S10000 M3
G43 H13 X.5745 Y-.3879 Z8. M8
M7
Z.5834
G1 Z.4584 F80.
M98 P3001
G90 Z.4334
M98 P3001
G90 Z.4084
M98 P3001
G90 Z.3834
M98 P3001
G0 G90 Z8.
M9
M9
M5
G91 G28 Z0.
G30 X0. Y0.
M30

  • Like 1
Link to comment
Share on other sites

Hi MTB,

   Thank you for your recomendation, I guess each company does different way and the way they demand things differently as of their own unique.

Sorry, You are incorrect that it is best to output the D on the very first move after the safety line.

What you are trying to do is dangerous and should be avoided at all costs.

You are actually creating a problem when one doesn't exist.

 

In my 30 years of CNC work I have yet to see a company doing this.

 

Your setup documentation should be telling setup/operators what the CRC register is.

 

As I previously stated,

The best practice is to call CRC and output the comp register each time CRC is called.

Doing it any other way is asking for trouble.

 

For searching, simply searching for G41/G42 is much easier and makes more sense.

Although, there is simply no need to do this for the purposes of setup.

 

 

FYI, CRC is the proper acronym for Cutter Radius Compensation on a Fanuc CNC Control.

Link to comment
Share on other sites

Ahhh,

  You just reminded me something I should you borrow and STEAL from TOOL_INTO at PTOOLTABLE.  Thank you.  You just gave me a great idea.

Isn't the CRC number output in the tool table? Turn your tool_info option to 3, and you'll get a tool table up top, and the same information at the tool change. Seems like the easy--and logical--thing to do.

 

O3000(BATTERY COMPARTMENT STS1696)
(DATE - SEP. 03 2014)
(REVISION - )
(CYCLE TIME - )

( T13 | 0.25 FLAT ENDMILL | H13 | XY STOCK TO LEAVE - .005 | Z STOCK TO LEAVE - 0. )

G0 G17 G40 G80 G90
G91 G28 Z0
G30 X0 Y0
T13 M6
M192 A-112.5 B90.
( 0.25 FLAT ENDMILL | TOOL - 13 | DIA. OFF. - 13 | LEN. - 13 | TOOL DIA. - .25 )
N13 ( 0.25 FLAT ENDMILL )
G0 G40 G80 G90 G54 P2 S10000 M3
G43 H13 X.5745 Y-.3879 Z8. M8
M7
Z.5834
G1 Z.4584 F80.
M98 P3001
G90 Z.4334
M98 P3001
G90 Z.4084
M98 P3001
G90 Z.3834
M98 P3001
G0 G90 Z8.
M9
M9
M5
G91 G28 Z0.
G30 X0. Y0.
M30

Link to comment
Share on other sites
  • 4 weeks later...

Sorry, You are incorrect that it is best to output the D on the very first move after the safety line.

What you are trying to do is dangerous and should be avoided at all costs.

You are actually creating a problem when one doesn't exist.

 

In my 30 years of CNC work I have yet to see a company doing this.

 

Your setup documentation should be telling setup/operators what the CRC register is.

 

As I previously stated,

The best practice is to call CRC and output the comp register each time CRC is called.

Doing it any other way is asking for trouble.

 

For searching, simply searching for G41/G42 is much easier and makes more sense.

Although, there is simply no need to do this for the purposes of setup.

 

 

FYI, CRC is the proper acronym for Cutter Radius Compensation on a Fanuc CNC Control.

Sorry guys...I'm doing what PCRobotic wants to achieve for Fanuc Controllers for like 20y...no problems.

It's very easy for operators to modify the D H values when they set-up the parts since there are only in one line. Very easy to find and change values.

I also have in the previous line my RPM and feed, and they loveit like that.

"

S1200F45.M03

G43H1D1Z1.M08

"

Cheers

Link to comment
Share on other sites

Sorry guys...I'm doing what PCRobotic wants to achieve for Fanuc Controllers for like 20y...no problems.

It's very easy for operators to modify the D H values when they set-up the parts since there are only in one line. Very easy to find and change values.

I also have in the previous line my RPM and feed, and they loveit like that.

"

S1200F45.M03

G43H1D1Z1.M08

"

Cheers

Thank you Grievous74, at least someone is on myside.

Link to comment
Share on other sites

That's how my posts look like

 

pccdia          #Cutter Compensation   
      #Force Dxx#      
      if prv_cc_pos$ <> cc_pos$ & cc_pos$ & mi8$=1, prv_tloffno$ = c9k
      sccomp
      if (mr1$ = 1) & (comp_type = 1), scorn
      if cc_pos$ & (use_g43 = 1) & (tloffno$ <> prv_tloffno$), tloffno$

 

ptlngth
      pbld, n$, [if use_g43=1,"G43", *tlngno$, pcutter_comp_new], pfzout, *scoolant, e$

 

pcutter_comp_new        
        if (tool_typ$ >= 9) & (tool_typ$ <> 12) ,  *tloffno$,
        !tloffno$,

 

Don't bother about "use_g43" var, beeing a Sinumerik hardcore fan and user, I tried to emulate on fanuc same behaviour, so I change my tool change macros on all machines so they will load at tool change the tool offs by default with H_tool# and D_tool# so in my codes there are no G43 H or D, just codes, so if the guys r changing tool # they do it in one spot, and that's it, easy and simple. You can still use different HD values but if they want they must add them.

Line in tool change macro:

G91 G0 G43 G#3 Z-[#[10000+#4120]+#[11000+#4120]] H#4120 D#4120

Link to comment
Share on other sites

Sorry guys...I'm doing what PCRobotic wants to achieve for Fanuc Controllers for like 20y...no problems.

It's very easy for operators to modify the D H values when they set-up the parts since there are only in one line. Very easy to find and change values.

I also have in the previous line my RPM and feed, and they loveit like that.

"

S1200F45.M03

G43H1D1Z1.M08

"

Cheers

 

 

No need to say sorry just not something we I have needed or seen done in the different shops I have worked with and at. Glad you finally pointed him the right direction, be nice if he said it worked out for him.

Link to comment
Share on other sites

 

"

S1200F45.M03

G43H1D1Z1.M08

"

I always thought a F value had to be on a line with a G1?

We run control comp, and output the value at the start of the tool on a dedicated G10 line.

This loads the tool diameter to the offset table automatically, and if you have to alter the comp value, you can find it at the start of the tool, easy peasy.

Link to comment
Share on other sites
Guest MTB Technical Services

I always thought a F value had to be on a line with a G1?

We run control comp, and output the value at the start of the tool on a dedicated G10 line.

This loads the tool diameter to the offset table automatically, and if you have to alter the comp value, you can find it at the start of the tool, easy peasy.

 

A Feed value only needs to be on a line with an interpolation G-Code if there isn't another feed value modal.

 

That said, adding it to the Spindle output is just plain silly. :laughing:

It serves absolutely no meaningful purpose except to create a modal value.

 

The same with adding the D register to the Tool Length Comp line.

All it does is make the current value in that register modal.

 

If you have multiple features using CRC, forget about adjusting the value in the register while the machine is running.

You can change it but you're stuck with the modal value that was loaded with the Tool Length Offset.

You have to explicitly call the CRC register to get the current value in that register.

 

Tool Length Comp and CRC G-Codes should, as a standard practice, always be output with the required register.

Will it work with both H & D registers on the Tool Length Offset line?

Sure. It's just a poor practice.

You should never depend on modal values for CRC.

 

Different strokes. :smoke:

  • Like 1
Link to comment
Share on other sites

A Feed value only needs to be on a line with an interpolation G-Code if there isn't another feed value modal.

 

That said, adding it to the Spindle output is just plain silly. :laughing:

It serves absolutely no meaningful purpose except to create a modal value.

 

The same with adding the D register to the Tool Length Comp line.

All it does is make the current value in that register modal.

 

If you have multiple features using CRC, forget about adjusting the value in the register while the machine is running.

You can change it but you're stuck with the modal value that was loaded with the Tool Length Offset.

You have to explicitly call the CRC register to get the current value in that register.

 

Tool Length Comp and CRC G-Codes should, as a standard practice, always be output with the required register.

Will it work with both H & D registers on the Tool Length Offset line?

Sure. It's just a poor practice.

You should never depend on modal values for CRC.

 

Different strokes. :smoke:

"A Feed value only needs to be on a line with an interpolation G-Code"....lol...Where in the Fanuc (or any other controller) manual you read that?

There are 2 things to that:

1-st If you r using for a tool just a single feed value then that's the way to go:

     "S2000F10.M3"...why?...easy for everyone to see and change the cutting parameters...and u cannot beat that.

2-nd If u r using different feed values for a cutter, I always have those values in the beginning of the tool change for the same reason.

Me,operator or whoever, can easily see/adjust the cutting parameters for that tool

    Ex:  #510=200.(FEED FOR ..)

          #511=80.(FEED FOR ..)

         S2000F#510M03

……….....and again u cannot beat that.

 

“If you have multiple features using CRC, forget about adjusting the value in the register while the machine is running.”… ..do you wanna do that?ok.. So..you run the cutter then let’s say you stop and check a feature what you just machine with that cutter then you change the tool offs and then just hit start again and continue? That’s the scenario?(that if  you don’t wanna go back and re-machine the features already finished with the old value) Ok..if u do that, no one stop you, when you realize that you need to change that value, changeit in tool register, go in MDI and run just the D value again…then continue…same thing, but again ..you don’t need to have the D declared all over the program. Operators do that a lot, especially with feed val…in the middle of a tool if they wanna change the feed and they don’t want to reset, they just go in single block, stop, go MDI, new feed value, back to machining, simple.

If I have different D values (rarely) for the same tool (I preffer different aproach), same thing like with feed, I put their value in some #.

Sorry bud, but who gives you the right to say what’s standard practice or poor practice btw. As I pointed above for every example I give you an answer, and a better solution. Just getting stuck in one only way of doing things on bashing other ones way of doing things, if they r different then yours, don’t make u right. But don't worry there is allways room for improvement, and all our life we learning something...that if we want...

Cheers

Link to comment
Share on other sites

Although its true either method works, and I can see how having the information once at the beginning of each tool helps operators change code at the machine, I can't conceive of wanting to make it easier for the operators to change things. In the shop I work at, if machine operators start changing things at the machine its going to be a very bad day for the machine operators.. then again for all our jobs that are deemed 'repeat work' we have proven programs that are optimized to run as efficiently as possible.

 

Even if I did want operators to be able to tweak things in order to optimize the program it wouldn't make any sense to me to have them mess with the NC code at the machine, that leaves a Mastercam file that is out of sync with the current NC code so if there is a new revision or something all of those optimisations are lost if a new program is posted out, I prefer to have my Mastercam file be the only place where tweaks of the program happen to maintain the ability to re-post to different machines or upgrade to new revisions as necessary.

 

I have worked in places where operators make code changes and in the short term it was easier to have changes made 'on the fly' but long term it always ended up a nightmare with different people running the same parts with all different speeds and feeds and with differing levels of success depending on the operator making the changes.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.

Join us!

eMastercam - your online source for all things Mastercam.

Together, we are the strongest Mastercam community on the web with over 56,000 members, and our online store offers a wide selection of training materials for all applications and skill levels.

Follow us

×
×
  • Create New...