控制系统数字仿真程序及结果文档格式.docx
《控制系统数字仿真程序及结果文档格式.docx》由会员分享,可在线阅读,更多相关《控制系统数字仿真程序及结果文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
![控制系统数字仿真程序及结果文档格式.docx](https://file1.bdocx.com/fileroot1/2022-10/24/e254fda0-8c8e-4eb7-9363-2f40c5df0119/e254fda0-8c8e-4eb7-9363-2f40c5df01191.gif)
根据提示找到出错位置和原因,加以改正,再进行编译……如此反复,直到顺利通过编译和连接为止。
(5)运行程序,并分析运行结果是否合理和正确。
在运行时要注意当输入不同数据时所得到的结果是否正确,应多运行几次,分别检查在不同情况下程序是否正确。
(6)输出程序清单和运行结果。
4.实验后,应整理出实验报告,实验报告应包括:
实验题目;
源程序;
5.实验内容的安排
本实验教材给出4个实验内容,学生应在实验前将教师指定的题目编好程序,然后上机输人和调试。
2关于程序调试
为了帮助大家调试程序和分析程序,下面简单介绍程序出错的种类。
(1)语法错误
不符合MATLAB语言的语法规定.例如将plot写为polt、括弧不匹配、变量命名错误等,这些都会在编译时被发现并指出。
这些都属于“致命错误”。
不改正是不能通过编译的。
对一些在语法上有轻微毛病但不影响程序运行的问题(如定义了变量但始终未使用),编译时会发出“警告”虽然程序能通过编译,但不应当使程序“带病工作”应该将程序中所有导致错误(error)和警告(warning)的因素都排除,再使程序投入运行。
(2)逻辑错误
程序无语法错误,也能正常运行,但是结果不对。
例如求s=l+2+3十……十100。
有人写出以下语句:
s=1;
fori=1:
100
s=s+i;
end;
sum=s
语法没有错,但求出的结果是l+1+2+3十……+100之和,而不是l+2+3十……十100之和。
这类错误可能是设计算法时的错误,也可能是算法正确而在编写程序时出现疏忽所致。
这种错误计算机是无法检查出来的。
如果是算法有错,则应先修改算法,再改程序。
如果是算法正确而程序写得不对,则直接修改程序.
(3)运行错误
有时程序既无语法错误,又无逻辑错误,但程序不能正常运行或结果不对。
多数情况是数据不对,包括数据本身不合适以及数据类型不匹配。
3Matlab基础练习(不上交)
(1)生成矩阵
i)创建如下矩阵
和
ii)创建C:
一个3×
3单位阵,用最方便的方法。
(2)基本矩阵运算
运用问题1.1中得到的矩阵A和B,
i)对比A*B和A.*B的结果,并解释MATLAB是如何得出相应的结果。
ii)A*B=B*A吗?
为什么?
iii)A.*B=B.*A吗?
为什么?
iv)创建矩阵D=B,并计算B*D=?
v)比较A/BA\B,并解释所得结果?
vi)创建一个新的3×
3矩阵E,主对角线元素为5,其它元素为0。
(3)脚本程序
输入并编辑一个脚本文件程序来计算,并输出结果。
(4)函数文件
运行一个自己编写的函数文件程序来计算,并输出结果。
(5)制图
(anoisyversionofy),。
i)用plot将两条曲线画在同一个坐标轴上,原函数用实线,加噪音的函数用开圆(或其它标示符)区分,颜色随意。
图及横纵坐标轴需要标注名称,图标标识不同曲线。
ii)用holdon将两条曲线画在同一个坐标轴上,其它要求同i),加上网格。
iii)用subplot将两条曲线画在同一幅图的两个不同的坐标轴上,其它要求同i)。
第2部分实验内容
实验1PID控制
1.1实验目的:
编程实现PID控制算法。
1.2实验内容:
二阶系统的时域响应。
下面是一个单位阶跃响应,已知系统是一阶线性系统,其传递函数为G(s)。
系统内嵌在反馈控制回路中,如下图所示,闭环系统也是一阶的。
(1)系统G(s)的开环参数(DC增益和时间常数)分别为:
53.2
(2)稳态输出和稳态输入之间的关系?
5:
1
(3)若要稳态误差不大于2%,比例增益K的应该为多大?
(SSE≤2%时,比例增益至少为多少?
)
K>
=10
(4)系统G(s)的闭环参数(DC增益和时间常数)分别为多少?
以
K的函数形式给出。
Gdc=5k/(5k+1)Ts=3.2/(5k+1)
(5)建立开环传递函数。
用你在上面步骤中得到的数值写成如下形式:
G(s)=Gdc/(sτ+1)
G(s)=5/(s*3.2+1)
(6)建立仿真模型,用Matlab得到系统的阶跃响应,观察比例增益K变化时系统响应的变化,并对比分析仿真结果来验证理论分析的结果.
1.3实验程序:
l.学习Matlab中和本实验相关的命令。
figure
for----end
tf、step(num,den)
grid、title、holdon、holdoff
2.保存或复制实验曲线和数据。
1.4实验结果:
1.给出相应程序代码并记录实验程序的运行结果。
2.分析比例增益K对系统响应的影响。
程序:
clearall;
t=0:
0.1:
20;
num=[5];
den=[3.21];
plant=tf(num,den);
figure
(1)
step(plant,t),axis([02006]);
gridon
figure
(2)
Kp=10:
1:
m=0:
0.001:
1;
holdon
forcontr=Kp;
sys_cl=feedback(contr*plant,1);
%建立单位负反馈的系统的传递函数
step(sys_cl,m);
holdoff
图像:
K对系统的影响:
K越大,上升时间越短,调整时间也越短。
实验2根轨迹
2.1实验目的:
绘制根轨迹。
2.2实验内容:
反馈系统如下图。
系统有一个可调的增益放大器,系数为K。
被控对象传递函数为:
G(s)=(s+5)/[(s+1)(s+3)]
需要你分析一下系统的行为。
画出作为增益的函数的闭环系统的根轨迹。
(i)明确指出极点离开实轴的点或者是进入实轴的点。
1/(d+1)+1/(d+3)=1/(d+5)d1=-2.1716d2=-7.8284
(ii)给出那些点出现时的K值。
k=11.6569k=0.3432
2.3实验程序:
1、学习根轨迹、零极点图绘制的相关语句。
rlocus(sys)
[k,p]=rlocfind(num,den)
gtext
pzmap(p,z)
[num,den]=feedback(num,den,1)
2、运行实验程序,观察试验结果。
3、保存或复制实验曲线和数据。
2.4实验结果分析
1、给出相应程序代码并记录实验程序的运行结果。
2、分析放大系数K对根轨迹影响,并分析放大系数K系统稳定性的影响。
num=[15];
den=conv([11],[13]);
sys=tf(num,den);
pzmap(sys);
[p,z]=pzmap(sys);
legend('
极点'
'
零点'
);
rlocus(sys);
[k,p1]=rlocfind(num,den)
[k,p2]=rlocfind(num,den)
系统已经稳定,调节K对系统不会有影响
实验3伯德图补偿
3.1实验目的:
MATLAB辅助设计控制系统。
3.2实验内容:
绘制伯德图,并进行补偿分析。
下面是一个带可变增益的闭环系统。
被控对象G(s)=2/[(0.5s+1)(s2+4s+1)]。
画出G(s)的伯德图。
(i)确定系统G(s)的相角裕量和幅值裕量。
Gm=22.3dbPm=102deg
(ii)确定相角裕量为40o时的增益K。
k=3.9670
(iii)确定相角裕量为40o时阶跃输入的可达SSE,是否令人满意?
SSE=(1-DCGAIN(sys_cl))/1=0.1119令人满意
3.3实验程序:
1、学习频率绘制相关语句。
bode(num,den)
[num,den]=zp2tf(z,p,k)
logspace
subplot、xlabel、margin
2、运行实验程序,观察结果。
3.3实验结果分析
num=[02];
den=conv([0.51],[141]);
sys=tf(num,den)
bode(sys)
margin(sys)
fork=3:
4;
k1=k;
sys1=k1*sys;
[Gm,Pm,Wcg,Wcp]=margin(sys1);
if((Pm-40)/40>
-0.0001)&
&
((Pm-40)/40<
0.0001)
k1
Pm
figure(3)
margin(sys1)
gridon
break;
end
end
sys_cl=feedback(sys1,1)
figure(4)
step(sys_cl)
SSE=1-dcgain(sys_cl)
2、观察程序画出的bode图,与手绘图进行比较。
3、在bode图上读出相角裕量和幅值裕量,并判断闭环系统的稳定性。
Gm=22.3dbPm=102deg系统稳定
实验4奈奎斯特图
4.1实验目的:
4.2实验内容:
绘制奈奎斯特图,并进分析。
1、请手绘一下系统的奈图,给出高频渐进线、Dc增益点,实虚轴交点及所在的频率,并用nyquist命令自动生成奈图,进一步验证所绘制的奈图的正确性。
a.一阶系统G(s)=1/(s+1)
b.二阶系统G(s)=1/(s+1)2
c.三阶系统G(s)=1/(s+1)3
2、用nyquist命令直接绘制高阶系统的奈图。
3、用nyquist命令直接绘制复极点系统的奈图。
4、用nyquist命令直接绘制系统的奈图,并判断闭环系统的稳定性。
4.3实验程序:
1、学习Matlab语言与本实验相关的语句
nyquist(num,den)
2、运行实验程序。
4.4实验结果:
程