安徽合肥工业大学自动控制理论综合实验倒立摆实验报告.docx
《安徽合肥工业大学自动控制理论综合实验倒立摆实验报告.docx》由会员分享,可在线阅读,更多相关《安徽合肥工业大学自动控制理论综合实验倒立摆实验报告.docx(20页珍藏版)》请在冰豆网上搜索。
安徽合肥工业大学自动控制理论综合实验倒立摆实验报告
1、把上述参数代入,求解系统的实际模型;
a)摆杆角度和小车位移之间的传递函数;
M=1.096;m=0.109;b=0.1;l=0.25;I=0.0034;g=9.8;
n1=[m*l00];d1=[I+m*l^20-m*g*l];
Phi1=tf(n1,d1)
返回:
Transferfunction:
0.02725s^2
--------------------
0.01021s^2-0.2671
b)摆杆角度和小车加速度之间的传递函数;
继续输入:
n2=[m*l];d2=d1;Phi2=tf(n2,d2)
返回:
Transferfunction:
0.02725
--------------------
0.01021s^2-0.2671
c)摆杆角度和小车所受外界作用力的传递函数;
继续输入:
q=(M+m)*(I+m*l^2)-(m*l)^2;n3=[m*l/q00];d3=[1b*(I+m*l^2)/q-(M+m)*m*g*l/q-b*m*g*l/q0];
Phi3=tf(n3,d3)
返回:
Transferfunction:
2.357s^2
---------------------------------------
s^4+0.08832s^3-27.83s^2-2.309s
d)以外界作用力作为输入的系统状态方程;
继续输入:
q2=(I*(M+m)+M*m*l^2);
A1=[0100;0-(I+m*l^2)*b/q2m^2*g*l^2/q20;0001;0-m*l*b/q2m*g*l*(M+m)/q20];
B1=[0;(I+m*l^2)/q2;0;m*l/q2];C1=[1000;0010];D1=[0;0];
sys1=ss(A1,B1,C1,D1)
返回:
a=
x1x2x3x4
x10100
x20-0.088320.62930
x30001
x40-0.235727.830
b=
u1
x10
x20.8832
x30
x42.357
c=
x1x2x3x4
y11000
y20010
d=
u1
y10
y20
e)以小车加速度作为输入的系统状态方程;
继续输入:
A2=[0100;0000;0001;003/(4*l)0];B2=[0;1;0;3/(4*l)];
C2=C1;D2=D1;
sys2=ss(A2,B2,C2,D2)
返回:
a=
x1x2x3x4
x10100
x20000
x30001
x40030
b=
u1
x10
x21
x30
x43
c=
x1x2x3x4
y11000
y20010
d=
u1
y10
y20
2、根据倒立摆系统数学模型(以小车的加速度为输入的模型,即sys2),判断开环系统的稳定性、可控性和可观性;
稳定性:
继续输入:
eig(A2)
返回:
ans=
1.7321
-1.7321
0
0
有一个位于正实轴的根和两个位于原点的根,表明系统是不稳定的。
可控性和可观性:
继续输入:
Qc2=ctrb(A2,B2)
Qo2=obsv(A2,C2)
Rc2=rank(Qc2)
Ro2=rank(Qo2)
返回:
Qc2=
0100
1000
0309
3090
Qo2=
1000
0010
0100
0001
0000
0030
0000
0003
Rc2=
4
Ro2=
4
可控性和可观性判别矩阵是满秩的,所以系统完全能控,完全能观。
3、利用matlab画出倒立摆系统(以小车的加速度为输入的模型)阶跃响应曲线;
继续输入:
step(sys2)
得到:
可以看出,在单位阶跃响应作用下,小车位置和摆杆角度都是发散的。
4.利用matlab画出倒立摆系统(以小车的加速度为输入的模型)的根轨迹;
继续输入:
A2_1=[01;00];B2_1=[0;1];C2_1=[10];D2_1=0;
sys2_1=ss(A2_1,B2_1,C2_1,D2_1);
A2_2=[01;3/(4*l)0];B2_2=[0;3/(4*l)];C2_2=[10];D2_2=0;
sys2_2=ss(A2_2,B2_2,C2_2,D2_2);
rlocus(sys2_1)
rlocus(sys2_2)
得到:
直线倒立摆MATLAB仿真实验
在MATLAB下绘制原系统(Phi2)的Bode图和乃奎斯特图。
继续输入:
bode(Phi2),grid
继续输入:
margin(Phi2)
得到幅值裕量和相角裕量
输入nyquist(Phi2)
得到乃奎斯特曲线:
可以得到,系统没有零点,但存在两个极点,其中一个极点位于右半s平面,
根据奈奎斯特稳定判据,闭环系统稳定的充分必要条件是:
当ω从−∞到+∞变
化时,开环传递函数G(jω)沿逆时针方向包围-1点p圈,其中p为开环传递函数
在右半S平面内的极点数。
对于直线一级倒立摆,由奈奎斯特图我们可以看出,开
环传递函数在S右半平面有一个极点,因此G(jω)需要沿逆时针方向包围-1点一圈。
可以看出,系统的奈奎斯特图并没有逆时针绕-1点一圈,因此系统不稳定,
需要设计控制器来镇定系统。
2、超前校正控制设计(绘制校正后系统的Bode图和乃奎斯特图)
直线一级倒立摆的频域法设计结构图如4-1所示。
其中G(s)为直线一级倒立摆的开环传递函数,G(s)c为超前校正控制器。
1、设计控制器G(s)c,使得系统的静态误差位置系数为10,相位裕量为50°,增益裕
量等于或大于10db。
继续输入:
Pm2=55*pi/180;%超前矫正设计,将期望相角裕量换算成弧度
s=tf('s');%定义s为传递函数变量
Phi2_0=10/((0.01021/0.2671)*s^2-1);%矫正前系统开环传递函数,取静态位置误差系数为10
[mag2,phase2,w]=bode(Phi2_0);
alfa=(1-sin(Pm2))/(1+sin(Pm2));%计算a值
adb=20*log10(mag2);am=10*log10(alfa);
wc=spline(adb,w,am);%计算期望的矫正后系统穿越频率
T=1/(wc*sqrt(alfa));alfaT=alfa*T;
Gc2=tf([T1],[alfaT1])%得到Gc(s)
返回:
Transferfunction:
0.1044s+1
-------------
0.01383s+1
上式即为超前矫正器。
2、绘制校正后系统的Bode图和和乃奎斯特图,读出校正后系统的相位裕量和幅值裕
量,判断是否满足要求的相位裕量和幅值裕量。
继续输入:
margin(Gc2*Phi2_0)%绘制系统伯德图并求出幅值裕量和相角裕量
继续输入:
nyquist(Gc2*Phi2_0)
实验三:
经典控制理论-一级倒立摆的PID控制仿真实验
Kp=9时:
Kp=40:
Kp=40,Ki=0,Kd=4:
Kp=40,Ki=0,Kd=10:
Kp=40,Ki=20,Kd=4:
Kp=40,Ki=40,Kd=4:
实验四:
现代控制理论-一级倒立摆的极点配置控制仿真实验
1、设计极点配置控制器u=—Kx,要求系统的调节时间大约为3秒和阻尼比为0.5;
由前面实验可知,以小车加速度为输入时,系统完全能控,完全能观。
输入:
M=1.096;m=0.109;b=0.1;l=0.25;I=0.0034;g=9.8;q=(M+m)*(I+m*l^2)-(m*l)^2;
n1=[m*l00];d1=[I+m*l^20-m*g*l];
Phi1=tf(n1,d1);
n2=[m*l];d2=d1;
Phi2=tf(n2,d2);
n3=[m*l/q00];d3=[1b*(I+m*l^2)/q-(M+m)*m*g*l/q-b*m*g*l/q0];
Phi3=tf(n3,d3);
q2=(I*(M+m)+M*m*l^2);
A1=[0100;0-(I+m*l^2)*b/q2m^2*g*l^2/q20;0001;0-m*l*b/q2m*g*l*(M+m)/q20];
B1=[0;(I+m*l^2)/q2;0;m*l/q2];C1=[1000;0010];D1=[0;0];
sys1=ss(A1,B1,C1,D1);
A2=[0100;0000;0001;003/(4*l)0];B2=[0;1;0;3/(4*l)];
C2=C1;D2=D1;
sys2=ss(A2,B2,C2,D2);
A2_1=[01;00];B2_1=[0;1];C2_1=[10];D2_1=0;
sys2_1=ss(A2_1,B2_1,C2_1,D2_1);
A2_2=[01;3/(4*l)0];B2_2=[0;3/(4*l)];C2_2=[10];D2_2=0;
sys2_2=ss(A2_2,B2_2,C2_2,D2_2);
P2_1=[-1/2+1.732/2*j-1/2-1.732/2*j];
K2_1=place(A2_1,B2_1,P2_1)%配置极点
P2_2=P2_1;
K2_2=place(A2_2,B2_2,P2_2)%配置极点
返回:
K2_1=
1.00001.0000
K2_2=
1.33330.3333
2、绘制原系统的脉冲响应曲线;
系统sys2_1的单位脉冲响应:
输入:
impulse(sys2_1)
系统sys2_的单位脉冲响应:
输入:
impulse(sys2_2)
3、绘制校正后(极点配置)系统的脉冲响应曲线;
校正后的系统矩阵分别变为:
A=A-B*KB=BC=CD=D;
故继续输入:
(1)sys2_1_K2_1=ss(A2_1-B2_1*K2_1,B2_1,C2_1,D2_1);
impulse(sys2_1_K2_1)
得到
(2)
sys2_2_K2_2=ss(A2_2-B2_2*K2_2,B2_2,C2_2,D2_2);
impulse(sys2_2_K2_2)