Category Archives: 自动化

自动控制原理课程设计-全纪录

这里记录着一个渣渣“学做”课程设计的全过程,对没错,我就是个战五渣,尤其是在学习自动控制原理这方面。

这学期新开了一门课叫做《自动控制原理》,是自动化的核心课程,对,没错,老师在最开始的时候就说了,这门课,真正学懂得人不超过一个年纪的自动化里,不超过一手之数,而我,很明显就是那剩下的茫茫人海中的一员。

特别是这学期我又决定将侧重点转向web开发方面,忽略了对本专业课程的钻研,第二天上午就是自动控制原理的课,这一天晚上还依然在熬夜写php程序,对没错,这就是我,而且,一熬就是一个通宵,真不知道是该夸自己还是该骂自己,ok,废话少说,进入正题。

课程设计题目:

给出一个开环传递函数:

设计一个校正装置,使校正后系统满足以下要求

1)、校正后系统在单位斜坡响应时,稳态误差要小于0.01;

2)、校正后系统的幅值裕度;相角裕度

课程设计制作过程:

一、分析

  由题意可看出,所给的系统为“1”型系统,又由于要求(1)可知系统K的取值范围是大于等于100;因此,取K=100带入方程,并使用matlab设计原系统

  1. clear;clc;
  2. a=100;b=conv([1 0],conv([0.1 1],[0.01 1]));
  3. sys=tf(a,b)
  4. sysc=feedback(sys,1);
  5. %原系统单位阶跃响应曲线
  6. step(sysc),grid on
  7. %绘制原系统的nyquist曲线
  8. figure(2);subplot(1,2,1),nyquist(sys),grid on
  9. hold on;subplot(1,2,2),nyquist(sys),axis([-2,2,-2,2]),grid on
  10. %绘制原系统的根轨迹曲线
  11. figure(3);subplot(1,2,1),rlocus(sys),grid on
  12. hold on;subplot(1,2,2),rlocus(sys),axis([-16,2,-2,2]),grid on
二、设计矫正系统

(1)超前校正

  到底是采用超前校正还是滞后校正呢?无知的我只能一个一个的试,先采用超前矫正吧,至于如何设计,直接按照书上的指示操作,先用matlab进行代码操作

  1. clear;clc;
  2. %sys=tf(100,[0.001 0.11 1 0]);
  3. a=100;b=conv([1 0],conv([0.1 1],[0.01 1]));
  4. sys=tf(a,b)
  5. %绘制原系统的bode
  6. margin(sys)
  7. [gm1,pm1,wg1,wp1]=margin(sys);
  8. gm1; %原系统幅值裕度
  9. pm1; %原系统相角裕度
  10. wg1; %原系统穿越频率
  11. wp1; %原系统剪切频率 开环截止频率
  12. %---------矫正装置设计开始----------%
  13. pm0=45-pm1+10 %根据要求的相角裕度求补偿部分
  14. phim=pm0*pi/180; %转化成弧度数
  15. alpha=(1-sin(phim))/(1+sin(phim)) %计算超前矫正的a(阿尔法)的值
  16. gm0=-10*log10(1/alpha)
  17. %找出phase相角下,源程序bode图中的w(欧米伽)的值,并以此为矫正后系统的零点
  18. [mag,phase,w]=bode(sys);%mag幅值向量,phase相角向量,w频率向量
  19. [mu,pu]=bode(sys,w);
  20. adb=20*log10(mu);am=10*log10(alpha);
  21. wc=spline(adb,w,am)
  22. T=1/(wc*sqrt(alpha))
  23. nc=[T,1];
  24. dc=[alpha*T,1];
  25. sysc=tf(nc,dc) %校正后系统
  26. %---------矫正系统设计END-----------%
  27. %sys原系统,sysc校正装置,system校正后系统
  28. system=sys*sysc
  29. hold on,margin(system),grid on
  30. hold on,margin(sysc),grid on
  31. %figure(2)
  32. %margin(system)
  33. [gm2,pm2,wg2,wp2]=margin(system);
  34. gm2; %幅值裕度
  35. pm2; %相角裕度
  36. wg2; %穿越频率
  37. wp2; %剪切频率 开环截止
  38. figure(2)
  39. %校正后系统的单位阶跃响应曲线
  40. x=feedback(system,1);step(x)
  41. figure(3)
  42. %校正后系统的根轨迹曲线
  43. rlocus(system)

  但是最终获得的矫正后系统并不是满足要求,要求中幅值裕度要达到20dB,相角裕度要达到45deg,但是,上面这个系统设计出来的幅值裕度和相角裕度分别是11.7dB和37.2deg,到这里就可以确定,超前校正是行不通的,但是,还需要一个理由,于是,将a(阿尔法)直接赋值为0.01,也就是看一下,超前矫正的极限是多少,能不能满足要求。

  将alpha=0.01带入超前矫正系统时,发现,得到的校正后系统的幅值裕度是18.6dB,相角裕度是44.3deg,还不满足要求,可见,这个系统不适合使用超前校正,换!换滞后校正!

(2)滞后校正

  同样根据课本上对滞后校正的描述仿写matlab程序

  1. num=100;
  2. den=conv([1,0],conv([0.1,1],[0.01,1]));
  3. sys0=tf(num,den);
  4. [gm0,pm0,wg0,wp0]=margin(sys0)
  5. %计算截止频率Wc
  6. gama=45;gama1=gama+6;
  7. [mu,pu,w]=bode(sys0)
  8. wc=spline(pu,w,(gama1-180))
  9. %计算B(贝塔)的值
  10. na=polyval(num,j*wc);
  11. da=polyval(den,j*wc);
  12. g=na/da;g1=abs(g);h=20*log10(g1);
  13. beta=10^(h/20)
  14. T=10/wc;sysc=tf([T,1],[beta*T,1])
  15. %绘制校正装置的bode
  16. bode(sysc),grid on
  17. %sys0为原系统,sysc为校正装置,得到校正后系统sys
  18. sys=sys0*sysc;hold on
  19. %得到校正后系统的bode图并求出其幅值裕度和相角裕度
  20. figure(2);margin(sys),grid on
  21. %绘制校正后系统的单位阶跃响应曲线
  22. figure(3);sys1=feedback(sys,1);step(sys1),grid on
  23. %绘制校正后系统的nyquist曲线并对其进行局部放大
  24. figure(4);subplot(1,2,1),nyquist(sys),grid on
  25. subplot(1,2,2),nyquist(sys),axis([-0.3,0.3,-0.03,0.03]),grid on
  26. %绘制校正后系统的根轨迹曲线并对其进行局部放大
  27. figure(5);subplot(1,2,1),rlocus(sys),grid on
  28. hold on;subplot(1,2,2),rlocus(sys),axis([-16,2,-2,2]),grid on
    德尔塔取6度,后面的系数取十分之一,校正后系统的幅值裕度是21.5dB,相角裕度是45.7deg,满足要求。
 三、总结经验
  当系统幅值裕度和相角裕度与要求的校正后系统差距较大时,先考虑滞后校正。