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

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

基于双闭环PID控制的一阶倒立摆控

制系统设计

姓名:

学号:

学院:

专业:

指导教师:

2018年 1月

目录

1 任务概述 (3)

1.1设计概述 (3)

1.2 要完成的设计任务: (3)

2系统建模 (4)

2.1 对象模型 (4)

2.2 模型建立及封装 (4)

3仿真验证 (9)

3.1 实验设计 (9)

3.2 建立M文件编制绘图子程序 (9)

4 双闭环PID控制器设计 (12)

4.1内环控制器的设计 (13)

4.2外环控制器的设计 (14)

5 仿真实验 (15)

5.1简化模型 (15)

5.2 仿真实验 (17)

6 检验系统的鲁棒性 (18)

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

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

7 结论 (22)

附录 (22)

1 任务概述

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

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

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)*s in(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 =,小车质量M=1kg,倒摆振子质量m,倒摆长度2L,重力加速度

g=10m/)

将以上表达式导入函数。

3、如下图框选后选择create subsystem

图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中输入的值导入的变量,如果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、如图设置to file模块的参数,Variable name的名字就是M程序中的函数

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

相关文档
最新文档