主要内容

平衡工作点的设计模型预测控制器

此示例显示了如何设计具有非零名称值的模型预测控制器。

该植物模型是通过在非零稳态工作点上的Simulink®中非线性植物的线性化获得的。金宝app

线性化非线性植物模型

非线性植物在Simulink模型中实现金宝appmpc_nloffsets并在默认操作条件下使用线性化Simulink控制设计的功金宝app能。

为当前模型初始条件创建操作点规范。

plant_mdl ='mpc_nloffsets';op = operspec(plant_mdl);

计算这些初始条件的操作点。

[op_point,op_report] = findop(plant_mdl,op);
Operating point search report: --------------------------------- opreport = Operating point search report for the Model mpc_nloffsets.(在时间t = 0上评估的时变组件)成功满足了操作点规格。States: ---------- Min x Max dxMin dx dxMax ___________ ___________ ___________ ___________ ___________ ___________ (1.) mpc_nloffsets/Integrator -Inf 0.57514 Inf 0 -1.8208e-14 0 (2.) mpc_nloffsets/Integrator2 -INF 2.1503 INF 0 -8.3846E-12 0输入:----------------------------------------------------------------------------------- ______ ______(1.)mpc_nloffsets/in1 -inf -1.252 INF输出:-----------------------------------------------------------------------------------------------------------------------------------------------min y max ________ ________ ________(1.)mpc_nloffsets/out1 -inf -0.52938 inf

从计算的操作点提取名义状态,输出和输入值。

x0 = [op_report.states(1).x; op_report.states(2).x];y0 = op_report.outputs.y;u0 = op_report.inputs.u;

在初始条件下将植物线性化。

植物=线性化(plant_mdl,op_point);

设计MPC控制器

使用指定的示例时间创建MPC的MPC Ontrolter对象TS,预测范围20和控制视野3

TS = 0.1;MPCOBJ = MPC(Plant,TS,20,3);
- >“ weights.manipulationvariables”属性为空。假设默认为0.00000。- >“ weights.manipulationVariablesrate”属性为空。假设默认为0.10000。- >“ weight.outputvariables”属性为空。假设默认为1.00000。

在控制器中设置名义值。

mpcobj.model.nominal = struct('X',x0,'U',U0,'y',y0);

设置输出测量噪声模型(白噪声,零平均值,标准偏差= 0.1)。

mpcobj.model.noise = 0.1;

设置操纵变量约束。

mpcobj.mv.max = 0.2;

使用Simulink模拟金宝app

指定输出信号的参考值。

r0 = 1.5*y0;

打开并模拟模型。

mdl ='mpc_offsets';Open_System(MDL)SIM(MDL)
- >将模型转换为离散时间。- >假设添加到测量的输出通道#1中的输出干扰是集成的白噪声。

模拟使用SIM命令

模拟控制器。

tf =圆形(10/ts);r = r0*一个(tf,1);[Y1,T1,U1,X1,XMPC1] = SIM(MPCOBJ,TF,R);

绘制并比较仿真结果。

子图(1,2,1)图(Y.Time,Y.Signals.Values,T1,Y1,T1,R)Legend(“非线性”,,,,“线性化”,,,,'参考') 标题('输出')网格子图(1,2,2)图(U.Time,U.Signals.Values,T1,U1)Legend(“非线性”,,,,“线性化”) 标题('输入') 网格

bdclose(plant_mdl)bdclose(MDL)

也可以看看

|