写在前面,本报告为研一自适应控制课程的课程作业的一道题,主要内容如题,使用M脚本进行仿真,欢迎同学们交流学习哦。
考虑下图所示的单级倒立摆控制系统。摆杆末端小球的质量为m = 0.5kg,摆杆长度为l = 0.5m,重力加速度为g = 9.8 m/s2,摆杆转动时根部铰链的阻尼力矩系数为c = 2Nms/rad,忽略摆杆的质量。为实现稳定控制,在倒立摆的根部设置电机,假定电机产生的扭矩为u,电机的延迟为0.2s。
1) 建立被控对象的数学模型;(5分)
答:
建立倒立摆模型的时域关系式(过程略):
进一步得到传递函数:
2) 假定采样周期为0.1s,离散化被控对象;(5分)
答:
使用ZOH离散得到如下的离散传递函数:
进而得到(课件上讲的,如果有不清楚下面表达式含义的可以私聊我哈):
3) 试采用极点配置自校正方法或自校正PID设计控制器,使闭环系统稳定,要求输出稳态误差为0;(10分)
答:
控制器结构如下:
取:
由:
求解控制律的参数:
得到控制律中各个部分的表达式:
最终得到自校正PID控制律:
4) 仿真系统在方波输入下的响应;(5分)
答:
系统的方波响应如下图所示,可以观察到不存在稳态误差:
5) 给出对应的仿真程序(或Simulink框图)。(5分)
答:
%% 传递函数计算
clc
clear all
close all
num=[8];
den=[1 16 19.6];
delay=0.2;%电机延迟
Ts=0.1;%采样延迟
g=tf(num,den,'ioDelay',delay);%加入0.2s延迟的传递函数
gd=c2d(g,Ts,'zoh');%采样时间为0.1s的采样
display(g);
display(gd);
h=0.01;L=40/h;%数值积分步长和仿真步数
u=zeros(4,1);
y=zeros(4,1);
%% 控制律求解
A=[ 1 , 0 , 0 , 0 , 0 , 0 , 0 ;...
-2.106, 1 , 0 , 0 , 0 , 0 , 0 ;...
1.3079,-2.106 , 1 , 0 , 0 , 0 , 0 ;...
-0.2019,1.3079 ,-2.106 , 1 ,0.0247 , 0 , 0 ;...
0 ,-0.2019,1.3079 ,-2.106 ,0.01458,0.0247 , 0 ;...
0 , 0 ,-0.2019,1.3079 , 0 ,0.01458,0.0247 ;
0 , 0 , 0 ,-0.2019, 0 , 0 ,0.01458];
b=[1;-1.7;0.72;0;0;0;0];
x=A\b;
display(x);
% 定义两个多项式的系数矩阵
p = [1 -1];
q = [1
0.4060
0.2671
0.0904];
% 对两个多项式进行乘法运算
r = conv(p, q);
display(r);
%% 根据计算结果进行仿真
for k=5:L
t(k)=k*h;
% yr(k)=2*sin(0.2*pi*t(k));%正弦波输入信号
yr(k)=2*square(0.2*pi*t(k));%方波信号
y(k)=1.106*y(k-1)-0.2019*y(k-2)+0.0247*u(k-3)+0.01458*u(k-4);
%控制律
u(k)= 0.594*u(k-1)+0.1389*u(k-2)+0.1767*u(k-3)+0.0904*u(k-4)...
-5.7914*y(k)+6.5346*y(k -1)-1.2523*y(k-2)+0.50916*yr(k);
end
figure(1)
plot(t,y,'r',t,yr,'b');
xlabel('t');ylabel('y(t)、yr(t)');
legend('y(t)','yr(t)');