计算机仿真大作业--matlab课程设计报告
.
=
《计算机仿真》 MATLAB课程设计报告
学院: 自动化学院 专业: 自动化专业 班级: 姓名: 学号:
2013年12月27日
.
.
计算机仿真大作业
摘要:本次计算机仿真大作业主要是利用Matlab进行操作的。
内容主要涉及对Matlab程序文件的写入和读出、
式的
达、波形的绘制,应用Simulink建立子系统并对子系统进行封装,以及对PID控制器的参数进行整定这三个方面。
PID的参数整定要用到Simulink建立系统,并且要设计M文件,采用编程法求取系统阶跃响应的性能指标。
关键词: PID整定法 Simulink 子系统封装 M文件
.
.
目录
一、基本操作 .......................................................................................................... 1
1、写文件操作 ..................................................................................................... 1
2、读文件数据并画图操作................................................................................... 2
3、构造新函数并绘图操作................................................................................... 2
4、读取数据绘制传递函数波特图操作 ................................................................ 4
二、子系统封装....................................................................................................... 4
1、用Simulink建立系统...................................................................................... 5
2、观察输入输出波形 .......................................................................................... 6
3、数据导出......................................................................................................... 7 三、PID 控制器参数整定........................................................................................ 9
1、采用工程整定法分别设置控制器参数............................................................. 9
1.1先建立原控制系统的Simulink仿真模型..................................................... 9
1.2对原控制系统进行仿真 ............................................................................... 9
1.3在该控制系统中引入PID控制器 .............................................................. 10
1.4求取系统临界稳定增益并设置参数........................................................... 11
2、PID控制仿真并绘图..................................................................................... 13
2.1 P控制仿真 ................................................................................................ 13
2.2 PI控制仿真............................................................................................... 15
2.3PID控制仿真 ............................................................................................. 16
3、制作M文件求取系统阶跃响应性能指标 ..................................................... 17
四、
................................................................................................................ 19 五、参考文献 ........................................................................................................ 20
.
.
一、基本操作
1、写文件操作
程序实现:
1.1 自己定义一组数据,并将其保存到文件data.dat。要求第一列为时间t(t为等差数列,0?t?200);第二列为与t对应的201个幅值数据,作为信号f (t )的幅值;1第三列为按s的降幂排列的传递函数分子系数;第四列为按s的降幂排列的分母系数。第三列、第四列的数据个数不能超过5个。
MATLAB文本:
>> a=0:1:200; >> b= random('Poisson',0:200,1,201);
>> c=[9 8 6 2 1]; >> d=[7 5 4 3 1];
>> fid=fopen('d:\data.dat','wt'); >> fprintf(fid,'%4d',a); >> fprintf(fid,'\n'); >> fprintf(fid,'%4d',b); >> fprintf(fid,'\n');
>> fprintf(fid,'%4d',c); >> fprintf(fid,'\n'); >> fprintf(fid,'%4d',d); >>fclose(fid);
图1 data.dat 的读入
.
.
2、读文件数据并画图操作
2.1读入data.dat数据,画出f 1 (t )的时域波形。
MATLAB文本:
fid=fopen('d:\data.dat','rt'); >> t=fscanf(fid,'%d',201); >> f1=fscanf(fid,'%d',201); >> fclose(fid); >> plot(t,f1) title('f1-t曲线图');
xlabel('t');ylabel('f1');
图2 f1曲线图
3、构造新函数并绘图操作
.
.
2*f(t)0,t,10,1,2f(t),f(t)10,t,100且f(t),15,3.1 211
,(,3)其它ft1,
求取f (t ),将结果保存到result.mat文件,画出其时域波形。 2
MATLAB文本:
for n=1:10 f2(n)=2*f1(n);
end
for n=11:100
if abs(f1(n))<15 f2(n)=f1(n)*f1(n);
else
f2(n)=f1(n-3);
end
end
for n=101:201 f2(n)=f1(n-3);
end
plot(t,f2) title('f2-t曲线图');
xlabel('t');ylabel('f2'); fid=fopen('d:\result.mat','wt'); fprintf(fid,'%4d',f2);
fclose(fid);
图3 f2曲线图
.
.
4、读取数据绘制传递函数波特图操作
4.1 按 data.dat中的第三列、第四列,求取其对应的传递函数,绘制其bode图。 fid=fopen('d:\data.dat','rt'); f=fscanf(fid,'%d',402); num=fscanf(fid,'%d',5); den=fscanf(fid,'%d',5);
fclose(fid);
num1=ctranspose(num); den1=ctranspose(den);
Gs=tf(num1,den1)
Gs =
9 s^4 + 8 s^3 + 6 s^2 + 2 s + 1
-------------------------------
7 s^4 + 5 s^3 + 4 s^2 + 3 s + 1
Continuous-time transfer function. bode(Gs)
图4 系统波特图
二、子系统封装
.
.
1、用Simulink建立系统
程序要求:
3 1.1用 SIMULINK 建立系统:y = ax + bx + c,x为输入,y为输出,a、b、c 为常数。对该系统进行封装,要求通过对话框能修改a、b、c的值。
图5 未封装系统
.
.
图6 封装后系统
图7 参数更改界面
2、观察输入输出波形
2.1若输入x为幅度为5、频率为0.25Hz的锯齿波,采用示波器显示输出y及输
入x的波形。
.
.
图8 输入x波形
图9 输出y波形 3、数据导出
3.1将输入x和输出y导入到工作空间,并采用plot命令,将两个波形在同一波
形窗口显示,带网格线、图例。
Matlab文本:
>> x=simout;
>> y=simout1;
.
. >> plot(x);
>> hold on;
>> plot(y);
>> x=simout;
>>y=simout1;
>>plot(x,'r');
>>hold on;
>>plot(y,'k');
>> grid on
>> legend('x','y')
图10 输入输出导入工作空间
图11 导入工作空间的波形
.
.
三、PID 控制器参数整定
10G(s),某控制系统的开环传递函数为,采用单位负反馈。 n32s,s,10s,1
程序要求:
(1)试采用工程整定法,设置合适的P、PI、PID控制器的参数。 (2)将仿真时间定为300秒,绘制整定后的系统的单位阶跃响应曲线。 (3)设计M文件,采用编程法求取系统阶跃响应性能指标:超调量、调节时间。 1、采用工程整定法分别设置控制器参数
1.1先建立原控制系统的Simulink仿真模型
图12 原系统仿真模型
1.2对原控制系统进行仿真
输入为单位阶跃函数,得阶跃响应如图13所示,可知原控制系统是不稳定的。
.
.
图13 原系统仿真输出波形图
1.3在该控制系统中引入PID控制器
采用工程整定法中的临界比例度法来设置合适的P、PI、PID控制器参数。引入PID控制器后的系统仿真模型如图14所示。
图14 封装前的仿真模型
.
.
图15 封装后仿真模型
通过下面的对话框可以修改个各比例系数的值。
图16 修改比例系数截图 1.4求取系统临界稳定增益并设置参数 .
.
采用工程整定法进行PID调整。具体做法是:令Ti为无穷,Td为零,只有Kp控制系统;首先,随意设置一个增益Kp(初始值一般为1)并且不断加大或者减小Kp,直到系统出现等幅震荡,可以测出Kp=0.9的时候,系统恰好出现等幅震荡情况,此时的比例系数称为临界增益,用Kc表示。
图17 Kp=0.9临界震荡波形
求此时震荡周期Tc:
Matlab 文本:
>> num=9;
>> den=[1 1 10 1];
>> G1=tf(num,den);
>> G=feedback(G1,1);
>> step(G)
.
.
图18 matlab仿真临界震荡波形 Tcr=2s
根据整定法公式,计算所需参数。
表1 经验法公式
根据表1可以求得各个控制器的参数:
P控制:K=0.45
PI控制:K=0.405 Ti=1.66
PID控制:K=0.54 Ti=1 Td=0.24 2、PID控制仿真并绘图
2.1 P控制仿真
将I,D连线断开,设置Pk为0.45,比例控制系统的单位阶跃响应波形如下:
.
.
图19 Kp=0.45(P) 波形(1)
图20 Kp=0.45(P) 波形(2)
P值的改变只改变信号的增益而不影响其相位。
从图中可以看出,经过调整P值参数,系统的超调量和调节时间(动态性能)有很大的提高,但是造成了一定的稳态误差(因为此时Kp<1)。 .
.
2.2 PI控制仿真
比例积分控制系统的单位阶跃响应:
图21 Kp=0.405 Ti=1.66 (PI) 波形(1)
图22 Kp=0.405 Ti=1.66 (PI) 波形(2)
从图中可以看出,在P控制的基础上加入I控制后,形成PI控制,系统稳.
.
态误差有所减少,但是超调量和调节时间有所加大,这可以看出,PI控制适用于对系统稳态误差(稳态性能)要求精度大,但是对于调节时间(动态性能)要求精度小的实际模型。
2.3PID控制仿真
将仿真时间定为300秒,绘制整定后的系统的单位阶跃响应曲线(PID)。 比例积分微分控制下的单位阶跃响应:
图23 Kp=0.54 Ti=1Td=0.24(PID) 波形(1)
图24 Kp=0.54 Ti=1Td=0.24(PID) 波形(2) .
.
由图形可以看出,PID控制后,无论是稳态误差(稳态性能)还是调节时间(动态性能)都有所加强,但是超调量超过了40%,不符合实际要求,再次调整PID参数,把PID中的参数Ti改为7,其它两个参数不变,得到如下阶跃响应曲线,可以看出调整后系统的阶跃响应的超调量小于20%,可以实现稳、准、快三大要求,也符合实际工程要求,因此PID联合控制适用于对动态性能和稳态性能都有要求的实际系统。
图25 调整后的PID阶跃响应曲线
3、制作M文件求取系统阶跃响应性能指标
PID控制后系统的传递函数为:
G =
1.3 s^2 + 5.4 s + 0.77
-----------------------------------
s^4 + s^3 + 11.3 s^2 + 6.4 s + 0.77
Continuous-time transfer function.
.
. M文件如下:
num=[1.3 5.4 0.77]; den=[1 1 11.3 6.4 0.77];
t=0:0.01:100;
y=step(num,den,t); plot(t,y)
G=tf(num,den);
C=dcgain(G);
[Y,k]=max(y);
chaotiao=(Y-C)/C chaotiao =
0.0558
i=length(t);
while(y(i)>0.98*C)&(y(i)<1.02*C);
i=i-1;
end
ts=t(i)
ts =
16.4600
.
.
图26 系统阶跃响应波形
四、总结
(1)校正方法总结
P控制器只改变信号的增益,而不影响其相位。Kp增大可以减小系统的稳态误差,从而提高系统的控制精度,但会降低系统的相对稳定性,甚至可能造成闭环系统不稳定,所以,很少单独使用P控制规律。
PI控制器在系统中增加一个位于原点的开环极点和一个位于S左半平面的开环零点,只要积分时间常数足够大,PI控制器对系统稳定性的不利影响可大为减弱,主要用来改善控制系统的稳态性能。
PID在系统中增加一个位于原点的开环极点和两个负实零点,具有提高系统稳态性能的优点外,在提高系统动态性能方面有更大的优越性。 (2)总体体会
此次计算机仿真大作业,使我更加熟练地运用Matlab,特别是Simulink模块,实践出真知,只有在实践中才能真正明白如何运用Matlab解决实际中的问题。这次大作业让我更加透彻地理解本学期所学习的知识,不仅仅是计算机仿真,还有自动控制原理,对我以后的学习和工作有着很大的帮助。 .
.
五、参考文献
[1] 薛定宇. 控制系统仿真与计算机辅助设计. 机械工业出版社 2009. [2] 胡寿松. 自动控制原理. 国防工业出版社 2005.
时光荏苒,感谢教给我人生道理的老师。
.
.
结语:
.