您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > 预测控制matlab工具箱
欢迎流通!西安交通大学自动化系,zhistar@163.commatlab预测控制工具箱一、设计示例注:示例均为matlab自带1、伺服系统控制器的设计图4-1位置伺服系统原理图(1)伺服系统数学模型位置伺服系统由直流电机、变速箱、弹性轴、负载等组成(见图4-1)。可用如下微分方程来描述:上式中的变量定义及取值见表4-1。2将上述微分方程写成状态方程形式,有其中,。(2)控制目标及约束控制目标:在电压V的控制下,使过载角位置跟踪指定值。输出量仅有可观测。弹性轴承受的强度有一定的限制,因此对输出力矩T的赋值作一定约束:对输入电压的约束:3该系统有一个输入V,两个输出:(可测量)和T(不可测量)。(3)在matlab中定义该系统的状态空间模型首先需要在matlab中对系统的数学模型进行定义。可以直接在命令行输入mpcmotormodel(建议做法),也可以在命令行中输入下列命令:%DC-motorwithelasticshaft%%Parameters(MKS)%-----------------------------------------------------------Lshaft=1.0;%Shaftlengthdshaft=0.02;%Shaftdiametershaftrho=7850;%Shaftspecificweight(Carbonsteel)G=81500*1e6;%Modulusofrigiditytauam=50*1e6;%ShearstrengthMmotor=100;%RotormassRmotor=.1;%RotorradiusJmotor=.5*Mmotor*Rmotor^2;%RotoraxialmomentofinertiaBmotor=0.1;%Rotorviscousfrictioncoefficient(ACASO)R=20;%ResistanceofarmatureKt=10;%Motorconstantgear=20;%GearratioJload=50*Jmotor;%LoadinertiaBload=25;%LoadviscousfrictioncoefficientIp=pi/32*dshaft^4;%Polarmomentumofshaft(circular)sectionKth=G*Ip/Lshaft;%Torsionalrigidity(Torque/angle)Vshaft=pi*(dshaft^2)/4*Lshaft;%ShaftvolumeMshaft=shaftrho*Vshaft;%ShaftmassJshaft=Mshaft*.5*(dshaft^2/4);%ShaftmomentofinertiaJM=Jmotor;JL=Jload+Jshaft;Vmax=tauam*pi*dshaft^3/16;%MaximumadmissibletorqueVmin=-Vmax;%Input/State/Outputcontinuoustimeform%----------------------------------------------------------AA=[0100;-Kth/JL-Bload/JLKth/(gear*JL)0;0001;Kth/(JM*gear)0-Kth/(JM*gear^2)-(Bmotor+Kt^2/R)/JM];4BB=[0;0;0;Kt/(R*JM)];Hyd=[1000];Hvd=[Kth0-Kth/gear0];Dyd=0;Dvd=0;%DefinetheLTIstate-spacemodelsys=ss(AA,BB,[Hyd;Hvd],[Dyd;Dvd]);(4)利用MPCTOOL界面设计控制器第一步:导入模型在命令行窗口中输入mpctool,工具箱界面出来后点击ImortPlant…,此时界面如4-2所示。图4-2ImportDialogBoxwiththeServomechanismModelSelected此时先前定义的伺服系统数学模型sys默认被选中,Properties列出了该模型的主要属性。点击Import,导入数学模型,见4-3所示。第二步:设置属性系统的数学模型导入后,需要对输入变量和输出变量的属性做一些修改,使之符合实际情况。默认情况下,输入变量类型均是manipulated,本例中不需要修改。默认输出变量类型是measured,本例的两个输出变量中,可测量,T不可测量,需要相应修改。5可以修改输入变量和输出变量的名称,增加描述性内容,设置单位和初始值。此处将In1,Out1,Out2修改为V,ThetaL,T,其它修改见图4-3。图4-3DesignToolAfterImportingthePlantModelandSpecifyingSignalProperties本例中的模型为连续系统,需要将之变为离散系统。选中MPCdesign---Controllers---MPC1---ModelandHorizons,将Controlinterval(timeunits)(采样周期)改为0.1,其它设置不变,见图4-4。6图4-4ControllerDesignView,ModelsandHorizonsPane接下来设置变量约束。点击Constraints面板,输入变量V、输出变量和T的设置见图4-5。一般情况下需要对输入进行约束,而不对输出量作限制。角位置输出受到实际物理装置的限制,因此不作限制。对输出力矩T设置了约束范围。Maxdownrate为非正值(或留空),它限制了每一个控制周期内控制量的减小幅度,同理,Maxuprate为非负值(或留空),他对每一个控制周期内控制量的增幅做了限制。此处均留空。图4-5ControllerDesignView,ConstraintsPane接下来点击WeightTuning面板,此面板用于在设计控制器时对性能进行折中考虑。首先看Outputweights,控制器的目的是为了尽可能缩小输出量与设定值之间的偏差。控制器计算预测时域内每个预测点处的实际值与设定值的误差,将之平方,然后相加,得到预测误差总和。控制器的一个目标就是使预测误差总和最小化,从而得到良好的跟踪效果。此处,角位置输出应跟踪设定值,输出力矩T则不需要有此限制。输入变量V处于不断变化之中,Weight应该设为0,为了使控制量变化平缓,此处设置RateWeight为0.1。在进行权重设置时需要记住一点,权重间的相对大小的重要性要远远大于绝对大小。例如,变量A变化0.1单位与变量B变化100单位效果等同,那么在设置权重时,A的权重将是B权重的1000倍。上方的滑动条用来整定控制器的总体性能。滑动条越靠近左方,对控制量的惩罚项越大,这会增加控制器的鲁棒性,但会降低跟踪精度。当存在不可测量干扰时,Estimation选项卡用来调节控制器的响应,此处没有用到。7图4-6ControllerDesignView,WeightTuningPane第三步:仿真场景的设置见图4-7所示。Setpoints用来设置输出参考信号。设置ThetaL的参考信号为阶跃信号,阶跃时间为1s,幅度为1。设置T的参考信号为常值信号,幅度为零。Lookahead选项假定参考信号的变化是已知的,这样控制器可以提前修正控制变量来提高跟踪精度,这在实际中不常见,此处不选中。8图4-7SimulationSettingsViewforScenario1第四步:开始仿真点击Simulate按钮,或者工具栏中的绿色箭头,开始仿真。结果见4-8所示。灰色线为设定值,蓝色线为实际输出值。可见,输出信号在30s时仍没有稳定下来,没有实现指令信号的准确跟踪。有一点值得称道,输出力矩和控制电压(此处没有给出)在指定范围之内。00.511.52ThetaL,Radians051015202530-8-6-4-20246T,N.mPlantOutputsTime(sec)图4-8ResponsetoUnitStepintheAngularPositionSetpoint为了得到更快速、精确的响应,进入MPC1WeightTuning选项板,将滑动条拖至最右方,然后重新开始仿真,仿真结果见图4-9和图4-10。可见,此时的响应速度和跟踪精度都有了很大的改进。00.20.40.60.811.21.4ThetaL,Radians051015202530-80-60-40-20020T,N.mPlantOutputsTime(sec)9图4-9FasterServoResponse051015202530-50050100150200PlantInput:V,VTime(sec)图4-10ManipulatedVariableAdjustmentsCorrespondingtoFigure4-9将ThetaL的阶跃响应幅度重新设置为pi,仿真结果见图4-11和图4-12所示。可见仍能实现很好的跟踪效果,注意此时对输出力矩和控制电压做了限幅。01234ThetaL,Radians051015202530-80-60-40-2002040T,N.mPlantOutputsTime(sec)图4-11ServoResponseforStepIncreaseofpiRadians10051015202530-100-50050100150200250PlantInput:V,VTime(sec)图4-12VoltageAdjustmentsCorrespondingtoFigure4-11第五步:保存工作设计完毕后,将控制器导出至工作区,方便在Simulinkblockdiagram进行分析和设计。为了导出控制器,右击Controllers节点,选择ExportController,将会出现如图4-13所示的对话框,点击Export,所设计的控制器将会以MPC1为名导出到工作区。图4-13ExportingaControllertotheWorkspace在退出MPCTOOL时,会提示将整个设计保存到一个MAT文件中。(5)利用MPCToolbox命令函数设计控制器熟悉MPC工具箱后,也许你会觉得利用命令函数设计控制器更为方便。在步骤(3)定义的数学模型的基础上,输入下列指令:ManipulatedVariables=struct('Min',-220,'Max',220,'Units','V');11OutputVariables(1)=struct('Min',-Inf,'Max',Inf,'Units','rad');OutputVariables(2)=struct('Min',-78.5,'Max',78.5,'Units','Nm');Weights=struct('Input',0,'InputRate',0.05,'Output',[100]);Model.Plant=sys;Model.Plant.OutputGroup={[1],'Measured';[2],'Unmeasured'};Ts=0.1;PredictionHorizon=10;ControlHorizon=2;这样就生成了一些结构变量。ManipulatedVariables定义了控制电压的变化范围、单位等,Weights定义了权重值(类似图4-6,此处定义的数值可以得到更好的性能)。Model指定了待控制模型,Model.Plant.OutputGroup指定第二个输出是不可测量的。输入下列语句,构建MPC控制对象:ServoMPC=mpc(Model,Ts,PredictionHorizon,ControlHorizon);在构建MPC控制对象后,可以对一些属性进行设置。例如可以利用下面语句之一对预测时域长度进行设置:ServoMPC.PredictionHorizon=12;set(ServoMPC,'PredictionHorizon',12);为了得到对象的
本文标题:预测控制matlab工具箱
链接地址:https://www.777doc.com/doc-4580052 .html