DC model motor and viscous damping: behavior inconsistent?
DC model motor and viscous damping: behavior inconsistent?
(OP)
I'm unclear on why a motor model's step response isn't what i'd expect, when a damping coefficient (b) is varied.
With equivalent closed loop gains, I'd expect a shorter risetime for a motor with less damping...but instead, it looks like closed-loop step responses are identical to that of a higher damped system.
Say there's a DC motor with a Current I input, Angular Velocity θ_dot output. Optional Example: the "Load" block in Link (Ignore the Armature block).
Then θ_dot /I = Kt / (Js + b).
b is the damping coefficient, J the moment of inertia. Higher b means more damping, lower means less damping.
Prelim Question) In terms of step responses given a pole placement, write Kt / (Js + b) in time-constant form K / (Ts+1) :
(Kt/b) / [ (J/b)s + 1) ] --> T = J/b. Since T = 1/(-Pole), if T gets smaller as b grows larger, the Pole gets larger...so faster response?
Which doesn't make sense. Larger b should lead to a pole closer to the origin (since larger damping == slower response). Why is this not consistent?
1) Now, regarding the identical closed-loop responses. Say b = 1e-5, Kt = 10, J = 1. Transfer Function TF =
10
---------
s + 1e-5
Open-loop and closed-loop step responses, with a simple closed-loop feedback gain of 1:
(See Matlab code at end of post if desired)


2) Say b decreases by a factor two (less damping) with b = 1/2 e-5. Transfer Function TF =
10
---------
s + 0.5e-5
Open-loop and closed-loop step responses:


3) As expected, for open loop responses, the time to reach the same amplitudes (eg ~6e6) is indeed shorter for the lower damping case.
But the closed loop responses are identical.
Why isn't the risetime to 1 faster with lower b?
Code, just in case:
b = 1e-5; %or 0.5e-5
J = 1;
Kt = 10;
s = tf('s');
TF = Kt / (J*s + b);
step(TF);
title(['Open Loop, b=' num2str(b)]);
K = 1;
TF_FB = feedback(TF*K, 1);
figure;
step(TF_FB);
title(['Closed Loop, b=' num2str(b)]);
With equivalent closed loop gains, I'd expect a shorter risetime for a motor with less damping...but instead, it looks like closed-loop step responses are identical to that of a higher damped system.
Say there's a DC motor with a Current I input, Angular Velocity θ_dot output. Optional Example: the "Load" block in Link (Ignore the Armature block).
Then θ_dot /I = Kt / (Js + b).
b is the damping coefficient, J the moment of inertia. Higher b means more damping, lower means less damping.
Prelim Question) In terms of step responses given a pole placement, write Kt / (Js + b) in time-constant form K / (Ts+1) :
(Kt/b) / [ (J/b)s + 1) ] --> T = J/b. Since T = 1/(-Pole), if T gets smaller as b grows larger, the Pole gets larger...so faster response?
Which doesn't make sense. Larger b should lead to a pole closer to the origin (since larger damping == slower response). Why is this not consistent?
1) Now, regarding the identical closed-loop responses. Say b = 1e-5, Kt = 10, J = 1. Transfer Function TF =
10
---------
s + 1e-5
Open-loop and closed-loop step responses, with a simple closed-loop feedback gain of 1:
(See Matlab code at end of post if desired)


2) Say b decreases by a factor two (less damping) with b = 1/2 e-5. Transfer Function TF =
10
---------
s + 0.5e-5
Open-loop and closed-loop step responses:


3) As expected, for open loop responses, the time to reach the same amplitudes (eg ~6e6) is indeed shorter for the lower damping case.
But the closed loop responses are identical.
Why isn't the risetime to 1 faster with lower b?
Code, just in case:
b = 1e-5; %or 0.5e-5
J = 1;
Kt = 10;
s = tf('s');
TF = Kt / (J*s + b);
step(TF);
title(['Open Loop, b=' num2str(b)]);
K = 1;
TF_FB = feedback(TF*K, 1);
figure;
step(TF_FB);
title(['Closed Loop, b=' num2str(b)]);





RE: DC model motor and viscous damping: behavior inconsistent?
3) One of the effects of negative feedback is that it reduces the sensitivity of the closed-loop transfer function to system parameter variation. You've just seen that effect using your closed loop simulations by realizing the outputs are essentially the same even with a factor of 2 difference in your damping coefficient. The closed-loop TF is given by KKt/[Js + (b+KKt)]. The product of proportional controller gain K and motor gain Kt is high by comparison with b (10 vs 1e-5 or 0.5e-5) and dominates their sum in the denominator - meaning the closed-loop pole locations for both values of b are basically the same, and the DC gain is KKt/[(b+KKt)], essentially 1. Hence, you get (approximately) the same step response. If the product of KKt was closer to the value of b, changes in b would have more of an effect on the closed-loop response speed and steady-state gain.
xnuke
"Live and act within the limit of your knowledge and keep expanding it to the limit of your life." Ayn Rand, Atlas Shrugged.
Please see FAQ731-376: Eng-Tips.com Forum Policies for tips on how to make the best use of Eng-Tips.
RE: DC model motor and viscous damping: behavior inconsistent?
Regarding 3), say I change b by a factor 10 to make its impact visible on feedback.
b=1 now, so Transfer Function TF = 10 / (s + 1)
Here are the open- and closed-loop step responses, with a simple closed-loop feedback gain of 1. For closed-loop, the step input is scaled by the inverse CL-TF@s=0: ( 1/[Kt / (b+Kt)] ), to give the same final target value of 1 for both the b=1 and b=10 case for easier comparison. (See Matlab code at end of post)
b = 10, so Transfer Function TF = 10 / (s + 10)
Unexpectedly, after scaling the step input so that both reach 1, the closed-loop risetime is longer for the lower damping case. Why is the risetime faster with higher b?
If there is no input step scaling -- that is, just keep StepAmplitude=1 -- then the closed-loop ristime of the b=1 case is indeed faster than the b=10 case, but the outputs would settle at different values: 0.91 for b=1, 0.5 for b=10. If steady-state tracking to a specific output value (eg =1) is needed, then the input scaling seems to be required, but that also causes the behavior to be opposite what's expected, as above...
I see that the SS outputs are 0.91 and 0.5 because the Closed-Loop TFs are 10/s+11 which is 0.91 when s=0 (steady-state), and 10/s+20, which is 0.5 when s=0 (steady-state), but it's not clear how to compare results, then, without input scaling...which seems to flip the behavior
b = 1; %or 10
J = 1;
Kt = 10;
s = tf('s');
TF = Kt / (J*s + b);
step(TF);
title(['Open Loop, b=' num2str(b)]);
K = 1;
TF_FB = feedback(TF*K, 1);
figure;
stepOpt = stepDataOptions('StepAmplitude', 1 / (Kt / (b+Kt)) );
step(TF_FB, stepOpt)
%above 2 lines could also be unscaled: step(TF_FB);
title(['Closed Loop, b=' num2str(b)]);
Code, just in case:
RE: DC model motor and viscous damping: behavior inconsistent?
Between
1/(s+2) --> (1/2) / [(1/2)s + 1]
and
1/(s+4) --> (1/4) / [(1/4)s + 1],
the 2nd function has the faster pole, since T = 1/-p. Here p is the pole, and T the time constant. For the 2nd function, T = 1/4, so a = -4.
So the pole of -4 is faster than the pole of -2, so the 2nd TF has a faster response.
So far this makes sense.
BUT, with a higher viscous damping term b in the motor equation Kt / (Js + b), as b grows larger, the equation above shows a faster pole than that of a smaller b.
That is counter-intuitive, I'd expect a faster pole as b grows smaller (less friction, so faster response), instead of a faster pole as b grows larger.
At the extreme, infinite damping means no motor movement, so why does that give an infinitely fast pole? 1/(s+inf) -> (1/inf) / ((1/inf)s + 1) --> p = -inf
Likewise, zero damping seems like it should give faster response than infinite damping.
Why is this opposite of the expected outcome?
RE: DC model motor and viscous damping: behavior inconsistent?
What may be confusing is that what you are calling 'faster response', is not necessarily rotational speed. If you give your infinite damping system a step input it has fast response because it's already at it's steady state speed! If you have a system with low damping, and all other parameters identical, it will take a long time to reach it's steady state speed because the speed will be much greater.
RE: DC model motor and viscous damping: behavior inconsistent?