1、 计算机控制技术课程设计实验:直线一级倒立摆系统的建模及仿真一、已知条件:图 1 倒立摆简化模型摆杆角度为输出,小车的位移为输入。导轨中点为坐标轴的中心即零点,右向为坐标值增加的方向,杆偏移其瞬时平衡位置右侧的角度为正值。二、任务要求:总体任务通过调节 PID 参数,设计 PID 控制器实现摆杆在受到干扰的情况下,依然能恢复平衡。具体包括以下几部分:1. 理论推导包括倒立摆系统的动力学模型,传递函数,离散传递函数,状态空间或差分方程,稳定性分析,PID 控制器设计2. 程序实现实现内容:倒立摆系统模型,控制器以及仿真结果的显示。开发语言和工具:Matlab m 文件或 C/C+ (工具: VC
2、+或其它)3. PID 控制参数设定及仿真结果。分别列出不同杆长的仿真结果(例如:L=0.25 和 L=0.5)。4. 将理论推导、程序实现、仿真结果写成实验报告。具体求解过程如下:一,倒立摆系统动力学模型的建立图 1 摆杆的受力分析图以摆杆为研究对象,对其进行受力分析,如图 1 所示。根据质点系的达朗贝尔原理得(1)式中, 为杆的惯性力,表达式为 ,为杆的质量, 为重力加速度, 为杆的惯性力偶。惯性力及惯性力偶的大小分别为(2)式中, 为杆的角加速度, 为小车的加速度, 为杆的长度, 为杆偏离中心位置的角度, 偏离轨道中心的位移。对(2)式代入(1)式,并整理可得(3)当摆动较小时,可以进行
3、近似处理 。故(3)式可化为(4)对(4)式进行拉普拉斯变换得(5)则系统的开环传递函数为(6)式中,二,离散传递函数,差分方程、状态空间及稳定性分析1,离散传递函数将连续系统离散化,根据连续传递函数 可求得相应的脉冲传递函数为(7)式中, 。将参数 代入(7)式得该参数下的脉冲传递函数为(8)2,根据离散传递函数求系统差分方程由可得(9)进行反变换即可得到对应的差分方程(10)将参数 代入(10)式得该参数下的差分方程为(11)3,根据离散传递函数求系统状态空间表达式根据设(12) 则(13)选取状态变量(14)将 代入 ,取 反变换,可得状态方程(15)将参数 代入(15)式得该参数下的状
4、态方程为(16)4,稳定性分析对于开环系统,由传递函数可得系统的特征方程为(17)特征方程的根为 。由于特征根中有一个大于 1,位于单位圆外,故系统是不稳定的。四,PID 控制器设计由以上分析可知,系统是不稳定的,为使倒立摆在受到干扰时能保持稳定,必须对系统进行 PID 控制器的设计。倒立摆计算机控制系统的框图如下模拟 PID 控制器的基本算式为(18)根据式(16)和(18)可求得在不同 下的摆角值。具体的仿真过程如下:1,取 固定不变, 分别取 0.5,1.0,1.5,2.0,倒立摆的输出变化曲线如下:(a1)(b1)(c1)(d1)由图(a1)、(b1)、(c1)、(d1)可知,当 时,
5、倒立摆在受到干扰时可以达到稳定;继续增大 到 1.0,系统的调节时间变短;当 时,虽然倒立摆仍能稳定,但调节时间变长;当 时,倒立摆已无法恢复稳定。2,取 固定不变, 分别取-0.5,-1.5,-2.5,-3.5,倒立摆的输出变化曲线如下:(a2)(b2)(c2)(d2)由图(a2)、(b2)、(c2)、(d2)可知,当 时,倒立摆在受到干扰时开始可以达到稳定,但当时间变长后无法达到稳定;继续减小 到-1.5,系统可以达到稳定;当 时,系统的调节时间变短;当 减小到-3.5 时,倒立摆已无法恢复稳定。3,取 固定不变, 分别取-0.1,-0.3,-0.5,-0.7,倒立摆的输出变化,曲线如下:
6、(a3)(b3)(c3)(d3)由图(a3)、(b3)、(c3)、(d3)可知,当 从-0.1 减小到-0.7 时,倒立摆在受到干扰时达到稳定的调节时间先减小后增大,到-0.7 时系统已无法恢复稳定。五,改变杆长后的仿真结果将杆长由 改为 ,系统的仿真结果如下:1,取 固定不变, 分别取 0.2,0.4,0.8,1.0,倒立摆的输出变化曲线如下:(a11)(b11)(c11)(d11)由图(a11)、(b11)、(c11)、 (d11)可知,当 时,倒立摆在受到干扰时可以达到稳定;继续增大 到 0.4,系统的调节时间变短;当 时,虽然倒立摆仍能稳定,但调节时间变长;当 时,倒立摆已无法恢复稳定
7、。2,取 固定不变, 分别取-1.0,-1.3,-1.6,-1.9,倒立摆的输出变化曲线如下:(a12)(b12)(c12)(d12)由图(a12)、(b12)、(c12)、 (d12)可知,当 时,倒立摆在受到干扰时开始可以达到稳定,但当时间变长时会失去稳定;继续减小 到-1.3,系统可以达到稳定;当时系统可以稳定但调节时间变长;当 减小到-1.9 时,倒立摆已无法恢复稳定。3,取 固定不变, 分别取-0.01,-0.1,-0.2,-0.24,倒立摆的输出变化,曲线如下:(a13)(b13)(c13)(d13)由图(a13)、(b13)、(c13)、 (d13)可知,当 从-0.01 减小到
8、-0.24 时,倒立摆在受到干扰时达到稳定的调节时间先减小后增大,到-0.24 时系统已无法恢复稳定。附录:1,PID 设计过程的 Matlab 程序如下l=1;g0=10;%重力加速度tt=0.01;%采样周期a=3/(4*l);%代数 anumGs=-a 0 0;%连续传递函数的分子denGs=1 0 -a*g0;%连续传递函数的分母sysGs=tf(numGs,denGs);%系统连续传递函数F,G,C,D=ssdata(c2d(sysGs,tt,zoh);%求得 ZOH 下 以 tt 为采样周期的状态空间(离散)t(1)=0;x=zeros(1,1000);%一行 1000 列 0 矩
9、阵theta(1)=0;e=zeros(1,1000); %一行 1000 列 0 矩阵s=0;KP=0.5;KI=-2.0;KD=-0.3;% 设置 PID 参数y=0;0;for k=2:1000;t(k)=t(k-1)+tt;if k=20delta=0.1;elsedelta=0;endtheta(k-1)=theta(k-1)+delta; e(k)=-theta(k-1);%PID 公式的第一项s=s+e(k);%PID 公式的第二项x(k)=KP*e(k)+KI*s+KD*(e(k)-e(k-1);%PID 公式theta(k)=C*y+D*x(k);%初始输出 y 为零y=F*
10、y+G*x(k);endfigure(1)plot(t,theta),gridtitle(KP=0.5,KI=-2.0,KD=-0.3)xlabel(t/s),ylabel(theta)2,为便于改变参数,可利用 Matlab 的 GUI 界面来方便的进行 PID 参数的设计,所设计的界面如下图所示:此时需将程序命令添加到 Plot 按钮下,即function plot_push_Callback(hObject, eventdata, handles)l=str2double(get(handles.L_edit,String);tt=str2double(get(handles.T_edi
11、t,String);g0=str2double(get(handles.G_edit,String);KP=str2double(get(handles.KP_edit,String);KI=str2double(get(handles.KI_edit,String);KD=str2double(get(handles.KD_edit,String);a=3/(4*l);numGs=-a 0 0;denGs=1 0 -a*g0;sysGs=tf(numGs,denGs);F,G,C,D=ssdata(c2d(sysGs,tt,zoh);t(1)=0;x=zeros(1,1000);theta(
12、1)=0;e=zeros(1,1000);s=0;y=0;0;for k=2:1000;t(k)=t(k-1)+tt;if k=20delta=0.1;elsedelta=0;endtheta(k-1)=theta(k-1)+delta; e(k)=-theta(k-1);s=s+e(k);x(k)=KP*e(k)+KI*s+KD*(e(k)-e(k-1);theta(k)=C*y+D*x(k);y=F*y+G*x(k);endplot(t,theta),gridxlabel(t/s),ylabel(theta) 如输入杆长 为 1.0,采样时间 为 0.01,重力加速度 为 10.0,比例环节 为 1.0,积分环节 为-2.0,微分环节 为-0.3,点击 Plot,可观察此时的图形界面如下图所示: