您好,欢迎来到钮旅网。
搜索
您的当前位置:首页基于双闭环PID控制的一阶倒立摆控制系统设计之欧阳与创编

基于双闭环PID控制的一阶倒立摆控制系统设计之欧阳与创编

来源:钮旅网
欧阳与创编 2021.03.08

自动控制原理课程设计说明书

时间:2021.03.08 创作:欧阳与

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

姓名: 学号: 学 院: 专 业: 指导教师:

1月

目录

1 任务概述2

1.1设计概述2

1.2 要完成的设计任务:3 2系统建模4

2.1 对象模型4 2.2 模型建立及封装4 3仿真验证6

3.1 实验设计6

欧阳与创编 2021.03.08

欧阳与创编 2021.03.08

3.2 建立M文件编制绘图子法度6 4 双闭环PID控制器设计7

4.1内环控制器的设计8 4.2外环控制器的设计8 5 仿真实验9

5.1简化模型9 5.2 仿真实验10 6 检验系统的鲁棒性11

6.1 编写法度求系统性能指标11 6.2 修改参数验证控制系统的鲁棒性13 7 结论13 附录14 1任务概述 1.1设计概述

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

图1一阶倒立摆控制系统

这是一个借助于“SIMULINK封装技术——子系统”,

欧阳与创编

2021.03.08

欧阳与创编 2021.03.08

在模型验证的基础上,采取双闭环PID控制计划,实现倒立摆位置伺服控制的数字仿真实验。 1.2 要完成的设计任务:

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

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

(3)一阶倒立摆系统为“自不稳定的非最小相位系统”。将系统小车位置作为“外环”,而将摆杆摆角作为“内环”,设计内化与外环的PID控制器; (4)在单位阶跃输入下,进行SIMULINK仿真;

(5)编写绘图法度,绘制阶跃响应曲线,并编程求解系统性能指标:最年夜超调量、调节时间、上升时间; (6)检验系统的鲁棒性:将对象的特性做如下变更后,同样在单位阶跃输入下,检验所设计控制系统的鲁棒性能,列表比较系统的性能指标(最年夜超调量、调节时间、上升时间)。

倒摆长度L不变,倒立摆的振子质量m从1kg辨别修

欧阳与创编

2021.03.08

欧阳与创编 2021.03.08

改成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邻近的细微变更,这时可以将模型线性化,这时可以近似认为: 一阶倒立摆的简化模型的状态方程为: 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))

欧阳与创编

2021.03.08

欧阳与创编 2021.03.08

Fun2:(4*u[1]30*m*u[3])/(4+m)

Fun3:(u[1]10*(1+m)*u[3])/(m*l4/3*l*(1+m)) (其中J =

,小车质量M=1kg,倒摆振子质量m,倒

摆长度2L,重力加速度g=10m/) 将以上表达式导入函数。

3、如下图框选后选择createsubsystem

图3封装

4、封装之后如下图

图4子系统建立

5、将精确模型subsystem和简化模型subsystem1组合成以下系统以供验证,注意add的符号是++,不是+,网上其他的课设都是错的。(输入信号是由阶跃信号合成的脉冲,幅值为0.05,继续时间(step time)为0.1s)。

图5系统模块封装

6、鼠标右击子系统模块,在模块窗口选项中选择Mask>edit mask,则弹出如下窗口。

图6添加参数

7、点击左边菜单栏的edit,添加参数m和L,注意prompt中的m和L意思是之后对话框中的提示词,而name中的m和L是要被prompt中输入的值导入的变量,如

欧阳与创编

2021.03.08

欧阳与创编 2021.03.08

果name中填错了,那么之后的值将无法导入。

图7编辑参数

8、在系统模型中,双击子系统模块,则会弹出一个新窗口,在新窗口中可以输入m和L的值,之后将会输入,如图8所示。

图8输入参数

3仿真验证 3.1 实验设计

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

3.2 建立M文件编制绘图子法度

图9绘图子法度

(提示:附录中有子法度便利年夜家Ctrl+c(^_^),上边只是为了便利对比)。

1、 在系统模型中,双击子系统模块,则会弹出一个新

窗口,在新窗口中输入m和l值,点击OK并运行,如图10所示。

欧阳与创编 2021.03.08

欧阳与创编 2021.03.08

图10 输入参数

2、 如图设置

tofile模块的参数,Variablename的名字就

是M法度中的函数名,这里如果不是signals的话法度是无法运行的。Save format要选择Array,因为法度是按数组形式调取变量的,没有选择Array的话运行法度会呈现“索引超出矩阵维度”的毛病。

图11 tofile参数设置

3、 运行

M文件法度,执行该法度的结果如图8所示。

图12 模型验证仿真结果

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

4 双闭环PID控制器设计

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

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

欧阳与创编

2021.03.08

欧阳与创编 2021.03.08

4.1内环控制器的设计

内环采取反响校正进行控制。

图14 内环系统结构图

反响校正采取PD控制器,设其传递函数为

,为了抑制干扰,在 前向通道上加上一

个比例环节

=K

控制器参数的整定: 设为 令ξ= 0.7

内环控制器的传递函数为:内环控制系统的闭环传递函数为:4.2外环控制器的设计

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

的增益K=20,则内环控制系统的闭环传递函数

图12 外环系统结构图

对外环模型进行降阶处理,若忽略近似为一阶传递函数为:

的高次项,则

欧阳与创编 2021.03.08

欧阳与创编 2021.03.08

对模型进行近似处理,则

的传递函数为:

外环控制器采取PD形式,其传递函数为:

采取单位反响构成外环反响通道,则环传递函数为:

,则系统的开

采取基于Bode图法的希望特性设计办法,得τ= 0.87,取τ= 1,则外环控制器的传递函数为

图13 系统仿真结构图

5 仿真实验 5.1简化模型

1、 根据已设计好的

PID控制器,可建立图14系统,设

置仿真时间为10ms,单击运行。这个仿真是为了便于理解。

图14 SIMULINK仿真框图

2、 新建

M文件,输入以下命令并运行

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

欧阳与创编

2021.03.08

欧阳与创编 2021.03.08

q=signals(2,:);

x=signals(3,:); %drawing x(t) and thera(t) response signals

%画小车位置和摆杆角度的响应曲线 figure(1) 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('\heta(t) and x(t) Response to a step input') gtext('\\leftarrow x(t)'),gtext('\heta(t) \ow') 执行该法度的结果如图15所示

图15 仿真结果

5.2 仿真实验

注意,图中子系统为简化模型而不是精密模型(MMP网上的写的精密模型,调了好久才发明)。

图16 SIMULINK仿真框图 图17系统仿真结果图

欧阳与创编 2021.03.08

欧阳与创编 2021.03.08

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); %获得系统终值

欧阳与创编

2021.03.08

欧阳与创编 2021.03.08

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=s1; end

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=s1; end

欧阳与创编 2021.03.08

欧阳与创编 2021.03.08

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、 修改输入参数并运行,再运行

pid.m文件,获得响

应曲线及性能指标,记录表1

图18 修改输入参数 表1 性能坐标比较

2、 仿真实验的结果如图

19所示:

图19修改倒立杆质量和长度时系统仿真结果 7 结论 结论:

1、原系统在0.1N的冲击力下,摆杆倒下(θ由零逐步增年夜), 小车位置逐渐增加,这一结果合适前述的实验设计,故可以在一定水平上确认该“一阶倒立摆系统”

欧阳与创编

2021.03.08

欧阳与创编 2021.03.08

的数学模型是有效的。验证实验中,通过精确模型与简化模型比较,从图中可以看出,0.8s以前是很是接近,因此,也可以认为近似模型在一定条件下可以表达原系统模型的性质。

2、经过双闭环PID 控制的系统,能跟随给定并稳定下来,且θ终值为0使摆杆不倒。说明PID控制有效。 3、修改倒立摆的摆杆质量m和长度L。从图11中可以看出,在参数变更的一定规模内系统坚持稳定,控制系统具有一定的鲁棒性。 附录

q=signals(4,: ); %读取精确模型中倒摆摆角信号

xx=signals(5,: ); %读取简化模型中的小车位置信号

qq=signals(6,: ); %读取简化模型中倒立摆摆角信号

figure(1) %界说第一个图形

hf=line(t,f(:)); %连接时间作用

欧阳与创编

2021.03.08

欧阳与创编 2021.03.08

力曲线 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' ) %界说曲线题目名称

欧阳与创编 2021.03.08

欧阳与创编 2021.03.08

gtext ('\\leftarrow f (t)'),gtext ('x (t) \\rightarrow') , gtext (' \\leftarrow x''(t)') figure (2) hf=line(t,f(:)); grid on xlabel('Time') ylabel('Force(N)')

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 \heta(t)and \heta'' in rad to a f(t) pulse of 0.1 N' )

时间:2021.03.08 创作:欧阳与 欧阳与创编 2021.03.08

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- niushuan.com 版权所有 赣ICP备2024042780号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务