View Full Version : Questions for stepper motor gurus
We have recently installed a new control on our Bridgeport Series II. The machine had been previously fitted with a Centroid control and steppers. We kept the steppers (nema 43, 9A) and bought new drives and power supplies along with a Galil motion card and Camsoft's software.
Just for background info I am new to cnc in general but have pretty good computer, electronics and mechanical skills.
We are having some problems with the steppers and I need to know if I am just heading down the wrong path.
It appears that continuous motion will not be possible. Regardless of feedrate in order to not stall the motors or lose steps we need to decelstop before every feedrate command (G1, G2, G3, etc). Seems like there is a missing ramp up/down.
Is this normal behavior? Does it matter? Am I asking too much of steppers?
Big thanks,
Marc
HuFlungDung 10-28-2003, 10:44 PM Hi Marc,
I don't know if I can help, but we can talk until someone comes along :D
I have never run steppers on a cnc to have first hand knowledge of what you are dealing with.
Do you know that your motors never lose steps on acceleration?
Have you experimented with the "Smooth " command yet? (I believe this command is available in CNC Professional, but not Lite). It might be worth a shot to see if the motors will keep running smoothly over a multi step profile. If you don't use a decelstop, you will get an instant stop "ramp", which, I would think, would be the cause of lost steps. This would be the reason to incorporate the smooth on command.
I set up a set of "shadow gcodes" that do exactly the same thing as G1, G2 and G3 (which all contain a decelstop command), except the shadow set has the decelstop removed, but must be used in conjunction with a seperate gcode which turns smooth on.
When the profile is finished, I turn smooth off with another gcode, prior to going back to the conventional G1, G2, G3. I am running this on a lathe, where the profiles are short and sweet.
I've been thinking about this lately, and I may change my method for use on a mill, because it would be very inconvenient, to use different gcodes other than standard, especially when creating programs from standard cadcam software. It might work better to create a flag variable, which resides in your G1, G2 or G3 logic, and which represents the state of "smooth on" or "smooth off". This way, you will still turn smooth on and off by changing the state of the flag variable:
G100 logic (pick any free gcode you have)
\200 (or whatever) = 1 'smooth on
G101 logic
\200 = 0 ' smooth off
G1 logic
IF\200=1THEN SMOOTH ON
GO x;y;z
This way, you can continue to program with standard software for all the movements.
You do need to turn smooth off before the final feedrate movement has been completed (to prevent the "instant stop ramp" from occurring. :D) You would have to command
G101 G1 at the last movement in the profile, in this example, to shut off smoothing:
G1 logic
IF\200=1THEN SMOOTH ON
If\200=0 THEN SMOOTH OFF; DECELSTOP
GO x;y;z
BTW, I have not looked at the manual for a few months, so my syntax may not be correct. I running on pure neurons here. :)
Just be sure to initialize \200 to zero in your startup.fil and also with any kind of "machining program abort or reset" Mcode or Gcode that you have set up.
Hu, thanks for the reply.
I have done limited work on the G codes, etc but I understand the concept. Is the use of steppers so unusual? I am kind of surprised that there is not a configuration that is more suitable for steppers. Any idea how other machine controls handle this?
HuFlungDung 10-29-2003, 09:08 PM Marc,
I don't believe the application to steppers over servos is unique. The crux of the issue is this for both kinds of motors: an accel/decel ramp must exist.
This may not seem evident at first, but it is there all the time.
Thus, the motion card needs to be told at what rate to accel/decel for every move. And, if the move is truly going to end, then you must tell it to decelerate, and not just "end motion", which is like a command to decelerate at an infinite rate. This causes the amplifier to send or receive a huge pulse which causes nuisance tripping of the overload detector.
The advantage of the Galil/Camsoft setup, is that it is possible to eliminate this accel/decel between feed commands when you choose to. When this is the case, then all the movement vectors are just downloaded into the card one after the other, with never any thought given to accel/decel. This is what creates smmmoooth machine motion when running short segment nc code, at a high rate. Regular cnc's lacking this capability tend to get into a vibrating, shaking mode when trying to execute hundreds of blocks per second, because the accel/decel is always trying to cut back in between the movements, because the processor is taking too long to send the next move, and there is a miniscule pause, which allows decel to begin, then accel to be applied immediately when the next movement is read.
I have seen the effect of "smooth on" while running my Camsoft lathe. I was turning a very long slender shaft, for which I had to create a special curved toolpath for, to compensate for the deflection of the part. This resulted in several intersections in the cut length, from one end to the other. With "smooth off", there would be just the tiniest toolmark at each intersection, as the next move was read, and the decelstop was applied. With "smooth on", there were absolutely no toolmarks at any intersections, because the whole profile executed with only a single accel at the start and a decel at the other end of it.
balsaman 10-29-2003, 09:12 PM Usually accel, decel is setup in the motion card or software.
Eric
Hu,
The picture I have in my head is that for a servo the decel is acomplished in the pid loop as the endoder approaches the desired increment. In the case of a stepper unless provided for in software it is step to location then bang- stop.
I will sure try the smoothing tommorow. My G1, 2 & 3 did not include the decelstop, I had to add it.
Having written a few lines of code in my life (application software & web), I do admit I like the ability to change as needed.
Eric, do you know if the Galil card has such a provision for steppers?
HuFlungDung 10-30-2003, 06:21 AM Marc, I know what you are saying, but I think that steppers must also have a ramp.
The PID loop really does not include an accel/decel ramp. True, the ramps you decide to use, will be affected by the PID settings, but the PID settings do not make the ramps. PID is used to adjust the servo response to its encoder feedback. Depending on the load and motor size, you can imagine that this has to be customized for every installation. But, theoretically, the accel/decel ramp could be fixed for every installation.
On the Galil card, the accel/decel for servos is still based on encoder counts per second, which parallels steps per second for a stepper. Somewhere, there has got to be a ramp for increasing or decreasing steps per second for the stepper, otherwise it will lose steps on every accel/decel.
camsoft 10-30-2003, 04:58 PM For Marc,
No, this is not normal behavior. Under the right conditions you should get a very smooth continuously un-interrupted cut at a constant velocity. However, the effects you describe are not surprising and happen to many others on all types and brands of CNC controllers when either not set up properly or the physical motors are under sized for the weight, load, gearing and inertia that the table can handle.
Honestly we have not read through all of the chats on the message board, but we do have some solid advice and explanations on this topic.
First the explanation. The better the problems are understood the better you can decide upon one of these solutions.
When stepper motors do not have enough torque (power) or are geared incorrectly for the application they are notorious for losing torque during acceleration while taking off from a dead stop, decelerating too fast to a stop, travel at the upper reaches of the RPM range for that motor or making an abrupt change in travel direction. When this happens, the motors may kick out, stall, ignore steps or freeze up.
You may be losing steps by accelerating too fast or rapiding too fast. The faster a stepper motor moves, the whimpier the stepper motors becomes thus losing torque. Although they have good torque at slow speeds. The drawback to an open loop system is that you will never know this unless you can humanly visually notice it.
The key solutions are presented in order of consideration for effectiveness, difficulty and cost.
(1) Change to closed looped servo motors.
(2) Possibly keep the stepper drives but change the stepper motors to a larger size.
(3) Use gear reducers. There are many types to select from. In-line ones that attach to the face of the motor or side mounted gear boxes are most common. Each time you reduce the gearing ratio by a factor of 2 you will increase the torque the motor has, thus doubling its power. The trade off is that each time you do this you also reduce the RPM and travel speed by half. It is common practice for companies to use , 1.5:1, 2:1, 5:1 pitches on their ball screws or install gear reducers in factors 2,5,10 or 20 to 1 for example.
(4) Use SmartPath to make automatic on-the-fly intelligent decisions about when to decel and when not to and then only apply the amount required per cutting scenario, material type, physical mechanics and up coming look ahead geometry in the cut path.
(5) Set the SLOWDOWN and NEXTMOVE parameters to automatically calculate the correct distance to commence a reduced feedrate before reaching each target position on the basis of percentage and distance of the original feedrate. This feature in part is the missing ramp up/down your speaking of. SmartPath does this same thing but with much more intelligence and versatility.
(6) Keeping in mind that steppers have the most torque at their low RPM ranges. Some solutions are in this area are:
(6a) Use lower the feedrates on G01, G02 and G03.
(6b) Open the position error allowance using POSERROR which keeps the motors from kicking out so easy.
(6c) Lower the maximum rapid speed using RAPIDSPEED to keep from running the stepper in the high RPM ranges.
(6d) Open the TOLERANCE setting up slightly. This will allow each target position reached to be satisfied more quickly and move on to the next. Don't worry about position accuracy, this system will always strive to make position and always output the exact number of steps. TOLERANCE only confirms your in-position by doing a check within the user defined tolerance range. If in-position tolerance must be confirmed on each move within a certain small value then an alternative exist by using the logic command BLEND.
(6e) Set a minus BLEND factor. This settings is in milliseconds. When the value is negative it will have a similar effect as opening tolerance, except for the unit are time based not distance based.
(6f) Insert DECELSTOP commands in your GCODE.FIL file or use G11 codes in your G code program only where necessary to automatically ramp up and down.
(6g) Lower the acceleration rate and deceleration rate using ACCEL and DECEL settings to make softer starts and stops or ramp ups and ramp downs.
Keep in mind that the focus of what your trying to accomplish is to reduce the factors that make stepper motors lose torque. The only way to approach this is to start with conservative values and make repeated tests each time slightly increasing or decreasing the values until you feel that the settings reflect adequate acceleration and deceleration for the motor size, table weight, load, gearing and inertia that your machine can handle.
For more detailed information read the Question & Answer Solutions numbers Q127, Q176 and Q195 in the CNC Professional manual. Also information for existing users can find SmartPath, SLOWDOWN, NEXTMOVE, POSERROR, RAPIDSPPED, BLEND, TOLERANCE, ACCEL and DECEL parameters in both the printed and electronic manuals.
Tech Support
CamSoft Corp.
(909) 674-8100
support@camsoftcorp.com
www.cnccontrols.com
|
|