600,668 active members*
3,471 visitors online*
Register for free
Login
IndustryArena Forum > CNC Electronics > Servo Motors / Drives > Unable to reduce follow error with Delta ASDA B2 servos on home-built milling machine
Results 1 to 17 of 17
  1. #1
    Join Date
    May 2017
    Posts
    8

    Unhappy Unable to reduce follow error with Delta ASDA B2 servos on home-built milling machine

    Hello guys. I come to you in an act of desperation, because I’m out of ideas and I need a frame of reference.


    I converted a manual mill (PM30 equivalent) to CNC with linear guides, AC servos, and an ATC spindle. It’s not the best machine I could have built, but given the space and weight constraints it was the best I could fit into my workshop. Was it a good idea to convert it to linear guides? No. But I crossed that bridge in the early stages of the project and decided to follow through on it.

    Machine specifications


    - Linear guides: HGR20 with QH linear guide block on every axis (medium preload)
    - Ballscrews: Double-nut C5, preloaded (ground, not rolled)

    • X: 25 mm diameter, 5 mm pitch, 640 mm length, fixed-supported bearing arrangement, FK15 (C3) + FF15
    • Y: 25 mm diameter, 5 mm pitch, 420 mm length, fixed-floating bearing arrangement, FK15 (C3)
    • Z: 32 mm diameter, 5 mm pitch, 620 mm length, fixed-floating bearing arrangement, FK17 (C3)

    - Servo motors and drives: Delta ECMA-C20604RS, 400 W, 60 mm frame; ASD-B2-0421-B servo drive
    - Spindle: CNCDepot FM30F
    - Motor mounts:

    • X: direct drive with these shaft couplers
    • Y: direct drive with the same shaft couplers
    • Z: belt driven with a 2:1 reduction with AT5 belt and pulleys (originally direct drive, but could not balance loop stability and movement accuracy sufficiently as the inertia ratio was 1:13.5, the reduction reduced it to 1:6.5)

    - Travels & rapid speeds:

    • X: 562 mm, max 15 m/min
    • Y: 275 mm, max 15 m/min
    • Z: 350 mm, max 12.5 m/min (limited by pulse rate of the controller)

    - Controller: EdingCNC CNC720 (a Dutch controller)


    I had a friend manufacture the X/Y saddle, the Z saddle, the spindle spacer, the motor mounts (with the exception of the Z-axis) and the end plates for the X axis. Yes it was expensive. He did a really good job.


    The problem


    The machine is complete, but there is one issue that has cropped up that I have not been able to solve. I have milled test pieces with a squares, diagonal squares, and circles, and have identified the following issues:


    - The squares I machines were 50 and 25 mm; both the X and Y axis dimensions are slightly under size (0.06 mm), and there is a max of 0.01 mm difference between the 25 mm and 50 mm square
    - The diagonal 25 mm square comes out as a rectangle; one edge is too large (25.12 mm) and one edge too small (24.92 mm)
    - The circles are oval and the error reverses based on whether or not I am using a climb or convential cutting strategy

    Machining slower reduces the error, but even at 200 mm/min which is horrendously slow I still get a 0.03 mm discrepancy

    Based on these findings I have looked into numerous properties of the machine:


    X/Y squareness
    It is essentially perfect. I have a knife edge square to hold up to the part and I see no light under the part. I have verified that the machine is square with a granite master square in every plane (XY, XZ, YZ), I get basically no movement in X/Y with a 0.01 mm indicator.


    Backlash
    The X axis shows less than 5 µm backlash, the Y axis shows 10 µm backlash with a 0.02 mm variation in position, possibly due to ballscrew to motor mount alignment which is not perfect (but not so bad that a motor coupler couldn't take up the slack a little bit)


    Pitch error
    I measured it at 0.06 mm per 200 mm for the X axis and I couldn't really tell from the Y axis. This was after I semi-blindly applied a correction scheme to the controller, which I based on the Y axis, which was poorly measured (lol), and I have since removed the correction and not measured again, but this only accounts for the X/Y dimensional accuracy anyway, not the error when interpolating which I am trying to solve


    Deflection
    I have significant deflection when pressing hard on the spindle in the +Y direction on the YZ plane, up to 0.05 mm when pushing and I think even 0.10 mm if I used some momentum as I pushed. Pushing in the +/- X direction resulted in less deflection, a maximum of 0.05 mm even when pushing with some momentum. In any case, the machine is made for aluminium with occasional steel in mind, and with the tooling I have I manage to do a spring pass that results in whisps of aluminium so thin that I could breathe them in (when climb cutting, not conventional), for what it's worth


    Servo tuning
    I don't have access to bar-ball test equipment, but given that I made a circle with climb milling and a circle with conventional milling and that this resulted in the error being reversed, I interpret that as a servo gain matching error.


    I have performed frequency analysis after auto tuning and made sure the bandwidth of the control loop (both position and velocity) is as high as possible while maintaining enough gain and phase margin. I have set the stiffness (P2-31) to 180 Hz for both X and Y; any higher and the servos start to resonate; lower than around 100 Hz results in visible and measurable oscillation of a few 0.01 mm (period of 1 second). I'm not sure to what extent the X and Y would need to be different, but I tried 120 Hz for Y while X remained at 180 Hz, and it did not result in a measureable difference in following accuracy when interpolating.


    I have tried increasing position feed forward gain (P2-02) from 50% to 100%, but I could tell the motors weren't really having it and they sounded like they were on the brink of screaming at the top of their lungs when they didn't move for a few seconds.


    I have made sure the moving filter (P1-68) and low pass filter (P1-08) are set to 0, and I have set S-curve acceleration (P1-34) and deceleration (P1-35) to 20 ms (from 200 ms). This resulted in no change.


    I have tried increasing position integral compensation (KPI, P2-53), but setting it to something like 5 rad/s already gave me oscillations; I think even tried 1 (the lowest) but it would still result in overshoot after rapids at 0.25 g acceleration and deceleration. The only active integral term in the system at the moment is in the speed loop (KVI, P2-06), which is set to 180 (equal to the stiffness setting), but the manual suggests that this does not help with the follow error.


    It also set anti-interference gain automatically and I think I set a fairly high low-pass filter of resonance suppression (NLP, P2-25) based on the frequency analysis graph.


    I have not messed with gain switching.


    I have an electronic gear ratio of 10,000:500 or something like that, and my steps per mm is at 1600, so 0.625 µm per step


    The fastest pulse rate of the controller is 400 KHz

    I have tried messing with some settings in the controller like disabling look ahead feed, but that didn't help either


    Final remarks
    I have no frame of reference on what to expect, and this is my first build, so a few questions remain:


    I have no integral gain on the position loop; should I? The manual suggests that a higher proportional gain is what helps with dynamic following error, and that integral gain is there mostly for static errors


    Is it possible that the X axis is the only motor that struggles to keep position? I have only tried a higher X and a lower Y; not the other way around. Even still, I would have expected to see some kind of difference with a 50% increase in gain (Y with respect to X)


    What level of stiffness and bandwidth do you typically want for a CNC machine?


    How likely is it that the controller is to blame? Linear movements show no real lost movement, and I have tried lowering the maximum commanded by increasing the gear ratio of the servo (and as such doubling the resolution of the position steps) without success. That doesn't rule out that there isn't an error in the time domain, however.


    For people with more experience with servos and tuning: I just SOL and are my motors too small? The inertia ratio for X is 1:10, Y is 1:7, and Z is 1:6.5, but I'm not sure what is typical for a servo in this application. 400 W seems to be more than enough power; I can even accelerate at 1 G without a hitch, it just makes the room shake so I limited it to 0.25 g lol

    Am I just going to need to make a counter with a microcontroller and use a linear scale and the output of the rotary encoder to find out what the following error truly is, and to see what the source of it is (controller vs servo control loop)?

  2. #2
    Join Date
    May 2017
    Posts
    8

    Re: Unable to reduce follow error with Delta ASDA B2 servos on home-built milling mac

    Here's what the machine looks like, for those interested:

    https://files.lipsgaming.com/ichi/images/Asm2grrqIF.png

    Ignore the clamp on the Z axis servo lol

  3. #3
    Join Date
    Nov 2013
    Posts
    4961

    Re: Unable to reduce follow error with Delta ASDA B2 servos on home-built milling mac

    Hi,
    I built my own mill. I'm at home now, but I'll post some pics when at work tomorrow.

    I cast three cast iron axis beds, 115kg each. They are each fitted with 32mm diameter, 5mm pitch, double nut (BNFN) C5 THK ballscrews, 650mm long. The ballscrews are direct coupled
    to the servos, 750W Delta B2's, the one on the Z axis is braked. The inertia ratio is 8.5:1, and near as dammit the same for all three axes.

    I used Auto-tune to tune them. I did fiddle about with the tuning but found that Autotune was at least as good as anything I can do so I've left it alone....four years and counting.

    At rated torque the axes accelerate at 0.27g. Remember that the rotational inertia of a ballscrew is to the fourth power of diameter, thus my 32mm ballscrew has 2.7 times the inertia of your 25mm screws.
    Like you I find the hig accelerations scary fast so I detune to 0.15g on each axis. I have electronic gearing set so I get 5000 count per rev or 1um per step. At max tune I push the servos to 5000rpm and they do
    25m/min, but I find that scary fast. Standard tune is 15m/min, all axes, and in most machining situations I turn down the rapids to 50%, ie 7.5m/min....and thats enough.

    I've had no problems along the lines that you describe, when I circular interpolate, I end up with a circle within 0.01mm of round day in, day out.

    I think you need to concentrate on just one axis at a time. All very well being able to report what happens in two axes.......but I suspect if and when you find the fault in ONE axis, then
    fixing the second is straight forward. In the meantime I suspect the second axis is just confusing the issue.

    In the first instance just allow one axis, say Y to go back and forth 100mm. Measure as closely as you can, you really need to be able to measure close to 1um. Then repeat the measurement
    but with the axis under cutting load or some facsimile of it. The measurement should be the same within 10um anyway

    Craig

  4. #4
    Join Date
    May 2017
    Posts
    8

    Re: Unable to reduce follow error with Delta ASDA B2 servos on home-built milling mac

    Hi Craig, thank you for taking the time to type this out; this is good information and provides a good frame of reference. The table on my machine is around 50 kg. I also used auto tune for mine, because I also found it was better than what I could achieve with manual tuning.

    What stiffness have you configured for your machine (P2-31)?

    I have determined the static positioning accuracy to be good. My approach to measuring it was rudimentary:

    https://files.lipsgaming.com/ichi/images/xXUEhneH5l.png

    ... as seen in this photo, but it showed that the commanded position aligns with the actual position.

    This, combined with the symptoms I mentioned, makes me think that it's a dynamic following error, either resulting from the controller or from the servo drive.

    If your stiffness setting is similar to mine, I will begin to suspect my controller is at fault. In that case, I think I have no other choice but to create a measurement setup to compare the input pulses to the measured position with a linear scale, or at least to figure out how to use the scope in ASDA-Soft, maybe that can tell me more

  5. #5
    Join Date
    Apr 2018
    Posts
    141

    Re: Unable to reduce follow error with Delta ASDA B2 servos on home-built milling mac

    The image link in the post above should show an image 'in line', but for a reason I can't identify, it doesn't. It is now 'clickable', however.

    https://files.lipsgaming.com/ichi/images/xXUEhneH5l.png

    I can't figure out why it isn't displaying in-line, but I also uploaded it as a thumbnail which does work. There is nothing wrong with the image, its a server problem.
    Attached Thumbnails Attached Thumbnails xXUEhneH5l.jpg  

  6. #6
    Join Date
    May 2017
    Posts
    8

    Re: Unable to reduce follow error with Delta ASDA B2 servos on home-built milling mac

    I think it's because I used [url] rather than [img] and it recognised it was an image? In my first post I used the [img] tag, and that did result in a clickable link

  7. #7
    Join Date
    Apr 2018
    Posts
    141

    Re: Unable to reduce follow error with Delta ASDA B2 servos on home-built milling mac

    Before I made any change to post #4, the image URL was not formed properly and so not a clickable link. That could have been a server issue. I edited the post to fix the URL.

  8. #8
    Join Date
    May 2017
    Posts
    8

    Re: Unable to reduce follow error with Delta ASDA B2 servos on home-built milling mac

    Hey Craig, don't mean to be a nuisance but can you let me know what your stiffness setting is for your drives? (P2-31)

  9. #9
    Join Date
    May 2017
    Posts
    8

    Re: Unable to reduce follow error with Delta ASDA B2 servos on home-built milling mac

    life's rough out here boys

  10. #10
    Join Date
    Nov 2013
    Posts
    4961

    Re: Unable to reduce follow error with Delta ASDA B2 servos on home-built milling mac

    Hi,
    sorry do not have the Delta ASDA_Soft on the PC that runs my machine. I have to disassemble my main PC and set it up adjacent to my machine in order to read the parameters.
    I have done so, and P2-31 looks to be at its default of 40Hz.

    According to the description it is the 'Speed responsiveness of Auto and SemiAuto modes'. Is this what you wanted? Again according to the description 40Hz puts the setting towards the top end
    of the Low Stiffness regime while 50Hz-250Hz is in the medium stiffness regime and 251Hz and higher is in the High stiffness regime. It also states the the Tuning Mode is set by P2-32, and in my case that is set to '0',
    ie the main tuning parameters (P2-00, P2-02,P2-04,P2-06, i.e. the traditional PID parameters, and P2-25 and P2-26, which are Delta's terminology of compensation values) are set manually ergo P2-31 is irrelevant.

    When I first tuned my machine I used AutoTune ie P2-32 was set to '1' while the procedure proceeded and then set back to '0'. Only during that procedure is P2-31 relevant, and for my purposes the default of 40Hz
    was adequate, and I've never sought to change it.

    Approximately half the work I do on my machine is making PCB's. For that purpose I use Fusion Electronics, which is a re-skinned version of EAGLE, a PCB design software that has been in the market for twenty years or so.
    In addition the the Gcode produced by Fusion I use Autoleveller which is a software utility that probes the vertical height of the PCB blank and 'massages' the Z coordinate of the Gcode to match the probed PCB, thereby countering
    any warp or bow in the PCB material, and there is always some, and more than enough the cause an isolation failure if not accommodated. Autoleveler cannot accommodate G2/G3 moves, but only G0/G1 moves. Thus all Gcode intended
    for further processing by Autoleveler has to be composed without circular moves, and thus any curve must be a sequence of small line segments.

    This in turn give my controller a real run for its money. I use Mach4 and an Ethernet Smoothstepper. When it encounters a long stream of very small moves it tends to exhaust the motion buffer which in turn causes a hesitation in the machine.
    It does not stop the machine in in any way, but if I nominate 600mm/min it moves smoothly, but at 1000mm/min it starts to hesitate slightly. This is due to the controller, and the PC on my machine is a tiny Dual Core Atom PC without a graphics card.
    In every respect, but this one situation it works perfectly, but with a whole bunch of really small line segments it struggles. When running normal Gcode, ie that uses G2 and G3 I can run right up to the max speed of the machine 15000mm/min.

    The point I'm trying to make here is that no matter how I tune the servos this hesitation when running a long string of very small moves will remain.

    I've been using the little Atom for ten years, and so its probably due to be replaced. I'm thinking an i5 with 8G RAM will speed things sufficiently that the hesitation problem will fade away. Always some new investment to make.

    Craig

  11. #11
    Join Date
    May 2017
    Posts
    8

    Re: Unable to reduce follow error with Delta ASDA B2 servos on home-built milling mac

    Wow .. 40 Hz seems low for a cnc machine... and you're saying that creates near-perfect circles? I used the same tuning procedure but with a much higher stiffness setting of 180 Hz. The stiffness setting + auto tuning affects the values of P2-00, P2-02 etc. I have tried fiddling with the gain settings but it's pretty much maxed out. Have you manually tuned the gain values afterwards? Either my controller is outputting garbage or the JL ratio is of even more importance than I thought .... I will do some measurements this weekend

  12. #12
    Join Date
    Nov 2013
    Posts
    4961

    Re: Unable to reduce follow error with Delta ASDA B2 servos on home-built milling mac

    Hi,
    I think you are mistaking that setting with the actual closed loop bandwidth.

    That setting is about the responsiveness of the speed parameter when in auto or semi auto tuning modes.......not the eventual closed loop bandwidth.

    Typically a modern servo will have somewhere between 1kHz and 5kHz bandwidth of the torque loop, typically a velocity loop bandwidth of 500Hz to 2.5kHz, which in turn confers a position loop bandwidth
    of 100Hz to 500Hz.

    For many years CNC machines using DC servos, tachogenerators for the speed loop and glass scales for the position loop would have a position loop bandwidth of 100Hz and often less, and yet those machines
    were considered state of the art. Don't dismiss a machine with a closed loop (position) bandwidth of 100Hz.

    The parameter we are talking here is not, and has nothing to do with the eventual closed loop performance. It is the rate at which the speed parameter is allowed to vary while in auto tuning mode only.
    With a low eventual bandwidth system (position), lets say 80Hz to 100Hz, then you would allow the speed parameter to vary fairly slowly while auto tuning, otherwise the speed parameter would vary that fast that it may not converge at all.
    With a highly dynamic and high bandwidth (position) system say 500Hz which would be typical of low inertia ratio machines, ie large servo relative to the inertia of the load, then you might allow the speed parameter to vary somewhat faster
    to allow it to rapidly converge.

    Craig

  13. #13
    Join Date
    May 2017
    Posts
    8

    Re: Unable to reduce follow error with Delta ASDA B2 servos on home-built milling mac

    I'm just using your settings as a relative measurement. My stiffness setting is almost 5 times as high as yours, that's a fact. From what I could tell in ASDA-Soft the stiffness setting configures the gain values to some preset values, and these are my gain settings as a result of the stiffness setting, which are effective when P2-32 is set back to 0, which is the case with me because I don't want it to auto tune constantly:

    KPP (position loop gain): 282 rad/s
    KPF (feed forward positional gain): 50%
    KVP (speed loop velocity gain): 1130 rad/s
    KVI (speed loop integral gain): 180 rad/s
    KVF (speed loop feed forward gain): 0%
    KPI (position integral gain): 0 rad/s

    I have to conclude that your claim that "it has nothing to do with the eventual closed loop performance" is false, because it directly affects the gain values. The manual mentions auto tuning takes place every 30 minutes when P2-32 is set to 1 (continuous auto tuning), where it re-estimates the inertia ratio (5.5.3 Flowchart of Auto Tuning), which in turn affects the commanded torque, as seen in the block diagram in chapter "6.3.6 Gain Adjustment of Speed Loop". I get that the 180 Hz value of P2-31 doesn't directly translate to closed loop position bandwidth.

  14. #14
    Join Date
    Nov 2013
    Posts
    4961

    Re: Unable to reduce follow error with Delta ASDA B2 servos on home-built milling mac

    Hi,

    I have to conclude that your claim that "it has nothing to do with the eventual closed loop performance" is false, because it directly affects the gain values.
    I disagree, the setting is about how the machine goes from it initial tuning point to its eventual tuning point and its that eventual tuning that determines the closed loop bandwidth, not P2-31.

    Craig

  15. #15
    Join Date
    Nov 2013
    Posts
    4961

    Re: Unable to reduce follow error with Delta ASDA B2 servos on home-built milling mac

    Hi,
    my parameters are:

    KPP 300 rad/s
    KPF 50%
    KVP 1500 rad/s
    KVI 100 rad/s
    KVF 0%
    KPI 10 rad/s

    These were close to what the auto tune procedure came up with. I fiddled a little bit from there, but still similar to Auto tune. As all three axes are near identical so once I got the Y axis tuned in I replicated the tuning
    in X and Z.

    The only thing that I see as different is the integral parameter. It was always bashed into me as a student "Integral gain is to correct steady state following error". Could the situation you describe be steady sate following error?
    Integral gain can and often does create instability, and that's why I use such modest amounts. Auto tune gave 0 rad/s, while I experimented, and settled on some, i.e 10 rad/s, perhaps as much as anything that my training is to ALWAYS have
    some integral gain to counter steady state following error.

    The tuning has stayed as I set it when I first built and tuned this machine, and that's four years ago. I have yet to encounter any motion discrepancy that I thought may be related to servo lag, or maybe the effects of servo lag,
    and there must be some, right, are small enough that I've never detected it.

    Craig

  16. #16
    Join Date
    Nov 2013
    Posts
    4961

    Re: Unable to reduce follow error with Delta ASDA B2 servos on home-built milling mac

    Hi,
    thought I'd measure my machine, its been a long while since I did it last.

    I milled a small cube of aluminum round with a finishing pass of 0.5mm, nominally 24mm in diameter. Using 6mm tool, 12000rpm, 1250mm/min under coolant. Milled a small witness line into the top
    so I could keep track of X-Y when measuring.

    Not as good as it used to be. I think at least one of the diaphragm couplers I use has some lash in it, it makes a small click at axis reversal. Did not do that when I bought it, but it does now.

    Craig

  17. #17
    Join Date
    Nov 2013
    Posts
    4961

    Re: Unable to reduce follow error with Delta ASDA B2 servos on home-built milling mac

    Hi,
    I repeated the same procedure by reducing the diameter to 22mm (1mm radial cut) but at a slower cut rate, 100mm/min, but still a 6mm tool, 12000rpm, under coolant,
    10mm DOC with a view to minimizing any dynamic motion errors, and thus these measurements represent the accuracy, or rather inaccuracy of my machine.

    Think I need to do some maintenance, I used to get 0.01mm to 0.02mm when I first did this test, but that was four years ago.

    It does suggest, by comparison to my previous post that there is some following error or flexure or both at 1200mm/min which is not present or at least much reduced at 100mm/min.

    Craig

Similar Threads

  1. Replies: 1
    Last Post: 01-21-2021, 06:18 AM
  2. Delta Servo Motor 750 W and Delta ASDA-B2 drive setup issues
    By johnansaro in forum Servo Motors / Drives
    Replies: 6
    Last Post: 03-02-2018, 06:16 PM
  3. Frame design for home-built milling machine
    By tom.k.cook in forum Drilling- and Milling Machines
    Replies: 3
    Last Post: 04-09-2013, 08:30 PM
  4. Follow error when trying to test home.
    By evo4wrx in forum CNC Machine Related Electronics
    Replies: 1
    Last Post: 05-24-2010, 06:18 PM

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
  •