• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

Matlab 仿真——直流电机速度控制(5)通过频域分析进行控制器设计

人工智能 chuchu 1307次浏览 0个评论

文章目录

 

    • Matlab 仿真——直流电机速度控制(5)通过频域分析进行控制器设计
      • 1. 受控对象与设计要求
      • 2. 画出原始波特图
      • 3. 增加P增益
      • 4. 闭环时域响应
      • 5. 添加一个Lag补偿器
      • 6. 几个问题
      • 7. 参考

 

Matlab 仿真——直流电机速度控制(5)通过频域分析进行控制器设计

 

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)

  设计需求(阶跃响应):

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

 

2. 画出原始波特图

  基于频域分析的控制器设计主要思想是用开环转换方程的波特图来估计闭环响应,通过增加控制器改变开环波特图的方式,以达到改变闭环响应的效果。我们先看一下没有控制器的电机系统的开环波特图  

bode(P_motor)
grid
title('Bode Plot of the Original Plant')

 
Matlab 仿真——直流电机速度控制(5)通过频域分析进行控制器设计  

3. 增加P增益

  从上述波特图我们发现,该系统有无穷大的幅值裕度与相位裕度,表明了系统稳定且有最小的超调。但是由于幅值图像对于任何频率都在0 dB下面,那么就带来了问题,那就是该系统难以跟踪没太大误差的参考信号[^1],因此我们需要在保持一定相位裕度的同时增大系统的增益。   一般来说60度的相位裕度对于稳定裕度是足够的。由上述波特图我们看得到,要满足60°的相位裕度,穿越频率大概为 10rad/sec。所以新加的增益要能够使幅值穿越频率发生在10 rad/sec处,也就是现在-40 dB的地方。我们运行以下代码查看该处的相位和幅度  

[mag,phase,w] = bode(P_motor,10)

 
Matlab 仿真——直流电机速度控制(5)通过频域分析进行控制器设计   因此,幅值穿越频率发生在10 rad/sec处时相位裕度为 180-123.7=56.3 度,此时的幅度为 20log0.0139=-37.1dB。因此为了让幅值穿越频率发生在此,我们需要给系统一个1/0.0139 = 72的增益。  

C = 72;
margin(C*P_motor);

 
Matlab 仿真——直流电机速度控制(5)通过频域分析进行控制器设计  

4. 闭环时域响应

  给原系统增加了一个增益之后,我们看一下时域性能  

sys_cl = feedback(C*P_motor,1);
t = 0:0.01:10;
step(sys_cl,t), grid
title('Step Response with Proportional Gain = 72')
stepinfo(sys_cl)

 
Matlab 仿真——直流电机速度控制(5)通过频域分析进行控制器设计   稳态误差和超调都很大,我们可以减小系统增益来减小超调,但是这会导致稳态误差也更大。一个Lag 补偿器在这里能够很好地帮助我们解决这个问题。  

5. 添加一个Lag补偿器

  我们考虑添加如下的 Lag 补偿器  
Matlab 仿真——直流电机速度控制(5)通过频域分析进行控制器设计   该补偿器有个1/0.01=100的直流增益,意味着它把系统的位置误差常数提升了100倍,因此可以相应地减少稳态误差。实际上它也允许了我们适当减少上面得到的72这个增益,这里我们用45。此外,由于极点和零点的转折频率比当前的增益穿越频率10 rad / sec低十倍或十倍以上,因此补偿器产生的相位滞后不会对性能产生很大的不利影响。于是我们画出该补偿器的波特图  

C = 45*(s + 1)/(s + 0.01);
bode(C)
grid
title('Bode Plot of the Lag Compensator')

 
Matlab 仿真——直流电机速度控制(5)通过频域分析进行控制器设计   然后我们看看添加了补偿器之后的系统的时域响应  

sys_cl = feedback(C*P_motor,1);
t = 0:0.01:10;
step(sys_cl,t), grid
title('Step Response with Lag Compensator')
stepinfo(sys_cl)

 
Matlab 仿真——直流电机速度控制(5)通过频域分析进行控制器设计   满足了我们的设计要求  

6. 几个问题

 

  1. 怎么理解幅值图像都在0 dB下面的系统难以跟踪大误差信号?
  2. 60°的相位裕度比较适合的依据?

 

7. 参考

 

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


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明Matlab 仿真——直流电机速度控制(5)通过频域分析进行控制器设计
喜欢 (0)

您必须 登录 才能发表评论!

加载中……