自动控制原理课程设计说明书基于双闭环PID控制的一阶倒立摆控制系统设计姓名:学号:学院:专业:指导教师:2018年1月目录1任务概述..........................................................31.1设计概述.....................................................31.2要完成的设计任务:..........................................42系统建模..........................................................42.1对象模型....................................................42.2模型建立及封装..............................................53仿真验证..........................................................93.1实验设计....................................................93.2建立M文件编制绘图子程序....................................94双闭环PID控制器设计.............................................124.1内环控制器的设计............................................134.2外环控制器的设计............................................135仿真实验.........................................................155.1简化模型....................................................155.2仿真实验...................................................166检验系统的鲁棒性.................................................186.1编写程序求系统性能指标....................................186.2改变参数验证控制系统的鲁棒性..............................197结论............................................................22附录...............................................................221任务概述1.1设计概述如图1所示的“一阶倒立摆控制系统”中,通过检测小车位置与摆杆的摆动角,来适当控制驱动电动机拖动力的大小,控制器由一台工业控制计算机(IPC)完成。图1一阶倒立摆控制系统这是一个借助于“SIMULINK封装技术——子系统”,在模型验证的基础上,采用双闭环PID控制方案,实现倒立摆位置伺服控制的数字仿真实验。1.2要完成的设计任务:(1)通过理论分析建立对象模型(实际模型),并在原点进行线性化,得到线性化模型;将实际模型和线性化模型作为子系统,并进行封装,将倒立摆的振子质量m和倒摆长度L作为子系统的参数,可以由用户根据需要输入;(2)设计实验,进行模型验证;(3)一阶倒立摆系统为“自不稳定的非最小相位系统”。将系统小车位置作为“外环”,而将摆杆摆角作为“内环”,设计内化与外环的PID控制器;(4)在单位阶跃输入下,进行SIMULINK仿真;(5)编写绘图程序,绘制阶跃响应曲线,并编程求解系统性能指标:最大超调量、调节时间、上升时间;(6)检验系统的鲁棒性:将对象的特性做如下变化后,同样在单位阶跃输入下,检验所设计控制系统的鲁棒性能,列表比较系统的性能指标(最大超调量、调节时间、上升时间)。倒摆长度L不变,倒立摆的振子质量m从1kg分别改变为1.5kg、2kg、2.5kg、0.8kg、0.5kg;倒立摆的振子质量m不变,倒摆长度L从0.3m分别改变为0.5m、0.6m、0.2m、0.1m。2系统建模2.1对象模型一阶倒立摆的精确模型的状态方程为:若只考虑θ在其工作点𝜃0=0附近的细微变化,这时可以将模型线性化,这时可以近似认为:一阶倒立摆的简化模型的状态方程为:2.2模型建立及封装上边的图是精确模型,下边的是简化模型。图2模型验证原理图2、由状态方程可求得:Fcn:(4/3*u[1]+4/3*m*l*sin(u[3])*power(u[2],2)-10*m*sin(u[3])*cos(u[3]))/(4/3*(1+m)-m*power(cos(u[3]),2))Fcn1:(cos(u[3])*u[1]+m*l*sin(u[3])*cos(u[3])*power(u[2],2)-10*(1+m)*sin(u[3]))/(m*l*power(cos(u[3]),2)-4/3*l*(1+m))Fun2:(4*u[1]-30*m*u[3])/(4+m)Fun3:(u[1]-10*(1+m)*u[3])/(m*l-4/3*l*(1+m))(其中J=mL23,小车质量M=1kg,倒摆振子质量m,倒摆长度2L,重力加速度g=10m/𝑠2)将以上表达式导入函数。3、如下图框选后选择createsubsystem图3封装4、封装之后如下图图4子系统建立5、将精确模型subsystem和简化模型subsystem1组合成以下系统以供验证,注意add的符号是++,不是+-,网上其他的课设都是错的。(输入信号是由阶跃信号合成的脉冲,幅值为0.05,持续时间(steptime)为0.1s)。图5系统模块封装6、鼠标右击子系统模块,在模块窗口选项中选择Mask-editmask,则弹出如下窗口。图6添加参数7、点击左边菜单栏的edit,添加参数m和L,注意prompt中的m和L意思是之后对话框中的提示词,而name中的m和L是要被prompt中输入的值导入的变量,如果name中填错了,那么之后的值将无法导入。图7编辑参数8、在系统模型中,双击子系统模块,则会弹出一个新窗口,在新窗口中可以输入m和L的值,之后将会输入,如图8所示。图8输入参数3仿真验证3.1实验设计假定使倒立摆在(θ=0,x=0)初始状态下突加微小冲击力作用,则依据经验知,小车将向前移动,摆杆将倒下。3.2建立M文件编制绘图子程序图9绘图子程序(提示:附录中有子程序方便大家Ctrl+c(^_^),上边只是为了方便对照)。1、在系统模型中,双击子系统模块,则会弹出一个新窗口,在新窗口中输入m和l值,点击OK并运行,如图10所示。图10输入参数2、如图设置tofile模块的参数,Variablename的名字就是M程序中的函数名,这里如果不是signals的话程序是无法运行的。Saveformat要选择Array,因为程序是按数组形式调取变量的,没有选择Array的话运行程序会出现“索引超出矩阵维度”的错误。图11tofile参数设置3、运行M文件程序,执行该程序的结果如图8所示。图12模型验证仿真结果从中可见,在0.1N的冲击力下,摆杆倒下(θ由零逐步增大),小车位置逐渐增加,这一结果符合前述的实验设计,故可以在一定程度上确认该“一阶倒立摆系统”的数学模型是有效的。同时,由图中也可以看出,近似模型在0.8s以前与精确模型非常接近,因此,也可以认为近似模型在一定条件下可以表达原系统模型的性质。4双闭环PID控制器设计一级倒立摆系统位置伺服控制系统如图13所示。图13一级倒立摆系统位置伺服控制系统方框图4.1内环控制器的设计内环采用反馈校正进行控制。图14内环系统结构图反馈校正采用PD控制器,设其传递函数为D2′(s)=𝐾1𝑠+𝐾2,为了抑制干扰,在前向通道上加上一个比例环节D2(s)=控制器参数的整定:设D2(s)的增益K=-20,则内环控制系统的闭环传递函数为令ξ=0.7内环控制器的传递函数为:D2′(s)=0.175𝑠+1.625内环控制系统的闭环传递函数为:W2(s)=64𝑠2+11.2𝑠+644.2外环控制器的设计外环系统前向通道的传递函数为:图12外环系统结构图对外环模型进行降阶处理,若忽略W2(s)的高次项,则近似为一阶传递函数为:对模型𝐺1(𝑠)进行近似处理,则𝐺1(𝑠)的传递函数为:外环控制器采用PD形式,其传递函数为:𝐷1(𝑠)=𝐾3(𝜏𝑠+1)采用单位反馈构成外环反馈通道,则D1′(s),则系统的开环传递函数为:采用基于Bode图法的希望特性设计方法,得𝐾3=0.12,τ=0.87,取τ=1,则外环控制器的传递函数为图13系统仿真结构图5仿真实验5.1简化模型1、根据已设计好的PID控制器,可建立图14系统,设置仿真时间为10ms,单击运行。这个仿真是为了便于理解。2、图14SIMULINK仿真框图3、新建M文件,输入以下命令并运行%将导入到PID.mat中的仿真试验数据读出loadPID.matt=signals(1,:);q=signals(2,:);x=signals(3,:);%drawingx(t)andthera(t)responsesignals%画小车位置和摆杆角度的响应曲线figure(1)hf=line(t,q(:));gridonxlabel('Time(s)')axis([010-0.31.2])ht=line(t,x,'color','r');axis([010-0.31.2])title('\theta(t)andx(t)Responsetoastepinput')gtext('\leftarrowx(t)'),gtext('\theta(t)\uparrow')执行该程序的结果如图15所示图15仿真结果5.2仿真实验注意,图中子系统为简化模型而不是精密模型(MMP网上的写的精密模型,调了好久才发现)。01234567891000.20.40.60.811.21.4图16SIMULINK仿真框图图17系统仿真结果图01234567891000.20.40.60.811.21.46检验系统的鲁棒性检验系统的鲁棒性:将对象的特性做如下变化后,同样在单位阶跃输入下,检验所设计控制系统的鲁棒性能,列表比较系统的性能指标(最大超调量、调节时间、上升时间)。6.1编写程序求系统性能指标新建pid.m文件,输入以下命令并保存loadPID.matclct=signals(1,:);x=signals(2,:);q=signals(3,:);figure(1)hf=line(t,q(:));gridonaxis([010-0.31.2])ht=line(t,x,'color','r');r=size(signals);e=r(1,2);C=x(1,e);%得到系统终值y_max_overshoot=100*(max(x)-C)/C%超调量计算r1=1;while(x(r1)0.1*C)r1=r1+1;endr2=1;while(x(r2)0.9*C)r2=r2+1;endx_rise_time=t(r2)-t(r1)%上升时间计算s=length(t);whilex(s)0.98*C&&x(s)1.02*Cs=s-1;endx_settling_time=t(s)%调整时间计算C1=q(1,e);[max_y,k]=max(q);q_max_overshoot=max(q)-C1%超调量计算q_rise_time=t(k)%上升时间计算s=length(t);whileq(s)-0.02&&q(s)0.02s=s-1;endq_