I'm currently studying DC motors and I do have some doubts about the dynamics of it.

As per explained on [Guru, B.S. and Hiziroglu, H.R., 2001. Electric machinery and transformers (Vol. 726). New York: Oxford university press, Chapter 11 on Field-Controlled DC Motors], there are three differential equations that rule the system:

  • \$V_f = R_f i_f(t) + L_f\frac{di_f(t)}{dt}\$
  • \$ K_ti_fw_m(t) = V_s -R_ai_a(t) - L_a\frac{di_a(t)}{dt}\$
  • \$ K_ti_f(t)i_a(t) = T_L + Dw_m(t) + J\frac{dw_m(t)}{dt}\$


  1. At this moment, on the second bullet, is there a reason not to consider \$ i_f \$ time-varying (shouldn't it be \$ i_f(t)\$ or was it just a typo)?

Moving on, I do understand that the time constant on the field circuit is much much smaller than on the motor (mechanical) circuit - it makes sense as the latter has a mechanical influence on it. Therefore it does make sense to consider that the field current is already on its steady value when solving the armature equations (and it also solves the "\$i_fw_m(t)\$" & "\$i_f(t)i_a(t)\$" problem on second and third bullets). Hence:

  • \$V_f = R_f i_f(t) + L_f\frac{di_f(t)}{dt}\$
  • \$ K_tI_fw_m(t) = V_s -R_ai_a(t) - L_a\frac{di_a(t)}{dt}\$
  • \$ K_tI_fi_a(t) = T_L + Dw_m(t) + J\frac{dw_m(t)}{dt}\$

where \$I_f\$ is now the steady value on the field current after any field voltage alteration, \$D\$ and \$J\$ are viscous friction and inertia constants respectively, and \$K_t\$ the motor constant.

Now, consider that this separately excited DC Motor has both sources controlled by independents switching mechanisms via PWM. I've tried to put together the differential equations in the following way (considering \$ i_f\$, \$i_a\$ and \$w_m\$ as state variables respectively):

  • \$L_f\frac{di_f(t)}{dt} = -R_fi_f(t) + V_f\$
  • \$L_a\frac{di_a(t)}{dt} = -R_ai_a(t) - K_tI_fw_m(t) + V_s \$
  • \$J\frac{dw_m(t)}{dt} = K_tI_fi_a(t) - Dw_m(t) - T_L\$

Resulting in:

$$ \begin{bmatrix} \dot{x_1} \\ \dot{x_2} \\ \dot{x_3} \end{bmatrix} = \begin{bmatrix} \frac{-R_f}{L_f} & 0&0 \\ 0&\frac{-R_a}{L_a}&\frac{-K_tI_f}{L_a} \\ 0&\frac{K_tI_f}{J}&\frac{-D}{J} \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \\ x_3 \end{bmatrix} + \begin{bmatrix} \frac{1}{L_f}&0&0\\ 0&\frac{1}{L_a}&0\\ 0&0&0 \end{bmatrix} \begin{bmatrix} V_f\\ V_s\\ 0 \end{bmatrix} + \begin{bmatrix} 0&0&0\\ 0&0&0\\ 0&0&\frac{-1}{J} \end{bmatrix} \begin{bmatrix} 0\\ 0\\ T_L \end{bmatrix} $$


  1. Are the above matrices correct or have I done something wrong? It surely feels strange.

which resembles:

  • \$\dot{x}=Ax+Bu+Bw\$

  • \$y = Cx+Du\$


  1. The purpose of this motor is to either keep its shaft with zero angular speed (\$T_{motor} = T_{load}\$) or rotate its shaft when required (\$ T_{motor} > T_{load}\$). The feedback signal is \$w_m\$ and \$D=0\$. If I consider \$ C = \begin{bmatrix} 1 & 1 &1 \end{bmatrix}\$ and apply a step on the system, the graphs seems crazy to me and I can't interpret it. How would you interpret it? (please feel free to tell me that it's wrong due to some mistake I've done).
  2. In the case everything is correct, how could one find a solution playing with both \$V_s\$ and \$V_f\$ to track a \$\omega_{ref}\$ and have a lowest-energy control?

Note: \$w\$ should be \$\omega\$ [rad/s].

Note2: \$K_t = K_a K_f\$ (operation in linear region of mag.characteristic)

  • \$\begingroup\$ Please edit your question to clarify what you mean by "balance the control". I suspect that you're looking for a control solution that plays with both \$V_s\$ and \$V_f\$ to reach some optimum -- either the fastest control, or the lowest-energy control, or some other set of constraints. But you have to tell us. \$\endgroup\$
    – TimWescott
    Sep 12, 2021 at 15:41
  • \$\begingroup\$ @TimWescott, my point with that question is to track \$\omega_{ref}\$ and indeed find an optimum value of both \$V_s\$ and \$V_f\$ to do so, while mitigating damages on the motor and/or controller itself. I believe this need is achieved with your suggestion of lowest-energy control? \$\endgroup\$ Sep 12, 2021 at 20:45
  • \$\begingroup\$ Regarding the lowest energy control. I believe you can use a Linear Quadratic Regulator (LQR) to minimize parameters of interest. \$\endgroup\$ Sep 14, 2021 at 1:44

3 Answers 3


At this moment, on the second bullet, is there a reason not to consider if time-varying (shouldn't it be \$i_f(t)\$ or was it just a typo)?

I would consider it a typo.

I've tried to put together the differential equations in the following way (considering if, \$i_a\$ and \$\omega_m\$ as state variables respectively):

If you are going to allow \$i_f\$ and \$i_a\$ to vary independently, then that's probably an error. Either you hold the armature current constant with a loop fast enough that you can ignore its dynamics in the field-current control loop, or you hold the field current constant. Either way, the line in the state-space equation that pertains to that current would drop out of your state-space model, which would then drop down to two states (the other current, and \$\omega(t)\$.

The "full" state-space equation is nonlinear:

$$\dot {\mathbf x}(t) = f \left(\mathbf x, t \right) = \begin{bmatrix} \frac{V_f(t) - R_f i_f(t)}{L_f} \\ \frac{K_t i_f(t) \omega_m(t) + R_a i_a(t) - V_s(t)}{L_a} \\ \frac{K_t i_f(t) i_a(t) - T_L - D\omega_m(t)}{J} \end{bmatrix} \tag 1$$

where \$\mathbf x = \begin{bmatrix}i_f(t) & i_a(t) & \omega_m(t) \end{bmatrix}^T\$

If you want to investigate the advantages and complexities of controlling both the field and the armature current, then you're stuck with (1). For the purposes of simulation, you'd take (1) and plug it into an ODE solver. For the purposes of observing the states, you'd probably have to use an extended Kalman filter, or some simplification of it based on gain scheduling.

The feedback signal is \$\omega_m\$ ... If I consider \$C = \begin{bmatrix}1 & 1 & 1\end{bmatrix}\$

Regardless how you're modeling, this is wrong. This choice for \$C\$ gives you \$y(t) = i_a(t) + i_f(t) + \omega_m(t)\$. The units aren't even consistent.

To pick out \$\omega_m\$ from \$\mathbf x\$, you'd use \$C = \begin{bmatrix}0 & 0 & 1\end{bmatrix}\$.

In the case everything is correct, how could one balance the control using the PWMs on \$V_s\$ and \$V_f\$?

I think this is a research problem in itself. If it's a solved problem, I'm not familiar with it.

If you could control \$i_a\$ and \$i_f\$ directly, without concerns about bandwidth, you could posit a torque controller where you're controlling the armature torque: $$T_a = K_t i_a i_f. \tag 2$$ That gives you a constraint on the relationship between \$i_a\$ and \$i_f\$. Then you'd write a power dissipation equation, $$p(t) = i_a(t)^2 R_a + i_f(t)^2 R_f. \tag 3$$

Then you can write a control law for \$\omega_m\$ with \$T_a\$ as an input. For any given value of \$T_a\$, you can (2) and (3) to calculate values of \$i_a\$ and \$i_f\$ that satisfy (2) and minimizes (3).

The problem you run into (and the reason I'm not giving you an answer) is that you immediately run into the problem that when the commanded torque goes from positive to negative, the dynamics of the control of \$i_a\$ and \$i_f\$ suddenly can't be ignored, because the sign of the torque depends on the signs of both of these quantities. With luck, if you have two fast-enough loop you'll be able to just command a torque, calculate target currents, apply those currents as commands to their respective loops, and the torque will be close enough.

With un-luck, you'll get into situations where you want your torque to be large and positive, but goes through an excursion where it's large and negative, or small when it should be large, etc.

Even if two simple current-control loops would do the job, it would still take some man-hours to verify that this is, indeed, the case.


I reviewed "Modeling and High Performance Control of Electric Machinery" by Chiasson pg 44-46 and I believe your state equations are not correct. I'm not going to go through the derivation unless your really want it but \$\lambda_f(i_f)=L_fi_f\$. This field inductance term is missing from your state equations.

\begin{equation} L\frac{di}{dt}=-Ri+K_mL_fi_f\omega+V_s\\ J\frac{d\omega}{dt}=K_mL_fi_fi-\tau\\ L_f\frac{di_f}{dt}=-R_fi_f+V_f \end{equation}

  • \$\begingroup\$ Yes, you're right. I failed to mention in my question that I was considering that the operation is in the linear region of its magnetization characteristic so that \$ K_t = K_aK_f\$ \$\endgroup\$ Sep 13, 2021 at 16:23

Please edit the question and correct if I understand \$w\$ is the angular speed, so the correct symbol is \$\omega\$ or \$\Omega\$.

Moving on, I do understand that the time constant on the field circuit is much much smaller than on the armature circuit

I would say it is right the opposite.

Therefore it does make sense to consider that the field current is already on its steady value when solving the armature equations

That's correct, since you don't apply armature voltage before the field has set.

\$ K_ti_f \Omega_m(t) = V_s -R_ai_a(t) - L_a\frac{di_a(t)}{dt}\$

Please check if that is correct, I don't understand how \$Nm/s\$ became volts, it's actually volt amperes (VA), so the current shouldn't be there.

  • \$\begingroup\$ I would assume that \$K_t\$ for a field-wound motor would have dimensions \$N \cdot m / A^2\$, because the torque of a variable field motor is field current multiplied by armature current multiplied by some constant, so a useful \$K_t\$ would be \$K_t = \frac{T_a}{i_a i_f}\$. \$\endgroup\$
    – TimWescott
    Sep 12, 2021 at 15:33
  • \$\begingroup\$ @TimWescott This is plausible. However also signs seems not correct, so at this point I don't understand. The OP shall copy/paste the original equations. \$\endgroup\$ Sep 12, 2021 at 15:38
  • \$\begingroup\$ @TimWescott Sorry, the signs are correct. It makes sense for Kt Nm/A^2. \$\endgroup\$ Sep 12, 2021 at 15:44
  • 1
    \$\begingroup\$ @MarkoBuršič, thanks I cleared that doubt on time constants. The correct information is that the field time constant is actually much smaller than the time constant that is dependent on mechanical components (mechanical time constant of the motor). \$\endgroup\$ Sep 13, 2021 at 17:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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