这里记录着一个渣渣“学做”课程设计的全过程,对没错,我就是个战五渣,尤其是在学习自动控制原理这方面。
这学期新开了一门课叫做《自动控制原理》,是自动化的核心课程,对,没错,老师在最开始的时候就说了,这门课,真正学懂得人不超过一个年纪的自动化里,不超过一手之数,而我,很明显就是那剩下的茫茫人海中的一员。
特别是这学期我又决定将侧重点转向web开发方面,忽略了对本专业课程的钻研,第二天上午就是自动控制原理的课,这一天晚上还依然在熬夜写php程序,对没错,这就是我,而且,一熬就是一个通宵,真不知道是该夸自己还是该骂自己,ok,废话少说,进入正题。
课程设计题目:
给出一个开环传递函数:
设计一个校正装置,使校正后系统满足以下要求
1)、校正后系统在单位斜坡响应时,稳态误差要小于0.01;
2)、校正后系统的幅值裕度;相角裕度
。
课程设计制作过程:
一、分析
由题意可看出,所给的系统为“1”型系统,又由于要求(1)可知系统K的取值范围是大于等于100;因此,取K=100带入方程,并使用matlab设计原系统
- clear;clc;
a=100;b=conv([1 0],conv([0.1 1],[0.01 1]));
sys=tf(a,b)
sysc=feedback(sys,1);
%原系统单位阶跃响应曲线
step(sysc),grid on
%绘制原系统的nyquist曲线
figure(2);subplot(1,2,1),nyquist(sys),grid on
hold on;subplot(1,2,2),nyquist(sys),axis([-2,2,-2,2]),grid on
%绘制原系统的根轨迹曲线
figure(3);subplot(1,2,1),rlocus(sys),grid on
hold on;subplot(1,2,2),rlocus(sys),axis([-16,2,-2,2]),grid on
(1)超前校正
到底是采用超前校正还是滞后校正呢?无知的我只能一个一个的试,先采用超前矫正吧,至于如何设计,直接按照书上的指示操作,先用matlab进行代码操作
clear;clc;
%sys=tf(100,[0.001 0.11 1 0]);
a=100;b=conv([1 0],conv([0.1 1],[0.01 1]));
sys=tf(a,b)
%绘制原系统的bode图
margin(sys)
[gm1,pm1,wg1,wp1]=margin(sys);
gm1; %原系统幅值裕度
pm1; %原系统相角裕度
wg1; %原系统穿越频率
wp1; %原系统剪切频率 开环截止频率
%---------矫正装置设计开始----------%
pm0=45-pm1+10 %根据要求的相角裕度求补偿部分
phim=pm0*pi/180; %转化成弧度数
alpha=(1-sin(phim))/(1+sin(phim)) %计算超前矫正的a(阿尔法)的值
gm0=-10*log10(1/alpha)
%找出phase相角下,源程序bode图中的w(欧米伽)的值,并以此为矫正后系统的零点
[mag,phase,w]=bode(sys);%mag幅值向量,phase相角向量,w频率向量
[mu,pu]=bode(sys,w);
adb=20*log10(mu);am=10*log10(alpha);
wc=spline(adb,w,am)
T=1/(wc*sqrt(alpha))
nc=[T,1];
dc=[alpha*T,1];
sysc=tf(nc,dc) %校正后系统
%---------矫正系统设计END-----------%
%sys原系统,sysc校正装置,system校正后系统
system=sys*sysc
hold on,margin(system),grid on
hold on,margin(sysc),grid on
%figure(2)
%margin(system)
[gm2,pm2,wg2,wp2]=margin(system);
gm2; %幅值裕度
pm2; %相角裕度
wg2; %穿越频率
wp2; %剪切频率 开环截止
figure(2)
%校正后系统的单位阶跃响应曲线
x=feedback(system,1);step(x)
figure(3)
%校正后系统的根轨迹曲线
rlocus(system)
但是最终获得的矫正后系统并不是满足要求,要求中幅值裕度要达到20dB,相角裕度要达到45deg,但是,上面这个系统设计出来的幅值裕度和相角裕度分别是11.7dB和37.2deg,到这里就可以确定,超前校正是行不通的,但是,还需要一个理由,于是,将a(阿尔法)直接赋值为0.01,也就是看一下,超前矫正的极限是多少,能不能满足要求。
将alpha=0.01带入超前矫正系统时,发现,得到的校正后系统的幅值裕度是18.6dB,相角裕度是44.3deg,还不满足要求,可见,这个系统不适合使用超前校正,换!换滞后校正!
(2)滞后校正
同样根据课本上对滞后校正的描述仿写matlab程序
num=100;
den=conv([1,0],conv([0.1,1],[0.01,1]));
sys0=tf(num,den);
[gm0,pm0,wg0,wp0]=margin(sys0)
%计算截止频率Wc
gama=45;gama1=gama+6;
[mu,pu,w]=bode(sys0)
wc=spline(pu,w,(gama1-180))
%计算B(贝塔)的值
na=polyval(num,j*wc);
da=polyval(den,j*wc);
g=na/da;g1=abs(g);h=20*log10(g1);
beta=10^(h/20)
T=10/wc;sysc=tf([T,1],[beta*T,1])
%绘制校正装置的bode图
bode(sysc),grid on
%sys0为原系统,sysc为校正装置,得到校正后系统sys
sys=sys0*sysc;hold on
%得到校正后系统的bode图并求出其幅值裕度和相角裕度
figure(2);margin(sys),grid on
%绘制校正后系统的单位阶跃响应曲线
figure(3);sys1=feedback(sys,1);step(sys1),grid on
%绘制校正后系统的nyquist曲线并对其进行局部放大
figure(4);subplot(1,2,1),nyquist(sys),grid on
subplot(1,2,2),nyquist(sys),axis([-0.3,0.3,-0.03,0.03]),grid on
%绘制校正后系统的根轨迹曲线并对其进行局部放大
figure(5);subplot(1,2,1),rlocus(sys),grid on
hold on;subplot(1,2,2),rlocus(sys),axis([-16,2,-2,2]),grid on