主要内容

具有不可测输出约束的直流伺服电机

这个例子展示了如何在电压和轴转矩约束下设计一个直流伺服机构的模型预测控制器。

有关使用显式MPC的类似示例,请参见具有不可测输出约束的直流伺服电机显式MPC控制

定义直流伺服电机模型

定义了线性开环动力学模型植物.变量τ是用作输出约束的最大允许扭矩。

(植物、τ)= mpcmotormodel;

指定MPC控制器的输入和输出信号类型。第二个输出,扭矩,是不可测量的。

植物= setmpcsignals(植物,“MV”, 1“莫”, 1“UO”2);

指定MV约束

操纵变量被限制在+/- 220伏之间。由于植物输入和输出具有不同的数量级,因此还可以使用缩放因子来促进MPC调优。尺度系数的典型选择是上下限或操作范围。

MV =结构(“最小值”, -220,“马克斯”, 220,“ScaleFactor”, 440);

指定OV约束

扭矩约束仅在前三个预测步骤中施加。

OV =结构(“最小值”,{负无穷变化,τ,τ;τ;负)},...“马克斯”,{正无穷,τ;τ,τ;正]},...“ScaleFactor”,{2π* 2 *τ});

指定优化权重

控制任务是获得角位置的零跟踪偏移量。由于您只有一个可操纵的变量,通过将其重量设置为零,轴扭矩被允许在其约束范围内浮动。

重量=结构(“MV”0,“MVRate”, 0.1,机汇的, 0.1 [0]);

创建MPC控制器

创建一个带有样本时间的MPC控制器Ts,预测地平线p,控制层

t = 0.1;p = 10;m = 2;mpcobj = mpc(植物、t、p、m,重量、MV, OV);

模拟控制器使用sim卡函数

使用sim卡函数在MATLAB中仿真线性对象模型的闭环控制。

disp (现在模拟标称闭环行为);Tstop = 8;%秒Tf =圆(Tstop / Ts);%模拟迭代r = [pi* 1 (Tf,1) 0 (Tf,1)];%的参考信号(y1, t1, u1) = sim (mpcobj, Tf, r);
现在模拟标称闭环行为>将模型转换为离散时间。假设没有干扰添加到测量输出通道#1。——>”模式。mpc对象的Noise属性为空。假设每个测量输出通道上都有白噪声。

阴谋的结果。

次要情节(1,1)楼梯(t1, y1 (: 1))楼梯(t1, r (: 1))标题(角位置的) subplot(3,1,2) stairs(t1,y1(:,2)) title(“扭矩”) subplot(3,1,3) stairs(t1,u1) title(标题)“电压”

使用仿真软件模拟金宝app

要运行此示例,需要Simulink®。金宝app

如果~ mpcchecktoolboxinstalled (“金宝app模型”) disp (运金宝app行这个例子需要Simulink(R)返回结束

在Simulink中仿真线性对象模型的闭环控制。金宝appMPC Controller块被配置为使用mpcobj作为控制器。

mdl =“mpc_motor”;open_system (mdl) sim (mdl)

闭环响应与MATLAB仿真结果一致。

参考文献

[1] A. Bemporad和E. Mosca,“通过参考管理实现不确定线性系统的硬约束,”自动化第34卷,没有。4, 451-461页,1998。

bdclose (mdl)

相关的话题