仿真实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
控制系统设计与仿真
实验报告
专业:自动化
班级:5班
姓名:夏肇平
学号:306
第一次上机实验任务
2、采用四阶龙格库塔法求如下二阶系统的单位脉冲响应的数值解。
22
2
()2n
n n
G s s s ωξωω=++,0.5,10n ξω== 3、采用四阶龙格库塔法求高阶系统阶单位跃响应曲线的数值解。
22
2()(2)(1)
n
n n
G s s s Ts ωξωω=
+++,0.5,10n ξω==,5T =
4、 自学OED45指令用法,并求解题2中二阶系统的单位阶跃响应。
程序:y=RKT2(0.1,5,[0 1;-100 -10],[0;100],[0;0]);
y=RKT3(0.1,20,[0,1,0;0,0,1;-20,-102,-10.2],[0;0;20],[0;0;0]); [t,y]=ode45('func',[0,1],[0,0]);plot(t,y); M 文件
function y=RKT2(h,T,A,B,Y) YY=Y; for t=0:h:T; if (t<=1) u=1; else u=0; end
K1=A*YY+B*u;
K2=A*[YY+h/2*K1]+B*u; K3=A*[YY+h/2*K2]+B*u; K4=A*[YY+h*K3]+B*u;
YY=YY+h/6*(K1+2*K2+2*K3+K4); Y=[Y YY]; end y=Y(1,:); t=0:h:(T+h);
function y=RKT3(h,T,A,B,Y)
YY=Y; for t=0:h:T; K1=A*YY+B;
K2=A*[YY+h/2*K1]+B; K3=A*[YY+h/2*K2]+B; K4=A*[YY+h*K3]+B;
YY=YY+h/6*(K1+2*K2+2*K3+K4); Y=[Y YY]; end y=Y(1,:); t=0:h:(T+h); plot(t,y)
function yp=func(t,y) yp=[0;0]; yp(1)=y(2);
yp(2)=100-10*y(2)-100*y(1); end
实验结果图像:
1
2
3
4
5
6
-0.2
0.2
0.4
0.6
0.8
1
1.2
5
10
15
20
25
00.1
0.20.30.40.50.6
0.70.80.9
10
0.10.20.30.40.50.60.70.80.91
第二次上机任务
1、试用simulink 方法解微分方程,并封装模块,输出为i x 。得到各状态变量的
时间序列,以及相平面上的吸引子。
112322331223x x x x x x x x
x x x x αββγ=-+⎧⎪=-+⎨⎪=-+-⎩&&&
参数入口为,,αβγ的值以及i x 的初值。(其中8/3,10,28αβγ===,以及初值分
别为1230,0,0.001x x x ===) 提示:
1
s
模块输入是输出量的微分。
模块的封装图:
封装内部结构图:
各状态的时间曲线图:
吸引子:
2、用simulink搭建PI控制器的控制回路,被控对象传递函数:
1
51
s+
,分别分
析
(1)、比例系数由小到大以及积分时间由小到大对阶跃响应曲线的影响。
(2)、控制器输出有饱和以及反馈有时滞情况下,阶跃响应曲线的变化。
(3)、选做:主控制回路传递函数为:
1
201
s+
,副回路为:
1
51
s+
,主回路
采用PI控制器,副回路采用P控制器,分析控制系统对主回路以及副回路的阶
跃扰动的抑制。注:PI控制器表达式为
1
()(1)()
i
U s Kp E s
T s
=+,串级控制如图所
示。
(1) 被控对象为
1
51
s+
时,搭建的模型如下:
封装好的子模块模型如下:
A.Ti=0.1保持不变时,比例系数Kp由小到大变化时对阶跃响应曲线的影响: Kp=1时:
Kp=3时:
Kp=5时:
Kp=20时:
B.Kp=1保持不变时,积分时间Ti由小到大变化时对阶跃响应曲线的影响:
Ti=0.1时:
Ti=0.5时:
Ti=1时:
Ti=2时:
(2) 控制器输出有饱和以及反馈有时滞情况下搭建的模型如下:
设置反馈时滞时间Ʈ=0.5s。
饱和模块设置饱和系数改变时阶跃响应曲线如下所示:a.饱和值=1时
b.饱和值=1.5时
c.饱和值=3时
(3)
不加扰动,主回路加扰动,副回路加扰动,主副回路都加扰动响应曲线
3、编写S函数模块,实现两路正弦信号的叠加,正弦信号相位差为60度。
a.编写的名为addsin的S函数程序如下:
function [sys,x0,str,ts,simStateCompliance] = addsin(t,x,u,flag,A) A=[1,1];
switch flag,
case 0,
[sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes;
case 1,
sys=mdlDerivatives(t,x,u,A);
case 2,
sys=mdlUpdate(t,x,u,A);
case 3,
sys=mdlOutputs(t,x,u,A);
case 4,