Closed and Open loop current control for Brushless Servo Motors
Closed and Open loop current control for Brushless Servo Motors
(OP)
Hi guys,
I have been having an issue finding and specing a drive/amplifier for a motor (http://www.baldor.com/catalog/BSM90N-275AA)
Closest I have is this: http://www.kollmorgen.com/hi-in/products/drives/se... (to which I'm not sure will work)
I want to be able to run it in torque/current mode (with internal fast PI loop). But, I also want it to act like an amplifier and not have an internal current loop active.
That is, I would like to be able to have a mode where I can supply a voltage via my controller and have the Amp feedback the current, and then my controller reacts externally.
Are there any motor drives that are high performance in their built in current loops (via analog in) and also with the ability to run open loop current control?
Thanks for the help,
Fe
I have been having an issue finding and specing a drive/amplifier for a motor (http://www.baldor.com/catalog/BSM90N-275AA)
Closest I have is this: http://www.kollmorgen.com/hi-in/products/drives/se... (to which I'm not sure will work)
I want to be able to run it in torque/current mode (with internal fast PI loop). But, I also want it to act like an amplifier and not have an internal current loop active.
That is, I would like to be able to have a mode where I can supply a voltage via my controller and have the Amp feedback the current, and then my controller reacts externally.
Are there any motor drives that are high performance in their built in current loops (via analog in) and also with the ability to run open loop current control?
Thanks for the help,
Fe





RE: Closed and Open loop current control for Brushless Servo Motors
RE: Closed and Open loop current control for Brushless Servo Motors
Can give you full tech details if you want. It is called akd-b-01206-nban
www.KilroyWasHere<dot>com
RE: Closed and Open loop current control for Brushless Servo Motors
And this version of the drive has open loop current loop capabilities? That is, I apply an input and it supplies this voltage or a voltage*gain to the motor?
Thanks,
Fe
RE: Closed and Open loop current control for Brushless Servo Motors
Why not download the various manuals and the software (workbench) and you can learn more.
But I am having a real hard time understanding any reason one would want a sophisticated brushless motor in total open loop voltage control. Seems to me if you want crude, you just buy an induction motor and cheapest vfd you can find.
Are you aware that such control is very hard to even make a synchronous motor like this turn? Change the load maybe .01% and it will drop out of synchronization immediately! If you run the motor with nothing hooked to its shaft, you probably can set a 60 sec or longer accel ramp to get it stay in synch to get to speed, but as soon as you attach that shaft to any real world device with friction, stiction, torque perturbations, it will be very hard for you to not slip out of synch and stall. Try it if you question this: I assume you already have that Baldor motor, stick it on a cheap vfd if you have one around and try to run it and vary the speed. I would bet with any load attached you will not make it go. I have had, about 60% of the time, luck making open loop go like this, but it never amounted to anything that could do any useful work of course.
Please share WHY you possibly would want a high performance servo motor and then propose to run it in such a sloppy mode?
Anyway, for technical answer: open loop volts_in = volts_out * K is another way to say v/hz (aka skalar) mode. Go to motor tab in workbench, pick motor type 2 (rotary, v/f open loop) and you will get simple power supply with integral motor commutation and freq setting to match with no control.
You want also torque mode with "fast PI loop;" fast is a very relative term - what is fast to you?
www.KilroyWasHere<dot>com
RE: Closed and Open loop current control for Brushless Servo Motors
I will have at hand a Real-Time controller that can run at 10-20 kHz in closed loop. This is what I will be using as a control. (so about 50us)
I am investigating 2 options. The reason I have 2 is I am concerned with the 4kHz bandwidth of the Analog in and out of the AKD (or any other) drives.
If I send a setpoint that updates every 50us to the current PI controller of the drive it will only update every 250us because of the analog in. And the same goes for the analog out.
I presume running it in open loop mode does not get around this 4000Hz bandwidth.
This is why I am investigating an Amp. thereby possibly I could get better resolution of control using my RT box directly? Maybe something like this(http://www.aerotech.com/product-catalog/drives-and...) but one with more power. I'm not sure though.
RE: Closed and Open loop current control for Brushless Servo Motors
But at the end of the day, I still wonder if YOU taking the current loop control is going to really gain you anything... Sure your loop is 10-20khz, but as you say, BOTH the analog input AND the analog current monitor output are SLOW... Drive PWM also is something like 8khz... The drives internal update rate of 0.67usec (1.5mhz)is way faster than your external loop, making it effectively analog anyway. If you could control the Iloop, you can adjust the PI to 5khz also; but my experience has been you probably won't be able to without oscillating on the type motor you listed.
This drive shows an in and out @ about 8khz BW for 3db points; check out the 0-10khz LPF descriptions on both (AIN.CUTOFF, etc)...
Then comes real world movement of the motor shaft itself. Again, my experience suggests to me that even if you had a 20khz Iloop, it would be questionable if that could manifest itself in motion on the output shaft of that large inertia motor.
What exactly is it you want to move that quickly?
www.KilroyWasHere<dot>com
RE: Closed and Open loop current control for Brushless Servo Motors
I like your idea of a fully analog Amp. Can you recommend one? Will they come with commutation or will I have to output this from my controller?
I need to control the current loop because I am investigating adaptive control methods at very high speeds. I thought that maybe I could “cascade” the control where I can use the internal PI on the drive then use my adaptive controller to modulate the setpoint. But then this 4kHz concerned me.
I will not need to drive inertia. I am only requiring to control the motors torque at speeds (3000rpm). This speed will be accomplished via another motor.
Thanks,
RE: Closed and Open loop current control for Brushless Servo Motors
Not sure where you saw 2khz update rate? That cannot be right...
I wonder how kol can state 8khz BW with 2khz update rate?? And so why offer 0-10khz LP filters on these sigs? I will ask because something doesn't make sense. will report back what I find.
www.KilroyWasHere<dot>com
RE: Closed and Open loop current control for Brushless Servo Motors
"The latest AKD Installation manual on the website ( Revision U ) has added the specifications you are looking for.
I don’t believe they were published in previous revisions:"
Analog input: Firmware update rate: 16khz
Analog output: Firmware update rate: 4khz
So no issue on IN but 4khz out may be slow for you. but then you could just use realtime Hall sensors and gather that yourself anyway for true analog response.
www.KilroyWasHere<dot>com
RE: Closed and Open loop current control for Brushless Servo Motors
I am not familiar with this Firmware update rate? How does it compare to bandwidth of the Ain or Aout?
RE: Closed and Open loop current control for Brushless Servo Motors
I believe we will find the BW is >8khz on this product for both in and out. So an update rate of 16khz on the input is great in that it means you get two updates per possible significant BW change. It would also mean the output current feedback signal, at over 8khz BW, will only be seen every 2nd update! Nasty. I do not believe it, and I called the engineer on that. He has not responded yet - I suspect they will find an error in their math. But that should not be a show stopper for you, since you can buy a couple $1.00 (your in the USA?) hall donut sensors and gather the actual current real time yourself.
The only question that I see then remaining for this product is then if the 8khz update analog input rate is sufficient for your needs. If not, back to the drawing boards!
Might I ask WHY you are trying to do this, in more detail? Assuming it is not a patentable project, please share why you are trying to add some adaptive control algorithm to a servo motor current loop. You say for "high speeds." Current loop response is a function of motor L and supply V.... nothing to do with velocity.... I am overly excited to learn why you are doing this.
I cannot comprehend why adaptive current control is required at high velocities: velocities are controlled, in generic terms, around 100hz, current in 1000 hz; apples and oranges. I am very interested in what you are doing. Can you share?
www.KilroyWasHere<dot>com
RE: Closed and Open loop current control for Brushless Servo Motors
hmm.
I understand aliasing, but I am still a little fuzzy on how the BW can be >8kHz when the A/D converter runs at 4? Can you explain please?
I would be okish with 8kHz since it is double what I originally thought with these drives. What about the Aout? Can we confirm it is 8kHz too?
What about an Analog Drive? Are there any on the market? Would this solve my issue?
Regarding what I am doing. This is tricky, I cannot really reveal. But I will say that it has nothing to do with velocity. The current/torque needs to be controlled only. Any speed the motor sees will be due to the system it is attached to.
What is important to me is the high frequency torque profile that the motor shaft sees. It will be adapting (not extremely fast mind you) to some external sensors.
The reason I need fast update rates is to better approximate my torque profile I need.
For example, a 250Hz sinus wave torque... much better approximated at 10kHz than 4kHz. Also, 250Hz with 4kHz BW leaves 3.5 deg. of inherent phase lag.
The other thing is the max voltage. If the sample loop is too slow, the error in current will be too high and the required voltage to compensate for it will go above the voltage of the bus (320VDC)
Thoughts?
RE: Closed and Open loop current control for Brushless Servo Motors
I know of no analog drive or I would have shared that, sorry.
Thanks for sharing more what you are doing. Would a drive with higher bus voltage eliminate some of the concern? Would a lower inertia motor help? Would an ironless rotor motor help? Would lower motor L help?
www.KilroyWasHere<dot>com
RE: Closed and Open loop current control for Brushless Servo Motors
I'd for sure like clarification on the BWs.
I'm not sure about increasing the bus voltage. I'll do some more simulations to try and see if it might help. Inertia would not really make a difference for this. Inductance would make it easier on the controller since the open loop response would already be faster.
The other thing is the 8kHz PWM. I wonder if we can increase this?
RE: Closed and Open loop current control for Brushless Servo Motors
Is there any disadvantage of using the AKD with the Goldline B 404 ? as opposed to using the S700 with the Goldline motor?
I want to compare AKD drive with AKM motor vs. AKD drive and Goldline motor
and these to S700 drive and Goldline motor.
I guess there must be some sort of differences, but I am unsure.
Thanks!
RE: Closed and Open loop current control for Brushless Servo Motors
How about using a linear servo amplifier? Varedan ( varedan.com ). They manufacture Analog Linear Servo Amplifies that accept two current command inputs (for two motor phases). The current loops can be set for 10 kHz bandwidths. The motor is commutated from the controller. Give them a call.
RE: Closed and Open loop current control for Brushless Servo Motors
Fex, you are asking questions about specific products that appears to me to go beyond SELLING which is not allowed on this forum, since it is for engineering ideas. I am not comfortable discussing your last post here. I do not want to sell you anything, but I can answer your specific questions. I feel to do so requires going off site. I am willing to post my email address if you wish to continue thoat specific info: mike at KilroyWasHere dot com.
www.KilroyWasHere<dot>com
RE: Closed and Open loop current control for Brushless Servo Motors
I was thinking of mentioning Varedan (and also Trust Automation), both of which build good linear amplifiers for brushless motors that we have used successfully. The problem for the OP with these or comparable amps is that they have analog current loops (RC networks around op-amps) built in, and there is no way that I know of to disable them for the voltage mode that the OP wants.
At least with fully digital amps, there is the possibility of effectively disabling the digital current loop by setting certain gains to zero.
Curt Wilson
Omron Delta Tau
RE: Closed and Open loop current control for Brushless Servo Motors
www.KilroyWasHere<dot>com
RE: Closed and Open loop current control for Brushless Servo Motors
I share the same hesitance you do about selling on this forum, but in principle our "direct PWM" drives, which accept the actual on/off PWM signals for each of the 6 power transistors for a 3-phase motor, could help the OP. This is because all of the loops, including the current loop, are closed digitally in the controller.
The large majority of these direct PWM drives are used with our own controllers, which have both the hardware and software to control these drives easily. We do have a few customers who disable the current loop digitally to run in voltage mode. We have at least one customer with his own controller who always uses the drives in voltage mode, not using the current feedback at all.
The drives in his power range could run to 15 kHz PWM, which means that they could be updated with new commands at 30 kHz.
But I don't know if these would be of practical use to the OP.
Curt Wilson
Omron Delta Tau
RE: Closed and Open loop current control for Brushless Servo Motors
Mike, I understand. I'll have to email you. I do have a local (I'm in Toronto) supplier for Kollmorgen. They are not nearly as knowledgeable (I won't elaborate..).
Curt, I'm interested for sure. If I can guarantee 30kHz current control loop with my generated control loop I would be happy. Actually, anything 16kHz and up should suffice.
However, what exactly does voltage mode mean technically? Can I add a current sensor manually to the motor and feed this back to my Real Time control box? Would this be easy to setup?
Can someone explain this "could run to 15 kHz PWM, which means that they could be updated with new commands at 30 kHz"
How can the PWM output be updated at twice the rate it outputs? Does this imply the update or analog input to the drive can run at 30kHz - or the Nyquist?
And just for the record, IMO nothing in this thread is selling. We are talking all technical, some drives and amps are simply technically different than others.
Thanks!
Fe
RE: Closed and Open loop current control for Brushless Servo Motors
To get a 20 kHz bandwidth you will need a PWM frequency of 100 kHz sampled on both edges. This is possible today with, say, Silicon Carbide FETs, but this may not be available off the shelf.
You might research Silicon Carbide Power Blocks interfaced with a high speed Field Bus.
Having said all that, I'd still suggest a linear servo amplifier. 20 kHz current loop bandwidths are not a problem.
RE: Closed and Open loop current control for Brushless Servo Motors
In a single PWM cycle, you have two decision points: when to turn on, and when to turn off. It is possible to have different command values for the two decision points. (It is not possible to have more, which I sometimes have to remind people of...) So you could update at 30 kHz for a 15 kHz PWM.
Our direct-PWM drives do have current sensors on two phases with ADCs and serial communications (SPI protocol) back to the controller. 95+% of our customers use the current feedback to close current loops and improve their dynamic performance. But a few don't, and just use the PWM outputs to command the phase voltages without regard to the current measurements.
Neither the hardware nor the software to command these drives is trivial. If you want 12-bit resolution on the 15 kHz PWM, you need your PWM counter to run at 60 MHz. You need to create a very accurate deadtime, generated in hardware between the top and bottom commands on each phase. If you want to use current feedback some of the time, you would have to implement the SPI interface.
Your software would need to rotate the command angle based on rotor angle feedback, be able to close all the desired loops, and generate the three individual phase commands (with or without current feedback) at a very high rate.
Is this within the scope of your project?
Curt Wilson
Omron Delta Tau
RE: Closed and Open loop current control for Brushless Servo Motors
1.5kHz sinus is high in my books. Below 500Hz sinus torque profile should be good.
Do these liner servo amplifiers have commutation and supply each of the 3 phases? I'm looking for ease of setup as well.
Thank you Curt.
I now understand where the 30kHz comes from.
While I would love to put this within the scope of my project, it just involves more on top that I am unsure what direction to go.
I can tell you that I will be using the best real time control system on the market that is capable of controlling PWM's for servo motors. Better than 100ns PWM generation.
(think of something like this: https://www.dspace.com/en/inc/home/products/hw/mod...)
I understand the software and hardware is not trivial.
This is why I am being particularly careful. I don't want to have to spend a lot of time on getting the commutation and PWM as well as the hardware right. I don't know this depth of servo hardware electronics.
So far, Options are:
1) I would like an amp or drive that runs fast that I can control the Analog inputs with my Real time solution and the drive/amp simply helps in converting (at at least 8kHz) this analog voltage signal to a voltage/current in the servo (it will have its own commutation and PWM). I then want at least the same speed feedback to my Real time software (or I can add a sensor to the motor).
2) The amp/drive does not generate the PWM and I generate these from my RT controller. It simply provides a current sink that responds to the fast voltage changes I give. I will then sense the current directly off the motor back to my controller.
Where I am stuck in #2 is weather I have to commutate the motor as well with my RT software? Or do drives/amps exist that can commutate but will accept PWM signals? (Sort of like the "direct PWMs" not sure)
My simulation shows a 8kHz control loop should do, but if I cascade the controller (like if I run a closed current drive) and then also feedback and control the setpoint really fast, there comes a point of instability. Mind you this is a very small point.
To summarize, I don't want to go with an option 1 and then regret it because option 2 will give me soo much more with some initial extra work.
Thanks for your thoughts.
RE: Closed and Open loop current control for Brushless Servo Motors
http://www.qxdesign.com/VisualModelQ.htm
RE: Closed and Open loop current control for Brushless Servo Motors
I have been using Simulink for simulations. How does it compare?
I use discrtized differential equations for every phase of the motor, at the bandwidth of interest.
RE: Closed and Open loop current control for Brushless Servo Motors
www.KilroyWasHere<dot>com
RE: Closed and Open loop current control for Brushless Servo Motors
My thought was that you probably needed to do simulations (which you are). This was based on the two choices you suggested, 1) a Power Block with you closing the current loop digitally or 2) letting the amplifier close the current loops and commutating the motor. If your primary task is to implement a control algorithm, I'd suggest option 2).
A Kollmorgen AKD amplifier can do this. Run it in current mode (the error signal to the amplifier is current). Also using a Kollmorgen motor and cables will simplify hook up.
RE: Closed and Open loop current control for Brushless Servo Motors
Regarding simulation. I believe option 2 gives me less flexibility since I cannot bypass the drives internal current PI loop, and I am limited to the BW of the Ain and Aout.
If I then adaptively control the setpoint to this drives controller there is some risk of instability depending on how fast the setpoint changes. Inherent stability comes only when the outter control loop is faster than the internal PI. Which in this case it is significantly slower due to the AD and DA conversion.
Like before, pg. 142 here http://www.kollmorgen.com/en-us/products/drives/se...
Ain has 16kHz and Aout is 4kHz. Internal PI current loop also runs at a least 16kHz.
Sim shows 16kHz is good enough. But I will have to overcome sensing at only 4Khz by adding a sensor to the motor (not really a big deal). And there is not really a better solution than to cascade the control.
However, I believe I can get more than 16kHz entire loop closure (and full motor flexibility) if I use something like:
https://www.dspace.com/en/ltd/home/products/hw/rap...
http://www.edasim.com/anacomnew/components/com_jsh...
RE: Closed and Open loop current control for Brushless Servo Motors
RE: Closed and Open loop current control for Brushless Servo Motors
I'm looking at an amp that will connect to my RT box custom made for the box.
It hase max PWM of more than 50kHz and default current feedback of 8kHz (from an Analog low pass filter), changeable to >20kHz.
There is no "current loop" as the current is closed by FPGA on my RT box.
This was the max I have seen.
I understand dSpace is known for "HIL", I have used it for this before actually.
Anything I should know?
RE: Closed and Open loop current control for Brushless Servo Motors
Factor in digital delays. Conversion times, transmission times, velocity estimation time, etc. Sometimes these delays can be significant and cause loss of phase margin.
RE: Closed and Open loop current control for Brushless Servo Motors
https://res.cloudinary.com/engineering-com/raw/upload/v1443718594/tips/Control_Modes_j6cn5b.vsd
(This is true unless you have a separate communications channel into a digital drive that is performing commutation and current loop -- say, a digital "torque-mode" drive -- that you could use to change the configuration and settings of the current loop.)
RE: Closed and Open loop current control for Brushless Servo Motors
I agree. The drive I am looking at now can get >150kHz on the feedback of current (I think it is basically an analog sensor on the motor). I think it is unreasonable to assume I will obtain this because I will have to filter at below 60kHz likely.
So if I get output updates to the motor through the drive at 20-50kHz I should be ok.
I understand there will be some conversion times added on. But at least with FPGA (which runs on my controller and feeds the drive) it will be minimal.
Thank you cswilson,
I cannot see your diagram.
I think I know what you mean by "inside". The fact that 1 phase is switched off while 2 are on periodically - we are switching the voltage (and thus current) on and off. (though the current would not drop so fast depending on the inductance) ?
I understand that commutation is fundamental to the operation of BLDC motors, but there is still for each of the 3 phases; v(t)=di/dt*L+R*i(t)+kb*w . Which means that the current is controlled directly by the voltage in each phase. Feeding back the current value (nominal or each phase), we should then be able to close the loop by providing a control voltage signal.
I know I simplified it a bit, but the fundamental dynamics should hold.
The commutation will be done by FPGA by my controller (with Hall signals from the motor). This should allow me full control of the current feedback and control of it.
Agree?
RE: Closed and Open loop current control for Brushless Servo Motors
Hmmm... The diagram was linked as a Microsoft Vizio file, not as a simple graphic. If I have time later, I will see if I can provide a better method of linking or embedding it.
What I meant by the current loop being "inside" the commutation is that the outputs of the commutation algorithm -- the commanded phase currents needed to provide the commanded torque at this rotor angle -- are inputs to the current loops.
Since we live in a world of voltage sources, the job of the current loops is to calculate the phase voltages needed to get the actual phase currents to match the commanded values as closely as possible. Usually the phase voltage command values are encoded as PWM duty cycles in the output signals.
Of course, it is possible to dispense with the current loop and use the phase outputs of the commutation algorithm directly as voltage commands. Just don't expect the resulting torque to be proportional to the command input to the commutation algorithm, and don't expect the motor to be as responsive as with a current loop.
Curt Wilson
Omron Delta Tau
RE: Closed and Open loop current control for Brushless Servo Motors
Thanks I'd appreciate to see a screen shot of the graphic is possible.
I understand this. So after this you are saying that maybe even if I compute these PWM phase voltages with FPGA it won't be as fast as a current loop closed by say an AKD or similar drive?
It would still be set in current/torque control, but instead of closing the loop directly by the drive I will use FPGA.
I will think about this some more.
RE: Closed and Open loop current control for Brushless Servo Motors
https://www.f07.th-koeln.de/imperia/md/content/per...
I like the logical relation between PWM freq. and actual BW of closed loop current loop.
RE: Closed and Open loop current control for Brushless Servo Motors
I guess I didn't make myself very clear. Performance-wise, where these algorithms are computed -- controller or drive -- is not the important thing. (We often do both in the controller and get very high performance.)
It's just that the commutation must be done before the current loop, so that if you want to do the current loop in the controller, you must also do the commutation in the controller.
My performance comment was regarding current loop versus no current loop. Without a current loop, the motor current responds to voltage with an L/R time constant. With a current loop, the effective time constant is reduced to L/(R+K), where K is the proportional current loop gain. Another way of looking at it is that the frequency of the pole of current response is increased from R/L to (R+K)/L.
RE: Closed and Open loop current control for Brushless Servo Motors
This makes perfect sense to me. If no feedback and controller (typically a PI) is used we would see a difference in performance.
Likely quite a bit IMO. I presume the factor of V/R would also apply to the nominal value.
I like the L/(R+K) estimate for closed loop response time. I will keep this in mind for sure, thanks.
I typically compute a bode plot to estimate the closed loop response.
Though, I don't have much experience with servo drives, and computing one that includes all the intricacies of the drive looks non-simplistic (for example most dynamic systems I can derive the differential equations and go from there..).
So because of this I focused on accuracy of the motor dynamic equations and estimated the drive by including discrete bandwidths for signals to and from the motor dynamics (for closed loop response).
RE: Closed and Open loop current control for Brushless Servo Motors
I managed to get the pic you referenced. Very useful.