585,763 active members*
4,408 visitors online*
Register for free
Login
Results 1 to 18 of 18
  1. #1
    Join Date
    Jan 2008
    Posts
    19

    Incremental Datum Shifting

    Hi

    Apologies in advance if my question has already been discussed in another thread.

    I use mostly Heidenhain and all the programs have individual Datum Shifts in them. They very often have INCREMENTAL DATUM SHIFTS as well. These are contained within labels to allow reading back and forth. This system works very well for what we want.

    We have a couple of Haas VF3 and use one of the 26 x available work co-ordinate areas to store the Datums. Currently, if I want another datum in the program I use another area etc.

    My question is:

    Is there a simple way to use the same procedure as the Heidenhain, ie Incremental Datum Shift, within my programs without having to use one of the 26 x co-ordinates? I will still want to swap around and read these values as and when.

    I want to be able to read my main datums then incremental values several times within the job.


    Thanks

  2. #2
    Join Date
    May 2004
    Posts
    4519
    Do you have a Haas mill manual?

  3. #3
    Join Date
    Nov 2006
    Posts
    490
    Using G52 might do the trick. There have been some threads on it before, and the manual has some info too

  4. #4
    Join Date
    Jan 2008
    Posts
    19
    Quote Originally Posted by Ydna View Post
    Using G52 might do the trick. There have been some threads on it before, and the manual has some info too
    I have the manual available and any ideas/examples concerning G52 would be appreciated.

    Thanks for any help

  5. #5
    Join Date
    Apr 2005
    Posts
    713
    Quote Originally Posted by 99bluemoon View Post
    I have the manual available and any ideas/examples concerning G52 would be appreciated.

    Thanks for any help
    Do a search. There are tons of examples in earlier threads.

  6. #6
    Join Date
    May 2004
    Posts
    4519
    On page 163 of my manual it says:

    "G10 Set Offsets (Group 00)
    G10 allows the programmer to set offsets within the program. Using G10
    replaces the manual entry of offsets (i.e. Tool length and diameter, and work
    coordinate offsets)."

    I think this is what you are wanting.

  7. #7
    Join Date
    Jan 2008
    Posts
    19
    Quote Originally Posted by Matt@RFR View Post
    Do a search. There are tons of examples in earlier threads.
    Thanks.

    I have looked at a couple of examples and ideas and will try at work.


    My program will basically be:

    o00010
    .
    .
    .
    G54 (main datum value in offset page)
    M98 P200 (milling info)
    .
    .
    I WANT TO MOVE INCREMENTAL ON X BY SAY -100mm
    M98 P201
    .
    .
    MOVE AGAIN SAY INCRMENTAL -85mm
    M98 P201
    .
    .

    (moving job across bed)

    G54
    .
    .
    etc etc


    I hope you get what I want. It may be bleedin obvious but I got to ask!

  8. #8
    Join Date
    May 2004
    Posts
    4519
    Quote Originally Posted by 99bluemoon View Post
    Thanks.

    I have looked at a couple of examples and ideas and will try at work.


    My program will basically be:

    o00010
    .
    .
    .
    G54 (main datum value in offset page)
    M98 P200 (milling info)
    .
    .
    I WANT TO MOVE INCREMENTAL ON X BY SAY -100mm
    M98 P201
    .
    .
    MOVE AGAIN SAY INCRMENTAL -85mm
    M98 P201
    .
    .

    (moving job across bed)

    G54
    .
    .
    etc etc


    I hope you get what I want. It may be bleedin obvious but I got to ask!
    From the Haas manual:

    G10 L2 P1 G91 X6.0 {Move coordinate G54 6.0 to the right}

    In your example would become:

    o00010
    .
    G54 (main datum value in offset page)
    M98 P200 (milling info)
    .
    I WANT TO MOVE INCREMENTAL ON X BY SAY -100mm
    G10 L2 P1 G91 X-100
    G90
    M98 P201
    .
    MOVE AGAIN SAY INCRMENTAL -85mm
    G10 L2 P1 G91 X-85
    G90
    M98 P201
    .
    (moving job across bed)
    G54
    .
    etc etc

  9. #9
    Join Date
    Jul 2005
    Posts
    12177
    txcncman's is probably the only way you can do it incrementally but he missed an important point. At the end of the program you need an additional G10 command that moves the G54 X value back to the beginning.

    If you move X-100. then X-85. at the end you have to cancel these by moving X185. at the end of the program.

    I prefer to do this sort of thing using G52. The first move would be G52 X100. the second G52 X185. then to cancel these you need G52 X0.
    An open mind is a virtue...so long as all the common sense has not leaked out.

  10. #10
    Join Date
    May 2004
    Posts
    4519
    That is correct. I overlooked this point.

  11. #11
    Join Date
    Jan 2008
    Posts
    19
    Quote Originally Posted by Geof View Post
    txcncman's is probably the only way you can do it incrementally but he missed an important point. At the end of the program you need an additional G10 command that moves the G54 X value back to the beginning.

    If you move X-100. then X-85. at the end you have to cancel these by moving X185. at the end of the program.

    I prefer to do this sort of thing using G52. The first move would be G52 X100. the second G52 X185. then to cancel these you need G52 X0.
    Thanks.

    I have the book at home with me and basically figured this out.However, after reading the G10 commands at various points of the main program, will just entering G54 at any point just make that my current datum from thereon?

  12. #12
    Join Date
    May 2004
    Posts
    4519
    Yes. G54 is modal.

  13. #13
    Join Date
    Jan 2008
    Posts
    19
    Quote Originally Posted by Geof View Post
    txcncman's is probably the only way you can do it incrementally but he missed an important point. At the end of the program you need an additional G10 command that moves the G54 X value back to the beginning.

    If you move X-100. then X-85. at the end you have to cancel these by moving X185. at the end of the program.

    I prefer to do this sort of thing using G52. The first move would be G52 X100. the second G52 X185. then to cancel these you need G52 X0.
    It gave the G10 a go last night and indeed it does work, to a point.

    My main objective was to be able to go back at any time,if required,to read my main datum coordinates contained within G54. Even after doing a G10 and moving incremental say 100mm, I wanted to be able to read G54 again.

    What I did find was that when using the program for the first time, G54 was read ok. When a G10 came up to move incremental 100mm, I had to command G54 again right away to make it active. All the other G10 moves were done this way.

    Geof was right in saying that all these G10 moves had to be replaced, to put it, at the end of the program.

    I thought that the G10 would immediately read the information, without actually changing the main G54 in the offsets. I assumed I could just call G54 and find my way back.

    Obviously, If I have problems machining and have to reset before completing the program, I will have an issue. Am I correct?

    O0001
    .
    .
    G54
    .
    .
    G10 L2 P1 G91 X-100. (move 100mm to the left)
    G54 (this reads above)
    M98 P7001 (sub pgm)
    .
    .
    G10 L2 P1 G91 X-55. (move 55mm to the left)
    G54
    M98 P7002
    .
    .
    G10 L2 P1 G91 X155. (puts the G54 back to original values)
    G54
    .
    .
    M30

    I can put up with this.

    Geof, how does your suggestion of using G52 compare with the above?

  14. #14
    Join Date
    Jul 2005
    Posts
    12177
    You notice I did write: "probably the only way you can do it incrementally " with reference to G10.

    But using G10 means that the G54 datum is changed and you have to know how much it has changed in order to reverse the changes.

    Incidentally if you stop the program part way through, before you have reversed the changes to G54, you can have real problems if you restart at the beginning.

    With G52 the G54 location is not changed. G52 simply creates a secondary work zero that is referenced from the G54. The machine has a G52 field on the work offsets page and the way it works is the controller adds the values in the G52 field to the G54 values and uses that for the secondary work zero location. Normally the G52 values are all zeroes so the secondary work zero is not moved away from G54.

    The G52 command puts a value into the G52 coordinates and this means the secondary work zero location is moved by this value. I have modified your example to use G52 with extra comments.

    O0001
    .
    .
    G54
    .
    .
    G52 X-100. (the secondary work zero is 100mm to the left)
    (Deleted G54 command, not needed now the one above is modal)
    M98 P7001 (sub pgm)
    .
    .
    G52 X-155. (Second work zero is 155mm to left, see comment at bottom)
    (Delete G54)
    M98 P7002
    .
    .
    G52 X0. (G52 values are now zero so secondary work zero is not moved)
    (Delete G54)
    .
    .
    M30

    COMMENT: As far as I have been able to figure out it is impossible to change the G52 values incrementally, you cannot do X100. then X55. to get X155. you have to do X155.

    But it is easy to get back to using only G54 because all you need is G52 X0.

    Also, provided Setting 33 is on FANUC the value in the G52 register is zeroed by M30 or RESET so if you stop part way through a program and restart at the beginning you have no problems.

    Obviously you can also have Y, Z and A values in the G52 command so you can move the secondary work zero anywhere.

    The secondary work zero created by G52 is referenced from whatever main work zero you have active. It does not have to be G54, all the others G55, etc work the same way.

    Now I have a question for you. Why do you use M98 not M97?

    M98 means you have to have separate programs for all your subprograms. M97 means all the subs can be tacked on at the end of the calling program after the M30. this makes them easier to find and edit and transfer in and out of the machine because they form a single program file.
    An open mind is a virtue...so long as all the common sense has not leaked out.

  15. #15
    Join Date
    Jan 2008
    Posts
    19
    Quote Originally Posted by Geof View Post
    You notice I did write: "probably the only way you can do it incrementally " with reference to G10.

    But using G10 means that the G54 datum is changed and you have to know how much it has changed in order to reverse the changes.

    Incidentally if you stop the program part way through, before you have reversed the changes to G54, you can have real problems if you restart at the beginning.

    With G52 the G54 location is not changed. G52 simply creates a secondary work zero that is referenced from the G54. The machine has a G52 field on the work offsets page and the way it works is the controller adds the values in the G52 field to the G54 values and uses that for the secondary work zero location. Normally the G52 values are all zeroes so the secondary work zero is not moved away from G54.

    The G52 command puts a value into the G52 coordinates and this means the secondary work zero location is moved by this value. I have modified your example to use G52 with extra comments.

    O0001
    .
    .
    G54
    .
    .
    G52 X-100. (the secondary work zero is 100mm to the left)
    (Deleted G54 command, not needed now the one above is modal)
    M98 P7001 (sub pgm)
    .
    .
    G52 X-155. (Second work zero is 155mm to left, see comment at bottom)
    (Delete G54)
    M98 P7002
    .
    .
    G52 X0. (G52 values are now zero so secondary work zero is not moved)
    (Delete G54)
    .
    .
    M30

    COMMENT: As far as I have been able to figure out it is impossible to change the G52 values incrementally, you cannot do X100. then X55. to get X155. you have to do X155.

    But it is easy to get back to using only G54 because all you need is G52 X0.

    Also, provided Setting 33 is on FANUC the value in the G52 register is zeroed by M30 or RESET so if you stop part way through a program and restart at the beginning you have no problems.

    Obviously you can also have Y, Z and A values in the G52 command so you can move the secondary work zero anywhere.

    The secondary work zero created by G52 is referenced from whatever main work zero you have active. It does not have to be G54, all the others G55, etc work the same way.

    Now I have a question for you. Why do you use M98 not M97?

    M98 means you have to have separate programs for all your subprograms. M97 means all the subs can be tacked on at the end of the calling program after the M30. this makes them easier to find and edit and transfer in and out of the machine because they form a single program file.
    The job I have in mind has not yet arrived, possibly at the end of the week. I am in the planning stage and wish to have all options available.

    M97/M98 ?

    The job consists of several different parts, each of which contains profiles that are repeated on each part. It is the position of these profiles that change.

    I think it may be better to have these profiles as seperate programs that can be edited if required.If it was one individual part that contained multiple similar profiles then yes I would use M97 and put the data on that program.

    Thanks for the input. Must dash off to work and will let you know

  16. #16
    Join Date
    Aug 2010
    Posts
    579
    Quote Originally Posted by Geof View Post
    COMMENT: As far as I have been able to figure out it is impossible to change the G52 values incrementally, you cannot do X100. then X55. to get X155. you have to do X155.
    You can use G10 L1 P0 G91 X-55. for an incremental shift of G52, then use the same G52 X0. at the end.
    Thanks,
    Ken Foulks

  17. #17
    Join Date
    Jul 2005
    Posts
    12177
    Thank you Ken. I blew right past the line in the manual that reads:

    P0 G52 References work coordinate L2

    When you know it must be there it is easy to find.

    An open mind is a virtue...so long as all the common sense has not leaked out.

  18. #18
    Join Date
    Jan 2008
    Posts
    19

    Smile

    Thanks Geof & Ken

    The G52 works fine and Kens suggestion makes sense.

    A lot of solutions are indeed found in the manual. I find that sometimes there can be too much information and you can miss important details.Either that, or you left the glasses at home!!!

    It may seem easy to some, but everything is easy when you know how.

Similar Threads

  1. REF SHIFTING
    By rajesh_1355 in forum Fanuc
    Replies: 7
    Last Post: 07-08-2020, 07:51 PM
  2. X Axis shifting during program
    By SBC Cycle in forum Fadal
    Replies: 23
    Last Post: 01-09-2010, 02:22 PM
  3. Work Offsets (Datum shifting)
    By headflow in forum EdgeCam
    Replies: 1
    Last Post: 06-28-2009, 06:16 PM
  4. Shifting the curved end toward one side
    By randyf1965 in forum SheetCam
    Replies: 2
    Last Post: 04-27-2006, 12:51 AM
  5. Shifting rod
    By venomx999 in forum Mechanical Calculations/Engineering Design
    Replies: 2
    Last Post: 11-30-2005, 06:07 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •