球杆系统实验指导书

球杆系统GBB1004 实验指导书 V2..0

一、系统建模

1.球杆系统的机械模型:

球杆系统机械结构原理图如图1-1:

图1-1 球杆系统机械结构

连线(连杆和同步带轮的连接点与齿轮中心的连线)和水平线的夹角为θ(θ的角度存在一定的限制,在最小和最大的范围之间),它作为连杆的输入,横杆的倾斜角α和θ之间的有如下的数学关系:

角度θ和电机轴之间存在一个减速比n=4的同步带,控制器设计的任务是通过调整齿轮的角度θ,使得小球在某一位置平衡。

小球在横杆上滚动的加速度如下式:

其中 :

小球在横杆上的位置r为输出

小球的质量m = 0.11公斤;

小球的半径R = 0.015米; 重力加速度g = -9.8米/秒2; 横杆长L = 0.4米;

连杆和齿轮的连接点与齿轮中心的距离为d = 0.04米;

小球的转动惯量J = 2*m*R^2/5牛顿.秒2。

我们假设小球在横杆上的运动为滚动,且摩擦力可以忽略不计。

因为我们期望角度α在0附近,因此我们可以在0附近对其进行线性化,得到近

似的线性方程:

拉氏变换得:

2227

.01)()

()

(s s m R

J L mgd s s r =?+=θ

1.2 在Simulink中建立球杆系统的模型

我们将直接建模运动学的非线性方程,系统方程包含r, d/dt(r), alpha, and d/dt(alpha),我们将使用非线性函数模块来描述这些函数,首先,我们要描述系统的输出r。

? 在Simulink中打开一个新的模型。 ? 从线性模块库中插入一个积分模块。

? 在上面的积分模块右边再添加一个积分模块,并把两个模块连接起来。 ? 在连接线上加上"d/dt(r)"的注释,在连接线的附近双击就可以添加文字。 ? 从第二个积分模块的输出端画一条线,并标识为"r"

? 从Connections模块库中插入一个Out模块并和"r"信号线连接。这就是系统的输出。

? 更改"Out"的标识为"r"。

图1-2 积分模块

现在,我们插入一个包含向量 [r d/dt(r) alpha d/dt(alpha)]的函数,输出为d/dt(r)。

? 模块库中插入一个Fcn模块,并把它的输出和第一个积分模块的输入相连。

? 双击Fcn模块,修改函数如下:

(-1/ (J/(R^2) +m))*(m*g*sin (u [3])-m*u [1]*(u [4]) ^2) 此函数模块的输入为向量u,每个元素被指定u[1],u[2]等,我们设定,u[1]=r, u[2]=d/d(r), u[3]=alpha, [4]=d/dt(alpha).

图1-3 MODEL FUCITION

? 关闭对话框,改变Fcn模块的名称为"Ball-Beam Lagrangian Model"。

图1-4 ADD MODEL TO THE SYSTEM

现在,我们将构造函数的输入向量u,它可以通过积分器的输出信号以及使用一个Mux模块实现。

? 模块库中插入一个Mux模块,并把其输出和Ball-Beam的输入相连。

? 双击Mux模块,改变输入的个数为4,这样,Mux模块就有了4个输入。

? 将Mux模块的第二个输入和d/dt(r)信号相连(移动鼠标时按住Ctrl键即可绘制分岔线)。

? 将Mux模块的第一个输入和r信号相连。

3-5 添加乘积模块

现在我们通过theta信号构造alpha和d/dt (alpha)信号。

? 在窗口的左边插入一个模块,改变名称为"theta"。

? 插入一个Gain模块并和theta模块相连,改变名称为"d/L"。

? 将Gain模块的输出和Mux模块的第三个输入相连,标注为"alpha".

? 从Linear模块库中插入一个Derivative模块,并置于alpha信号线的下面。 ? 将Derivative模块的输入和Gain模块的输出相连。

? 将Derivative模块的输出和Mux模块的第四个输入相连。

图1-6 ADD THETA SIGNS TO THE SYSTEM

保存模型为"ball.mdl", 运行开环仿真可以得到系统的开环响应,下一步我们把它封装为一个子模块。

? 创建一个新的模型窗口(从Simulink的File菜单选择New或是按下Ctrl-N)。? 从”Connections”模块库中插入一个“Subsystem”模块。

? 双击”Subsystem”模块打开,可以看到一个新的模块窗口,标题为”Subsystem”。

? 打开前面的ball.mdl窗口,选择所有的模块和连线。

? 复制所有的模块和连线到粘贴缓冲区中。

? 粘贴到”Subsystem”窗口中。

? 关闭”Subsystem”窗口,可以看到一个没有标题的子模块,该模块有一个标识为“theta”的输入和一个标识为“r”的输出。

? 选择模块并拖动角点,改变模块的大小,使得

? 改变“Subsystem”的模块名称为"Ball and Beam Model"。

图1-7 BUILD BALL AND BEAM MODEL

? 从“Sources”模块库中插入一个“Step”模块,并将它和“Ball and Beam”

模块的输入相连。

? 双击“Step”模块,修改“Step Time”为0,然后关闭。

? 从“Sinks”模块中插入一个“Scope”模块,并将它和“Ball and Beam”模块相连。

图1-8 OPEN-LOOP SYSTEM OF BALL AND BEAM

在得到阶跃信号响应前,需要先设置系统的物理参数,在MATLAB的命令行中输入:

m = 0.11;

R = 0.015;

g = -9.8;

L = 0.4;

d = 0.04;

J = 2*m*R^2/5;

现在可以开始仿真,点击“Simulation”菜单的“Start”开始仿真,运行完成后,双击“Scope”打开运行结果。

图1-9 RESPONSE OF OPEN-LOOP SYSTEM

从上图中可以看出,开环系统是一个不稳定的系统,小球将滚动到横杆的一端,这样,需要对小球的位置添加一些控制方法,在本手册中, 我们将添加一些控制器。

在MATLAB中,这个模型可以转化为相应的状态空间模型或是传递函数模型。通过使用“In”和“Out”模块以及MATLAB函数linmod。

为了转化一个模型,需要一个含有“In”和“Out”模块作为输入输出的模型文件,就是前面我们已经完成了的Ball.mdl,在这个模型中,一个输入为theta(齿轮的转角),一个输出为r(小球的位置)。

在MATLAB命令行,键入:

[A,B,C,D]=linmod('ball')

[num,den]=ss2tf(A,B,C,D)

step(num,den);

可以得到如下的开环响应:

图1-10 系统开环响应

1.3 电机模型

伺服系统的闭环结构图如下:

图1-11 闭环系统结构图

设皮带轮的减速比为n,因为La很小,因此简化可以得到:

上式可以简化如下:

其中,

传递函数包含一个积分项1/s,具有积分的特性,通常R

a 、J

和T

m

都很小,伺服

电机可以看作为一个积分器。

? 球杆系统采用电位计检测小球的位置,电位计安装在横杆上,小球位置对应的电压信号输送给IPM100智能驱动的AD转换器。

图1-12 小球的位置信号采集原理

1.4 控制结构

球杆系统的闭环控制系统结构图如下:

图1-13 系统控制结构

直流马达通过一个减速皮带轮带动横杆运动,IPM100智能驱动器内部包一个PID 控制算法,用于控制电机的位置,PID控制器的参数已经调整,保证电机具有较快的响应并没有超调。

系统通过以下步骤来实现控制:

i. 通过RS232下载控制程序到智能伺服驱动器的板载内部寄存器中。

ii. 电机编码器的信号和小球的位置信号每隔一定时间反馈给系统,(伺服时间可设置,默认为5ms)

iii. 板载的DSP对下载的程序进行解码,然后计算根据反馈的位置信息和控制算法计算控制量。

iv. 计算得到的控制量被放大并通过IPM的电源驱动模块作用给电机。

v. 这样,通过控制电机的位置,使得小球在设定的位置保持平衡。

控制系统的流程图如图1-14所示:

图1-14 控制程序流程图

二、实验

2.1 数据采集和处理

我们将通过IPM Motion Studio和MATLAB采集小球的位置信号,以及对其进行数字滤波器的设计。

小球的位置通过电位计的输出电压来检测,它和IPM100的AD转换通道AD5相连,AD5(16位)的范围为0-65535,对应的电压为0-5V,相应的小球位置为0-400mm。

通过IPM Motion Studio采集数据

IPM Motion Studio是一个专业的运动控制开发平台,适合于IPM100运动控制器,IPM Motion Studio的简单使用请参见附录A,更多的详细资料请参考P091.069.UM.1001.PDF.

根据附录A的描述,可以得到反馈的电压信号,为了得到小球的实际位置,可以参考以下的步骤:

i. 声明一个实型的用户变量例如:UserVar

ii. 赋值:UserVar(L)=AD5

iii. UserVar*400 转化UserVar为小球的实际位置。

运行程序,观察采集得到的数据,更多的滤波器设计请参考“Application Data Collection And Filter Design” 。

图2-1 IPM MOTION STUDIO 界面

MATLAB Simuink环境下的数据采集

在实验前,请设置MATLAB路径为球杆系统文件所在的路径,例如:“C:\MATLAB6p5 \toolbox \googoltech\ball&beam”

图2-2 MATLAB 路径

MATLAB的数据采集和处理工具箱提供了强大的数据采集功能,可以很方便的进行数据采集和处理的工作。

请参考以下步骤:

i. 在Simulink中打开”Googol Educational Products”工具箱,打开

“Ball&Beam \Control Demo\Ball&Beam Data Collection And Filter Design”演示程序:

图2-3 MATLAB 示例

图2-3 中各部分的意义如下:

“Feedback Voltage”模块用于采集IPM100控制器的AD5通道的数值,“Real Position ”模块用于转化AD5通道的数值为小球的实际位置(0-400mm),“Noise Filter1”为根据需要而设计的滤波器,点击“Scope”可以观测到滤波前后的差异,可以作为一个在MATLAB Simulink环境下的滤波器的设计与实时控制的实验。

ii. 运行控制程序,使小球在横杆上滚动,可以得到如下的实验结果:

图4-4 EXPERIMENT RESULT

2.2 球杆系统的开环模型

球杆系统是一个典型的单输入单输出系统,其传递函数可以近似为一个两阶的积分器:

图2-5 开环系统

其中:

为开环传递函数的拉普拉斯变换。

X(s)和θ(s)分别为系统输出(小球的位置)和输入(齿轮的角度)的拉普拉斯变换。 开环系统的阶跃响应如图2-6所示,可以看出,系统不稳定,需要对其添加控制器。

图2-6 球杆系统的开环响应

假设控制的指标要求如下:

? 调整时间小于1秒(2%误差)

? 超调量小于10%

下面将介绍几种适合于此类问题的控制器设计方法:

 PID控制

 根轨迹法

 频率响应法

虽然IPM100是一个数字的(离散)智能控制器,为不失一般性,我们还是采用连续的传递函数,相同的设计方法可以很容易的转化到离散系统中。

在MATLAB Simulink环境的下实例仿真,可以形象地理解系统的特性。

2.3 球杆系统的PID控制

在这个实验中,我们将采用PID控制方法设计数字控制器。PID控制器的传递函数为:

其中,K

P , K

I

和K

D

为PID控制器的比例,积分和微分参数。

2.3.1 P控制

首先, 我们将分析在添加P控制器后,系统的闭环响应,然后,微分和积分控制器将在需要时加。

理论

含有控制器、球杆系统结构和小球位置反馈的系统框图如下所示:

图2-7 闭环比例控制结构图

其中,Xd(s)为小球目标位置的拉普拉斯变换,

P控制器为:

GP (s)=KP

闭环系统的传递函数为:

可以比较明显的看出,这是一个二阶系统。

仿真

=3,闭环系统的传递函数可以通过以下的MATLAB命令进行仿真。 假设比例增益K

P

m = 0.11;

R = 0.015;

g = -9.8;

L = 0.4;

d = 0.04;

J = 2*m*R^2/5;

K = (m*g*d)/(L*(J/R^2+m)); %simplifies input

num = [-K];

den = [1 0 0];

plant=tf(num,den);

kp = 3;

sys_cl=feedback (kp*plant, 1);

step(0.2*sys_cl)

在MATLAB环境下运行文件。

阶跃信号的响应如下图所示:

图2-8 P控制下的响应

可以看出,添加P控制器后,系统并不能稳定。改变Kp 的值后,系统还是不稳定的,可以看出,对于一个惯性系统,在P控制器作用下,系统会保持一个等幅振荡。实验

i. 按照第二章描述的步骤,在MATLAB Simulink环境下运行演示程序。

图2-9 PID控制演示界面

ii. 将控制器设置为P控制器。

图2-10 切换控制器

iii. 设置目标位置为200mm

iv. 用手指将小球拨动到100mm的地方。 v. 松开小球,系统将对小球的位置进行平衡。

vi. 改变并观察其响应,实验结果如下,比较实验结果和仿真结果的区别。(建

议参数不要设置过大)

图2-11 实验结果

2.3.2 PD 控制 理论

给控制器添加一个微分控制,闭环系统的结构图如下:

图2-12 PD控制器闭环结构

PD控制器的传递函数为:

s K K s G D P PD +=)(

为简单起见,我们假设固定比例增益K P ,调整K D. 的大小。

闭环系统的传递函数为:

P

D D P PD PD d cK s cK s s K K c s W s G s W s G s X s X +++=+=2)()()(1)()()()

( 仿真

将下列程序输入到MATLAB的M文件中,运行仿真观察阶跃响应的仿真结果。

m = 0.11;

R = 0.015;

g = -9.8;

L = 0.4;

d = 0.04;

J = 2*m*R^2/5;

K = (m*g*d)/(L*(J/R^2+m)); %simplifies input

num = [-K];

den = [1 0 0];

plant=tf(num,den);

kp = 6;

kd = 6;

contr=tf([kd kp],1);

sys_cl=feedback(contr*plant,1);

t=0:0.01:5;

step(0.2*sys_cl)

仿真结果如图2-13所示:

可以看出,闭环系统是一个稳定的系统,但是超调和稳定时间都过大。

图2-13 SIMULATION RESULT OF STEP RESPONSE UNDER PD CONTROLLER

实验

i. 按照第二章——开始使用的内容,在MATLAB Simulink中运行演示程序。

ii. 切换控制器为PD控制器,并设置如下的参数。

图2-14 控制器选择以及参数

iii. 设置目标位置为200mm

iv. 移动小球的位置,使其大概在50mm的地方。

v. 松开小球,系统将试图稳定小球的位置。

vi. 改变K P和K D ,观察其响应。

在PD控制器的作用下,系统可以很快的平衡,但是稳态误差比较大,分析小球的位置改变和齿轮转动角度的变化之间的关系,对比实验结果和仿真结果的区别。

图2-15 PD控制器控制结果

2.3.3 PID控制分析

理论

下一步的实验将研究PID控制器的特性,添加PID控制器后,闭环系统的结构图如下:

图2-16 PID控制器闭环结构图

PID控制器的传递函数为:

s

K s K s K s G I

P D PID ++=2)(

K D 和 K I 对应于积分和微分控制,K P 为比例增益。

闭环系统的传递函数如下所示:

I

P D I P D PID PID d cK s cK s cK s K s K s K c s W s G s W s G s X s X +++++=+=2

32)()()(1)()()()( 仿真

在MATLAB 仿真程序中,设置控制参数: K P =10, K I =1, K D =10

kp3 = 10; % PID Controller kd3 = 10; Ki=1;

contrPID=tf([kd3 kp3 Ki],[1 0]);

sys_cl_PID=feedback(contrPID*ball,1); t=0:0.01:10; SUBPLOT(3,1,3)

step(0.2*sys_cl_PID,t)

title('Step Response of PID Controller')

从仿真结果可以看出,增大K D 可以减少超调量,设置K D =20 ,系统的阶跃信号响应如图2-17所示。

可以看出,超调已经满足要求,但是调整时间还需要减少,为减少调整时间,我们可以稍增大K P 。

图217 PID控制器下的仿真结果

相关文档
最新文档