Automatic Alignment Cycle


Results 1 to 7 of 7

Thread: Automatic Alignment Cycle

  1. #1
    Member
    Join Date
    Apr 2013
    Location
    United States
    Posts
    16
    Downloads
    0
    Uploads
    0

    Default Automatic Alignment Cycle

    Hi all,

    I have a rather unique problem that I'm trying to solve. I guess first, let me describe my process. We use Haas VF2's with diamond core drills to core out all different types of glass. We scribe our parts on the glass first, along with crosshairs at (4.625, 0) and (-4.625, 0). I have cameras mounted on the spindles with a live feed going out to monitors on top of the machines, which run through a digital crosshair generator to produce a crosshair in the center of the screen. My operators, after mounting the work to the table, turn on the monitors and line up the righthand laser engraved crosshair with the digital crosshair. Then, they hand jog over to the lefthand crosshair. After manually fixing any rotation error (the work is mounted on manual rotary tables), they jog back to the righthand crosshair to make sure that both crosshairs are perfectly aligned on the X-axis. Then, they have to copy down the locations of the crosshairs, do some math, and enter the center of the plate as their G55 offset.

    I know how I can do the math and set the G55 offset programmatically using macros. I'm trying to semi-automate the rest of the process. I can jog them to the approximate righthand crosshair position. So here are my questions:

    1) Is there a way I can pause, but not stop, the program and allow them to hand jog with the program paused at a certain line?
    2) This one I'm almost certain isn't possible, but I might as well ask. My dream is that they would be able to run a subroutine once they are directly above a crosshair, and I could automatically gather the machine position and pass that to a variable (or multiple variables, one each for X and Y). Has anyone ever tried anything like this? Thanks for any input.

    Similar Threads:


  2. #2
    Member
    Join Date
    Mar 2017
    Location
    United States
    Posts
    314
    Downloads
    0
    Uploads
    0

    Default Re: Automatic Alignment Cycle

    Does the scribing and stuff with the rotary relate to some optic centerline buisness? Or just material nesting/ usage?

    1 Pausing wont help in my experience on a Hass because. For me at least. Going from memory to Jog rewinds the program. Maybe its a parameter.

    2 absolutely



  3. #3
    Registered Fletch_CNC's Avatar
    Join Date
    Jun 2015
    Location
    United States
    Posts
    119
    Downloads
    0
    Uploads
    0

    Default Re: Automatic Alignment Cycle

    Quote Originally Posted by sullivnc View Post
    Hi all,

    1) Is there a way I can pause, but not stop, the program and allow them to hand jog with the program paused at a certain line?
    2) This one I'm almost certain isn't possible, but I might as well ask. My dream is that they would be able to run a subroutine once they are directly above a crosshair, and I could automatically gather the machine position and pass that to a variable (or multiple variables, one each for X and Y). Has anyone ever tried anything like this? Thanks for any input.
    1) You can't jog, and have the program pick back up. You can do RUN STOP JOG CONTINUE, but I believe that will return to the previous position. You could get tricky with macros, and create a program that runs different sections each time you press cycle start. That is, for the first run, you would set #100= 1, and use logic to run the first section. Then, the second time you run, the program sees that #100=1, and jumps to section 2, etc, and then the final section has to reset #100= 0. All this depends on the operators not trying to restart the program, return to a previous step, or whatever.

    2) There are macro values for current machine and work offset positions, so yes, you can save those to global macros. Just remember to block lookahead before you want to save them, so you don't get the wrong values. Look in the manual for the addresses.

    ________________________________________________
    My blog: http://www.fletch1.com


  4. #4
    Registered
    Join Date
    May 2017
    Posts
    4
    Downloads
    0
    Uploads
    0

    Default Re: Automatic Alignment Cycle

    Check this out:

    the video explains how to pause, jog and then continue running your program



  5. #5
    Member
    Join Date
    Apr 2013
    Location
    United States
    Posts
    16
    Downloads
    0
    Uploads
    0

    Default Re: Automatic Alignment Cycle

    Hey guys,

    I've been trying to get this done forever, and was finally able to get a program working! I cut our alignment time from over 5 minutes to just over 1 minute. I just wanted to share it and ask a few questions. The first M109 is really the only place I need operator input, the other ones are just to display a message. Is there a way to display a message without requiring user input? I'd rather it just continue to the next line, which is an M00, and display the instructions for what to do while the program is stopped. Actually, I guess that's my only questions. Let me know what you think, I'm always open to suggested improvements.

    %
    O00100 (ALIGN SCRIBED PLATE)

    #150= 0 (NOMINAL TOTAL DISTANCE BETWEEN CROSSHAIRS)
    #151= 0 (NOMINAL DISTANCE FROM CROSSHAIR TO CENTER)
    #152= 0 (MACHINE X POSITION OF RIGHT CROSSHAIR)
    #153= 0 (MACHINE Y POSITION OF RIGHT CROSSHAIR)
    #154= 0 (MACHINE X POSITION OF LEFT CROSSHAIR)
    #155= 0 (MACHINE Y POSITION OF LEFT CROSSHAIR)
    #156= 0 (HALF DELTA Y RIGHT CROSSHAIR TO LEFT CROSSHAIR)
    #157= 0 (DELTA Y LEFT CROSSHAIR TO RIGHT CROSSHAIR)



    (***0***)

    G00 G17 G20 G40 G59 G80 G90 (SAFETY BLOCK)

    G103 P1

    N0 #500= 0 (RESETS VARIABLE 500)

    N1 M109 P500 (PLATE SIZE A=10 B=8.2 C=7.25 D=6.5 E=5)

    IF [ #500 EQ 0 ] GOTO1 (WAIT FOR BUTTON PRESS)

    IF [ #500 EQ 65. ] #150= 9.25 (SET 10 IN PLATE)

    IF [ #500 EQ 66. ] #150= 7.45 (SET 8.2 IN PLATE)

    IF [ #500 EQ 67. ] #150= 6.5 (SET 7.25 IN PLATE)

    IF [ #500 EQ 68. ] #150= 5.75 (SET 6.5 IN PLATE)

    IF [ #500 EQ 69. ] #150= 4.25 (SET 5 IN PLATE)

    IF [ #500 GT 69. ] GOTO0 (INVALID SELECTION)

    #151= #150 / 2 (SET DISTANCE FROM CROSSHAIR TO CENTER)



    (***1***)

    X#151 Y0. Z0. (MOVES CAMERA TO FOCUS HEIGHT & APPROX RIGHT XHAIR POSITION)

    G103 P1 (LIMITS LOOK-AHEAD TO ONE BLOCK)

    N2 #501= 0 (RESETS VARIABLE 501)

    N3 M109 P501 (JOG TO ALIGN XHAIR PRESS Y TO CONTINUE)

    IF [ #501 EQ 0 ] GOTO3 (WAIT FOR BUTTON PRESS)

    IF [ #501 EQ 89. ] GOTO4 (Y BUTTON PRESSED)

    IF [ #501 NE 89. ] GOTO2 (SOME OTHER BUTTON PRESSED)

    N4 M00 (IF Y PRESSED, STOPS PROGRAM)



    (***2***)

    G00 G17 G20 G40 G59 G80 G90 (SAFETY BLOCK)

    G103 P1 (LIMITS LOOK-AHEAD TO ONE BLOCK)

    #152= #5021 (VARIABLE 152 SET TO MACHINE X POSITION OF RIGHT CROSSHAIR)

    #153= #5022 (VARIABLE 153 SET TO MACHINE Y POSITION OF RIGHT CROSSHAIR)

    N5 #502= 0 (RESETS VARIABLE 502)

    G91 X - #150 (MOVE TO WHERE LEFT CROSSHAIR SHOULD BE)

    N6 M109 P502 (JOG TO ALIGN XHAIR PRESS Y TO CONTINUE)

    IF [ #502 EQ 0 ] GOTO6 (WAIT FOR BUTTON PRESS)

    IF [ #502 EQ 89. ] GOTO7 (Y BUTTON PRESSED)

    IF [ #502 NE 89. ] GOTO5 (SOME OTHER BUTTON PRESSED)

    N7 M00 (IF Y PRESSED, STOPS PROGRAM)



    (***3***)

    G00 G17 G20 G40 G59 G80 G90 (SAFETY BLOCK)

    G103 P1 (LIMITS LOOK-AHEAD TO ONE BLOCK)

    #154= #5021 (VARIABLE 154 SET TO MACHINE X POSITION OF LEFT CROSSHAIR)

    #155= #5022 (VARIABLE 155 SET TO MACHINE Y POSITION OF LEFT CROSSHAIR)

    #156= [ 0.5 * [ #153 - #155 ] ] (FINDS HALF THE DELTA Y FROM RIGHT TO LEFT)

    G91 Y#156

    N8 #503= 0 (RESETS VARIABLE 503)

    N9 M109 P503 (ROT/JOG TO ALIGN XHAIR PRESS Y TO CONT)

    IF [ #503 EQ 0 ] GOTO9 (WAIT FOR BUTTON PRESS)

    IF [ #503 EQ 89. ] GOTO10 (Y BUTTON PRESSED)

    IF [ #503 NE 89. ] GOTO8 (SOME OTHER BUTTON PRESSED)

    N10 M00 (IF Y PRESSED, STOPS PROGRAM)



    (***4***)

    G00 G17 G20 G40 G59 G80 G90 (SAFETY BLOCK)

    G103 P1 (LIMITS LOOK-AHEAD TO ONE BLOCK)

    #154= #5021 (VARIABLE 154 SET TO MACHINE X POSITION OF LEFT CROSSHAIR)

    #155= #5022 (VARIABLE 155 SET TO MACHINE Y POSITION OF LEFT CROSSHAIR)

    G91 X#150 (MOVE TO WHERE RIGHT CROSSHAIR SHOULD BE)

    N11 #504= 0 (RESETS VARIABLE 504)

    N12 M109 P504 (JOG TO ALIGN XHAIR PRESS Y TO CONTINUE)

    IF [ #504 EQ 0 ] GOTO12 (WAIT FOR BUTTON PRESS)

    IF [ #504 EQ 89. ] GOTO13 (Y BUTTON PRESSED)

    IF [ #504 NE 89. ] GOTO11 (SOME OTHER BUTTON PRESSED)

    N13 M00 (IF Y PRESSED, STOPS PROGRAM)



    (***5***)

    G00 G17 G20 G40 G59 G80 G90 (SAFETY BLOCK)

    G103 P1 (LIMITS LOOK-AHEAD TO ONE BLOCK)

    #152= #5021 (VARIABLE 152 SET TO MACHINE X POSITION OF RIGHT CROSSHAIR)

    #153= #5022 (VARIABLE 153 SET TO MACHINE Y POSITION OF RIGHT CROSSHAIR)

    #157= #153 - #155 (FINDS THE DELTA Y FROM LEFT TO RIGHT)

    IF [ #157 NE 0 ] GOTO5 (RUN THROUGH THE ALIGNMENT AGAIN)

    IF [ #157 EQ 0 ] GOTO99 (PLATE IS ALIGNED)

    N99 (IF DELTA Y IS 0, THEN THE PLATE IS ALIGNED. SET THE OFFSETS & STOP)

    M98 P102 (READ CAMERA OFFSETS)

    #5241= [ 0.5 * [ #154 - #152 ] ] + #152 + #131

    #5242= #153 + #132

    M30 (END OF PROGRAM)

    %




  6. #6
    Member
    Join Date
    Apr 2013
    Location
    United States
    Posts
    16
    Downloads
    0
    Uploads
    0

    Default Re: Automatic Alignment Cycle

    UPDATE: Realized the M00 would overwrite my message anyways. Settled on training my operators to press WRITE/ENTER, which keeps the variable set at 0.

    %
    O00100 (ALIGN SCRIBED PLATE, CORING & MILLING)

    #150= 0 (NOMINAL TOTAL DISTANCE BETWEEN CROSSHAIRS)
    #151= 0 (NOMINAL DISTANCE FROM CROSSHAIR TO CENTER)
    #152= 0 (MACHINE X POSITION OF RIGHT CROSSHAIR)
    #153= 0 (MACHINE Y POSITION OF RIGHT CROSSHAIR)
    #154= 0 (MACHINE X POSITION OF LEFT CROSSHAIR)
    #155= 0 (MACHINE Y POSITION OF LEFT CROSSHAIR)
    #156= 0 (HALF DELTA Y RIGHT CROSSHAIR TO LEFT CROSSHAIR)
    #157= 0 (DELTA Y LEFT CROSSHAIR TO RIGHT CROSSHAIR)

    (***0***)

    G00 G17 G20 G40 G59 G80 G90 (SAFETY BLOCK)

    G103 P1

    N0 #500= 0 (RESETS VARIABLE 500)

    N1 M109 P500 (PLATE SIZE A=10 B=8.2 C=7.25 D=6.5 E=5)

    IF [ #500 EQ 0 ] GOTO1 (WAIT FOR BUTTON PRESS)

    IF [ #500 EQ 65. ] #150= 9.25 (SET 10 IN PLATE)

    IF [ #500 EQ 66. ] #150= 7.45 (SET 8.2 IN PLATE)

    IF [ #500 EQ 67. ] #150= 6.5 (SET 7.25 IN PLATE)

    IF [ #500 EQ 68. ] #150= 5.75 (SET 6.5 IN PLATE)

    IF [ #500 EQ 69. ] #150= 4.25 (SET 5 IN PLATE)

    IF [ #500 GT 69. ] GOTO0 (INVALID SELECTION)

    #151= #150 / 2 (SET DISTANCE FROM CROSSHAIR TO CENTER)

    (***1***)

    X#151 Y0. Z0. (MOVES CAMERA TO FOCUS HEIGHT & APPROX RIGHT XHAIR POSITION)

    G103 P1 (LIMITS LOOK-AHEAD TO ONE BLOCK)

    N2 #501= 0 (RESETS VARIABLE 501)

    N3 M109 P501 (JOG X & Y TO ALIGN CROSSHAIR)

    N4 M00 (IF WRITE/ENTER PRESSED, STOPS PROGRAM)

    (***2***)

    G00 G17 G20 G40 G59 G80 G90 (SAFETY BLOCK)

    G103 P1 (LIMITS LOOK-AHEAD TO ONE BLOCK)

    #152= #5021 (VARIABLE 152 SET TO MACHINE X POSITION OF RIGHT CROSSHAIR)

    #153= #5022 (VARIABLE 153 SET TO MACHINE Y POSITION OF RIGHT CROSSHAIR)

    N5 #502= 0 (RESETS VARIABLE 502)

    G91 X - #150 (MOVE TO WHERE LEFT CROSSHAIR SHOULD BE)

    N6 M109 P502 (JOG X & Y TO ALIGN CROSSHAIR)

    N7 M00 (IF WRITE/ENTER PRESSED, STOPS PROGRAM)

    (***3***)

    G00 G17 G20 G40 G59 G80 G90 (SAFETY BLOCK)

    G103 P1 (LIMITS LOOK-AHEAD TO ONE BLOCK)

    #154= #5021 (VARIABLE 154 SET TO MACHINE X POSITION OF LEFT CROSSHAIR)

    #155= #5022 (VARIABLE 155 SET TO MACHINE Y POSITION OF LEFT CROSSHAIR)

    #156= [ 0.5 * [ #153 - #155 ] ] (FINDS HALF THE DELTA Y FROM RIGHT TO LEFT)

    G91 Y#156

    N8 #503= 0 (RESETS VARIABLE 503)

    N9 M109 P503 (ROTATE THEN JOG X TO ALIGN)

    N10 M00 (IF WRITE/ENTER PRESSED, STOPS PROGRAM)

    (***4***)

    G00 G17 G20 G40 G59 G80 G90 (SAFETY BLOCK)

    G103 P1 (LIMITS LOOK-AHEAD TO ONE BLOCK)

    #154= #5021 (VARIABLE 154 SET TO MACHINE X POSITION OF LEFT CROSSHAIR)

    #155= #5022 (VARIABLE 155 SET TO MACHINE Y POSITION OF LEFT CROSSHAIR)

    G91 X#150 (MOVE TO WHERE RIGHT CROSSHAIR SHOULD BE)

    N11 #504= 0 (RESETS VARIABLE 504)

    N12 M109 P504 (JOG X & Y TO ALIGN CROSSHAIR)

    N13 M00 (IF Y PRESSED, STOPS PROGRAM)

    (***5***)

    G00 G17 G20 G40 G59 G80 G90 (SAFETY BLOCK)

    G103 P1 (LIMITS LOOK-AHEAD TO ONE BLOCK)

    #152= #5021 (VARIABLE 152 SET TO MACHINE X POSITION OF RIGHT CROSSHAIR)

    #153= #5022 (VARIABLE 153 SET TO MACHINE Y POSITION OF RIGHT CROSSHAIR)

    #157= #153 - #155 (FINDS THE DELTA Y FROM LEFT TO RIGHT)

    IF [ #157 NE 0 ] GOTO5 (RUN THROUGH THE ALIGNMENT AGAIN)

    IF [ #157 EQ 0 ] GOTO99 (PLATE IS ALIGNED)

    N99 (IF DELTA Y IS 0, THEN THE PLATE IS ALIGNED. SET THE OFFSETS & STOP)

    M98 P101 (READ CAMERA OFFSETS)

    #5241= [ 0.5 * [ #154 - #152 ] ] + #152 + #131

    #5242= #153 + #132

    M30 (END OF PROGRAM)
    %




  7. #7
    Registered Fletch_CNC's Avatar
    Join Date
    Jun 2015
    Location
    United States
    Posts
    119
    Downloads
    0
    Uploads
    0

    Default Re: Automatic Alignment Cycle

    Displayed messages are often overwritten. You could use M130 (media display), if you have the new control. That can be used to display all kinds of pics, docs, or videos.



    ________________________________________________
    My blog: http://www.fletch1.com


Tags for this Thread

Posting Permissions

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


About CNCzone.com

    We are the largest and most active discussion forum for manufacturing industry. The site is 100% free to join and use, so join today!

Follow us on


Our Brands

Automatic Alignment Cycle

Automatic Alignment Cycle