Matlab 仿真——直流电机速度控制(1)直流电机建模

Matlab 仿真——直流电机速度控制(1)直流电机建模

该系列我们学习如何对直流电机进行速度控制,第一节我们先分析一个简化的电机模型,并推导它的转换方程和状态空间方程,然后定义我们要实现的速度控制需要达到的性能。

1. 物理模型

一个直流电机模型如下所示:
在这里插入图片描述
为了简化讨论,假设转子和转轴都是刚体,转子受到的磁场恒定,转子受到的摩擦为粘性摩擦,即受到的摩擦力与速度成正比。

假设该电机的物理参数为:

(J) 转子的转动惯量 0.01 kg.m^2
(b) 电机粘性摩擦常数 0.1 N.m.s
(Ke) 电动势常数 0.01 V/rad/sec
(Kt) 电机扭矩常数 0.01 N.m/Amp
(R ) 电阻 1 Ohm
(L) 电感 0.5 H

2. 系统方程

有了物理模型和参数之后,我们开始推导该电机的系统方程。一般情况下直流电机的扭力与电流成正比(磁场恒定),那么我们有:
T = K t i T = K_{t} i T=Kti

反电动势与转速成正比:
e = K e θ ˙ e = K_{e} \dot{\theta} e=Keθ˙

不失一般性,我们令Kt=Ke,统统用K表示。根据牛顿第二定律和基尔霍夫电压定律得到:

J θ ¨ + b θ ˙ = K i J\ddot{\theta} + b \dot{\theta} = K i Jθ¨+bθ˙=Ki
L d i d t + R i = V − K θ ˙ L \frac{di}{dt} + Ri = V - K\dot{\theta} Ldtdi+Ri=VKθ˙

2.1 转换方程表达

对上述两式进行拉氏变换得到:
s ( J s + b ) Θ ( s ) = K I ( s ) s(Js + b)\Theta(s) = KI(s) s(Js+b)Θ(s)=KI(s)
( L s + R ) I ( s ) = V ( s ) − K s Θ ( s ) (Ls + R)I(s) = V(s) - Ks\Theta(s) (Ls+R)I(s)=V(s)KsΘ(s)
通过消除电流项得到:
P ( s ) = Θ ˙ ( s ) V ( s ) = K ( J s + b ) ( L s + R ) + K 2 [ r a d / s e c V ] P(s) = \frac {\dot{\Theta}(s)}{V(s)} = \frac{K}{(Js + b)(Ls + R) + K^2} \qquad [ \frac{rad/sec}{V}] P(s)=V(s)Θ˙(s)=(Js+b)(Ls+R)+K2K[Vrad/sec]

2.2 状态空间表达

我们选择转速和电流作为我们的状态变量得到z状态空间表达:
d d t [ θ ˙   i ] = [ − b J K J   − K L − R L ] [ θ ˙   i ] + [ 0   1 L ] V \frac{d}{dt}\left [\begin{array}{c} \dot{\theta} \\ \ \\ i \end{array} \right] = \left [\begin{array}{cc} -\frac{b}{J} & \frac{K}{J} \\ \ \\ -\frac{K}{L} & -\frac{R}{L} \end{array} \right] \left [\begin{array}{c} \dot{\theta} \\ \ \\ i \end{array} \right] + \left [\begin{array}{c} 0 \\ \ \\ \frac{1}{L} \end{array} \right] V dtdθ˙ i=Jb LKJKLRθ˙ i+0 L1V
y = [ 1 0 ] [ θ ˙   i ] y = [ \begin{array}{cc}1 & 0\end{array}] \left [ \begin{array}{c} \dot{\theta} \\ \ \\ i \end{array} \right] y=[10]θ˙ i

3. 设计要求

现在我们确定电机的性能参数,并根据参数来设计控制器。首先我们希望它输入1V电压的时候稳定状态下保持0.1 rad/sec的转速,稳定时间2s,稳态误差不超过1%,并且受到阶跃输入干扰的时候超调小于5%。根据以上要求我们总结出以下需求:

  • 稳定时间<2s
  • 超调<5%
  • 稳态误差<1%

4. Matlab表达

接下来我们在Matlab里面表达出该系统

4.1 转换方程表达

%motor parameter
J = 0.01;
b = 0.1;
K = 0.01;
R = 1;
L = 0.5;
%motor tf function
s = tf('s');
P_motor = K/((J*s+b)*(L*s+R)+K^2)

输出
在这里插入图片描述

4.2 状态空间表达

A = [-b/J   K/J
    -K/L   -R/L];
B = [0
    1/L];
C = [1   0];
D = 0;
motor_ss = ss(A,B,C,D)

输出
在这里插入图片描述
下一节我们用Matlab来分析这个系统。

5. 引用

https://ctms.engin.umich.edu/CTMS/index.php?example=MotorSpeed&section=SystemModeling

  • 31
    点赞
  • 228
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值