1仲恺农业工程学院课程设计报告电机拖动与运动控制综合设计院系:自动化学院题目:单级倒立摆小车的控制系统专业班别:自动化(工业自动化)144姓名:黄国盛学号:201421714406提交日期:2017年9月15日1目录1.设计任务与要求………………………………………………………………………………11.1设计内容……………………………………………………………………………11.2设计要求……………………………………………………………………………12.倒立摆的数学模型……………………………………………………………………………12.1数学模型推导………………………………………………………………………12.1.1微分方程模型………………………………………………………………22.1.2传递函数模型………………………………………………………………22.1.3状态空间数学模型…………………………………………………………32.2开环响应……………………………………………………………………………42.2.1传递函数……………………………………………………………………42.2.2状态空间法…………………………………………………………………53.PID控制方法设计………………………………………………………………………………73.1PID控制原理…………………………………………………………………………73.2摆杆角度控制………………………………………………………………………83.3小车位置控制………………………………………………………………………93.4PID控制算法的MATLAB仿真………………………………………………………113.4.1摆杆角度控制算法的仿真…………………………………………………113.4.2小车位置控制算法的仿真………………………………………………134.最优控制方法设计……………………………………………………………………………154.1最优控制器的设计…………………………………………………………………154.2最优控制MATLAB仿真……………………………………………………………175.基于GUI的倒立摆LQR控制动画演示(详见“GUI仿真动画演示.mp4”)…………………215.1GUI介绍……………………………………………………………………………215.2演示程序的构成……………………………………………………………………215.3主程序的实现(详见MATLABCode文件夹)…………………………………………225.4演示界面的设计……………………………………………………………………305.5演示过程……………………………………………………………………………306.经验体会………………………………………………………………………………………317.参考文献………………………………………………………………………………………321单级倒立摆小车的控制系统(MATLABR2015b)(仲恺农业工程学院自动化学院工业自动化144班黄国盛201421714406)1.设计任务与要求:1.1设计内容(1)在MATLAB环境下,利用运动控制系统的方法和知识,设计并编程仿真单级倒立摆小车控制系统;(2)撰写一份相应的仿真设计报告。1.2设计要求(1)基于MATLAB语言编程实现单级倒立摆小车的控制系统,使其稳定平衡运行;(2)报告结构完整,内容详实,格式规范;(3)熟悉MATLAB软件的使用和各基本功能模块的使用方法,掌握单级倒立摆小车的工作原理;掌握MATLAB中各功能模块的程序编写技巧。2.倒立摆的数学模型在摆角0附近将其非线性数学模型线性化,建立一阶倒立摆系统的数学模型;对系统加入输入信号,进行MATLAB仿真,分析不稳定极点对系统稳定性的影响。2.1数学模型推导对系统建立数学模型是系统分析、设计的前提,为了简化系统分析,建模过程忽略空气流动阻力以及各种摩擦阻力。把倒立摆系统抽象成小车和匀质刚性杆组成的系统,如图1所示。图1倒立摆模型系统内部各参数定义如下:M小车质量;m摆杆质量;l摆杆转动轴心到质心的长度;x小车位置;I摆杆惯量;摆杆与垂直向上方向的夹角;F加在小车上的力;b小车摩擦系数;摆杆与垂直向下方向的夹角;如图2是系统中小车和摆杆的受力分析图。其中,N和P为小车与摆杆相互作用力的水平和垂直方向的分量。其中,矢量方向定义如图。2图2矢量方向定义应用Newton方法来建立系统的动力学方程:(1)分析小车水平方向所受的合力,可以得到以下方程NxbFxM(2)由摆杆水平方向的受力进行分析可以得到下面等式)sin(22lxdtdmN即sincos2mlmlxmN(3)把这个等式代入上式中,就的到系统的第一个运动方程FmlmlxbxmMsincos)(2(1)(4)为了推出系统的第二个运动方程,我们对摆杆垂直方向上的合力进行分析,得)cos(22ldtdmmgP即cossin2mlmlmgP力矩平衡方程如下:IlPlcosNsin此方程中力矩的方向,由于,coscos,sinsin,故等式前面有负号。合并这两个方程,约去P和N,得到第二个运动方程cossin)(2xmlmglmlI(2)2.1.1微分方程模型设,当摆杆与垂直向上方向之间的夹角与1弧度相比很小,即1时,则可以进行近似处理:1cos,sin,0)(2dtd。为了与控制理论的表达习惯相统一,即u一般表示控制量,用u来代表被控对象的输入力F,线性化后得到该系统数学模型的微分方程表达式:umlxbxmMxmlmglmlI)()(2(3)32.1.2传递函数模型对以上方程进行拉普拉斯变换,得到)()()()()()()()()(22222sUssmlssbXssXmMssmlXsmglssmlI(4)注:推导传递函数时假设初始条件为0。由于输出角度为,求解以上方程组的第一个方程,得)()()(22ssgmlmlIsX把上式代入方程组第二个方程,得到)()()()()()()(22222sUssmlsssgmlmlIbsssgmlmlImM整理后的得到以输入力u为输入量,以摆杆角度为输出量的传递函数sqbmglsqmglmMsqmlIbssqmlsUssG232421)()()()()(式中])())([(22mlmlImMq。若取小车位移为输出量,可得传递函数sqbmglsqmglmMsqmlIbsqmglsqmlIsUsXsG2324222)()()()()()(2.1.3状态空间数学模型由现代控制理论原理可知,控制系统的状态空间方程可写成如下形式:BuAXXDuCXY方程组(3)对,解代数方程,得到如下解:uMmlmMImlMmlmMImMmglxMmlmMImlbuMmlmMImlIMmlmMIglmxMmlmMIbmlIxxx2222222222)()()()()()()()()(整理后得到系统状态空间方程:4uMmlmMImlMmlmMImlIxxMmlmMImMmglMmlmMImlbMmlmMIglmMmlmMIbmlIxx2222222222)(0)(00)()()(010000)()()(00010uxxxY0001000001以上就是一阶倒立摆小车系统的状态空间表达式。2.2开环响应2.2.1传递函数在MATLAB中,拉普拉斯变换后得到的传递函数可以通过计算并输入分子和分母矩阵来实现。假设系统内部各相关参数为:M小车质量0.5kgm摆杆质量0.2kgb小车摩擦系数0.1N/m/secl摆杆转动轴心到质心的长度0.3mI摆杆惯量0.006kg*m*mT采样时间0.005s求系统传递函数、传递函数的极点以及开环脉冲响应的MATLAB代码如下(详见MATLABCode文件夹):%------trans.m------%倒立摆传递函数、开环极点及开环脉冲响应%输入倒立摆传递函数G(s)=num/denM=0.5;m=0.2;b=0.1;I=0.006;g=9.8;l=0.3;q=(M+m)*(I+m*l^2)-(m*l)^2;%计算并显示多项式形式的传递函数num=[m*l/q00]den=[1b*(I+m*l^2)/q-(M+m)*m*g*l/q-b*m*g*l/q0]%计算并现实传递函数的极点p[r,p,k]=residue(num,den);s=p%求传递函数的脉冲响应并显示t=0:0.005:5;impulse(num,den,t)%显示范围:横坐标0-1,纵坐标0-60,此条语句可根据仿真输出曲线调整5axis([01060])grid%------end-------执行上面的程序,得到系统传递函数的分子(num)与分母(den)多项式MATLAB表示及系统的开环极点(s),显示结果如下所示。transnum=4.545500den=1.00000.1818-31.1818-4.45450s=-5.60415.5651-0.14280由此可知,系统传递函数的多项式表达式为ssssssUssG4545.41818.311818.05455.4)()()(2342系统的开环极点为6041.51s、5651.52s、1428.03s、04s,由于有一个开环极点S平面的右半部,开环系统不稳定。MATLAB仿真的开环脉冲响应(即给系统加一个脉冲推力)曲线如图,系统不稳定。图3开环脉冲响应2.2.2状态空间法状态空间法可以进行单输入多输出系统设计,我们将尝试同时对摆杆的角度和小车的位置进行控制。为了更接近实际,给小车加一个阶跃输入信号。我们用MATLAB求出系统的状态空间方程各矩阵,并仿真系统的开环阶跃响应。以下MATLAB代码将会给出系统状态空间方程的A,B,C和D矩阵,并绘出在给定输入为一个0.2m的阶跃信号时系统的响应曲线。(详见MATLABCode文件夹):%------state.m------%倒立摆状态方程及开环阶跃响应%输入倒立摆相关参数6M=0.5;m=0.2;b=0.1;I=0.006;g=9.8;l=0.3;%p用于状态方程计算p=I*(M+m)+M*m*l^2;%输入倒立摆状态方程并显示A=[0100;0-(I+m*l^2)*b/p(m^2*g*l^2)/p0;0001;0-(m*l*b)/pm*g*l*(M+m)/p0]B=[0;(I+m*l^2)/p;0;m*l/p]C=[1000;0010]D=[0;0]%求开环系统的阶跃响应并显示T=0:0.005:5;U=0.2*ones(size(T));[Y,X]=lsim(A,B,C,D,U,T);plot(T,Y)%显示范围:横坐标0-2,纵坐标0-100,此条语句参数可根据仿真输出曲线调整axis([020100])grid%------end-------执行上面的程序,得到系统的状态空间A、B、C、D矩阵,显示结果如下所示:stateA=01.0000000-0.18182.672700001.00000-0.454531.18180B=01.818204.5455C=100000107D=00MATLAB仿