Maintaining the Direction of Routs on Mirrored Parts

Here's a discussion of the control code that can prevent a CNC controller from introducing climb cuts where you don't want them when cutting out mirrored parts. December 31, 2012

Our Rover machine reverses the rotation of routing when mirroring a part to right hand stops. As we size around all our end panels and use the router for back dados this causes a climb cut situation that changes cut characteristics drastically. I was hoping to get input on how other people have handled this situation. Is there some programing code I can put in to mirror the drilling but still allow the router to cut counter clockwise with the proper tool compensation? The grooving saw mirrors its start and stop points without changing cut direction. I was hoping to get the router to do the same thing.

I have used several methods to work with this and none seem ideal. One fix is to write both left and right programs. This is time consuming and makes work lists more complicated and parts harder to keep track of. Another method I use is to program the router for best speed for left hand parts and turn down axis override for right hand parts, but this means standing at controller and readjusting for drilling cycle and left hand parts. It also reduces tool life and takes more time. I can cut at 25 meters per minute normally but must reduce that by almost half to get a consistent chip free climb cut. Of course this is not a problem for parts that are balanced panels. I just run them all left handed on both ends of machine. A lot of parts need to be right and left though.

Forum Responses
(CNC Forum)
From contributor V:
Normally what I do is use a JP command so I have two programs within one, that way whenever a mirror origin is pressed it automatically runs the mirror program. It's a bit time consuming to program both left and rights but for me in Mastercam it is fairly easy. Below is how I do it by adding a few lines in the XNC editor
N20 JP (61,0):48 - (this allows a jump when a mirror origin is pressed)
Right hand program
% - (this will not allow the program to go any further )
:48 - (where the program will jump to when mirror origin is pressed)
Left program
Here's a small example of a sawcut file for cutting entry doors

N30 JP (61,0):48
N50 PAN=1 UT=3 XIN=0+PRO YIN=-4P TID=3 YFI=LPY+4P ANL=90 PRF=1.9P VT=8 VF=10 INV=0 USC=0 RES=1 Z=PRK L=G102
N90 PAN=1 UT=3 XIN=.12P+PRO YIN=LPY+4P TID=3 YFI=-4P ANL=270 PRF=1.9P VT=8 VF=10 INV=0 USC=0 RES=1 Z=PRK L=G102
N130 PAN=1 UT=3 XIN=0+PRO YIN=LPY+4P TID=3 YFI=-4P ANL=90 PRF=1.9P VT=8 VF=10 INV=0 USC=0 RES=1 Z=PRK L=G102
N150 XO=LPX YO=0P G0
N170 PAN=1 UT=3 XIN=.12P+PRO YIN=-4P TID=3 YFI=LPY+4P ANL=270 PRF=1.9P VT=8 VF=10 INV=0 USC=0 RES=1 Z=PRK L=G102

From the original questioner:
I was looking for the correct code for the conditional jump. (61, 0) is what I needed. It works great and I should have asked the question a few years ago and would not have needed to do the work-arounds. Do you know if this would have worked on a 481 controller also? That is what was on our old Rover 18.

Also the tech that installed this machine for me said that I could use an unlimited number of jump labels, is that true? The 481 controller allowed only 50. I think it was for the contour area and 50 for optimized drilling. I used those up on some of my larger programs.

From contributor V:
I can't say for sure if that will work on the 481 controller. Do you have the XNC programming guide? I wish I had it when I started on our Rovers.

From contributor T:
Contributor Vís approach is by far the cleanest. You could also copy the program, reverse the start and stop points and cutter comp, and run two programs on the work list with conditional jumps. The NC481 should support jumps as well as the RT480 and XNC, however the NC481 would be the most limited. You can also use Contributor Vís technique with sub-programs which may make it easier for you or at a minimum reduce the amount of code in the main program.

From the original questioner:

Contributor T - that is in effect what I did. I used two subprograms with the PLC conditional jump. I used to write two programs on some of them and use the jumps in the work list, it was a pain. I could not find the code in the manual to make it work. It's all good now. The assisted parameter boxes are wonderful too, I did not have that feature on the CNI481.

From contributor S:
If you have a tool changer, then all you must do is make a tool change to the opposite rotation bit. This can be done with JP (61, 0). Or you can copy the program to another name and change the tool to the opposite rotation tool. Then place the two programs in the worklist and run them accordingly.

From contributor T:
That is a good point also because that is keeps the cutting conditions identical (climb or conventional). If you run opposite hand bits, I highly recommend you run them in an opposite hand holder!

From contributor S:
"That is a good point also because that is keeps the cutting conditions identical."
Thank you. The simple solution is the most elegant.

"If you run opposite hand bits, I highly recommend you run them in an opposite hand holder!" Hopefully, that goes without saying.


By using a combination of these statements, it can be determined which of the four origins is selected because there are four possible combinations:
1. T,T = DX2, LH BIT
2. T,F = DX1, RH BIT
3. F,T = SX2, LH BIT
4. F,F = SX1, RH BIT

From the original questioner:
I had thought of the left hand tool rout, but did not know if I would want to make the tool changes by the thousands every time I ran a part on the right hand stop. I kind of liked (at first) the way this machine automatically parks all axis but now I am thinking it kind of takes a lot of time to go all the way to the other end, even at 100 meters per minute. When using the far right origin it does get the beam totally out of the way but makes it a little harder to load the left side. I think that may be my next target will be how to easily make the y and z park and the x to move to the center of the machine.

From contributor S:
"When using the far right origin, it does get the beam totally out of the way but makes it a little harder to load the left side." I don't understand what you mean. If you run a program in the "mirror" field against the far right stop, then press the "straight" far left button, the head will park at the far right end of the machine. In the way there's not any lost transit time. If you are running the same program thousands of times, then obviously you should create a new program as Contributor V suggested. I think that works if you place the two programs in the worklist the JP (61,5) and JP (61,0) statements to ensure that the programs are run in the correct field.

From contributor V:
I think I know what the Original Questioner means. If you pendulum machine the head parks on the far left side for the first right hand pc and parks to the far left for the left hand pc, then when you go to the second right hand pc the machine parks to the far right and is in the way a bit when loading full sheets. I'm lucky both the Rover B and Rover A I run are 21foot machines so I always park in the middle and leaves lots of room to load.

From contributor T:
The park position in any axis can be changed in the Datimac.

From contributor S:
"A climb cut situation that changes cut characteristics drastically." Please elaborate. I have another suggestion depending on what you mean by that.

From the original questioner:
While cutting mostly melamine coated pb with compression I usually have to slow the feed way down to get the edge quality I want if in a climb cut situation. This has always given me poor tool life.

From contributor S:
I searched my notes and I found that there are some changes that can be made in the origins table. Under the origin 4 column - mirror, change 1 to 0, change transferred X from 0 to 1. I would not do that except under the advice of Biesse!

From contributor V:
Our Rover A flat table is set up like that for the right hand origin. The machine does cut the same way on both origins but it does not cut a mirror image of the left hand origin, it cuts the same and makes the top left hand of the sheet the 0,0 spot on either origin. Maybe if you just used the mirror or the transferred in x separately but not together it might work.