What's new
What's new

feed rates for G1 in XY, G1 in Z, and G2/G3 - WinCNC

DanielG

Stainless
Joined
Oct 22, 2014
Location
Maine
I'm doing some programming on a 4'x8' shopsabre running WinCNC. Modelling is in Solidworks, CAM is HSMExpress. In WinCNC as it's set up by default (as I understand it), the feedrate "F" applies separately to G1 in XY, G1 in Z, and G2/G3. So, for example:


code ____________________ actual feed rate
G0 X0 Y0 Z0 _____________ rapid
G1 X10 Y0 F100 __________ 100
G3 X11 Y1 I0 J1 F150 ____ 150
G1 Z-1 F50 ______________ 50
G2 X12 Y2 I1 J0 _________ 150
G1 X15 Y2 _______________ 100


Am I remember my training on g-code (a very long time ago), most controllers would instead feed at:
rapid
100
150
50
50
50

The default WinCNC post is sure acting like it and this is causing problems. It also leads to an annoying situation where running the same G-code two times can give you two different results if, for example, you don't give a feedrate the first time a G1 Z move shows up. I'm not usually a programmer, so I'm not positive that the problem isn't me.

Am I completely wrong here about the way things are supposed to work?
Is there an easy way to get WinCNC to behave normally?
Does anyone have a better WinCNC post?
 
I've never seen a machine remember different feed rates for different g codes. Should be you set F to what you want and it stays there until you change it. That said, the router world is a bit different from the machining world so YMMV.
 
For the sake of clarity, remove all the feeds in the program except the first one that appears after anything but G0. Run the program above the part and see if it doesn't run the whole thing at one speed. While you're at ir, also eliminate the repeat speeds your code seems to have. Meaning for example F150 150 should just be F150. But again, only one feed at the beginning for the whole thing.

Try that and get back to us.
 
For the sake of clarity, remove all the feeds in the program except the first one that appears after anything but G0. Run the program above the part and see if it doesn't run the whole thing at one speed.

I did that on a very similar program. It does keep track of XY and Z feedrates separately.

While you're at ir, also eliminate the repeat speeds your code seems to have. Meaning for example F150 150 should just be F150. But again, only one feed at the beginning for the whole thing.

Sorry, that was supposed to be two columns, but the forum ate the spaces. First column is the g-code, second column is the actual feed rate while doing that line. I edited it to make it clearer.
 
here's what the manual has to say for "F":

Velocity is stored separately for Linear XY, Linear ZW. Arc’s Rapid
and Feed Velocity is stored separately for Linear Moves. Independent velocities are stored based on the XYZW specified in the
line containing the F# command. Velocity is specified in units of
measure per minute.
Example: F60 sets all axes in the feed rate override command
group to a Feed Velocity of 60 (see “vgroup=”).
G1 X F60 sets the X axis and all other axes grouped with X to a
Feed Velocity of 60.
F100 X Y sets the X and Y axes to a Feed Velocity of 100. It also
sets any other axes that are grouped with either axis to a Feed Velocity of 100. For information about axis grouping, see “vgroup=”.
Feed Velocity changes affect all axes in that vgroup.

and for vgroup:

vgroup=<F>###
F is only used for the feed rate command group. It normally locks
the X and Y axes together. It isn’t used on any other vgroup line.
#s are the desired alpha axis labels to group velocity.
Examples:
vgroup=FXY is the special feed rate command group; If the command F300 is given on the command line, it forces the X and Y
axes to use 300 as their feed rate.
vgroup=XY would lock the X and Y axes, so that if the command
G1 X15 F50 is entered, both axes would be set to 50. Otherwise,
Y would remain at whatever feed rate it had previously been set to.
Other than the X and Y axes, each axis should have its own
vgroup; i.e. vgroup=Z.
 
This is interesting...... Do other controls keep a separate F word register or variable for differing move types?
Generally you are always changing rates so I've never played with it.
Something new every day to learn.
In most posts you can force a F on every line, you just loose some storage room or bandwidth and a very tiny bit of processing time.
Spaces are also optional in standard G if these are considerations. (and sometimes it is)
Bob
 
Wow... without getting my head completely around this, (It's too mind blowing for that.) it seems like the feed rates are modal for whatever "vgroup" they've been set for. So if you had a set of feed rates you wanted to use, like the same for XY and something a little different for Z, and something else for your arcs, you could set them once the first time they come around and delete all those that follow.

I'm hoping this control doesn't need say the X and Y axis to have the same feed rate in order to cut at a 45 degree angle. That would be absurd. That or too archaic to be of any use in the real world.

If you have the ability to switch back and forth between incremental and absolute programming, use some no movement incremental moves at the head of your program to set your feed rates.

In incremental (G91???)

G1X0.Y0.W0.F150.
G1Z0.F100
G2X0.Y0.F150.
G3X0.Y0.F150

And so on....

Then switch to absolute and start the actual machine movements without calling any new feeds unless for some reason you want to.

Winging it here. :-)

Dave
 
Last edited:
This is interesting...... Do other controls keep a separate F word register or variable for differing move types?......

The only thing I recall from working on a post for SmartCam about 35 years ago was some control that needed a feed set for rapid moves at least once after power up so we just poked it in at the head of every program. Do not recall what that control was but some oddball old US brand maybe.

The manual info above about how feeds are assigned, particularly the section about “vgroup=” raises more questions than it answers. If as it says feed for X and Y are locked together how does the control do interpolated moves other than 45 degree angles? If one programs say a 30 degree angle does it run X at the commanded feed and Y at (F*.58) through its own calculation or does the programmer have to set that? And even if it did calc it internally, the resulting feed on the surface of the part would be incorrect.
 
With regards to vgroup=XY, it does cut correctly in 2D. You just have 1 feedrate for all moves that are involve X and Y. I haven't played around with what happens when you have a move in XYZ. At this point, I think I'm going to look into Bob's suggestion that I modify the post to put the feedrate on every line.
 
many cnc have a feed rate limit (and rapid limit) Parameter limit set for each axis
for example
X 254.
Y 254.
Z 127.
often in centimeters so thats 100. and 50. ipm
.
if program says F150. on axis with F100. limit, it wont go above the Parameter axis limit. often used for many reasons for example, want to slow 100% rapid rate, or limit Z max feed rate etc
.
PS dont slow max limits without telling other operators and maintenance. other operator seeing machine going slow might call maintenance to fix machine that appears to be malfunctioning. maintenance tends to not be happy wasting time to finaling find out max limit was reset and it was not a malfunction.
 
Reminds me of my plasma torch where Fx.xx is only applicable to x/y and z is its own feedrate. Being that a plasma table is basically a 2d machine it makes sense.

Maybe the designer figured the same for the router?

Sent from my SM-G973U using Tapatalk
 
Reminds me of my plasma torch where Fx.xx is only applicable to x/y and z is its own feedrate. Being that a plasma table is basically a 2d machine it makes sense.

Maybe the designer figured the same for the router?

What brand is your plasma? This system is by ShopSabre, who is primarily a plasma manufacturer.
 
I haven't run into any issues with it on my router cutting 2D and 3D stuff, but I haven't used the Inventor HSM post yet. I've gotten help from dude named Kelly at Wincnc. PM me for his email. The manual sucks.
 
I haven't run into any issues with it on my router cutting 2D and 3D stuff, but I haven't used the Inventor HSM post yet. I've gotten help from dude named Kelly at Wincnc. PM me for his email. The manual sucks.

I just sent you an e-mail
 








 
Back
Top