主要内容

具有输出量约束的直流伺服电机

该实例说明了如何为电压和轴转矩约束下的直流伺服机构设计模型预测控制器。

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

定义直流伺服电机型号

mpcmotormodel函数返回示例所需的工厂模型。定义了线性开环动态模型植物.的变量τ是最大允许转矩,这将被用作输出约束。

(植物、τ)= mpcmotormodel;

被控对象的控制输入是直流电压,四个状态变量是负载和轴的角位置和速度。可测量的输出是负载的角位置。第二个输出,扭矩,是不可测量的。指定MPC控制器的输入和输出信号类型。

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

指定MV约束

操纵变量被限制在+/- 220伏之间。由于工厂的输入和输出是不同数量级的,您还可以使用比例因子来促进MPC的调整。标度因子的典型选择是上限/下限或操作范围。

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

指定OV约束

+|tau|和-|tau|的扭矩约束仅在前三个预测步骤中施加。

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*ones(Tf,1) zeros(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))“扭矩”) subplot(3,1,3) stairs(t1,u1) title(“电压”

使用仿真软件模拟金宝app

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

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

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

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

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

参考文献

[1] A. Bemporad和E. Mosca,“通过引用管理实现不确定线性系统中的硬约束”自动化第34卷第3期4、1998年。

bdclose (mdl)

相关的话题