球杆系统实验指导书 1.docx
《球杆系统实验指导书 1.docx》由会员分享,可在线阅读,更多相关《球杆系统实验指导书 1.docx(60页珍藏版)》请在冰点文库上搜索。
球杆系统实验指导书1
球杆系统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附近对其进行线性化,得到近似的线性方程:
拉氏变换得:
r(s)=mgd⋅1=0.7
θ(s)
L(J+m)ss
R2
1.2在Simulink中建立球杆系统的模型
我们将直接建模运动学的非线性方程,系统方程包含r,d/dt(r),alpha,andd/dt(alpha),我们将使用非线性函数模块来描述这些函数,首先,我们要描述系统的输出r。
•在Simulink中打开一个新的模型。
•从线性模块库中插入一个积分模块。
•在上面的积分模块右边再添加一个积分模块,并把两个模块连接起来。
•在连接线上加上"d/dt(r)"的注释,在连接线的附近双击就可以添加文字。
•从第二个积分模块的输出端画一条线,并标识为"r"
•从Connections模块库中插入一个Out模块并和"r"信号线连接。
这就是系统的输出。
•更改"Out"的标识为"r"。
图1-2积分模块
现在,我们插入一个包含向量[rd/dt(r)alphad/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-3MODELFUCITION
•关闭对话框,改变Fcn模块的名称为"Ball-BeamLagrangianModel"。
图1-4ADDMODELTOTHESYSTEM现在,我们将构造函数的输入向量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-6ADDTHETASIGNSTOTHESYSTEM保存模型为"ball.mdl",运行开环仿真可以得到系统的开环响应,下一步我们
把它封装为一个子模块。
•创建一个新的模型窗口(从Simulink的File菜单选择New或是按下Ctrl-N)。
•从”Connections”模块库中插入一个“Subsystem”模块。
•双击”Subsystem”模块打开,可以看到一个新的模块窗口,标题为”Subsystem”。
•打开前面的ball.mdl窗口,选择所有的模块和连线。
•复制所有的模块和连线到粘贴缓冲区中。
•粘贴到”Subsystem”窗口中。
•关闭”Subsystem”窗口,可以看到一个没有标题的子模块,该模块有一个标识为“theta”的输入和一个标识为“r”的输出。
•选择模块并拖动角点,改变模块的大小,使得
•改变“Subsystem”的模块名称为"BallandBeamModel"。
图1-7BUILDBALLANDBEAMMODEL
•从“Sources”模块库中插入一个“Step”模块,并将它和“BallandBeam”模块的输入相连。
•双击“Step”模块,修改“StepTime”为0,然后关闭。
•从“Sinks”模块中插入一个“Scope”模块,并将它和“BallandBeam”模块相连。
图1-8OPEN-LOOPSYSTEMOFBALLANDBEAM在得到阶跃信号响应前,需要先设置系统的物理参数,在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-9RESPONSEOFOPEN-LOOPSYSTEM
从上图中可以看出,开环系统是一个不稳定的系统,小球将滚动到横杆的一端,这样,需要对小球的位置添加一些控制方法,在本手册中,我们将添加一些控制器。
在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,具有积分的特性,通常Ra、J0和Tm都很小,伺服
电机可以看作为一个积分器。
♦球杆系统采用电位计检测小球的位置,电位计安装在横杆上,小球位置对应的电压信号输送给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数据采集和处理
我们将通过IPMMotionStudio和MATLAB采集小球的位置信号,以及对其进行数字滤波器的设计。
小球的位置通过电位计的输出电压来检测,它和IPM100的AD转换通道AD5相连,AD5(16位)的范围为0-65535,对应的电压为0-5V,相应的小球位置为0-400mm。
通过IPMMotionStudio采集数据
IPMMotionStudio是一个专业的运动控制开发平台,适合于IPM100运动控制器,IPMMotionStudio的简单使用请参见附录A,更多的详细资料请参考P091.069.UM.1001.PDF.
根据附录A的描述,可以得到反馈的电压信号,为了得到小球的实际位置,可以参考以下的步骤:
i.声明一个实型的用户变量例如:
UserVarii.赋值:
UserVar(L)=AD5
iii.UserVar*400转化UserVar为小球的实际位置。
运行程序,观察采集得到的数据,更多的滤波器设计请参考“ApplicationData
CollectionAndFilterDesign”。
图2-1IPMMOTIONSTUDIO界面MATLABSimuink环境下的数据采集
在实验前,请设置MATLAB路径为球杆系统文件所在的路径,例如:
“C:
\MATLAB6p5\toolbox\googoltech\ball&beam”
图2-2MATLAB路径
MATLAB的数据采集和处理工具箱提供了强大的数据采集功能,可以很方便的进行数据采集和处理的工作。
请参考以下步骤:
i.在Simulink中打开”GoogolEducationalProducts”工具箱,打开“Ball&Beam\ControlDemo\Ball&BeamDataCollectionAndFilterDesign”演示程序:
图2-3MATLAB示例图2-3中各部分的意义如下:
“FeedbackVoltage”模块用于采集IPM100控制器的AD5通道的数值,“Real
Position”模块用于转化AD5通道的数值为小球的实际位置(0-400mm),“Noise
Filter1”为根据需要而设计的滤波器,点击“Scope”可以观测到滤波前后的差异,可以作为一个在MATLABSimulink环境下的滤波器的设计与实时控制的实验。
ii.运行控制程序,使小球在横杆上滚动,可以得到如下的实验结果:
图4-4EXPERIMENTRESULT
2.2球杆系统的开环模型
球杆系统是一个典型的单输入单输出系统,其传递函数可以近似为一个两阶的积分器:
图2-5开环系统其中:
为开环传递函数的拉普拉斯变换。
X(s)和θ(s)分别为系统输出(小球的位置)和输入(齿轮的角度)的拉普拉斯变换。
开环系统的阶跃响应如图2-6所示,可以看出,系统不稳定,需要对其添加控制器。
图2-6球杆系统的开环响应
假设控制的指标要求如下:
♦调整时间小于1秒(2%误差)
♦超调量小于10%
下面将介绍几种适合于此类问题的控制器设计方法:
PID控制
根轨迹法频率响应法
虽然IPM100是一个数字的(离散)智能控制器,为不失一般性,我们还是采用连续的传递函数,相同的设计方法可以很容易的转化到离散系统中。
在MATLABSimulink环境的下实例仿真,可以形象地理解系统的特性。
2.3球杆系统的PID控制在这个实验中,我们将采用PID控制方法设计数字控制器。
PID控制器的传递函
数为:
其中,K,K
和K为PID控制器的比例,积分和微分参数。
PID
2.3.1P控制
首先,我们将分析在添加P控制器后,系统的闭环响应,然后,微分和积分控制器将在需要时加。
理论含有控制器、球杆系统结构和小球位置反馈的系统框图如下所示:
图2-7闭环比例控制结构图其中,Xd(s)为小球目标位置的拉普拉斯变换,
P控制器为:
闭环系统的传递函数为:
GP(s)=KP
可以比较明显的看出,这是一个二阶系统。
仿真
假设比例增益K=3,闭环系统的传递函数可以通过以下的MATLAB命令进行仿真。
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));%simplifiesinputnum=[-K];
den=[100];
plant=tf(num,den);
kp=3;
sys_cl=feedback(kp*plant,1);
step(0.2*sys_cl)在MATLAB环境下运行文件。
阶跃信号的响应如下图所示:
图2-8P控制下的响应
可以看出,添加P控制器后,系统并不能稳定。
改变Kp的值后,系统还是不稳定的,可以看出,对于一个惯性系统,在P控制器作用下,系统会保持一个等幅振荡。
实验
i.按照第二章描述的步骤,在MATLABSimulink环境下运行演示程序。
图2-9PID控制演示界面
ii.将控制器设置为P控制器。
图2-10切换控制器
iii.设置目标位置为200mm
iv.用手指将小球拨动到100mm的地方。
v.松开小球,系统将对小球的位置进行平衡。
vi.改变并观察其响应,实验结果如下,比较实验结果和仿真结果的区别。
(建议参数不要设置过大)
图2-11实验结果
2.3.2PD控制理论
给控制器添加一个微分控制,闭环系统的结构图如下:
图2-12PD控制器闭环结构
PD控制器的传递函数为:
GPD(s)=KP+KDs
为简单起见,我们假设固定比例增益K,调整K
的大小。
闭环系统的传递函数为:
X(s)=
P
GPD(s)W(s)
D.
=c(KP+KDs)
仿真
Xd(s)
1+GPD(s)W(s)
s+cKDs+cKP
将下列程序输入到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));%simplifiesinputnum=[-K];
den=[100];plant=tf(num,den);kp=6;
kd=6;
contr=tf([kdkp],1);
sys_cl=feedback(contr*plant,1);
t=0:
0.01:
5;
step(0.2*sys_cl)
仿真结果如图2-13所示:
可以看出,闭环系统是一个稳定的系统,但是超调和稳定时间都过大。
图2-13SIMULATIONRESULTOFSTEPRESPONSEUNDERPDCONTROLLER实验
i.按照第二章——开始使用的内容,在MATLABSimulink中运行演示程序。
ii.切换控制器为PD控制器,并设置如下的参数。
图2-14控制器选择以及参数
iii.设置目标位置为200mm
iv.移动小球的位置,使其大概在50mm的地方。
v.松开小球,系统将试图稳定小球的位置。
vi.改变KP和KD,观察其响应。
在PD控制器的作用下,系统可以很快的平衡,但是稳态误差比较大,分析小球
的位置改变和齿轮转动角度的变化之间的关系,对比实验结果和仿真结果的区别。
图2-15PD控制器控制结果
2.3.3PID控制分析理论
下一步的实验将研究PID控制器的特性,添加PID控制器后,闭环系统的结构图如下:
图2-16PID控制器闭环结构图
PID控制器的传递函数为:
GPID
2
(s)=KDs
+KPs+KI
s
K和K
DI
对应于积分和微分控制,K
P
为比例增益。
闭环系统的传递函数如下所示:
X(s)=
GPID(s)W(s)
c(KDs
3
+KPs+KI)
2
Xd(s)
仿真
1+GPID(s)W(s)
s+cKDs
+cKPs+cKI
在MATLAB仿真程序中,设置控制参数:
KP=10,KI=1,KD=10
kp3=10;%PIDControllerkd3=10;
Ki=1;
contrPID=tf([kd3kp3Ki],[10]);sys_cl_PID=feedback(contrPID*ball,1);t=0:
0.01:
10;
SUBPLOT(3,1,3)
step(0.2*sys_cl_PID,t)
title('StepResponseofPIDController')从仿真结果可以看出,增大KD可以减少超调量,设置KD=20,系统的阶跃信号响
应如图2-17所示。
可以看出,超调已经满足要求,但是调整时间还需要减少,为减少调整时间,我们可以稍增大KP。
图217PID控制器下的仿真结果
可以增大微分控制KD以减少因增大KP引起的超调,在对参数进行多次调整,并观察仿真结果,可以得到如图2-8所示的阶跃响应,KP=15,KD=40。
系统的参数可以基本认为是正确的。
图2-28调整参数后的PID控制器仿真结果
实验
i.按照前面的实验步骤,参考前面的示例进行球杆系统的实验,选择PID控制器为:
KP=10,KI=1,KD=10,实际的控制效果如下:
图2-39PID控制实验结果1
ii.改变控制器参数,设KP=15,KI=0.5,KD=10,结果如下。
图2-20PID控制实验结果2
可以看出,明显的减少了系统的稳态误差,基本上满足了设计要求,对于这个特定的控制问题,不需要积分控制就可以稳定系统,但是,对于一个控制系统,往往会有很多的控制器设计方法,可以尝试不同的控制参数,直到得到满意的控制效果。
2.4根轨迹控制根轨迹的主要思想就是通过分析系统的开环零极点位置,来分析闭环系统的特
性,通过增加极点或零点的方法(校正器),根轨迹以及闭环系统的响应都将发生
改变。
添加控制器后,一个典型的闭环系统如下:
图2-21典型的闭环系统设计要求如下:
调整时间少于1s
超调少于10%
在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));%simplifiesinputnum=[-K];
den=[100];plant=tf(num,den);rlocus(plant)
在MATLABSimulink环境下运行M文件,可以看出,系统具有两个极点,其根轨迹从原点开始沿虚轴指向无穷。
图2-22系统根轨迹图
球杆系统的根轨迹校正可以转化为如下的问题:
对于传递函数为:
的系统,设计控制器,使得校正后系统的要求如下:
调整时间;ts=1s(2%)
最大超调量Mp≤10%
根轨迹设计步骤如下:
1)确定闭环期望极点的位置,由最大超调量
可以得到:
ζ=0.591155,近似取ζ=0.6。
由ζ=Cos(θ)可以得到:
θ=0.938306(弧度)其中θ为位于第二象限的极点和o点的连线与实轴负方向的夹角。
图2-23性能指标与根轨迹关系图又由:
可以得到:
ωn=,于是可以得到期望的闭环极点为:
6.76641(−Cosθ±jSinθ)
2)未校正系统的根轨迹在实轴和虚轴上,不通过闭环期望极点,因此需要对系统进行超前校正,设控制器为:
3)计算超前校正装置应提供的相角,已知期望的闭环主导极点和系统原来的极点的相角和为:
G(sd)=2(−π+θ)=−4.40657
因此校正装置提供的相角为:
φ=-π-G(sd)=-π-2(−π+θ)=π-2θ=1.26489
4)设计超前校正装置,已知:
θ=0.938306对于最大的a值的γ角度可由下式计算得到:
图2-24球杆系统根轨迹计算图按最佳确定法作图规则,在上图中画出相应的直线,求出超前校正装置的零点和极
点,分别为:
校正后系统的开环传递函数为:
5)由幅值条件,并设反馈为单位反馈,所以有;K=142.737
6)于是我们得到了系统的控制器:
K(s)=142.737(s+3.10057)
s+14.7664
7)上述过程手动计算比较复杂,可以采用编程程序自动计算得到:
在Mathematica中编写如下所示的程序,计算以上步骤:
计算文件请参见光盘内“…\ModelFile”中的“GBBRLocusCompute.nb”文件。
图2-25
在MATLABSimulink中打开仿真的M文件,双击如下图的“RootLocusMFile“:
图2-26
打开如下的M文件界面:
图2-27
点击运行程序,若出现如下的界面:
图2-28
点击“OK“就可。
注意,在运行仿真后,将MATLAB的路径改为如下的”CurrentDirectory
”路径,以便实时控制程序可以顺利运行。
图2-29运行结果如下:
图2-30
也可以点击“RootLocusSimu“打开仿真界面:
图2-31点击““运行,得到仿真结果:
实验
图2-32
i.在MATLABSimulink的GoogolEducationalProducts工具箱中,点击“RootLocusDemo“打开根轨迹控制程序:
图2-33根轨迹控制界面
ii.把控制器的参数设置为计算得到的值,点击
运行程序,得到如下的控制结果。
图2-34EXPERIMENTRUSULTOFROOTLOCUSCONTROLLER