主要内容

在运行时调优MPC控制器权重

这个例子展示了如何改变在运行时软约束的输出、输入和ECR松弛变量的权重,使用Simulink®或万博1manbetxmpcmove

MPC对象中指定的权重将被提供给MPC Controller块的权重覆盖。如果权重信号没有连接到MPC Controller块,则相应的权重是MPC对象中指定的。

定义植物模型

定义一个没有直接I/O馈通的多变量离散时间线性系统,并假设输入#4是一个测量到的扰动,而输出#4是未测量到的。

t = 0.1;%采样时间植物特遣部队(= {1 [1]5 2;3,[1 - 5],1,0,0,0,1,[1];2,[1],0,0},...{[11]、[1 3 4 5]、[1 10]、[1 5];[1 1]、[1 2]、[1 2 8]、[1 1 1]、[1 3 1]、[1 1 1]、[1 2];[1 1 1]、[1 3 10 10]、[1 10]、[1 1]};plant=c2d(ss(plant),Ts);plant.D=0;%显示工厂大小。大小(植物)
有4个输出,4个输入,17个状态的状态空间模型。

MPC控制器的设计

指定输入和输出信号类型。

植物= setmpcsignals(植物,“MD”4.“UO”4);%创建具有采样周期、预测和控制的控制器对象%视野:p = 20;%预测视界m = 3;%控制地平线mpcobj = mpc(植物、t、p、m);%注意,默认权重是在输入、输入速率和输出上假定的
——>假设未指定的输入信号是被操纵的变量。——>假设测量输出信号未指定。- - - >“权重。mpc对象的操纵变量属性为空。假设默认的0.00000。- - - >“权重。mpc对象的操控变量率属性为空。假设默认的0.10000。- - - >“权重。mpc对象的属性为空。 Assuming default 1.00000. for output(s) y1 y2 y3 and zero weight for output(s) y4

指定MV约束。

mpcobj.MV(1).Min=-6;mpcobj.MV(1).Max=6;mpcobj.MV(2).Min=-6;mpcobj.MV(2).Max=6;mpcobj.MV(3).Min=-6;mpcobj.MV(3).Max=6;

使用结构格式定义时变信号

定义参考信号。

Tstop = 10;Ref = [1 0 3 1];r =结构(“时间”,(0:Ts:Tstop)');N=努美尔(r.时间);r、 信号。值=一(N,1)*参考;

定义测量的干扰。

v = 0.5;

OV权值随时间线性增加,除了输出#2没有加权。

ywt.time=r.time;ywt.signals.values=(1:N)'*[.10.1.1];

MV率权值随时间线性减小。

duwt。时间= r.time;duwt.signals.values = (1 - (1: N) / 2 / N)‘*(。1。1。1);

ECR重量随时间呈指数增长。

ECRwt。时间= r.time;ECRwt.signals.values = 10 ^ (2 + (1: N) / N);

使用仿真软件模拟®万博1manbetx

开始仿真。

mdl =“mpc_onlinetuning”;open_system (mdl);%打开Simu万博1manbetxlink(R)模型sim (mdl);%开始模拟
-->假设添加到测量输出通道#1的输出干扰为积分白噪声。-->假设添加到测量输出通道#2的输出干扰为积分白噪声。-->假设添加到测量输出通道#3的输出干扰为积分白噪声。-->“mpc”对象的“Model.Noise”属性为空。假设每个测量输出通道上存在白噪声。

使用MPCMOVE命令进行模拟

定义实际工厂和MPC状态对象。

[A,B,C,D]=ssdata(工厂);x=零(尺寸(工厂B,1),1);%植物的初始状态xmpc=mpcstate(mpcobj);%处理MPC控制器的状态

将闭环MPC轨迹存储在阵列YY、UU、XX中。

YY = [];UU = [];XX = [];

使用mpcmoveopt对象以在运行时提供权重。

选项=mpcmovopt;

开始仿真。

t = 0: n - 1,%存储状态XX=[XX,x];% #好< * AGROW >%计算并存储设备输出(无从MV到Y的馈通)y=C*x+D(:,4)*v;YY=[YY;y'];获取参考信号ref=r.signals.value(t+1,:)';%使用运行时权重更新| mpcmovopt |对象options.mvratewweight=duwt.signals.values(t+1,:);options.OutputWeight=ywt.signals.values(t+1,:);options.ECRWeight=ECRwt.signals.value(t+1,:);%计算和控制疼痛的行动u = mpcmove (mpcobj xmpc y(1:3),裁判,v,选项);UU = [UU; u ');更新工厂状态x = A*x + B(:,1:3)*u + B(:,4)*v;结束

绘制并比较仿真结果。

图(1);clf;子地块(121)图(0:Ts:Tstop,[YY ysim])网格标题(“输出”) subplot(122) plot(0:Ts:Tstop,[UU usim]) grid title(“输入”

比较输入和输出信号。

标准(UU usim)标准(YY ysim)%除数值误差外,结果相同。
Ans = 4.2786e-11 Ans = 8.8298e-12
bdclose (mdl);

另请参阅

相关话题