I need to experimentally set the \$k_p\$ and \$k_i\$ parameters of PI controllers for the DQ-axes of a vector controlled BLDC motor. I have been looking for papers and application notes proposing practical tuning and fine tuning techniques, but could not find much.

control architecture

Because the DQ-axes influence each other, I feel I cannot treat the two completely separately.

This is how I currently do it. For each point, I apply a 1 A amplitude step response for about 1 second, having the motor reaching a speed of about 400 rad/s:

  1. Tune \$k_{pq}\$
  2. Tune \$k_{pd}\$
  3. Tune \$k_{iq}\$
  4. Tune \$k_{id}\$
  5. Reiterate all gains until they result into instability, then settle them to 80% of their value.

The biggest challenge I face is that at locked rotor, or applying the step to \$i_{d}\$, closed-loop dynamics are extremely easy to shape to my desires, but if I let the motor spin at high velocities (more than 400 rad/s in my case) large disturbances begin to appear (where they come from is a longer and unrelated story) and these can turn my closed-loop systems unstable.

Are there good practical tuning rules for parameters of such control architecture?

  1. Tune kpq
  2. Tune kpd
  3. Tune kiq
  4. Tune kiq # typo... expecting to see kid

Why do you feel the need to tune D and Q separately? D-component is non-torque producing current which manifests itself in the ABC reference frame as a phase shift. Why is this important? well it depends on whether you intentionally require D-component or not...

If for instance you wanted field weakening then yes you would want to control the D-component however this isn't the case here as you have a fixed D-current demand of 0, the standard method. In doing so the displacement power factor is minimized.

Why state this... well the four listed steps is implying independent tuning steps for D and Q which opens the possibility of different frequency response between the D control and the Q control. Think for a minute what this will result in? if the D-control had a bandwidth a 10th of the Q-control, there would be a lag in controlling the D-component to zero resulting in unwanted D voltage/current for a longer period of time during and after acceleration resulting in a sluggish performance, inefficiency and possibly stability considerations.

Traditionally the Q and the D share the same control parameters ( note: not always the case as there are benefits in limiting the D-demand).

So if it can be accepted that \$K_{pq} \equiv K_{pd}\$ and \$K_{iq} \equiv K_{id}\$ how to tune? there are a couple of empirical methods (Ziegle-Nichols, Cohen-Coon) and these are useful if you do not know the plant, but you should. in this instance the plant is the line-line resistance and inductance of your machine (at rated current)

The plant transfer function is thus

\$\frac{I(s)}{V(s)} = \frac{1}{Ls + R} \$ which is of the form: \$ \frac{K_{dc}}{\tau s + 1}\$

\$K_{dc} = \frac{1}{R}\$
\$ \tau = \frac{L}{R}\$

Consider the classic close loop block diagram

enter image description here

where in this instance H = -1 and G = P*G (plant time Gain)

The canonical form of a feedback control system is thus: \$ \frac{G}{1+G}\$

A PI controller has a transfer function equal to

\$C(s) = K_p + \frac{K_i}{s} = \frac{K_p\cdot s + K_i}{s}\$

\$P(s) = \frac{K_{dc}}{\tau s + 1}\$

Thus: \$G(s) = C(s)\cdot P(s) = \frac{K_p\cdot s + K_i}{s} \cdot \frac{K_{dc}}{\tau s + 1}\$

The the feedback control system is:

\$\frac{Y(s)}{X(s)} = \frac{G(s)}{1 + G(s)} = \frac{K_{dc}\cdot K_p\cdot s + K_{dc}\cdot K_i}{\tau \cdot s (1+K_{dc}\cdot K_p)\cdot s + K_{dc}\cdot K_i}\$

This can be rearranged into one of the many standard forms:

\$ \frac{ \frac{K_p}{K_i}\cdot s + 1} { \frac{\tau}{K_{dc} \cdot K_i}\cdot s^2 + \frac{1 + K_{dc}\cdot K_p}{K_{dc}\cdot K_i} \cdot s + 1} \$

With a desired damping factor and a target resonance frequency, Ki and Kp can be determined to match your known plant.

  • \$\begingroup\$ Thank you for your answer. A problem I face is that tuning the gains assuming a simple RL behaviour does not suffice. We have disturbances appearing with velocity, and increase with them. At a certain speed (say 300 rad/s) controllers purely tuned on electrical response fail to withstand the disturbances and the current behaviour gets unstable. What I ended up needing to do is empirically tune the gains so that I can at least maintain a stable system at higher speed ranges. I wondered how other people tackled this sort of issues in industry, because I suspect stronger feedback is not the way. \$\endgroup\$ – raggot Jun 15 '18 at 8:34
  • \$\begingroup\$ Btw, I fixed my typo but found one in yours, too: Kpq≡Kid and Kiq≡Kpd. Easy to get lost with these pedices! \$\endgroup\$ – raggot Jun 15 '18 at 8:36
  • \$\begingroup\$ Typo corrected :) \$\endgroup\$ – JonRB Jun 17 '18 at 12:19
  • \$\begingroup\$ as to the disturbance from the backEMF... yes this does impact the current loop as it as a velocity dependant disturbance. How is this dealt with well... For starts turn hte current loop as I describe (or similar methods). This is the current loop response. Then expand the TF to cover the disturbance and check its response. If the system has a outer speed loop and its bandwidth is 1/10 of the current this shouldn't impact that much. IF it does however then either a feedforward term is added or a more detailed TF is derived with the disturbance \$\endgroup\$ – JonRB Jun 17 '18 at 12:22
  • \$\begingroup\$ I am almost always in a position where I have a model of the plant (R,L, Kt etc) and equally have a bandwidth & a desired gain-phase target. As a result analytical turning is viable. If these parameters are not know OR you cannot arbitrarily choose reasonable values then Ziegle-Nichols, Cohen-Coon is a viable place to start \$\endgroup\$ – JonRB Jun 17 '18 at 12:24

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.