基于双闭环PID控制的一阶倒立摆控制系统设计 - 图文

更新时间:2024-03-12 02:35:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

基于双闭环PID控制的一阶倒立摆控制系统设计

福州大学至诚学院

题 目:姓 名:系 别:专 业:

本科生课程设计

基于双闭环PID控制的一阶

倒立摆控制系统设计

电气工程及其自动化

电气工程与自动化

目 录

1 任务概述-----------------------------------------------------1

2 系统建模-----------------------------------------------------2

3 仿真验证-----------------------------------------------------5

4 双闭环PID控制器设计----------------------------------10

5 仿真实验 -----------------------------------------------------13

6 检验系统的鲁棒性-----------------------------------------15

7 结论--------------------------------------------------------------------19

8 体会--------------------------------------------------------------------19

1 任务概述

1.1 设计概述

如图1 所示的“一阶倒立摆控制系统”中,通过检测小车位置与摆杆的摆动角,来适当控制驱动电动机拖动力的大小,控制器由一台工业控制计算机(IPC)完成。

图1 一阶倒立摆控制系统

这是一个借助于“SIMULINK封装技术——子系统”,在模型验证的基础上,采用双闭环PID控制方案,实现倒立摆位置伺服控制的数字仿真实验。

1.2 要完成的设计任务:

(1)通过理论分析建立对象模型(实际模型),并在原点进行线性化,得到线性化模型;将实际模型和线性化模型作为子系统,并进行封装,将倒立摆的振子质量m和倒摆长度L作为子系统的参数,可以由用户根据需要输入;

(2)设计实验,进行模型验证;

(3)一阶倒立摆系统为“自不稳定的非最小相位系统”。将系统小车位置作为“外环”,而将摆杆摆角作为“内环”,设计内化与外环的PID控制器;

(4)在单位阶跃输入下,进行SIMULINK仿真;

1

(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附近的细微变化,这时可以将模型线性化,这时可以近似认为:

0,θ,1;

一阶倒立摆的简化模型的状态方程为:

(θ) /()

( θ) /()

2

2.2 模型建立及封装

1、建立以下模型:

图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 =mL^2/3,小车质量M=1kg,倒摆振子质量m,倒摆长度2L,重力加速度g=10m/s^2)

3

将以上表达式导入函数。

3、匡选要封装区后选择[Edit>>Create Subsystem]便得以下系统:

图3 子系统建立

4、鼠标右击子系统模块,在模块窗口选项中选择[Edit>>Edit Mask>>Parameters],则弹出如下窗口,添加参数m和l。

图4 添加参数

4

5、将精确模型subsystem和简化模型subsystem1组合成以下系统以供验证(输入信号是由阶跃信号合成的脉冲,幅值及持续时间为0.1s)。

图5 系统模块封装

3 仿真验证

3.1 实验设计

假定使倒立摆在(θ=0,x=0)初始状态下突加微小冲击力作用,则依据经验知,小车将向前移动,摆杆将倒下。

3.2 编制绘图子程序

1、新建M文件输入以下程序并保存。

clc load xy.mat

t=signals(1,:); %读取时间信号 f=signals(2,:); %读取作用力F信号

x=signals(3,:); %读取精确模型中的小车位置信号 q=signals(4,:); %读取精确模型中倒摆摆角信号

5

xx=signals(5,:); %读取简化模型中的小车位置信号 qq=signals(6,:); %读取简化模型中倒立摆摆角信号 figure(1) %定义第一个图形 hf=line(t,f(:)); %连接时间-作用力曲线 grid on;

xlabel('Time(s)') %定义横坐标 ylabel('Force(N)') %定义纵坐标 axis([0 1 0 0.12]) %定义坐标范围 axet=axes('Position',get(gca,'Position'),... 'XAxisLocation','bottom',...

'YAxisLocation','right','color','none',...

'XColor','k','YColor','k'); %定义曲线属性 ht=line(t,x,'color','r','parent',axet); %连接时间-小车位置曲线

ht=line(t,xx,'color','r','parent',axet); %连接时间-小车速度曲线

ylabel('Evolution of the xposition(m)') %定义坐标名称 axis([0 1 0 0.1]) %定义坐标范围 title('Response x and x''in meter to a f(t) pulse of 0.1 N' ) %定义曲线标题名称

gtext ('\\leftarrow f (t)'),gtext ('x (t) \\rightarrow') , gtext (' \\leftarrow x''(t)')

6

figure (2) hf=line(t,f(:)); grid on xlabel('Time') ylabel('Force(N)') axis([0 1 0 0.12])

axet=axes('Position',get(gca,'Position'),... 'XAxisLocation','bottom',...

'YAxisLocation','right','color','none',... 'XColor','k','YColor','k');

ht=line(t,q,'color','r','parent',axet); ht=line(t,qq,'color','r','parent',axet); ylabel('Angle evolution (rad)') axis([0 1 -0.3 0])

title('Response \\theta(t)and \\theta'' in rad to a f(t) pulse of 0.1 N' )

gtext('\\leftarrow f (t)'), gtext ('\\theta (t) \\rightarrow'), gtext (' \\leftarrow \\theta''(t)'3.3 仿真验证

7

2、在系统模型中,双击子系统模块,则会弹出一个新窗口,在新窗口中输入m和l值,点击OK并运行,如图7所示。

图6 参数输入

3、运行M文件程序,执行该程序的结果如图8所示。

8

图7 模型验证仿真结果

从中可见,在0.1N的冲击力下,摆杆倒下(θ由零逐步增大), 小车位置逐渐增加,这一结果符合前述的实验设计,故可以在一定程度上确认该“一阶倒立摆系统”的数学模型是有效的。同时,由图中也可以看出,近似模型在0.8s以前与精确模型非常接近,因此,也可以认为近似模型在一定条件下可以表达原系统模型的性质。

9

4 双闭环PID控制器设计

一级倒立摆系统位置伺服控制系统如图10所示。

内环 r(s)X

D2'(s)D1'(s)外环-一级倒立摆D1(s)-D2(s)F(s)1.6?2s2?40?(s)?0.4s2?10s2G1(s)X(s)G2(s)

图10 一级倒立摆系统位置伺服控制系统方框图

4.1内环控制器的设计

内环采用反馈校正进行控制。

图11 内环系统结构图

D(s)?r(s)--+K1.6G2(s)D2'(s)?(s)反馈校正采用

PD控制器,设其传递函数为D'(s)?K1s?K2,为了抑制干扰,在2前向通道上加上一个比例环节D2(s)?K。 10

控制器参数的整定:

设D2(s)的增益K??20,则内环控制系统的闭环传递函数为: KKsG2(s)64W2(s)??2'1?KKsG2(s)D2(s)s?64K1s?64K2?40?0.7?K1?0.175??K2?1.625令: ?

??64K2?40?64???64K1?2?0.7?64

内环控制器的传递函数为: '

D2(s)?0.175s?1.62564内环控制系统的闭环传递函数为:W 2(s)?2s?11.2s?64

4.2外环控制器的设计

外环系统前向通道的传递函数为:

64(?0.4s2?10)W2(s)G1(s)?22s(s?11.2s?64)?(s)X(s)Xr(s)-D1(s)K3(?s?1)W2(s) D1(s) K=1 'G1(s)图12 外环系统结构图

11

对外环模型进行降阶处理,若忽略W2(s)的高次项,则近似为一阶传递函数为: 64W2(s)?11.2s?6410G1(s)?2对模型G1(s)进行近似处理,则G1(s)的传递函数为: s

外环控制器采用PD形式,其传递函数为: D 1(s)?K3(?s?1)

采用单位反馈构成外环反馈通道,即D'(s)?1,则系统的开环传递函数为 1

57W(s)?W2(s)G1(s)D1(s)?2K3(?s?1)s(s?57)采用基于Bode图法的希望特性设计方法,得K3?0.12,??0.877,取??1,则外

环控制器的传递函数为:

一级倒立摆D1(s)?0.12(s?1)Xr(s)

- F(s)0.12(s?1)--201.6W(s)X(s)?(s)X调节器0.175s?1.625θ调节器图13 系统仿真结构图

12

5 仿真实验

1、根据已设计好的PID控制器,可建立图14系统,设置仿真时间为20ms,单击运行。(其中的对象模型为精确模型的封装子系统形式)

图14 SIMULINK仿真框图

2、新建M文件,输入以下命令并运行。

%将导入到PID.mat中的仿真试验数据读出 load PID.mat t=signals(1,:); q=signals(2,:); x=signals(3,:);

%drawing x(t) and thera(t) response signals %画小车位置和摆杆角度的响应曲线 figure(1)

13

hf=line(t,q(:)); grid on

xlabel ('Time (s)') axis([0 10 -0.3 1.2]) ht=line(t,x,'color','r'); axis([0 10 -0.3 1.2])

title('\\theta(t) and x(t) Response to a step input') gtext('\\leftarrow x(t)'),gtext('\\theta(t) \%uparrow')

执行该程序的结果如图9所示,从中可见,双闭环PID控制方案是有效的。

图15 系统仿真结果图

14

6 检验系统的鲁棒性

检验系统的鲁棒性:将对象的特性做如下变化后,同样在单位阶跃输入下,检验所设计控制系统的鲁棒性能,列表比较系统的性能指标(最大超调量、调节时间、上升时间)。

6.1 编写程序求系统性能指标

新建pid.m文件,输入以下命令并保存 load PID.mat clc

t=signals(1,:); x=signals(2,:); q=signals(3,:); figure(1) hf=line(t,q(:)); grid on

axis([0 10 -0.3 1.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; end r2=1;

while (x(r2)<0.9*C) r2=r2+1; end

x_rise_time=t(r2)-t(r1) %上升时间计算 s=length(t);

while x(s)>0.98*C&&x(s)<1.02*C s=s-1; end

15

x_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);

while q(s)>-0.02&&q(s)<0.02 s=s-1; end

q_settling_time=t(s) %调整时间计算

6.2 改变参数验证控制系统的鲁棒性

倒摆长度L不变,倒立摆的振子质量m从1kg分别改变为1.5kg、2kg、2.5kg、0.8kg、0.5kg;倒立摆的振子质量m 不变,倒摆长度L 从0.3m 分别改变为0.5m、0.6m、0.2m、0.1m。在单位阶跃输入下,检验所设计系统的鲁棒性。

1、双击subsistem改变输入参数并运行,再运行pid.m文件,得到响应曲线及性能指标,记录表1

图16 改变输入参数

16

对象参数 振子质量 m/kg 1 1.5 2 2.5 0.8 0.5 1 1 1 1 L/m 0.3 0.3 0.3 0.3 0.3 0.3 0.5 0.6 0.2 0.1 14.1155 10.2458 5.1799 8.3506 15.4510 17.2827 11.9832 12.0245 15.1632 16.2328 0.1251 0.1406 0.1649 0.1962 0.1196 0.1166 0.1551 0.1693 0.1102 0.0973 5.6095 4.9286 4.1058 5.7144 7.4006 8.0565 5.2784 5.6026 7.1334 7.5863 倒摆长度 x θ x 最大超调量 性能指标 调节时间 θ 4.0100 3.3381 3.33381 4.7558 4.0793 4.3415 3.8402 3.5867 4.1097 4.2172 x 1.2605 1.1199 0.7730 0.6862 1.2632 1.3468 1.1323 1.2342 1.3124 1.2786 上升时间 θ 1.3331 1.4550 1.4857 1.5169 1.3277 1.3154 1.4286 1.4752 1.3363 1.3264 表1 性能坐标比较

2、仿真实验的结果如图11所示:

17

18

7 结论

结论:

1、原系统在0.1N的冲击力下,摆杆倒下(θ由零逐步增大), 小车位置逐渐增加,这一结果符合前述的实验设计,故可以在一定程度上确认该“一阶倒立摆系统”的数学模型是有效的。验证实验中,通过精确模型与简化模型比较,从图中可以看出,0.8s以前是非常接近,因此,也可以认为近似模型在一定条件下可以表达原系统模型的性质。

2、经过双闭环PID 控制的系统,能跟随给定并稳定下来,且θ终值为0使摆杆不倒。说明PID控制有效。

3、改变倒立摆的摆杆质量m和长度L。从图11中可以看出,在参数变化的一定范围内系统保持稳定,控制系统具有一定的鲁棒性。

遇到问题:

1、如何设计使m,l参数可改变。

2、建立子系统时,子系统模块变成由两输入和两个输出。

3、仿真验证时响应不合要求,加入PID控制后运行很久仍无结果。 4、系统性能指标编程无从下手,对θ性能指标定义不明确。

如何解决:

1、请教老师后得知,可将已知参数代人模型,将m,l设为变量并封装即可。

2、询问同学,他们也遇到同样问题,只要将精确模型仿真图和简化模型仿真图独立出来再建立子系统就可变成一个输入和两个输出。

3、经检查图2模型验证原理图发现反馈引出点错误,改正后问题得以解决。

4、查看课本相关程序及询问同学得以启发,请教老师,明确指标定义,检查编程过程中错误完成编程任务。

8 体会

通过MATLAB实践,加强了用MATLAB对控制系统进行仿真,加深了对自动控制的应用与理解。从对一阶倒立摆的模型建立、系统模型的仿真验证及PID的控制调节的应用,使我明白如何将自动控制原理运用于实际中。由于系统模型在材料及课本中已经告诉我们,所以做起来相对容易,如果要完全由我们分析和设计就会更困难。要解决实际问题还远远不够,所以要更加注重实践,多下功夫才能学好。

19

7 结论

结论:

1、原系统在0.1N的冲击力下,摆杆倒下(θ由零逐步增大), 小车位置逐渐增加,这一结果符合前述的实验设计,故可以在一定程度上确认该“一阶倒立摆系统”的数学模型是有效的。验证实验中,通过精确模型与简化模型比较,从图中可以看出,0.8s以前是非常接近,因此,也可以认为近似模型在一定条件下可以表达原系统模型的性质。

2、经过双闭环PID 控制的系统,能跟随给定并稳定下来,且θ终值为0使摆杆不倒。说明PID控制有效。

3、改变倒立摆的摆杆质量m和长度L。从图11中可以看出,在参数变化的一定范围内系统保持稳定,控制系统具有一定的鲁棒性。

遇到问题:

1、如何设计使m,l参数可改变。

2、建立子系统时,子系统模块变成由两输入和两个输出。

3、仿真验证时响应不合要求,加入PID控制后运行很久仍无结果。 4、系统性能指标编程无从下手,对θ性能指标定义不明确。

如何解决:

1、请教老师后得知,可将已知参数代人模型,将m,l设为变量并封装即可。

2、询问同学,他们也遇到同样问题,只要将精确模型仿真图和简化模型仿真图独立出来再建立子系统就可变成一个输入和两个输出。

3、经检查图2模型验证原理图发现反馈引出点错误,改正后问题得以解决。

4、查看课本相关程序及询问同学得以启发,请教老师,明确指标定义,检查编程过程中错误完成编程任务。

8 体会

通过MATLAB实践,加强了用MATLAB对控制系统进行仿真,加深了对自动控制的应用与理解。从对一阶倒立摆的模型建立、系统模型的仿真验证及PID的控制调节的应用,使我明白如何将自动控制原理运用于实际中。由于系统模型在材料及课本中已经告诉我们,所以做起来相对容易,如果要完全由我们分析和设计就会更困难。要解决实际问题还远远不够,所以要更加注重实践,多下功夫才能学好。

19

本文来源:https://www.bwwdw.com/article/w608.html

Top