matlab 预测控制工具箱
一、设计示例
注:示例均为matlab 自带
1、伺服系统控制器的设计
图4-1 位置伺服系统原理图
(1)伺服系统数学模型
位置伺服系统由直流电机、变速箱、弹性轴、负载等组成(见图4-1)。可用如下微分方程来描述:
上式中的变量定义及取值见表4-1。
欢迎流通!西安交通大学自动化系,
2
将上述微分方程写成状态方程形式,有
其中,。
(2)控制目标及约束
控制目标:在电压V 的控制下,使过载角位置跟踪指定值。输出量仅有可观测。
弹性轴承受的强度有一定的限制,因此对输出力矩T 的赋值作一定约束:
对输入电压的约束:
该系统有一个输入V ,两个输出:(可测量)和T (不可测量)。
(3)在matlab 中定义该系统的状态空间模型
首先需要在matlab 中对系统的数学模型进行定义。可以直接在命令行输入mpcmotormodel (建议做法),也可以在命令行中输入下列命令:
% DC-motor with elastic shaft
%
%Parameters (MKS
%-----------------------------------------------------------
Lshaft=1.0; %Shaft length
dshaft=0.02; %Shaft diameter
shaftrho=7850; %Shaft specific weight (Carbon steel
G=81500*1e6; %Modulus of rigidity
tauam=50*1e6; %Shear strength
Mmotor=100; %Rotor mass
Rmotor=.1; %Rotor radius
Jmotor=.5*Mmotor*Rmotor^2; %Rotor axial moment of inertia Bmotor=0.1; %Rotor viscous friction coefficient (A CASO
R=20; %Resistance of armature
Kt=10; %Motor constant
gear=20; %Gear ratio
Jload=50*Jmotor; %Load inertia
Bload=25; %Load viscous friction coefficient
Ip=pi/32*dshaft^4; %Polar momentum of shaft
(circular section
Kth=G*Ip/Lshaft; %Torsional rigidity
(Torque/angle
Vshaft=pi*(dshaft^2/4*Lshaft; %Shaft volume
Mshaft=shaftrho*Vshaft; %Shaft mass
Jshaft=Mshaft*.5*(dshaft^2/4; %Shaft moment of inertia
JM=Jmotor;
JL=Jload+Jshaft;
Vmax=tauam*pi*dshaft^3/16; %Maximum admissible torque Vmin=-Vmax;
%Input/State/Output continuous time form
%----------------------------------------------------------
AA=[0 1 0 0;
-Kth/JL -Bload/JL Kth/(gear*JL 0;
0 0 0 1;
Kth/(JM*gear 0 -Kth/(JM*gear^2
-(Bmotor+Kt^2/R/JM];
3
BB=[0;0;0;Kt/(R*JM];
Hyd=[1 0 0 0];
Hvd=[Kth 0 -Kth/gear 0];
Dyd=0;
Dvd=0;
% Define the LTI state-space model
sys=ss(AA,BB,[Hyd;Hvd],[Dyd;Dvd];
(4)利用MPCTOOL 界面设计控制器
第一步:导入模型
在命令行窗口中输入mpctool ,工具箱界面出来后点击Imort Plant…,此时界面如4-2所示。
图4-2 Import Dialog Box with the Servomechanism Model Selected
此时先前定义的伺服系统数学模型sys 默认被选中,Properties 列出了该模型的主要属性。
点击Import ,导入数学模型,见4-3所示。
第二步:设置属性
系统的数学模型导入后,需要对输入变量和输出变量的属性做一些修改,使之符合实际情况。默认情况下,输入变量类型均是manipulated ,本例中不需要修改。默认输出变量类
型是measured ,本例的两个输出变量中,可测量,T 不可测量,需要相应修改。
4
5 可以修改输入变量和输出变量的名称,增加描述性内容,设置单位和初始值。此处将In1,Out1,Out2修改为V ,ThetaL,T ,其它修改见图4-3。
图4-3 Design Tool After Importing the Plant Model and Specifying Signal Properties 本例中的模型为连续系统,需要将之变为离散系统。选中MPCdesign---Controllers---MPC1---Model and Horizons,将Control interval(time units(采样周期)改为0.1,其它设置不变,见图4-4。
6
图4-4 Controller Design View, Models and Horizons Pane
接下来设置变量约束。点击Constraints 面板,输入变量V 、输出变量
和T 的设置见图4-5。一般情况下需要对输入进行约束,而不对输出量作限制。角位置输出
受到实际物
理装置的限制,因此不作限制。对输出力矩T 设置了约束范围。 Max down rate 为非正值(或留空),它限制了每一个控制周期内控制量的减小幅度,同理,Max up rate为非负值(或留空),他对每一个控制周期内控制量的增幅做了限制。此处均留空。
图4-5 Controller Design View, Constraints Pane 接下来点击Weight Tuning面板,此面板用于在设计控制器时对性能进行折中考虑。首先看Output weights,控制器的目的是为了尽可能缩小输出量与设定值之间的偏差。控制器计算预测时域内每个预测点处的实际值与设定值的误差,将之平方,然后相加,得到预测误差总和。控制器的一个目标就是使预测误差总和最小化,从而得到良好的跟踪效果。此处,
角位置输出
应跟踪设定值,输出力矩T 则不需要有此限制。
输入变量V 处于不断变化之中,Weight 应该设为0,为了使控制量变化平缓,此处设置Rate Weight为0.1。在进行权重设置时需要记住一点,权重间的相对大小的重要性要远远大于绝对大小。例如,变量A 变化0.1单位与变量B 变化100单位效果等同,那么在设置权重时,A 的权重将是B 权重的1000倍。上方的
滑动条用来整定控制器的总体性能。滑动条越靠近左方,对控制量的惩罚项越大,这会增加控制器的鲁棒性,但会降低跟踪精度。当存在不可测量干扰时,Estimation 选项卡用来调节控制器的响应,此处没有用到。
7
图4-6 Controller Design View, Weight Tuning Pane
第三步:仿真场景的设置见图4-7所示。Setpoints 用来设置输出参考信号。设置ThetaL 的参考信号为阶跃信号,阶跃时间为1s ,幅度为1。设置T 的参考信号为常值信号,幅度为零。 Look ahead 选项假定参考信号的变化是已知的,这样控制器可以提前修正控制变量来提高跟踪精度,这在实际中不常见,此处不选中。
8
图4-7 Simulation Settings View for "Scenario1"
第四步:开始仿真点击Simulate 按钮,或者工具栏中的绿色箭头,开始仿真。结果见4-8所示。灰色线为设定值,蓝色线为实际输出值。可见,输出信号在30s 时仍没有稳定下来,没有实现指令信号的准确跟踪。有一点值得称道,输出力矩和控制电压(此处没有给出)在指定范围之内。
0.511.52T h e t a L , R a d i a n
s
T , N . m
Plant Outputs
Time (sec
图4-8 Response to Unit Step in the Angular Position Setpoint
为了得到更快速、精确的响应,进入MPC1 Weight Tuning选项板,将滑动条拖至最右方,然后重新开始仿真,仿真结果见图4-9和图4-10。可见,此时的响应速度和跟踪精度都有了很大的改进。
00.20.40.60.811.21.4T h e t a L , R a d i a n